ochre-sdk 1.0.13 → 1.0.15

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.
Files changed (51) hide show
  1. package/dist/constants.d.mts +17 -0
  2. package/dist/constants.mjs +85 -0
  3. package/dist/fetchers/gallery.d.mts +38 -0
  4. package/dist/fetchers/gallery.mjs +91 -0
  5. package/dist/fetchers/item-links.d.mts +32 -0
  6. package/dist/fetchers/item-links.mjs +120 -0
  7. package/dist/fetchers/item.d.mts +74 -0
  8. package/dist/fetchers/item.mjs +146 -0
  9. package/dist/fetchers/set/items.d.mts +48 -0
  10. package/dist/fetchers/set/items.mjs +268 -0
  11. package/dist/fetchers/set/property-values.d.mts +46 -0
  12. package/dist/fetchers/set/property-values.mjs +514 -0
  13. package/dist/fetchers/website.d.mts +25 -0
  14. package/dist/fetchers/website.mjs +38 -0
  15. package/dist/getters.d.mts +193 -0
  16. package/dist/getters.mjs +341 -0
  17. package/dist/helpers.d.mts +18 -0
  18. package/dist/helpers.mjs +33 -0
  19. package/dist/index.d.mts +12 -1971
  20. package/dist/index.mjs +9 -7236
  21. package/dist/parsers/helpers.d.mts +27 -0
  22. package/dist/parsers/helpers.mjs +53 -0
  23. package/dist/parsers/index.d.mts +65 -0
  24. package/dist/parsers/index.mjs +1338 -0
  25. package/dist/parsers/mdx.d.mts +4 -0
  26. package/dist/parsers/mdx.mjs +9 -0
  27. package/dist/parsers/multilingual.d.mts +189 -0
  28. package/dist/parsers/multilingual.mjs +410 -0
  29. package/dist/parsers/string.d.mts +29 -0
  30. package/dist/parsers/string.mjs +445 -0
  31. package/dist/parsers/website/index.d.mts +20 -0
  32. package/dist/parsers/website/index.mjs +1245 -0
  33. package/dist/parsers/website/reader.d.mts +29 -0
  34. package/dist/parsers/website/reader.mjs +75 -0
  35. package/dist/query.d.mts +13 -0
  36. package/dist/query.mjs +827 -0
  37. package/dist/schemas.d.mts +79 -0
  38. package/dist/schemas.mjs +223 -0
  39. package/dist/types/index.d.mts +840 -0
  40. package/dist/types/index.mjs +1 -0
  41. package/dist/types/website.d.mts +501 -0
  42. package/dist/types/website.mjs +1 -0
  43. package/dist/utils.d.mts +34 -0
  44. package/dist/utils.mjs +172 -0
  45. package/dist/xml/metadata.d.mts +5 -0
  46. package/dist/xml/metadata.mjs +30 -0
  47. package/dist/xml/schemas.d.mts +13 -0
  48. package/dist/xml/schemas.mjs +849 -0
  49. package/dist/xml/types.d.mts +901 -0
  50. package/dist/xml/types.mjs +1 -0
  51. package/package.json +19 -17
@@ -0,0 +1,840 @@
1
+ import { MultilingualString } from "../parsers/multilingual.mjs";
2
+ import { Webpage } from "./website.mjs";
3
+
4
+ //#region src/types/index.d.ts
5
+ type Prettify<T> = { [K in keyof T]: T[K] } & {};
6
+ /**
7
+ * Language-code tuple or array used by OCHRE multilingual fields.
8
+ *
9
+ * Use the default when the consumer does not need to narrow a value to a
10
+ * specific language tuple.
11
+ */
12
+ type LanguageCodes = ReadonlyArray<string>;
13
+ /**
14
+ * The category of an item in OCHRE
15
+ */
16
+ type ItemCategory = "tree" | "bibliography" | "concept" | "spatialUnit" | "period" | "person" | "propertyVariable" | "propertyValue" | "resource" | "text" | "set";
17
+ /**
18
+ * OCHRE item categories that can contain other items in API payloads.
19
+ */
20
+ type ItemContainerCategory = Extract<ItemCategory, "tree" | "set">;
21
+ /**
22
+ * The category of items in a Tree
23
+ */
24
+ type TreeItemCategory = Exclude<ItemCategory, "tree">;
25
+ /**
26
+ * The category of items in a Set
27
+ */
28
+ type SetItemCategory = ItemCategory;
29
+ type ContainedItemCategory<U extends ItemCategory = ItemCategory> = U extends "tree" ? TreeItemCategory : U extends "set" ? SetItemCategory : never;
30
+ type ContainedItemCategoryOption<U extends ItemCategory = ItemCategory> = U extends "tree" ? TreeItemCategory : U extends "set" ? SetItemCategory | ReadonlyArray<SetItemCategory> : never;
31
+ type ContainedItemCategoryFromOption<U extends ItemCategory = ItemCategory, V extends ContainedItemCategoryOption<U> | undefined = undefined> = V extends ReadonlyArray<infer W> ? Extract<W, ContainedItemCategory<U>> : V extends ContainedItemCategory<U> ? V : ContainedItemCategory<U>;
32
+ /**
33
+ * The category of items in a heading
34
+ */
35
+ type HeadingItemCategory = Exclude<ItemCategory, "tree" | "bibliography" | "spatialUnit" | "concept" | "period">;
36
+ /**
37
+ * The category of items that expose recursive subitem structures.
38
+ */
39
+ type RecursiveItemCategory = Exclude<ItemCategory, "tree" | "person" | "propertyVariable" | "propertyValue" | "set">;
40
+ /**
41
+ * The category names that can appear in OCHRE context paths
42
+ */
43
+ type ContextItemCategory = Exclude<ItemCategory, "tree" | "person" | "set">;
44
+ /**
45
+ * Basic identification information
46
+ */
47
+ type Identification<T extends LanguageCodes = LanguageCodes> = {
48
+ label: MultilingualString<T>;
49
+ abbreviation: MultilingualString<T> | null;
50
+ code: string | null;
51
+ email: string | null;
52
+ website: string | null;
53
+ };
54
+ /**
55
+ * Metadata in OCHRE
56
+ */
57
+ type Metadata<T extends LanguageCodes = LanguageCodes> = {
58
+ dataset: string;
59
+ description: string;
60
+ publisher: string;
61
+ identifier: string;
62
+ project: {
63
+ uuid: string;
64
+ identification: Identification<T>;
65
+ website: string | null;
66
+ dateFormat: string | null;
67
+ page: "item" | "entry" | null;
68
+ } | null;
69
+ collection: {
70
+ uuid: string;
71
+ identification: Identification<T>;
72
+ page: "item" | "entry";
73
+ } | null;
74
+ publication: {
75
+ uuid: string;
76
+ identification: Identification<T>;
77
+ page: "item" | "entry";
78
+ } | null;
79
+ item: {
80
+ identification: Identification<T>;
81
+ category: string;
82
+ type: string;
83
+ maxLength: number | null;
84
+ } | null;
85
+ defaultLanguage: T[number];
86
+ languages: T;
87
+ };
88
+ type BelongsTo = {
89
+ uuid: string;
90
+ abbreviation: string;
91
+ };
92
+ type ItemPayloadKind = "topLevel" | "embedded";
93
+ type ItemEnvelopeFields<T extends LanguageCodes, U extends ItemPayloadKind> = U extends "topLevel" ? {
94
+ belongsTo: BelongsTo;
95
+ metadata: Metadata<T>;
96
+ persistentUrl: string | null;
97
+ } : {
98
+ belongsTo: null;
99
+ metadata: null;
100
+ persistentUrl: null;
101
+ };
102
+ /**
103
+ * License in OCHRE
104
+ */
105
+ type License = {
106
+ content: string;
107
+ target: string | null;
108
+ };
109
+ /**
110
+ * Context item in OCHRE
111
+ */
112
+ type ContextItem = {
113
+ uuid: string | null;
114
+ publicationDateTime: Date | null;
115
+ index: number;
116
+ content: string;
117
+ };
118
+ /**
119
+ * Context node in OCHRE
120
+ */
121
+ type ContextNode<U extends ContextItemCategory = ContextItemCategory> = {
122
+ tree: ContextItem;
123
+ project: ContextItem;
124
+ heading: Array<ContextItem>;
125
+ } & Partial<Record<U, Array<ContextItem>>>;
126
+ /**
127
+ * Context in OCHRE
128
+ */
129
+ type Context<U extends ContextItemCategory = ContextItemCategory> = {
130
+ nodes: Array<ContextNode<U>>;
131
+ displayPath: string;
132
+ };
133
+ /**
134
+ * Event in OCHRE
135
+ */
136
+ type Event<T extends LanguageCodes = LanguageCodes> = {
137
+ date: Date | {
138
+ start: Date;
139
+ end: Date;
140
+ } | null;
141
+ label: MultilingualString<T>;
142
+ comment: MultilingualString<T> | null;
143
+ agent: {
144
+ uuid: string;
145
+ label: MultilingualString<T>;
146
+ publicationDateTime: Date | null;
147
+ } | null;
148
+ location: {
149
+ uuid: string;
150
+ label: MultilingualString<T>;
151
+ publicationDateTime: Date | null;
152
+ } | null;
153
+ other: {
154
+ uuid: string | null;
155
+ category: string | null;
156
+ label: MultilingualString<T>;
157
+ } | null;
158
+ };
159
+ /**
160
+ * Source of coordinates in OCHRE
161
+ */
162
+ type CoordinatesSource<T extends LanguageCodes = LanguageCodes> = {
163
+ context: "self";
164
+ uuid: string;
165
+ label: MultilingualString<T>;
166
+ } | {
167
+ context: "related";
168
+ uuid: string;
169
+ label: MultilingualString<T>;
170
+ value: MultilingualString<T>;
171
+ } | {
172
+ context: "inherited";
173
+ item: {
174
+ uuid: string | null;
175
+ label: MultilingualString<T>;
176
+ };
177
+ uuid: string;
178
+ label: MultilingualString<T>;
179
+ };
180
+ /**
181
+ * Coordinates in OCHRE
182
+ */
183
+ type Coordinates<T extends LanguageCodes = LanguageCodes> = {
184
+ type: "point";
185
+ latitude: number;
186
+ longitude: number;
187
+ altitude: number | null;
188
+ source: CoordinatesSource<T> | null;
189
+ } | {
190
+ type: "plane";
191
+ minimum: {
192
+ latitude: number;
193
+ longitude: number;
194
+ };
195
+ maximum: {
196
+ latitude: number;
197
+ longitude: number;
198
+ };
199
+ source: CoordinatesSource<T> | null;
200
+ };
201
+ /**
202
+ * Image in OCHRE
203
+ */
204
+ type Image<T extends LanguageCodes = LanguageCodes> = {
205
+ publicationDateTime: Date | null;
206
+ identification: Identification<T> | null;
207
+ href: string | null;
208
+ htmlImgSrcPrefix: string | null;
209
+ height: number | null;
210
+ width: number | null;
211
+ fileSize: number | null;
212
+ base64: string | null;
213
+ };
214
+ /**
215
+ * Area of an image map in OCHRE
216
+ */
217
+ type ImageMapArea = {
218
+ uuid: string;
219
+ publicationDateTime: Date | null;
220
+ type: string;
221
+ title: string;
222
+ slug: string | null;
223
+ items: Array<{
224
+ shape: "rectangle";
225
+ coords: [number, number, number, number];
226
+ } | {
227
+ shape: "circle";
228
+ center: {
229
+ x: number;
230
+ y: number;
231
+ };
232
+ radius: number;
233
+ } | {
234
+ shape: "polygon";
235
+ coords: Array<number>;
236
+ }>;
237
+ };
238
+ /**
239
+ * Image map in OCHRE
240
+ */
241
+ type ImageMap = {
242
+ areas: Array<ImageMapArea>;
243
+ width: number;
244
+ height: number;
245
+ };
246
+ /**
247
+ * Note in OCHRE
248
+ */
249
+ type Note<T extends LanguageCodes = LanguageCodes> = {
250
+ number: number;
251
+ title: MultilingualString<T> | null;
252
+ content: MultilingualString<T>;
253
+ authors: Array<Person<T, "embedded">>;
254
+ };
255
+ /**
256
+ * Property value content in OCHRE
257
+ */
258
+ type PropertyValueContent<T extends LanguageCodes = LanguageCodes> = Prettify<{
259
+ hierarchy: {
260
+ isLeaf: boolean;
261
+ level: number | null;
262
+ };
263
+ label: MultilingualString<T> | null;
264
+ isUncertain: boolean;
265
+ category: string | null;
266
+ type: string | null;
267
+ uuid: string | null;
268
+ publicationDateTime: Date | null;
269
+ unit: string | null;
270
+ href: string | null;
271
+ height: number | null;
272
+ width: number | null;
273
+ fileSize: number | null;
274
+ slug: string | null;
275
+ } & ({
276
+ dataType: "string" | "coordinate" | "IDREF" | "date" | "dateTime";
277
+ content: string;
278
+ } | {
279
+ dataType: "integer" | "decimal" | "time";
280
+ content: number;
281
+ } | {
282
+ dataType: "boolean";
283
+ content: boolean;
284
+ })>;
285
+ /**
286
+ * Property in OCHRE
287
+ */
288
+ type Property<T extends LanguageCodes = LanguageCodes> = {
289
+ variable: {
290
+ uuid: string;
291
+ label: MultilingualString<T>;
292
+ publicationDateTime: Date | null;
293
+ };
294
+ values: Array<PropertyValueContent<T>>;
295
+ comment: MultilingualString<T> | null;
296
+ properties: Array<Property<T>>;
297
+ };
298
+ /**
299
+ * Simplified property in OCHRE website payloads. Simplified property variables
300
+ * expose scalar labels rather than multilingual labels.
301
+ */
302
+ type SimplifiedProperty<T extends LanguageCodes = LanguageCodes> = {
303
+ variable: {
304
+ uuid: string;
305
+ label: string;
306
+ publicationDateTime: Date | null;
307
+ };
308
+ values: Array<PropertyValueContent<T>>;
309
+ comment: MultilingualString<T> | null;
310
+ properties: Array<SimplifiedProperty<T>>;
311
+ };
312
+ /**
313
+ * Property in a Set item. OCHRE exposes Set item properties as a flat list.
314
+ */
315
+ type SetItemProperty<T extends LanguageCodes = LanguageCodes> = Omit<Property<T>, "properties">;
316
+ type SetItemSimplifiedProperty<T extends LanguageCodes = LanguageCodes> = Omit<SimplifiedProperty<T>, "properties">;
317
+ type PropertyLike<T extends LanguageCodes = LanguageCodes> = Property<T> | SetItemProperty<T> | SimplifiedProperty<T> | SetItemSimplifiedProperty<T>;
318
+ type ItemProperty<T extends LanguageCodes = LanguageCodes> = Property<T> | SetItemProperty<T>;
319
+ type PropertyValueDataType = PropertyValueContent["dataType"];
320
+ type QueryablePropertyValueDataType = Exclude<PropertyValueDataType, "coordinate">;
321
+ type WithSetItemProperties<U extends {
322
+ properties: Array<Property<T>>;
323
+ }, T extends LanguageCodes> = U extends {
324
+ properties: Array<Property<T>>;
325
+ } ? Prettify<Omit<U, "properties"> & {
326
+ properties: Array<SetItemProperty<T>>;
327
+ }> : never;
328
+ /**
329
+ * Base item in OCHRE
330
+ */
331
+ type BaseItem<U extends ItemCategory = ItemCategory, T extends LanguageCodes = LanguageCodes, V extends ItemPayloadKind = "topLevel"> = ItemEnvelopeFields<T, V> & {
332
+ uuid: string;
333
+ category: U;
334
+ publicationDateTime: Date | null;
335
+ context: Context<ContextItemCategory> | null;
336
+ date: Date | null;
337
+ license: License | null;
338
+ copyright: MultilingualString<T> | null;
339
+ watermark: MultilingualString<T> | null;
340
+ identification: Identification<T>;
341
+ creators: Array<Person<T, "embedded">>;
342
+ description: MultilingualString<T> | null;
343
+ events: Array<Event<T>>;
344
+ };
345
+ type ItemLinkCategory = ItemCategory | "dictionaryUnit";
346
+ /**
347
+ * Base item data exposed by OCHRE link and reverse-link payloads.
348
+ */
349
+ type BaseItemLink<U extends ItemLinkCategory = ItemLinkCategory, T extends LanguageCodes = LanguageCodes> = {
350
+ uuid: string;
351
+ category: U;
352
+ publicationDateTime: Date | null;
353
+ context: Context<ContextItemCategory> | null;
354
+ date: Date | null;
355
+ identification: Identification<T>;
356
+ description: MultilingualString<T> | null;
357
+ };
358
+ type BibliographySourceDocument = {
359
+ uuid: string;
360
+ content: string;
361
+ href: string | null;
362
+ publicationDateTime: Date | null;
363
+ };
364
+ type BibliographyEntryInfo = {
365
+ content: string | null;
366
+ startIssue: string;
367
+ startVolume: string;
368
+ startPage: string;
369
+ endPage: string;
370
+ };
371
+ type ItemLinks<T extends LanguageCodes = LanguageCodes> = Array<ItemLink<ItemLinkCategory, T>>;
372
+ type TreeItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"tree", T> & {
373
+ type: string | null;
374
+ containedItemCategory: TreeItemCategory | null;
375
+ }>;
376
+ type SetItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"set", T> & {
377
+ type: string | null;
378
+ containedItemCategories: Array<SetItemCategory> | null;
379
+ }>;
380
+ type BibliographyItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"bibliography", T> & {
381
+ type: string | null;
382
+ zoteroId: string | null;
383
+ citationDetails: string | null;
384
+ citationFormat: MultilingualString<T> | null;
385
+ citationFormatSpan: string | null;
386
+ referenceFormatDiv: string | null;
387
+ image: Image<T> | null;
388
+ sourceDocument: BibliographySourceDocument | null;
389
+ publicationInfo: {
390
+ publishers: Array<ItemLink<"person", T>>;
391
+ startDate: Date | null;
392
+ } | null;
393
+ entryInfo: BibliographyEntryInfo | null;
394
+ source: ItemLink<TreeItemCategory, T> | null;
395
+ authors: Array<ItemLink<"person", T>>;
396
+ periods: Array<ItemLink<"period", T>>;
397
+ properties: Array<Property<T>>;
398
+ }>;
399
+ type ConceptItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"concept", T> & {
400
+ image: Image<T> | null;
401
+ coordinates: Array<Coordinates<T>>;
402
+ }>;
403
+ type SpatialUnitItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"spatialUnit", T> & {
404
+ image: Image<T> | null;
405
+ coordinates: Array<Coordinates<T>>;
406
+ }>;
407
+ type PeriodItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"period", T> & {
408
+ type: string | null;
409
+ coordinates: Array<Coordinates<T>>;
410
+ }>;
411
+ type PersonItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"person", T> & {
412
+ type: string | null;
413
+ coordinates: Array<Coordinates<T>>;
414
+ }>;
415
+ type PropertyVariableItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"propertyVariable", T> & {
416
+ type: string | null;
417
+ coordinates: Array<Coordinates<T>>;
418
+ }>;
419
+ type PropertyValueItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"propertyValue", T> & {
420
+ coordinates: Array<Coordinates<T>>;
421
+ }>;
422
+ type ResourceItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"resource", T> & {
423
+ type: string | null;
424
+ href: string | null;
425
+ fileFormat: string | null;
426
+ fileSize: number | null;
427
+ isInline: boolean;
428
+ isPrimary: boolean;
429
+ height: number | null;
430
+ width: number | null;
431
+ image: Image<T> | null;
432
+ coordinates: Array<Coordinates<T>>;
433
+ }>;
434
+ type TextItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"text", T> & {
435
+ type: string | null;
436
+ text: string | null;
437
+ language: string | null;
438
+ image: Image<T> | null;
439
+ coordinates: Array<Coordinates<T>>;
440
+ }>;
441
+ type DictionaryUnitItemLink<T extends LanguageCodes = LanguageCodes> = Prettify<BaseItemLink<"dictionaryUnit", T>>;
442
+ /**
443
+ * An abridged item reference exposed inside OCHRE links and reverse links.
444
+ */
445
+ type ItemLink<U extends ItemLinkCategory = ItemLinkCategory, T extends LanguageCodes = LanguageCodes> = U extends ItemLinkCategory ? U extends "tree" ? TreeItemLink<T> : U extends "set" ? SetItemLink<T> : U extends "bibliography" ? BibliographyItemLink<T> : U extends "concept" ? ConceptItemLink<T> : U extends "spatialUnit" ? SpatialUnitItemLink<T> : U extends "period" ? PeriodItemLink<T> : U extends "person" ? PersonItemLink<T> : U extends "propertyVariable" ? PropertyVariableItemLink<T> : U extends "propertyValue" ? PropertyValueItemLink<T> : U extends "resource" ? ResourceItemLink<T> : U extends "text" ? TextItemLink<T> : U extends "dictionaryUnit" ? DictionaryUnitItemLink<T> : never : never;
446
+ /**
447
+ * An Item in OCHRE (can be a tree, set, bibliography, concept, spatial unit, period, person, property value, property variable, or resource)
448
+ */
449
+ type Item<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes, W extends ItemPayloadKind = "topLevel"> = U extends ItemCategory ? U extends "tree" ? Tree<Extract<V, TreeItemCategory>, T, W> : U extends "set" ? Set<Extract<V, SetItemCategory>, T, W> : U extends "bibliography" ? Bibliography<T, W> : U extends "concept" ? Concept<T, W> : U extends "spatialUnit" ? SpatialUnit<T, W> : U extends "period" ? Period<T, W> : U extends "person" ? Person<T, W> : U extends "propertyVariable" ? PropertyVariable<T, W> : U extends "propertyValue" ? PropertyValue<T, W> : U extends "resource" ? Resource<T, W> : U extends "text" ? Text<T, W> : never : never;
450
+ /**
451
+ * A Tree or Set fetched without its embedded item hierarchy.
452
+ */
453
+ type ItemWithoutEmbeddedItems<U extends ItemContainerCategory = ItemContainerCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes, W extends ItemPayloadKind = "topLevel"> = U extends ItemContainerCategory ? U extends "tree" ? Prettify<Omit<Tree<Extract<V, TreeItemCategory>, T, W>, "items">> : U extends "set" ? Prettify<Omit<Set<Extract<V, SetItemCategory>, T, W>, "items">> : never : never;
454
+ type TopLevelItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, "topLevel">;
455
+ type EmbeddedItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, "embedded">;
456
+ type AnyItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, ItemPayloadKind>;
457
+ /**
458
+ * Heading in OCHRE
459
+ */
460
+ type Heading<U extends HeadingItemCategory = HeadingItemCategory, T extends LanguageCodes = LanguageCodes> = {
461
+ name: string;
462
+ headings: Array<Heading<U, T>>;
463
+ items: Array<Item<U, never, T, "embedded">>;
464
+ };
465
+ /**
466
+ * Tree in OCHRE
467
+ */
468
+ type Tree<U extends TreeItemCategory = TreeItemCategory, T extends LanguageCodes = LanguageCodes, V extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"tree", T, V> & {
469
+ type: string | null;
470
+ containedItemCategory: U | null;
471
+ links: ItemLinks<T>;
472
+ notes: Array<Note<T>>;
473
+ properties: Array<Property<T>>;
474
+ bibliographies: Array<Bibliography<T, "embedded">>;
475
+ items: U extends HeadingItemCategory ? Array<Heading<U, T> | Item<U, never, T, "embedded">> : Array<Item<U, never, T, "embedded">>;
476
+ }>;
477
+ /**
478
+ * Set in OCHRE
479
+ */
480
+ type Set<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes, V extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"set", T, V> & {
481
+ containedItemCategories: Array<U>;
482
+ isTabularStructure: boolean;
483
+ isSuppressingBlanks: boolean;
484
+ links: ItemLinks<T>;
485
+ notes: Array<Note<T>>;
486
+ properties: Array<Property<T>>;
487
+ items: Array<SetItem<U, T>>;
488
+ }>;
489
+ type SetBibliography<T extends LanguageCodes = LanguageCodes> = Bibliography<T, "embedded"> extends infer U ? U extends {
490
+ properties: Array<Property<T>>;
491
+ } ? Prettify<Omit<U, "properties" | "items"> & {
492
+ properties: Array<SetItemProperty<T>>;
493
+ }> : never : never;
494
+ type SetConcept<T extends LanguageCodes = LanguageCodes> = Prettify<Omit<Concept<T, "embedded">, "interpretations" | "items"> & {
495
+ properties: Array<SetItemProperty<T>>;
496
+ }>;
497
+ type SetSpatialUnit<T extends LanguageCodes = LanguageCodes> = Prettify<Omit<SpatialUnit<T, "embedded">, "observations" | "items"> & {
498
+ properties: Array<SetItemProperty<T>>;
499
+ }>;
500
+ type SetPeriod<T extends LanguageCodes = LanguageCodes> = Prettify<Omit<WithSetItemProperties<Period<T, "embedded">, T>, "items">>;
501
+ type SetResource<T extends LanguageCodes = LanguageCodes> = Prettify<Omit<WithSetItemProperties<Resource<T, "embedded">, T>, "items">>;
502
+ type SetTree<T extends LanguageCodes = LanguageCodes> = Prettify<Omit<WithSetItemProperties<Tree<TreeItemCategory, T, "embedded">, T>, "items">>;
503
+ type SetItem<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes> = U extends "tree" ? SetTree<T> : U extends "bibliography" ? SetBibliography<T> : U extends "concept" ? SetConcept<T> : U extends "spatialUnit" ? SetSpatialUnit<T> : U extends "period" ? SetPeriod<T> : U extends "person" ? WithSetItemProperties<Person<T, "embedded">, T> : U extends "propertyVariable" ? PropertyVariable<T, "embedded"> : U extends "propertyValue" ? WithSetItemProperties<PropertyValue<T, "embedded">, T> : U extends "resource" ? SetResource<T> : U extends "text" ? Text<T, "embedded"> : U extends "set" ? Omit<WithSetItemProperties<Set<SetItemCategory, T, "embedded">, T>, "items"> : never;
504
+ /**
505
+ * Person in OCHRE
506
+ */
507
+ type Person<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"person", T, U> & {
508
+ type: string;
509
+ image: Image<T> | null;
510
+ address: {
511
+ country: string | null;
512
+ city: string | null;
513
+ state: string | null;
514
+ postalCode: string | null;
515
+ } | null;
516
+ coordinates: Array<Coordinates<T>>;
517
+ content: MultilingualString<T> | null;
518
+ periods: Array<Period<T, "embedded">>;
519
+ links: ItemLinks<T>;
520
+ notes: Array<Note<T>>;
521
+ properties: Array<Property<T>>;
522
+ }>;
523
+ /**
524
+ * Period in OCHRE
525
+ */
526
+ type Period<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"period", T, U> & {
527
+ type: string | null;
528
+ coordinates: Array<Coordinates<T>>;
529
+ links: ItemLinks<T>;
530
+ notes: Array<Note<T>>;
531
+ properties: Array<Property<T>>;
532
+ bibliographies: Array<Bibliography<T, "embedded">>;
533
+ items: Array<Period<T, "embedded">>;
534
+ }>;
535
+ /**
536
+ * Bibliography in OCHRE
537
+ */
538
+ type Bibliography<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"bibliography", T, U> & {
539
+ citationDetails: string | null;
540
+ citationFormat: MultilingualString<T> | null;
541
+ citationFormatSpan: string | null;
542
+ referenceFormatDiv: string | null;
543
+ image: Image<T> | null;
544
+ sourceDocument: BibliographySourceDocument | null;
545
+ publicationInfo: {
546
+ publishers: Array<Person<T, "embedded">>;
547
+ startDate: Date | null;
548
+ } | null;
549
+ entryInfo: BibliographyEntryInfo | null;
550
+ source: ItemLink<TreeItemCategory, T> | null;
551
+ authors: Array<Person<T, "embedded">>;
552
+ periods: Array<Period<T, "embedded">>;
553
+ links: ItemLinks<T>;
554
+ notes: Array<Note<T>>;
555
+ properties: Array<Property<T>>;
556
+ bibliographies: Array<Bibliography<T, "embedded">>;
557
+ items: Array<Bibliography<T, "embedded">>;
558
+ } & ({
559
+ type: "zotero";
560
+ zoteroId: string;
561
+ uuid: string | null;
562
+ } | {
563
+ type: string | null;
564
+ })>;
565
+ /**
566
+ * Concept in OCHRE
567
+ */
568
+ type Concept<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"concept", T, U> & {
569
+ image: Image<T> | null;
570
+ interpretations: Array<Interpretation<T>>;
571
+ coordinates: Array<Coordinates<T>>;
572
+ items: Array<Concept<T, "embedded">>;
573
+ }>;
574
+ /**
575
+ * Interpretation in OCHRE
576
+ */
577
+ type Interpretation<T extends LanguageCodes = LanguageCodes> = {
578
+ number: number;
579
+ date: Date | null;
580
+ observers: Array<Person<T, "embedded">>;
581
+ periods: Array<Period<T, "embedded">>;
582
+ links: ItemLinks<T>;
583
+ notes: Array<Note<T>>;
584
+ properties: Array<Property<T>>;
585
+ bibliographies: Array<Bibliography<T, "embedded">>;
586
+ };
587
+ /**
588
+ * Spatial unit in OCHRE
589
+ */
590
+ type SpatialUnit<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"spatialUnit", T, U> & {
591
+ image: Image<T> | null;
592
+ coordinates: Array<Coordinates<T>>;
593
+ mapData: {
594
+ geoJSON: {
595
+ multiPolygon: string;
596
+ EPSG: number;
597
+ };
598
+ } | null;
599
+ observations: Array<Observation<T>>;
600
+ bibliographies: Array<Bibliography<T, "embedded">>;
601
+ items: Array<SpatialUnit<T, "embedded">>;
602
+ }>;
603
+ /**
604
+ * Observation in OCHRE
605
+ */
606
+ type Observation<T extends LanguageCodes = LanguageCodes> = {
607
+ number: number;
608
+ date: Date | null;
609
+ observers: Array<string> | Array<Person<T, "embedded">>;
610
+ periods: Array<Period<T, "embedded">>;
611
+ links: ItemLinks<T>;
612
+ notes: Array<Note<T>>;
613
+ properties: Array<Property<T>>;
614
+ bibliographies: Array<Bibliography<T, "embedded">>;
615
+ };
616
+ /**
617
+ * Property variable in OCHRE
618
+ */
619
+ type PropertyVariable<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"propertyVariable", T, U> & {
620
+ type: string | null;
621
+ coordinates: Array<Coordinates<T>>;
622
+ links: ItemLinks<T>;
623
+ notes: Array<Note<T>>;
624
+ bibliographies: Array<Bibliography<T, "embedded">>;
625
+ }>;
626
+ /**
627
+ * Property value in OCHRE
628
+ */
629
+ type PropertyValue<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"propertyValue", T, U> & {
630
+ coordinates: Array<Coordinates<T>>;
631
+ links: ItemLinks<T>;
632
+ notes: Array<Note<T>>;
633
+ properties: Array<Property<T>>;
634
+ bibliographies: Array<Bibliography<T, "embedded">>;
635
+ }>;
636
+ /**
637
+ * Resource in OCHRE
638
+ */
639
+ type Resource<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"resource", T, U> & {
640
+ type: string;
641
+ href: string | null;
642
+ fileFormat: string | null;
643
+ fileSize: number | null;
644
+ isInline: boolean;
645
+ height: number | null;
646
+ width: number | null;
647
+ image: Image<T> | null;
648
+ document: MultilingualString<T> | null;
649
+ imageMap: ImageMap | null;
650
+ coordinates: Array<Coordinates<T>>;
651
+ periods: Array<Period<T, "embedded">>;
652
+ links: ItemLinks<T>;
653
+ reverseLinks: ItemLinks<T>;
654
+ notes: Array<Note<T>>;
655
+ properties: Array<Property<T>>;
656
+ bibliographies: Array<Bibliography<T, "embedded">>;
657
+ items: Array<Resource<T, "embedded">>;
658
+ } & (U extends "topLevel" ? {
659
+ view: Webpage<T> | null;
660
+ } : unknown)>;
661
+ /**
662
+ * Text in OCHRE
663
+ */
664
+ type Text<T extends LanguageCodes = LanguageCodes, U extends ItemPayloadKind = "topLevel"> = Prettify<BaseItem<"text", T, U> & {
665
+ type: string;
666
+ text: string | null;
667
+ language: string | null;
668
+ image: Image<T> | null;
669
+ coordinates: Array<Coordinates<T>>;
670
+ links: ItemLinks<T>;
671
+ reverseLinks: ItemLinks<T>;
672
+ notes: Array<Note<T>>;
673
+ sections: Array<Section<T>>;
674
+ periods: Array<Period<T, "embedded">>;
675
+ creators: Array<Person<T, "embedded">>;
676
+ editions: Array<Person<T, "embedded">>;
677
+ }>;
678
+ /**
679
+ * Section in OCHRE
680
+ */
681
+ type Section<T extends LanguageCodes = LanguageCodes> = {
682
+ uuid: string;
683
+ publicationDateTime: Date | null;
684
+ identification: Identification<T>;
685
+ project: {
686
+ identification: Identification<T>;
687
+ } | null;
688
+ };
689
+ type EmbeddedTree<U extends TreeItemCategory = TreeItemCategory, T extends LanguageCodes = LanguageCodes> = Tree<U, T, "embedded">;
690
+ type AnyTree<U extends TreeItemCategory = TreeItemCategory, T extends LanguageCodes = LanguageCodes> = Tree<U, T, ItemPayloadKind>;
691
+ type EmbeddedSet<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes> = Set<U, T, "embedded">;
692
+ type AnySet<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes> = Set<U, T, ItemPayloadKind>;
693
+ type EmbeddedBibliography<T extends LanguageCodes = LanguageCodes> = Bibliography<T, "embedded">;
694
+ type AnyBibliography<T extends LanguageCodes = LanguageCodes> = Bibliography<T, ItemPayloadKind>;
695
+ type EmbeddedConcept<T extends LanguageCodes = LanguageCodes> = Concept<T, "embedded">;
696
+ type AnyConcept<T extends LanguageCodes = LanguageCodes> = Concept<T, ItemPayloadKind>;
697
+ type EmbeddedSpatialUnit<T extends LanguageCodes = LanguageCodes> = SpatialUnit<T, "embedded">;
698
+ type AnySpatialUnit<T extends LanguageCodes = LanguageCodes> = SpatialUnit<T, ItemPayloadKind>;
699
+ type EmbeddedPeriod<T extends LanguageCodes = LanguageCodes> = Period<T, "embedded">;
700
+ type AnyPeriod<T extends LanguageCodes = LanguageCodes> = Period<T, ItemPayloadKind>;
701
+ type EmbeddedPerson<T extends LanguageCodes = LanguageCodes> = Person<T, "embedded">;
702
+ type AnyPerson<T extends LanguageCodes = LanguageCodes> = Person<T, ItemPayloadKind>;
703
+ type EmbeddedPropertyVariable<T extends LanguageCodes = LanguageCodes> = PropertyVariable<T, "embedded">;
704
+ type AnyPropertyVariable<T extends LanguageCodes = LanguageCodes> = PropertyVariable<T, ItemPayloadKind>;
705
+ type EmbeddedPropertyValue<T extends LanguageCodes = LanguageCodes> = PropertyValue<T, "embedded">;
706
+ type AnyPropertyValue<T extends LanguageCodes = LanguageCodes> = PropertyValue<T, ItemPayloadKind>;
707
+ type EmbeddedResource<T extends LanguageCodes = LanguageCodes> = Resource<T, "embedded">;
708
+ type AnyResource<T extends LanguageCodes = LanguageCodes> = Resource<T, ItemPayloadKind>;
709
+ type EmbeddedText<T extends LanguageCodes = LanguageCodes> = Text<T, "embedded">;
710
+ type AnyText<T extends LanguageCodes = LanguageCodes> = Text<T, ItemPayloadKind>;
711
+ /**
712
+ * Represents a gallery with its identification, project identification, resources and max length
713
+ */
714
+ type Gallery<T extends LanguageCodes = LanguageCodes> = {
715
+ identification: Identification<T>;
716
+ projectIdentification: Identification<T>;
717
+ resources: Array<Resource<T, "embedded">>;
718
+ maxLength: number;
719
+ };
720
+ /**
721
+ * Represents a property query item with its UUID, raw value, count, and content
722
+ */
723
+ type PropertyValueQueryItem = {
724
+ count: number;
725
+ dataType: QueryablePropertyValueDataType;
726
+ content: string | number | boolean | null;
727
+ label: MultilingualString | null;
728
+ };
729
+ /**
730
+ * Represents a grouped Set attribute value query item
731
+ */
732
+ type SetAttributeValueQueryItem = {
733
+ count: number;
734
+ content: string;
735
+ };
736
+ /**
737
+ * Represents sorting direction for Set items
738
+ */
739
+ type SetItemsSortDirection = "asc" | "desc";
740
+ /**
741
+ * Represents sorting options for Set items
742
+ */
743
+ type SetItemsSort = {
744
+ target: "none";
745
+ } | {
746
+ target: "title";
747
+ direction?: SetItemsSortDirection;
748
+ language?: string;
749
+ } | {
750
+ target: "propertyValue";
751
+ propertyVariableUuid: string;
752
+ dataType: QueryablePropertyValueDataType;
753
+ direction?: SetItemsSortDirection;
754
+ language?: string;
755
+ };
756
+ /**
757
+ * Represents a leaf query for Set items
758
+ */
759
+ type QueryLeaf = {
760
+ target: "property";
761
+ propertyVariable?: string;
762
+ dataType: Exclude<QueryablePropertyValueDataType, "date" | "dateTime">;
763
+ value?: string;
764
+ from?: never;
765
+ to?: never;
766
+ matchMode: "includes" | "exact";
767
+ isCaseSensitive: boolean;
768
+ language: string;
769
+ isNegated?: boolean;
770
+ } | {
771
+ target: "property";
772
+ propertyVariable: string;
773
+ dataType: "date" | "dateTime";
774
+ value: string;
775
+ from?: never;
776
+ to?: never;
777
+ matchMode: "includes" | "exact";
778
+ isCaseSensitive: boolean;
779
+ language: string;
780
+ isNegated?: boolean;
781
+ } | {
782
+ target: "property";
783
+ propertyVariable: string;
784
+ dataType: "date" | "dateTime";
785
+ value?: never;
786
+ from: string;
787
+ to?: string;
788
+ matchMode: "includes" | "exact";
789
+ isCaseSensitive: boolean;
790
+ language: string;
791
+ isNegated?: boolean;
792
+ } | {
793
+ target: "property";
794
+ propertyVariable: string;
795
+ dataType: "date" | "dateTime";
796
+ value?: never;
797
+ from?: string;
798
+ to: string;
799
+ matchMode: "includes" | "exact";
800
+ isCaseSensitive: boolean;
801
+ language: string;
802
+ isNegated?: boolean;
803
+ } | {
804
+ target: "property";
805
+ propertyVariable?: string;
806
+ dataType: "all";
807
+ value: string;
808
+ matchMode: "includes" | "exact";
809
+ isCaseSensitive: boolean;
810
+ language: string;
811
+ isNegated?: boolean;
812
+ } | {
813
+ target: "string";
814
+ value: string;
815
+ matchMode: "includes" | "exact";
816
+ isCaseSensitive: boolean;
817
+ language: string;
818
+ isNegated?: boolean;
819
+ } | {
820
+ target: "title" | "description" | "image" | "periods" | "bibliography" | "notes";
821
+ value: string;
822
+ matchMode: "includes" | "exact";
823
+ isCaseSensitive: boolean;
824
+ language: string;
825
+ isNegated?: boolean;
826
+ };
827
+ /**
828
+ * Represents a boolean query group for Set items
829
+ */
830
+ type QueryGroup = {
831
+ and: Array<Query>;
832
+ } | {
833
+ or: Array<Query>;
834
+ };
835
+ /**
836
+ * Represents a query for Set items
837
+ */
838
+ type Query = QueryLeaf | QueryGroup;
839
+ //#endregion
840
+ export { AnyBibliography, AnyConcept, AnyItem, AnyPeriod, AnyPerson, AnyPropertyValue, AnyPropertyVariable, AnyResource, AnySet, AnySpatialUnit, AnyText, AnyTree, BaseItem, BaseItemLink, BelongsTo, Bibliography, BibliographyEntryInfo, BibliographyItemLink, BibliographySourceDocument, Concept, ConceptItemLink, ContainedItemCategory, ContainedItemCategoryFromOption, ContainedItemCategoryOption, Context, ContextItem, ContextItemCategory, ContextNode, Coordinates, CoordinatesSource, DictionaryUnitItemLink, EmbeddedBibliography, EmbeddedConcept, EmbeddedItem, EmbeddedPeriod, EmbeddedPerson, EmbeddedPropertyValue, EmbeddedPropertyVariable, EmbeddedResource, EmbeddedSet, EmbeddedSpatialUnit, EmbeddedText, EmbeddedTree, Event, Gallery, Heading, HeadingItemCategory, Identification, Image, ImageMap, ImageMapArea, Interpretation, Item, ItemCategory, ItemContainerCategory, ItemLink, ItemLinkCategory, ItemLinks, ItemPayloadKind, ItemProperty, ItemWithoutEmbeddedItems, LanguageCodes, License, Metadata, Note, Observation, Period, PeriodItemLink, Person, PersonItemLink, Property, PropertyLike, PropertyValue, PropertyValueContent, PropertyValueDataType, PropertyValueItemLink, PropertyValueQueryItem, PropertyVariable, PropertyVariableItemLink, Query, QueryGroup, QueryLeaf, QueryablePropertyValueDataType, RecursiveItemCategory, Resource, ResourceItemLink, Section, Set, SetAttributeValueQueryItem, SetBibliography, SetConcept, SetItem, SetItemCategory, SetItemLink, SetItemProperty, SetItemSimplifiedProperty, SetItemsSort, SetItemsSortDirection, SetPeriod, SetResource, SetSpatialUnit, SetTree, SimplifiedProperty, SpatialUnit, SpatialUnitItemLink, Text, TextItemLink, TopLevelItem, Tree, TreeItemCategory, TreeItemLink };