Skip to content

Commit 6bf635b

Browse files
chore: Update order of deprecated fields in DC Terms and use common utils
- Reorder fields in parse/utils.ts (plural first, deprecated last) - Replace local generateArray with generateArrayOrSingular from common utils - Update comments to match DC namespace pattern 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent ab504a4 commit 6bf635b

File tree

2 files changed

+235
-184
lines changed

2 files changed

+235
-184
lines changed

src/namespaces/dcterms/generate/utils.ts

Lines changed: 124 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import type { DateLike, GenerateUtil } from '../../../common/types.js'
22
import {
3+
generateArrayOrSingular,
34
generateCdataString,
45
generateRfc3339Date,
56
isObject,
6-
isPresent,
7-
trimArray,
87
trimObject,
98
} from '../../../common/utils.js'
109
import type { DctermsNs } from '../common/types.js'
@@ -14,217 +13,270 @@ export const generateItemOrFeed: GenerateUtil<DctermsNs.ItemOrFeed<DateLike>> =
1413
return
1514
}
1615

17-
// TODO: Remove this once deprecated singular fields are removed in next major version.
18-
const generateArray = <V>(
19-
pluralValues: Array<V> | undefined,
20-
singularValue: V | undefined,
21-
generator: (value: V) => unknown,
22-
) => {
23-
if (isPresent(pluralValues)) {
24-
return trimArray(pluralValues.map(generator))
25-
}
26-
27-
if (isPresent(singularValue)) {
28-
return generator(singularValue)
29-
}
30-
}
31-
3216
const value = {
33-
'dcterms:abstract': generateArray(
17+
'dcterms:abstract': generateArrayOrSingular(
3418
itemOrFeed.abstracts,
3519
itemOrFeed.abstract,
3620
generateCdataString,
3721
),
38-
'dcterms:accessRights': generateArray(itemOrFeed.accessRights, undefined, generateCdataString),
39-
'dcterms:accrualMethod': generateArray(
22+
'dcterms:accessRights': generateArrayOrSingular(
23+
itemOrFeed.accessRights,
24+
undefined,
25+
generateCdataString,
26+
),
27+
'dcterms:accrualMethod': generateArrayOrSingular(
4028
itemOrFeed.accrualMethods,
4129
itemOrFeed.accrualMethod,
4230
generateCdataString,
4331
),
44-
'dcterms:accrualPeriodicity': generateArray(
32+
'dcterms:accrualPeriodicity': generateArrayOrSingular(
4533
itemOrFeed.accrualPeriodicities,
4634
itemOrFeed.accrualPeriodicity,
4735
generateCdataString,
4836
),
49-
'dcterms:accrualPolicy': generateArray(
37+
'dcterms:accrualPolicy': generateArrayOrSingular(
5038
itemOrFeed.accrualPolicies,
5139
itemOrFeed.accrualPolicy,
5240
generateCdataString,
5341
),
54-
'dcterms:alternative': generateArray(
42+
'dcterms:alternative': generateArrayOrSingular(
5543
itemOrFeed.alternatives,
5644
itemOrFeed.alternative,
5745
generateCdataString,
5846
),
59-
'dcterms:audience': generateArray(
47+
'dcterms:audience': generateArrayOrSingular(
6048
itemOrFeed.audiences,
6149
itemOrFeed.audience,
6250
generateCdataString,
6351
),
64-
'dcterms:available': generateArray(
52+
'dcterms:available': generateArrayOrSingular(
6553
itemOrFeed.availables,
6654
itemOrFeed.available,
6755
generateRfc3339Date,
6856
),
69-
'dcterms:bibliographicCitation': generateArray(
57+
'dcterms:bibliographicCitation': generateArrayOrSingular(
7058
itemOrFeed.bibliographicCitations,
7159
itemOrFeed.bibliographicCitation,
7260
generateCdataString,
7361
),
74-
'dcterms:conformsTo': generateArray(
62+
'dcterms:conformsTo': generateArrayOrSingular(
7563
itemOrFeed.conformsTos,
7664
itemOrFeed.conformsTo,
7765
generateCdataString,
7866
),
79-
'dcterms:contributor': generateArray(
67+
'dcterms:contributor': generateArrayOrSingular(
8068
itemOrFeed.contributors,
8169
itemOrFeed.contributor,
8270
generateCdataString,
8371
),
84-
'dcterms:coverage': generateArray(
72+
'dcterms:coverage': generateArrayOrSingular(
8573
itemOrFeed.coverages,
8674
itemOrFeed.coverage,
8775
generateCdataString,
8876
),
89-
'dcterms:created': generateArray(itemOrFeed.createds, itemOrFeed.created, generateRfc3339Date),
90-
'dcterms:creator': generateArray(itemOrFeed.creators, itemOrFeed.creator, generateCdataString),
91-
'dcterms:date': generateArray(itemOrFeed.dates, itemOrFeed.date, generateRfc3339Date),
92-
'dcterms:dateAccepted': generateArray(
77+
'dcterms:created': generateArrayOrSingular(
78+
itemOrFeed.createds,
79+
itemOrFeed.created,
80+
generateRfc3339Date,
81+
),
82+
'dcterms:creator': generateArrayOrSingular(
83+
itemOrFeed.creators,
84+
itemOrFeed.creator,
85+
generateCdataString,
86+
),
87+
'dcterms:date': generateArrayOrSingular(itemOrFeed.dates, itemOrFeed.date, generateRfc3339Date),
88+
'dcterms:dateAccepted': generateArrayOrSingular(
9389
itemOrFeed.dateAccepteds,
9490
itemOrFeed.dateAccepted,
9591
generateRfc3339Date,
9692
),
97-
'dcterms:dateCopyrighted': generateArray(
93+
'dcterms:dateCopyrighted': generateArrayOrSingular(
9894
itemOrFeed.dateCopyrighteds,
9995
itemOrFeed.dateCopyrighted,
10096
generateRfc3339Date,
10197
),
102-
'dcterms:dateSubmitted': generateArray(
98+
'dcterms:dateSubmitted': generateArrayOrSingular(
10399
itemOrFeed.dateSubmitteds,
104100
itemOrFeed.dateSubmitted,
105101
generateRfc3339Date,
106102
),
107-
'dcterms:description': generateArray(
103+
'dcterms:description': generateArrayOrSingular(
108104
itemOrFeed.descriptions,
109105
itemOrFeed.description,
110106
generateCdataString,
111107
),
112-
'dcterms:educationLevel': generateArray(
108+
'dcterms:educationLevel': generateArrayOrSingular(
113109
itemOrFeed.educationLevels,
114110
itemOrFeed.educationLevel,
115111
generateCdataString,
116112
),
117-
'dcterms:extent': generateArray(itemOrFeed.extents, itemOrFeed.extent, generateCdataString),
118-
'dcterms:format': generateArray(itemOrFeed.formats, itemOrFeed.format, generateCdataString),
119-
'dcterms:hasFormat': generateArray(
113+
'dcterms:extent': generateArrayOrSingular(
114+
itemOrFeed.extents,
115+
itemOrFeed.extent,
116+
generateCdataString,
117+
),
118+
'dcterms:format': generateArrayOrSingular(
119+
itemOrFeed.formats,
120+
itemOrFeed.format,
121+
generateCdataString,
122+
),
123+
'dcterms:hasFormat': generateArrayOrSingular(
120124
itemOrFeed.hasFormats,
121125
itemOrFeed.hasFormat,
122126
generateCdataString,
123127
),
124-
'dcterms:hasPart': generateArray(itemOrFeed.hasParts, itemOrFeed.hasPart, generateCdataString),
125-
'dcterms:hasVersion': generateArray(
128+
'dcterms:hasPart': generateArrayOrSingular(
129+
itemOrFeed.hasParts,
130+
itemOrFeed.hasPart,
131+
generateCdataString,
132+
),
133+
'dcterms:hasVersion': generateArrayOrSingular(
126134
itemOrFeed.hasVersions,
127135
itemOrFeed.hasVersion,
128136
generateCdataString,
129137
),
130-
'dcterms:identifier': generateArray(
138+
'dcterms:identifier': generateArrayOrSingular(
131139
itemOrFeed.identifiers,
132140
itemOrFeed.identifier,
133141
generateCdataString,
134142
),
135-
'dcterms:instructionalMethod': generateArray(
143+
'dcterms:instructionalMethod': generateArrayOrSingular(
136144
itemOrFeed.instructionalMethods,
137145
itemOrFeed.instructionalMethod,
138146
generateCdataString,
139147
),
140-
'dcterms:isFormatOf': generateArray(
148+
'dcterms:isFormatOf': generateArrayOrSingular(
141149
itemOrFeed.isFormatOfs,
142150
itemOrFeed.isFormatOf,
143151
generateCdataString,
144152
),
145-
'dcterms:isPartOf': generateArray(
153+
'dcterms:isPartOf': generateArrayOrSingular(
146154
itemOrFeed.isPartOfs,
147155
itemOrFeed.isPartOf,
148156
generateCdataString,
149157
),
150-
'dcterms:isReferencedBy': generateArray(
158+
'dcterms:isReferencedBy': generateArrayOrSingular(
151159
itemOrFeed.isReferencedBys,
152160
itemOrFeed.isReferencedBy,
153161
generateCdataString,
154162
),
155-
'dcterms:isReplacedBy': generateArray(
163+
'dcterms:isReplacedBy': generateArrayOrSingular(
156164
itemOrFeed.isReplacedBys,
157165
itemOrFeed.isReplacedBy,
158166
generateCdataString,
159167
),
160-
'dcterms:isRequiredBy': generateArray(
168+
'dcterms:isRequiredBy': generateArrayOrSingular(
161169
itemOrFeed.isRequiredBys,
162170
itemOrFeed.isRequiredBy,
163171
generateCdataString,
164172
),
165-
'dcterms:issued': generateArray(itemOrFeed.issueds, itemOrFeed.issued, generateRfc3339Date),
166-
'dcterms:isVersionOf': generateArray(
173+
'dcterms:issued': generateArrayOrSingular(
174+
itemOrFeed.issueds,
175+
itemOrFeed.issued,
176+
generateRfc3339Date,
177+
),
178+
'dcterms:isVersionOf': generateArrayOrSingular(
167179
itemOrFeed.isVersionOfs,
168180
itemOrFeed.isVersionOf,
169181
generateCdataString,
170182
),
171-
'dcterms:language': generateArray(
183+
'dcterms:language': generateArrayOrSingular(
172184
itemOrFeed.languages,
173185
itemOrFeed.language,
174186
generateCdataString,
175187
),
176-
'dcterms:license': generateArray(itemOrFeed.licenses, itemOrFeed.license, generateCdataString),
177-
'dcterms:mediator': generateArray(
188+
'dcterms:license': generateArrayOrSingular(
189+
itemOrFeed.licenses,
190+
itemOrFeed.license,
191+
generateCdataString,
192+
),
193+
'dcterms:mediator': generateArrayOrSingular(
178194
itemOrFeed.mediators,
179195
itemOrFeed.mediator,
180196
generateCdataString,
181197
),
182-
'dcterms:medium': generateArray(itemOrFeed.mediums, itemOrFeed.medium, generateCdataString),
183-
'dcterms:modified': generateArray(
198+
'dcterms:medium': generateArrayOrSingular(
199+
itemOrFeed.mediums,
200+
itemOrFeed.medium,
201+
generateCdataString,
202+
),
203+
'dcterms:modified': generateArrayOrSingular(
184204
itemOrFeed.modifieds,
185205
itemOrFeed.modified,
186206
generateRfc3339Date,
187207
),
188-
'dcterms:provenance': generateArray(
208+
'dcterms:provenance': generateArrayOrSingular(
189209
itemOrFeed.provenances,
190210
itemOrFeed.provenance,
191211
generateCdataString,
192212
),
193-
'dcterms:publisher': generateArray(
213+
'dcterms:publisher': generateArrayOrSingular(
194214
itemOrFeed.publishers,
195215
itemOrFeed.publisher,
196216
generateCdataString,
197217
),
198-
'dcterms:references': generateArray(itemOrFeed.references, undefined, generateCdataString),
199-
'dcterms:relation': generateArray(
218+
'dcterms:references': generateArrayOrSingular(
219+
itemOrFeed.references,
220+
undefined,
221+
generateCdataString,
222+
),
223+
'dcterms:relation': generateArrayOrSingular(
200224
itemOrFeed.relations,
201225
itemOrFeed.relation,
202226
generateCdataString,
203227
),
204-
'dcterms:replaces': generateArray(itemOrFeed.replaces, undefined, generateCdataString),
205-
'dcterms:requires': generateArray(itemOrFeed.requires, undefined, generateCdataString),
206-
'dcterms:rights': generateArray(itemOrFeed.rights, undefined, generateCdataString),
207-
'dcterms:rightsHolder': generateArray(
228+
'dcterms:replaces': generateArrayOrSingular(
229+
itemOrFeed.replaces,
230+
undefined,
231+
generateCdataString,
232+
),
233+
'dcterms:requires': generateArrayOrSingular(
234+
itemOrFeed.requires,
235+
undefined,
236+
generateCdataString,
237+
),
238+
'dcterms:rights': generateArrayOrSingular(itemOrFeed.rights, undefined, generateCdataString),
239+
'dcterms:rightsHolder': generateArrayOrSingular(
208240
itemOrFeed.rightsHolders,
209241
itemOrFeed.rightsHolder,
210242
generateCdataString,
211243
),
212-
'dcterms:source': generateArray(itemOrFeed.sources, itemOrFeed.source, generateCdataString),
213-
'dcterms:spatial': generateArray(itemOrFeed.spatials, itemOrFeed.spatial, generateCdataString),
214-
'dcterms:subject': generateArray(itemOrFeed.subjects, itemOrFeed.subject, generateCdataString),
215-
'dcterms:tableOfContents': generateArray(
244+
'dcterms:source': generateArrayOrSingular(
245+
itemOrFeed.sources,
246+
itemOrFeed.source,
247+
generateCdataString,
248+
),
249+
'dcterms:spatial': generateArrayOrSingular(
250+
itemOrFeed.spatials,
251+
itemOrFeed.spatial,
252+
generateCdataString,
253+
),
254+
'dcterms:subject': generateArrayOrSingular(
255+
itemOrFeed.subjects,
256+
itemOrFeed.subject,
257+
generateCdataString,
258+
),
259+
'dcterms:tableOfContents': generateArrayOrSingular(
216260
itemOrFeed.tableOfContents,
217261
undefined,
218262
generateCdataString,
219263
),
220-
'dcterms:temporal': generateArray(
264+
'dcterms:temporal': generateArrayOrSingular(
221265
itemOrFeed.temporals,
222266
itemOrFeed.temporal,
223267
generateCdataString,
224268
),
225-
'dcterms:title': generateArray(itemOrFeed.titles, itemOrFeed.title, generateCdataString),
226-
'dcterms:type': generateArray(itemOrFeed.types, itemOrFeed.type, generateCdataString),
227-
'dcterms:valid': generateArray(itemOrFeed.valids, itemOrFeed.valid, generateRfc3339Date),
269+
'dcterms:title': generateArrayOrSingular(
270+
itemOrFeed.titles,
271+
itemOrFeed.title,
272+
generateCdataString,
273+
),
274+
'dcterms:type': generateArrayOrSingular(itemOrFeed.types, itemOrFeed.type, generateCdataString),
275+
'dcterms:valid': generateArrayOrSingular(
276+
itemOrFeed.valids,
277+
itemOrFeed.valid,
278+
generateRfc3339Date,
279+
),
228280
}
229281

230282
return trimObject(value)

0 commit comments

Comments
 (0)