@daihum/record-formats 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ead3-DM2in-ck.js","names":["EAD3_ADAPTER_PROFILE: Ead3AdapterProfile","ACCESS_POINT_XML_TAGS: Readonly<Record<Ead3AccessPointType, string>>","grouped: Record<string, unknown[]>","componentExtensions: Ead3ComponentExtensions","issues: FormatIssue[]","extensions: Ead3FindingAidExtensions","findingAid: Ead3FindingAid"],"sources":["../src/ead3/ead3.ts"],"sourcesContent":["import {\n asXmlArray,\n buildXml,\n findXmlValue,\n getXmlText,\n normalizeXmlName,\n parseXml,\n type XmlDocument,\n type XmlObject,\n} from '../xml/index.js';\nimport {\n createFormatIssue,\n formatFail,\n formatOk,\n hasFormatErrors,\n type FormatFailure,\n type FormatIssue,\n type FormatSuccess,\n type ParseResult,\n type RecordFormatAdapter,\n type SerializeResult,\n} from '../result.js';\nimport type {\n Ead3AdapterProfile,\n Ead3AccessPoint,\n Ead3AccessPointType,\n Ead3Component,\n Ead3ComponentExtensions,\n Ead3Date,\n Ead3DigitalObjectRef,\n Ead3FindingAid,\n Ead3FindingAidExtensions,\n Ead3HrefPolicyKind,\n Ead3LevelOfDescription,\n Ead3MaintenanceStatus,\n Ead3ParseOptions,\n Ead3SerializeOptions,\n Ead3ValidationOptions,\n Ead3XmlExtensions,\n} from './types.js';\n\nexport const EAD3_FORMAT_ID = 'ead3';\nexport const EAD3_NAMESPACE = 'http://ead3.archivists.org/schema/';\nexport const EAD3_FORMAT_GENERATION = 'EAD3';\nexport const EAD3_SCHEMA_VERSION = '1.1.1';\nexport const EAD3_SCHEMA_REVISION = '1.1.1';\nexport const EAD3_TAG_LIBRARY_VERSION = '1.1.2';\nexport const EAD3_VALIDATION_LEVEL = 'projection';\nexport const EAD3_OFFICIAL_SCHEMA_VALIDATION = false;\nexport const EAD3_ADAPTER_PROFILE: Ead3AdapterProfile = {\n profileId: 'daihum.record-formats.ead3.projection.v0',\n profileVersion: '0.1.0',\n formatId: EAD3_FORMAT_ID,\n formatGeneration: EAD3_FORMAT_GENERATION,\n namespace: EAD3_NAMESPACE,\n schemaVersion: EAD3_SCHEMA_VERSION,\n schemaRevision: EAD3_SCHEMA_REVISION,\n tagLibraryVersion: EAD3_TAG_LIBRARY_VERSION,\n validationLevel: EAD3_VALIDATION_LEVEL,\n officialSchemaValidation: EAD3_OFFICIAL_SCHEMA_VALIDATION,\n conformanceNotes: [\n 'This adapter is a DAIHUM finding-aid projection for common EAD3 elements.',\n 'Validation checks required projection fields and structured parser/serializer invariants.',\n 'It does not run official EAD3 RNG, XSD, DTD, or Schematron schema validation.',\n 'Unknown XML subtrees can be preserved through extension fields when preserveUnknown is enabled.',\n 'DAIHUM href/source policy metadata is carried as projection attributes and is not official EAD3 schema validation.',\n ],\n sourceReferences: [\n {\n label: 'Library of Congress EAD3 schema page',\n url: 'https://www.loc.gov/ead/ead3schema.html',\n },\n {\n label: 'Library of Congress EAD3 tag library',\n url: 'https://www.loc.gov/ead/EAD3taglib/',\n },\n ],\n};\n\nexport type Ead3ResultMetadata = Readonly<{\n adapterProfile: Ead3AdapterProfile;\n}>;\n\nexport type Ead3ParseResult = ParseResult<Ead3FindingAid> & Ead3ResultMetadata;\nexport type Ead3XmlDocumentResult = SerializeResult<XmlDocument> & Ead3ResultMetadata;\nexport type Ead3XmlSerializeResult = SerializeResult<string> & Ead3ResultMetadata;\n\nconst EAD3_ARRAY_TAGS = ['unitdate', 'dao', 'c', 'odd'];\n\nconst ACCESS_POINT_XML_TAGS: Readonly<Record<Ead3AccessPointType, string>> = {\n person: 'persname',\n family: 'famname',\n organization: 'corpname',\n place: 'geogname',\n subject: 'subject',\n documentaryForm: 'genreform',\n occupation: 'occupation',\n function: 'function',\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction readString(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction readElementText(parent: unknown, localName: string): string | undefined {\n return getXmlText(findXmlValue(parent, localName));\n}\n\nfunction readParagraphElementText(parent: unknown, localName: string): string | undefined {\n return readElementText(readRecord(parent, localName), 'p');\n}\n\nfunction readRecord(parent: unknown, localName: string): Record<string, unknown> {\n const value = findXmlValue(parent, localName);\n return isRecord(value) ? value : {};\n}\n\nfunction createEad3Issue(params: {\n code: string;\n path: string;\n message: string;\n severity?: 'error' | 'warning';\n}): FormatIssue {\n return createFormatIssue({\n severity: params.severity ?? 'error',\n code: params.code,\n path: params.path,\n message: params.message,\n format: EAD3_FORMAT_ID,\n });\n}\n\nfunction withEad3Profile<T extends ParseResult<unknown> | SerializeResult<unknown>>(result: T): T & Ead3ResultMetadata {\n return {\n ...result,\n adapterProfile: EAD3_ADAPTER_PROFILE,\n };\n}\n\nfunction ead3Ok<T>(value: T, issues: readonly FormatIssue[] = []): FormatSuccessWithProfile<T> {\n return withEad3Profile(formatOk(value, issues));\n}\n\nfunction ead3Fail<T = never>(issues: readonly FormatIssue[], value?: T): FormatFailureWithProfile<T> {\n return withEad3Profile(formatFail(issues, value));\n}\n\ntype FormatSuccessWithProfile<T> = FormatSuccess<T> & Ead3ResultMetadata;\ntype FormatFailureWithProfile<T = never> = FormatFailure<T> & Ead3ResultMetadata;\n\nfunction collectUnknownXml(\n record: Record<string, unknown>,\n knownLocalNames: readonly string[],\n): Ead3XmlExtensions | undefined {\n const known = new Set(knownLocalNames);\n const unknown = Object.fromEntries(\n Object.entries(record).filter(([key]) => !known.has(normalizeXmlName(key))),\n );\n return Object.keys(unknown).length > 0 ? unknown : undefined;\n}\n\nfunction mergeKnown<T extends Record<string, unknown>>(\n extension: Ead3XmlExtensions | undefined,\n known: T,\n): Record<string, unknown> {\n return {\n ...(extension ?? {}),\n ...known,\n };\n}\n\nfunction hasExtensionKeys(extension: Ead3XmlExtensions | undefined): boolean {\n return extension !== undefined && Object.keys(extension).length > 0;\n}\n\nfunction hasComponentExtensions(extensions: Ead3ComponentExtensions): boolean {\n return hasExtensionKeys(extensions.xml) || hasExtensionKeys(extensions.did);\n}\n\nfunction hasFindingAidExtensions(extensions: Ead3FindingAidExtensions): boolean {\n return hasExtensionKeys(extensions.ead) || hasExtensionKeys(extensions.control);\n}\n\nfunction dateToXml(date: Ead3Date): Record<string, unknown> {\n return mergeKnown(date.extensions, {\n '#text': date.expression,\n ...(date.normalized ? { '@_normal': date.normalized } : {}),\n ...(date.type ? { '@_type': date.type } : {}),\n });\n}\n\nfunction textBlockToXml(value: string): Record<string, unknown> {\n return { p: value };\n}\n\nfunction accessPointToXml(value: Ead3AccessPoint): Record<string, unknown> {\n return mergeKnown(value.extensions, {\n '#text': value.label,\n ...(value.identifier ? { '@_identifier': value.identifier } : {}),\n ...(value.source ? { '@_source': value.source } : {}),\n });\n}\n\nfunction controlAccessToXml(\n values: readonly Ead3AccessPoint[],\n extensions: Ead3XmlExtensions | undefined,\n): Record<string, unknown> {\n const grouped: Record<string, unknown[]> = {};\n for (const value of values) {\n const tag = ACCESS_POINT_XML_TAGS[value.type];\n (grouped[tag] ??= []).push(accessPointToXml(value));\n }\n return mergeKnown(extensions, grouped);\n}\n\nfunction nestedExtension(\n extension: Ead3XmlExtensions | undefined,\n localName: string,\n): Ead3XmlExtensions | undefined {\n const value = findXmlValue(extension, localName);\n return isRecord(value) ? value : undefined;\n}\n\nfunction isHrefPolicyKind(value: string | undefined): value is Ead3HrefPolicyKind {\n return value === 'preserve' || value === 'relative' || value === 'redact' || value === 'externalize';\n}\n\nfunction readJsonRecord(value: unknown): Record<string, unknown> | undefined {\n const text = readString(value);\n if (!text) return undefined;\n try {\n const parsed = JSON.parse(text) as unknown;\n return isRecord(parsed) ? parsed : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction jsonRecordAttribute(value: Readonly<Record<string, unknown>> | undefined): string | undefined {\n if (!value || Object.keys(value).length === 0) return undefined;\n try {\n return JSON.stringify(value);\n } catch {\n return undefined;\n }\n}\n\nfunction digitalObjectToXml(ref: Ead3DigitalObjectRef): Record<string, unknown> {\n const locatorJson = jsonRecordAttribute(ref.sourceRef?.locator);\n const metadataJson = jsonRecordAttribute(ref.sourceRef?.metadata);\n return mergeKnown(ref.extensions, {\n '@_href': ref.href,\n ...(ref.label ? { '@_label': ref.label } : {}),\n ...(ref.role ? { '@_role': ref.role } : {}),\n ...(ref.targetKind ? { '@_targetkind': ref.targetKind } : {}),\n ...(ref.hrefPolicy?.kind ? { '@_data-daihum-href-policy': ref.hrefPolicy.kind } : {}),\n ...(ref.hrefPolicy?.publicHref ? { '@_data-daihum-public-href': ref.hrefPolicy.publicHref } : {}),\n ...(ref.hrefPolicy?.baseHref ? { '@_data-daihum-base-href': ref.hrefPolicy.baseHref } : {}),\n ...(ref.hrefPolicy?.redactedHref ? { '@_data-daihum-redacted-href': ref.hrefPolicy.redactedHref } : {}),\n ...(ref.hrefPolicy?.note ? { '@_data-daihum-policy-note': ref.hrefPolicy.note } : {}),\n ...(ref.sourceRef?.kind ? { '@_data-daihum-source-kind': ref.sourceRef.kind } : {}),\n ...(ref.sourceRef?.id ? { '@_data-daihum-source-id': ref.sourceRef.id } : {}),\n ...(ref.sourceRef?.label ? { '@_data-daihum-source-label': ref.sourceRef.label } : {}),\n ...(locatorJson ? { '@_data-daihum-source-locator': locatorJson } : {}),\n ...(metadataJson ? { '@_data-daihum-source-metadata': metadataJson } : {}),\n });\n}\n\nfunction componentToXml(component: Ead3Component): Record<string, unknown> {\n const repositoryExtension = nestedExtension(component.extensions?.did, 'repository');\n const repositoryNameExtension = nestedExtension(repositoryExtension, 'corpname');\n const controlAccessExtension = nestedExtension(component.extensions?.xml, 'controlaccess');\n const did = mergeKnown(component.extensions?.did, {\n ...(component.referenceCode ? { unitid: component.referenceCode } : {}),\n unittitle: component.title,\n ...(component.repository\n ? {\n repository: mergeKnown(repositoryExtension, {\n corpname: mergeKnown(repositoryNameExtension, { '#text': component.repository }),\n }),\n }\n : {}),\n ...(component.dates?.length ? { unitdate: component.dates.map(dateToXml) } : {}),\n ...(component.extent ? { physdesc: { extent: component.extent } } : {}),\n ...(component.creator ? { origination: { name: component.creator } } : {}),\n ...(component.language ? { langmaterial: { language: component.language } } : {}),\n ...(component.digitalObjects?.length\n ? { dao: component.digitalObjects.map(digitalObjectToXml) }\n : {}),\n });\n\n return mergeKnown(component.extensions?.xml, {\n ...(component.id ? { '@_id': component.id } : {}),\n '@_level': component.level,\n ...(component.otherLevel ? { '@_otherlevel': component.otherLevel } : {}),\n did,\n ...(component.abstract ? { abstract: textBlockToXml(component.abstract) } : {}),\n ...(component.scopeContent ? { scopecontent: { p: component.scopeContent } } : {}),\n ...(component.arrangement ? { arrangement: { p: component.arrangement } } : {}),\n ...(component.accessRestriction ? { accessrestrict: { p: component.accessRestriction } } : {}),\n ...(component.useRestriction ? { userestrict: { p: component.useRestriction } } : {}),\n ...(component.biographicalHistory ? { bioghist: textBlockToXml(component.biographicalHistory) } : {}),\n ...(component.custodialHistory ? { custodhist: { p: component.custodialHistory } } : {}),\n ...(component.acquisitionInformation ? { acqinfo: textBlockToXml(component.acquisitionInformation) } : {}),\n ...(component.appraisal ? { appraisal: textBlockToXml(component.appraisal) } : {}),\n ...(component.processingInformation ? { processinfo: textBlockToXml(component.processingInformation) } : {}),\n ...(component.relatedMaterial ? { relatedmaterial: textBlockToXml(component.relatedMaterial) } : {}),\n ...(component.separatedMaterial ? { separatedmaterial: textBlockToXml(component.separatedMaterial) } : {}),\n ...(component.preferredCitation ? { prefercite: textBlockToXml(component.preferredCitation) } : {}),\n ...(component.notes?.length ? { odd: component.notes.map((note) => ({ p: note })) } : {}),\n ...(component.accessPoints?.length || controlAccessExtension\n ? { controlaccess: controlAccessToXml(component.accessPoints ?? [], controlAccessExtension) }\n : {}),\n ...(component.components?.length ? { dsc: { c: component.components.map(componentToXml) } } : {}),\n });\n}\n\nfunction findingAidToXmlObject(findingAid: Ead3FindingAid): XmlObject {\n const languageDeclarationExtension = nestedExtension(\n findingAid.extensions?.control,\n 'languagedeclaration',\n );\n const languageExtension = nestedExtension(languageDeclarationExtension, 'language');\n const control = mergeKnown(findingAid.extensions?.control, {\n recordid: findingAid.recordId,\n maintenancestatus: findingAid.maintenanceStatus ?? 'new',\n publicationstatus: 'inprocess',\n ...(findingAid.agencyName ? { maintenanceagency: { agencyname: findingAid.agencyName } } : {}),\n ...(findingAid.language\n ? {\n languagedeclaration: mergeKnown(languageDeclarationExtension, {\n language: mergeKnown(languageExtension, { '#text': findingAid.language }),\n }),\n }\n : {}),\n filedesc: {\n titlestmt: {\n titleproper: findingAid.title,\n },\n },\n });\n\n return {\n ead: mergeKnown(findingAid.extensions?.ead, {\n '@_xmlns': EAD3_NAMESPACE,\n control,\n archdesc: componentToXml(findingAid.description),\n }),\n };\n}\n\nfunction readDate(value: unknown): Ead3Date | undefined {\n const expression = getXmlText(value);\n if (!expression) return undefined;\n const record = isRecord(value) ? value : {};\n const normalized = readString(findXmlValue(record, 'normal'));\n const type = readString(findXmlValue(record, 'type'));\n const extensions = collectUnknownXml(record, ['#text', 'normal', 'type']);\n return {\n expression,\n ...(normalized ? { normalized } : {}),\n ...(type ? { type } : {}),\n ...(extensions ? { extensions } : {}),\n };\n}\n\nfunction readDigitalObject(value: unknown): Ead3DigitalObjectRef | undefined {\n if (!isRecord(value)) return undefined;\n const href = readString(findXmlValue(value, 'href'));\n if (!href) return undefined;\n const label = readString(findXmlValue(value, 'label'));\n const role = readString(findXmlValue(value, 'role'));\n const targetKind = readString(findXmlValue(value, 'targetkind'));\n const hrefPolicyKind = readString(findXmlValue(value, 'data-daihum-href-policy'));\n const publicHref = readString(findXmlValue(value, 'data-daihum-public-href'));\n const baseHref = readString(findXmlValue(value, 'data-daihum-base-href'));\n const redactedHref = readString(findXmlValue(value, 'data-daihum-redacted-href'));\n const policyNote = readString(findXmlValue(value, 'data-daihum-policy-note'));\n const sourceKind = readString(findXmlValue(value, 'data-daihum-source-kind'));\n const sourceId = readString(findXmlValue(value, 'data-daihum-source-id'));\n const sourceLabel = readString(findXmlValue(value, 'data-daihum-source-label'));\n const sourceLocator = readJsonRecord(findXmlValue(value, 'data-daihum-source-locator'));\n const sourceMetadata = readJsonRecord(findXmlValue(value, 'data-daihum-source-metadata'));\n const extensions = collectUnknownXml(value, [\n 'href',\n 'label',\n 'role',\n 'targetkind',\n 'data-daihum-href-policy',\n 'data-daihum-public-href',\n 'data-daihum-base-href',\n 'data-daihum-redacted-href',\n 'data-daihum-policy-note',\n 'data-daihum-source-kind',\n 'data-daihum-source-id',\n 'data-daihum-source-label',\n 'data-daihum-source-locator',\n 'data-daihum-source-metadata',\n ]);\n return {\n href,\n ...(label ? { label } : {}),\n ...(role ? { role } : {}),\n ...(targetKind ? { targetKind } : {}),\n ...(isHrefPolicyKind(hrefPolicyKind)\n ? {\n hrefPolicy: {\n kind: hrefPolicyKind,\n ...(publicHref ? { publicHref } : {}),\n ...(baseHref ? { baseHref } : {}),\n ...(redactedHref ? { redactedHref } : {}),\n ...(policyNote ? { note: policyNote } : {}),\n },\n }\n : {}),\n ...(sourceKind && sourceId\n ? {\n sourceRef: {\n kind: sourceKind,\n id: sourceId,\n ...(sourceLabel ? { label: sourceLabel } : {}),\n ...(sourceLocator ? { locator: sourceLocator } : {}),\n ...(sourceMetadata ? { metadata: sourceMetadata } : {}),\n },\n }\n : {}),\n ...(extensions ? { extensions } : {}),\n };\n}\n\nfunction readAccessPoint(value: unknown, type: Ead3AccessPointType): Ead3AccessPoint | undefined {\n const label = getXmlText(value);\n if (!label) return undefined;\n const record = isRecord(value) ? value : {};\n const identifier = readString(findXmlValue(record, 'identifier'));\n const source = readString(findXmlValue(record, 'source'));\n const extensions = collectUnknownXml(record, ['#text', 'identifier', 'source']);\n return {\n type,\n label,\n ...(identifier ? { identifier } : {}),\n ...(source ? { source } : {}),\n ...(extensions ? { extensions } : {}),\n };\n}\n\nfunction readAccessPoints(controlAccess: Record<string, unknown>): Ead3AccessPoint[] {\n return (Object.entries(ACCESS_POINT_XML_TAGS) as Array<[Ead3AccessPointType, string]>).flatMap(\n ([type, tag]) => asXmlArray(findXmlValue(controlAccess, tag))\n .map((value) => readAccessPoint(value, type))\n .filter((value): value is Ead3AccessPoint => Boolean(value)),\n );\n}\n\nfunction readMaintenanceStatus(value: unknown): Ead3MaintenanceStatus | undefined {\n const status = getXmlText(value);\n if (\n status === 'new' ||\n status === 'revised' ||\n status === 'deleted' ||\n status === 'derived' ||\n status === 'unknown'\n ) {\n return status;\n }\n return undefined;\n}\n\nfunction readLevel(value: unknown): {\n level: Ead3LevelOfDescription;\n otherLevel?: string;\n} {\n const level = readString(value);\n if (\n level === 'collection' ||\n level === 'series' ||\n level === 'subseries' ||\n level === 'file' ||\n level === 'item' ||\n level === 'otherlevel'\n ) {\n return { level };\n }\n return {\n level: 'otherlevel',\n ...(level ? { otherLevel: level } : {}),\n };\n}\n\nfunction readComponent(\n value: unknown,\n path: string,\n issues: FormatIssue[],\n options: Ead3ParseOptions,\n): Ead3Component | undefined {\n if (!isRecord(value)) return undefined;\n\n const did = readRecord(value, 'did');\n const title = readElementText(did, 'unittitle') ?? '';\n if (!title) {\n issues.push(createEad3Issue({\n code: 'ead3.component.title.required',\n path: `${path}.title`,\n message: 'EAD3 component title is required.',\n }));\n }\n\n const childrenContainer = readRecord(value, 'dsc');\n const dates = asXmlArray(findXmlValue(did, 'unitdate'))\n .map(readDate)\n .filter((date): date is Ead3Date => Boolean(date));\n const digitalObjects = asXmlArray(findXmlValue(did, 'dao'))\n .map(readDigitalObject)\n .filter((ref): ref is Ead3DigitalObjectRef => Boolean(ref));\n const components = asXmlArray(findXmlValue(childrenContainer, 'c'))\n .map((child, index) => readComponent(child, `${path}.components.${index}`, issues, options))\n .filter((component): component is Ead3Component => Boolean(component));\n const level = readLevel(findXmlValue(value, 'level'));\n const explicitOtherLevel = readString(findXmlValue(value, 'otherlevel'));\n const id = readString(findXmlValue(value, 'id'));\n const referenceCode = readElementText(did, 'unitid');\n const repository = readElementText(readRecord(did, 'repository'), 'corpname');\n const extent = readElementText(readRecord(did, 'physdesc'), 'extent');\n const creator = readElementText(readRecord(did, 'origination'), 'name');\n const abstract = readParagraphElementText(value, 'abstract');\n const scopeContent = readParagraphElementText(value, 'scopecontent');\n const arrangement = readParagraphElementText(value, 'arrangement');\n const accessRestriction = readParagraphElementText(value, 'accessrestrict');\n const useRestriction = readParagraphElementText(value, 'userestrict');\n const language = readElementText(readRecord(did, 'langmaterial'), 'language');\n const biographicalHistory = readParagraphElementText(value, 'bioghist');\n const custodialHistory = readParagraphElementText(value, 'custodhist');\n const acquisitionInformation = readParagraphElementText(value, 'acqinfo');\n const appraisal = readParagraphElementText(value, 'appraisal');\n const processingInformation = readParagraphElementText(value, 'processinfo');\n const relatedMaterial = readParagraphElementText(value, 'relatedmaterial');\n const separatedMaterial = readParagraphElementText(value, 'separatedmaterial');\n const preferredCitation = readParagraphElementText(value, 'prefercite');\n const notes = asXmlArray(findXmlValue(value, 'odd'))\n .map((note) => readElementText(note, 'p'))\n .filter((note): note is string => Boolean(note));\n const controlAccess = readRecord(value, 'controlaccess');\n const accessPoints = readAccessPoints(controlAccess);\n const componentUnknown = collectUnknownXml(value, [\n 'id',\n 'level',\n 'otherlevel',\n 'did',\n 'abstract',\n 'scopecontent',\n 'arrangement',\n 'accessrestrict',\n 'userestrict',\n 'bioghist',\n 'custodhist',\n 'acqinfo',\n 'appraisal',\n 'processinfo',\n 'relatedmaterial',\n 'separatedmaterial',\n 'prefercite',\n 'odd',\n 'dsc',\n ]);\n const didUnknown = collectUnknownXml(did, [\n 'unitid',\n 'unittitle',\n 'unitdate',\n 'physdesc',\n 'origination',\n 'langmaterial',\n 'dao',\n ]);\n\n const componentExtensions: Ead3ComponentExtensions = options.preserveUnknown === false\n ? {}\n : {\n ...(componentUnknown ? { xml: componentUnknown } : {}),\n ...(didUnknown ? { did: didUnknown } : {}),\n };\n\n return {\n ...(id ? { id } : {}),\n level: level.level,\n ...(explicitOtherLevel ?? level.otherLevel ? { otherLevel: explicitOtherLevel ?? level.otherLevel } : {}),\n title,\n ...(referenceCode ? { referenceCode } : {}),\n ...(repository ? { repository } : {}),\n ...(dates.length > 0 ? { dates } : {}),\n ...(extent ? { extent } : {}),\n ...(creator ? { creator } : {}),\n ...(abstract ? { abstract } : {}),\n ...(scopeContent ? { scopeContent } : {}),\n ...(arrangement ? { arrangement } : {}),\n ...(accessRestriction ? { accessRestriction } : {}),\n ...(useRestriction ? { useRestriction } : {}),\n ...(language ? { language } : {}),\n ...(biographicalHistory ? { biographicalHistory } : {}),\n ...(custodialHistory ? { custodialHistory } : {}),\n ...(acquisitionInformation ? { acquisitionInformation } : {}),\n ...(appraisal ? { appraisal } : {}),\n ...(processingInformation ? { processingInformation } : {}),\n ...(relatedMaterial ? { relatedMaterial } : {}),\n ...(separatedMaterial ? { separatedMaterial } : {}),\n ...(preferredCitation ? { preferredCitation } : {}),\n ...(notes.length > 0 ? { notes } : {}),\n ...(accessPoints.length > 0 ? { accessPoints } : {}),\n ...(digitalObjects.length > 0 ? { digitalObjects } : {}),\n ...(components.length > 0 ? { components } : {}),\n ...(hasComponentExtensions(componentExtensions) ? { extensions: componentExtensions } : {}),\n };\n}\n\nfunction getEadRoot(document: XmlDocument): Record<string, unknown> | undefined {\n if (normalizeXmlName(document.rootName) === 'ead') return document.root as Record<string, unknown>;\n const maybeEad = findXmlValue(document.raw, 'ead');\n return isRecord(maybeEad) ? maybeEad : undefined;\n}\n\nexport function ead3FromXmlDocument(\n document: XmlDocument,\n options: Ead3ParseOptions = {},\n): Ead3ParseResult {\n const issues: FormatIssue[] = [];\n const ead = getEadRoot(document);\n\n if (!ead) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.root.required',\n path: 'ead',\n message: 'EAD3 document must contain an ead root element.',\n }),\n ]);\n }\n\n const control = readRecord(ead, 'control');\n const filedesc = readRecord(control, 'filedesc');\n const titlestmt = readRecord(filedesc, 'titlestmt');\n const description = readComponent(findXmlValue(ead, 'archdesc'), 'description', issues, options);\n\n if (!description) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.archdesc.required',\n path: 'ead.archdesc',\n message: 'EAD3 document must contain an archdesc element.',\n }),\n ]);\n }\n\n const recordId = readElementText(control, 'recordid') ?? '';\n if (!recordId) {\n issues.push(createEad3Issue({\n code: 'ead3.recordId.required',\n path: 'recordId',\n message: 'EAD3 record id is required.',\n }));\n }\n\n const title = readElementText(titlestmt, 'titleproper') ?? description.title;\n if (!title) {\n issues.push(createEad3Issue({\n code: 'ead3.title.required',\n path: 'title',\n message: 'EAD3 title is required.',\n }));\n }\n\n const agencyName = readElementText(readRecord(control, 'maintenanceagency'), 'agencyname');\n const language = readElementText(readRecord(control, 'languagedeclaration'), 'language');\n const maintenanceStatus = readMaintenanceStatus(findXmlValue(control, 'maintenancestatus'));\n const eadUnknown = options.preserveUnknown === false\n ? undefined\n : collectUnknownXml(ead, ['xmlns', 'control', 'archdesc']);\n const controlUnknown = options.preserveUnknown === false\n ? undefined\n : collectUnknownXml(control, [\n 'recordid',\n 'maintenancestatus',\n 'publicationstatus',\n 'maintenanceagency',\n 'filedesc',\n ]);\n const extensions: Ead3FindingAidExtensions = {\n ...(eadUnknown ? { ead: eadUnknown } : {}),\n ...(controlUnknown ? { control: controlUnknown } : {}),\n };\n const findingAid: Ead3FindingAid = {\n recordId,\n title,\n ...(maintenanceStatus ? { maintenanceStatus } : {}),\n ...(agencyName ? { agencyName } : {}),\n ...(language ? { language } : {}),\n description,\n ...(hasFindingAidExtensions(extensions) ? { extensions } : {}),\n };\n\n return hasFormatErrors(issues) ? ead3Fail(issues, findingAid) : ead3Ok(findingAid, issues);\n}\n\nexport function parseEad3Xml(\n input: string,\n options: Ead3ParseOptions = {},\n): Ead3ParseResult {\n const parsed = parseXml(input, {\n arrayTags: EAD3_ARRAY_TAGS,\n });\n if (!parsed.ok) return ead3Fail(parsed.issues);\n return ead3FromXmlDocument(parsed.value, options);\n}\n\nexport function ead3ToXmlDocument(\n findingAid: Ead3FindingAid,\n options: Ead3ValidationOptions = {},\n): Ead3XmlDocumentResult {\n const issues = validateEad3(findingAid, options);\n if (hasFormatErrors(issues)) return ead3Fail(issues);\n\n const raw = findingAidToXmlObject(findingAid);\n const ead = raw.ead;\n if (!isRecord(ead)) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.serialize.failed',\n path: 'ead',\n message: 'EAD3 serializer did not produce an ead root element.',\n }),\n ]);\n }\n return ead3Ok({ rootName: 'ead', root: ead, raw });\n}\n\nexport function serializeEad3Xml(\n findingAid: Ead3FindingAid,\n options: Ead3SerializeOptions = {},\n): Ead3XmlSerializeResult {\n const document = ead3ToXmlDocument(findingAid);\n if (!document.ok) return ead3Fail(document.issues);\n return withEad3Profile(buildXml(document.value, { format: options.format ?? true, suppressEmptyNode: true }));\n}\n\nfunction validateComponent(component: Ead3Component, path: string): FormatIssue[] {\n const issues: FormatIssue[] = [];\n if (!readString(component.title)) {\n issues.push(createEad3Issue({\n code: 'ead3.component.title.required',\n path: `${path}.title`,\n message: 'EAD3 component title is required.',\n }));\n }\n\n component.digitalObjects?.forEach((ref, index) => {\n if (!readString(ref.href)) {\n issues.push(createEad3Issue({\n code: 'ead3.digitalObject.href.required',\n path: `${path}.digitalObjects.${index}.href`,\n message: 'EAD3 digital object href is required.',\n }));\n }\n });\n\n component.accessPoints?.forEach((accessPoint, index) => {\n if (!readString(accessPoint.label)) {\n issues.push(createEad3Issue({\n code: 'ead3.accessPoint.label.required',\n path: `${path}.accessPoints.${index}.label`,\n message: 'EAD3 access point label is required.',\n }));\n }\n });\n\n component.components?.forEach((child, index) => {\n issues.push(...validateComponent(child, `${path}.components.${index}`));\n });\n\n return issues;\n}\n\nexport function validateEad3(\n findingAid: Ead3FindingAid,\n options: Ead3ValidationOptions = {},\n): readonly FormatIssue[] {\n const issues: FormatIssue[] = [];\n if ((options.requireRecordId ?? true) && !readString(findingAid.recordId)) {\n issues.push(createEad3Issue({\n code: 'ead3.recordId.required',\n path: 'recordId',\n message: 'EAD3 record id is required.',\n }));\n }\n if (!readString(findingAid.title)) {\n issues.push(createEad3Issue({\n code: 'ead3.title.required',\n path: 'title',\n message: 'EAD3 title is required.',\n }));\n }\n issues.push(...validateComponent(findingAid.description, 'description'));\n return issues;\n}\n\nexport const ead3Adapter = {\n format: EAD3_FORMAT_ID,\n profile: EAD3_ADAPTER_PROFILE,\n parse: parseEad3Xml,\n serialize: serializeEad3Xml,\n validate: validateEad3,\n detect(input: string): boolean {\n return /<([A-Za-z0-9_-]+:)?ead[\\s>]/.test(input);\n },\n} satisfies RecordFormatAdapter<Ead3FindingAid> & { profile: Ead3AdapterProfile };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { l as SerializeResult, s as ParseResult } from "./result-Dd9q1uJU.js";
1
+ import { l as SerializeResult, s as ParseResult } from "./result-D7vcrlFh.js";
2
2
 
3
3
  //#region src/xml/types.d.ts
4
4
  type XmlAttributeMap = Readonly<Record<string, string | number | boolean>>;
@@ -38,4 +38,4 @@ declare function getXmlText(value: unknown): string | undefined;
38
38
  declare function xmlPathToString(path: readonly (string | number)[]): string;
39
39
  //#endregion
40
40
  export { XmlParseOptions as _, getXmlText as a, parseXml as c, XmlAttributeMap as d, XmlBuildOptions as f, XmlObject as g, XmlNamespaceMap as h, getXmlChildren as i, splitXmlName as l, XmlName as m, buildXml as n, isXmlDocument as o, XmlDocument as p, findXmlValue as r, normalizeXmlName as s, asXmlArray as t, xmlPathToString as u };
41
- //# sourceMappingURL=index-90ZPmZ85.d.ts.map
41
+ //# sourceMappingURL=index-BNudmNFx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-90ZPmZ85.d.ts","names":[],"sources":["../src/xml/types.ts","../src/xml/xml.ts"],"sourcesContent":[],"mappings":";;;KAAY,eAAA,GAAkB,SAAS;KAC3B,eAAA,GAAkB,SAAS;KAC3B,SAAA,GAAY,SAAS;AAFrB,KAIA,WAAA,GAAc,QAJa,CAAA;EAC3B,QAAA,EAAA,MAAA;EACA,IAAA,EAIJ,SAJa;EAET,GAAA,EAGL,SAHgB;CAEf,CAAA;AACD,KAGK,OAAA,GAAU,QAHf,CAAA;EAHmB,IAAA,EAAA,MAAA;EAAQ,SAAA,EAAA,MAAA;EAMtB,MAAA,CAAA,EAAA,MAAO;EAOP,WAAA,EAAA,OAAe;AAM3B,CAAA,CAAA;KANY,eAAA,GAAkB;;;ECsDd,UAAA,CAAQ,EAAA,OAAA;CAAyB,CAAA;AAAmC,KDhDxE,eAAA,GAAkB,QCgDsD,CAAA;EAAZ,MAAA,CAAA,EAAA,OAAA;EAAW,iBAAA,CAAA,EAAA,OAAA;AA+DnF,CAAA,CAAA;;;iBA/DgB,QAAA,0BAAiC,kBAAuB,YAAY;ADvExE,iBCsII,QAAA,CDtIW,QAAY,ECuI3B,WDvI0B,GCuIZ,SDvIY,EAAA,OAAA,CAAA,ECwI3B,eDxI2B,CAAA,ECyInC,eDzImC,CAAA,MAAA,CAAA;AAC1B,iBC8JI,aAAA,CD9JuB,KAAT,EAAA,OAAQ,CAAA,EAAA,KAAA,IC8JkB,WD9JlB;AAC1B,iBCsKI,YAAA,CDtKQ,IAAA,EAAA,MAAQ,CAAA,ECsKY,ODtKZ;AAEpB,iBCmLI,gBAAA,CDnLO,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAEf,iBCqLQ,UDrLR,CAAA,CAAA,CAAA,CAAA,KAAA,ECqL6B,CDrL7B,GAAA,SCqL0C,CDrL1C,EAAA,GAAA,SAAA,CAAA,EAAA,SCqLqE,CDrLrE,EAAA;AACD,iBC0LS,YAAA,CD1LT,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAHmB,iBCwMV,cAAA,CDxMU,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,SAAA,OAAA,EAAA;AAAQ,iBC4MlB,UAAA,CD5MkB,KAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;AAMtB,iBCgNI,eAAA,CDhNc,IAAA,EAAA,SAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"index-BNudmNFx.d.ts","names":[],"sources":["../src/xml/types.ts","../src/xml/xml.ts"],"sourcesContent":[],"mappings":";;;KAAY,eAAA,GAAkB,SAAS;KAC3B,eAAA,GAAkB,SAAS;KAC3B,SAAA,GAAY,SAAS;AAFrB,KAIA,WAAA,GAAc,QAJa,CAAA;EAC3B,QAAA,EAAA,MAAA;EACA,IAAA,EAIJ,SAJa;EAET,GAAA,EAGL,SAHgB;CAEf,CAAA;AACD,KAGK,OAAA,GAAU,QAHf,CAAA;EAHmB,IAAA,EAAA,MAAA;EAAQ,SAAA,EAAA,MAAA;EAMtB,MAAA,CAAA,EAAA,MAAO;EAOP,WAAA,EAAA,OAAe;AAM3B,CAAA,CAAA;KANY,eAAA,GAAkB;;;ECsDd,UAAA,CAAQ,EAAA,OAAA;CAAyB,CAAA;AAAmC,KDhDxE,eAAA,GAAkB,QCgDsD,CAAA;EAAZ,MAAA,CAAA,EAAA,OAAA;EAAW,iBAAA,CAAA,EAAA,OAAA;AA+DnF,CAAA,CAAA;;;iBA/DgB,QAAA,0BAAiC,kBAAuB,YAAY;ADvExE,iBCsII,QAAA,CDtIW,QAAY,ECuI3B,WDvI0B,GCuIZ,SDvIY,EAAA,OAAA,CAAA,ECwI3B,eDxI2B,CAAA,ECyInC,eDzImC,CAAA,MAAA,CAAA;AAC1B,iBC8JI,aAAA,CD9JuB,KAAT,EAAA,OAAQ,CAAA,EAAA,KAAA,IC8JkB,WD9JlB;AAC1B,iBCsKI,YAAA,CDtKQ,IAAA,EAAA,MAAQ,CAAA,ECsKY,ODtKZ;AAEpB,iBCmLI,gBAAA,CDnLO,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAEf,iBCqLQ,UDrLR,CAAA,CAAA,CAAA,CAAA,KAAA,ECqL6B,CDrL7B,GAAA,SCqL0C,CDrL1C,EAAA,GAAA,SAAA,CAAA,EAAA,SCqLqE,CDrLrE,EAAA;AACD,iBC0LS,YAAA,CD1LT,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAHmB,iBCwMV,cAAA,CDxMU,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,SAAA,OAAA,EAAA;AAAQ,iBC4MlB,UAAA,CD5MkB,KAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;AAMtB,iBCgNI,eAAA,CDhNc,IAAA,EAAA,SAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAA,EAAA,MAAA"}
@@ -0,0 +1,168 @@
1
+ import { l as SerializeResult, n as FormatIssue, s as ParseResult } from "./result-D7vcrlFh.js";
2
+ import { p as XmlDocument } from "./index-BNudmNFx.js";
3
+
4
+ //#region src/ead3/types.d.ts
5
+ type Ead3LevelOfDescription = 'collection' | 'series' | 'subseries' | 'file' | 'item' | 'otherlevel';
6
+ type Ead3MaintenanceStatus = 'new' | 'revised' | 'deleted' | 'derived' | 'unknown';
7
+ type Ead3ValidationLevel = 'projection' | 'structural' | 'schema';
8
+ type Ead3AdapterSourceReference = Readonly<{
9
+ label: string;
10
+ url: string;
11
+ }>;
12
+ type Ead3AdapterProfile = Readonly<{
13
+ profileId: string;
14
+ profileVersion: string;
15
+ formatId: 'ead3';
16
+ formatGeneration: 'EAD3';
17
+ namespace: string;
18
+ schemaVersion: string;
19
+ schemaRevision: string;
20
+ tagLibraryVersion: string;
21
+ validationLevel: Ead3ValidationLevel;
22
+ officialSchemaValidation: boolean;
23
+ conformanceNotes: readonly string[];
24
+ sourceReferences: readonly Ead3AdapterSourceReference[];
25
+ }>;
26
+ type Ead3XmlExtensions = Readonly<Record<string, unknown>>;
27
+ type Ead3Date = Readonly<{
28
+ expression: string;
29
+ normalized?: string;
30
+ type?: string;
31
+ extensions?: Ead3XmlExtensions;
32
+ }>;
33
+ type Ead3AccessPointType = 'person' | 'family' | 'organization' | 'place' | 'subject' | 'documentaryForm' | 'occupation' | 'function';
34
+ type Ead3AccessPoint = Readonly<{
35
+ type: Ead3AccessPointType;
36
+ label: string;
37
+ identifier?: string;
38
+ source?: string;
39
+ extensions?: Ead3XmlExtensions;
40
+ }>;
41
+ type Ead3DigitalObjectTargetKind = 'file-uri' | 'data-source-item' | 'reader-page' | 'artifact' | 'external-uri' | 'opaque' | (string & Record<never, never>);
42
+ type Ead3HrefPolicyKind = 'preserve' | 'relative' | 'redact' | 'externalize';
43
+ type Ead3HrefPolicy = Readonly<{
44
+ kind: Ead3HrefPolicyKind;
45
+ publicHref?: string;
46
+ baseHref?: string;
47
+ redactedHref?: string;
48
+ note?: string;
49
+ }>;
50
+ type Ead3SourceRef = Readonly<{
51
+ kind: string;
52
+ id: string;
53
+ label?: string;
54
+ locator?: Readonly<Record<string, unknown>>;
55
+ metadata?: Readonly<Record<string, unknown>>;
56
+ }>;
57
+ type Ead3DigitalObjectRef = Readonly<{
58
+ href: string;
59
+ label?: string;
60
+ role?: string;
61
+ targetKind?: Ead3DigitalObjectTargetKind;
62
+ hrefPolicy?: Ead3HrefPolicy;
63
+ sourceRef?: Ead3SourceRef;
64
+ provenance?: Record<string, unknown>;
65
+ extensions?: Ead3XmlExtensions;
66
+ }>;
67
+ type Ead3ComponentExtensions = Readonly<{
68
+ xml?: Ead3XmlExtensions;
69
+ did?: Ead3XmlExtensions;
70
+ }>;
71
+ type Ead3Component = Readonly<{
72
+ id?: string;
73
+ level: Ead3LevelOfDescription;
74
+ otherLevel?: string;
75
+ title: string;
76
+ referenceCode?: string;
77
+ repository?: string;
78
+ dates?: readonly Ead3Date[];
79
+ extent?: string;
80
+ creator?: string;
81
+ abstract?: string;
82
+ scopeContent?: string;
83
+ arrangement?: string;
84
+ accessRestriction?: string;
85
+ useRestriction?: string;
86
+ language?: string;
87
+ biographicalHistory?: string;
88
+ custodialHistory?: string;
89
+ acquisitionInformation?: string;
90
+ appraisal?: string;
91
+ processingInformation?: string;
92
+ relatedMaterial?: string;
93
+ separatedMaterial?: string;
94
+ preferredCitation?: string;
95
+ notes?: readonly string[];
96
+ accessPoints?: readonly Ead3AccessPoint[];
97
+ digitalObjects?: readonly Ead3DigitalObjectRef[];
98
+ components?: readonly Ead3Component[];
99
+ extensions?: Ead3ComponentExtensions;
100
+ }>;
101
+ type Ead3FindingAidExtensions = Readonly<{
102
+ ead?: Ead3XmlExtensions;
103
+ control?: Ead3XmlExtensions;
104
+ }>;
105
+ type Ead3FindingAid = Readonly<{
106
+ recordId: string;
107
+ title: string;
108
+ maintenanceStatus?: Ead3MaintenanceStatus;
109
+ language?: string;
110
+ agencyName?: string;
111
+ description: Ead3Component;
112
+ extensions?: Ead3FindingAidExtensions;
113
+ }>;
114
+ type Ead3ParseOptions = Readonly<{
115
+ preserveUnknown?: boolean;
116
+ }>;
117
+ type Ead3SerializeOptions = Readonly<{
118
+ format?: boolean;
119
+ }>;
120
+ type Ead3ValidationOptions = Readonly<{
121
+ requireRecordId?: boolean;
122
+ }>;
123
+ //#endregion
124
+ //#region src/ead3/ead3.d.ts
125
+ declare const EAD3_FORMAT_ID = "ead3";
126
+ declare const EAD3_NAMESPACE = "http://ead3.archivists.org/schema/";
127
+ declare const EAD3_FORMAT_GENERATION = "EAD3";
128
+ declare const EAD3_SCHEMA_VERSION = "1.1.1";
129
+ declare const EAD3_SCHEMA_REVISION = "1.1.1";
130
+ declare const EAD3_TAG_LIBRARY_VERSION = "1.1.2";
131
+ declare const EAD3_VALIDATION_LEVEL = "projection";
132
+ declare const EAD3_OFFICIAL_SCHEMA_VALIDATION = false;
133
+ declare const EAD3_ADAPTER_PROFILE: Ead3AdapterProfile;
134
+ type Ead3ResultMetadata = Readonly<{
135
+ adapterProfile: Ead3AdapterProfile;
136
+ }>;
137
+ type Ead3ParseResult = ParseResult<Ead3FindingAid> & Ead3ResultMetadata;
138
+ type Ead3XmlDocumentResult = SerializeResult<XmlDocument> & Ead3ResultMetadata;
139
+ type Ead3XmlSerializeResult = SerializeResult<string> & Ead3ResultMetadata;
140
+ declare function ead3FromXmlDocument(document: XmlDocument, options?: Ead3ParseOptions): Ead3ParseResult;
141
+ declare function parseEad3Xml(input: string, options?: Ead3ParseOptions): Ead3ParseResult;
142
+ declare function ead3ToXmlDocument(findingAid: Ead3FindingAid, options?: Ead3ValidationOptions): Ead3XmlDocumentResult;
143
+ declare function serializeEad3Xml(findingAid: Ead3FindingAid, options?: Ead3SerializeOptions): Ead3XmlSerializeResult;
144
+ declare function validateEad3(findingAid: Ead3FindingAid, options?: Ead3ValidationOptions): readonly FormatIssue[];
145
+ declare const ead3Adapter: {
146
+ format: string;
147
+ profile: Readonly<{
148
+ profileId: string;
149
+ profileVersion: string;
150
+ formatId: "ead3";
151
+ formatGeneration: "EAD3";
152
+ namespace: string;
153
+ schemaVersion: string;
154
+ schemaRevision: string;
155
+ tagLibraryVersion: string;
156
+ validationLevel: Ead3ValidationLevel;
157
+ officialSchemaValidation: boolean;
158
+ conformanceNotes: readonly string[];
159
+ sourceReferences: readonly Ead3AdapterSourceReference[];
160
+ }>;
161
+ parse: typeof parseEad3Xml;
162
+ serialize: typeof serializeEad3Xml;
163
+ validate: typeof validateEad3;
164
+ detect(input: string): boolean;
165
+ };
166
+ //#endregion
167
+ export { Ead3FindingAidExtensions as A, Ead3XmlExtensions as B, Ead3AdapterSourceReference as C, Ead3DigitalObjectRef as D, Ead3Date as E, Ead3ParseOptions as F, Ead3SerializeOptions as I, Ead3SourceRef as L, Ead3HrefPolicyKind as M, Ead3LevelOfDescription as N, Ead3DigitalObjectTargetKind as O, Ead3MaintenanceStatus as P, Ead3ValidationLevel as R, Ead3AdapterProfile as S, Ead3ComponentExtensions as T, parseEad3Xml as _, EAD3_OFFICIAL_SCHEMA_VALIDATION as a, Ead3AccessPoint as b, EAD3_TAG_LIBRARY_VERSION as c, Ead3ResultMetadata as d, Ead3XmlDocumentResult as f, ead3ToXmlDocument as g, ead3FromXmlDocument as h, EAD3_NAMESPACE as i, Ead3HrefPolicy as j, Ead3FindingAid as k, EAD3_VALIDATION_LEVEL as l, ead3Adapter as m, EAD3_FORMAT_GENERATION as n, EAD3_SCHEMA_REVISION as o, Ead3XmlSerializeResult as p, EAD3_FORMAT_ID as r, EAD3_SCHEMA_VERSION as s, EAD3_ADAPTER_PROFILE as t, Ead3ParseResult as u, serializeEad3Xml as v, Ead3Component as w, Ead3AccessPointType as x, validateEad3 as y, Ead3ValidationOptions as z };
168
+ //# sourceMappingURL=index-DxjnI5KZ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DxjnI5KZ.d.ts","names":[],"sources":["../src/ead3/types.ts","../src/ead3/ead3.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as FormatSourceRange, c as RecordFormatAdapter, d as formatFail, f as formatOk, i as FormatResult, l as SerializeResult, n as FormatIssue, o as FormatSuccess, p as hasFormatErrors, r as FormatIssueSeverity, s as ParseResult, t as FormatFailure, u as createFormatIssue } from "./result-Dd9q1uJU.js";
1
+ import { a as FormatSourceRange, c as RecordFormatAdapter, d as formatFail, f as formatOk, i as FormatResult, l as SerializeResult, n as FormatIssue, o as FormatSuccess, p as hasFormatErrors, r as FormatIssueSeverity, s as ParseResult, t as FormatFailure, u as createFormatIssue } from "./result-D7vcrlFh.js";
2
2
  export { type FormatFailure, type FormatIssue, type FormatIssueSeverity, type FormatResult, type FormatSourceRange, type FormatSuccess, type ParseResult, type RecordFormatAdapter, type SerializeResult, createFormatIssue, formatFail, formatOk, hasFormatErrors };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { i as hasFormatErrors, n as formatFail, r as formatOk, t as createFormatIssue } from "./result-YrPe5I9D.js";
1
+ import { i as hasFormatErrors, n as formatFail, r as formatOk, t as createFormatIssue } from "./result-Cl7IY6PN.js";
2
2
 
3
3
  export { createFormatIssue, formatFail, formatOk, hasFormatErrors };
@@ -30,4 +30,4 @@ function hasFormatErrors(issues) {
30
30
 
31
31
  //#endregion
32
32
  export { hasFormatErrors as i, formatFail as n, formatOk as r, createFormatIssue as t };
33
- //# sourceMappingURL=result-YrPe5I9D.js.map
33
+ //# sourceMappingURL=result-Cl7IY6PN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-YrPe5I9D.js","names":[],"sources":["../src/result.ts"],"sourcesContent":["export type FormatIssueSeverity = 'error' | 'warning';\n\nexport type FormatSourceRange = Readonly<{\n start?: number;\n end?: number;\n line?: number;\n column?: number;\n}>;\n\nexport type FormatIssue = Readonly<{\n severity: FormatIssueSeverity;\n code: string;\n message: string;\n path?: string;\n format?: string;\n sourceRange?: FormatSourceRange;\n cause?: unknown;\n}>;\n\nexport type FormatSuccess<T> = Readonly<{\n ok: true;\n value: T;\n issues: readonly FormatIssue[];\n}>;\n\nexport type FormatFailure<T = never> = Readonly<{\n ok: false;\n issues: readonly FormatIssue[];\n value?: T;\n}>;\n\nexport type FormatResult<T> = FormatSuccess<T> | FormatFailure<T>;\nexport type ParseResult<T> = FormatResult<T>;\nexport type SerializeResult<T> = FormatResult<T>;\n\nexport type RecordFormatAdapter<TRecord, TInput = string, TOutput = string> = Readonly<{\n format: string;\n parse(input: TInput): ParseResult<TRecord>;\n serialize(record: TRecord): SerializeResult<TOutput>;\n validate(record: TRecord): readonly FormatIssue[];\n detect?(input: TInput): boolean;\n}>;\n\nexport function createFormatIssue(params: {\n severity: FormatIssueSeverity;\n code: string;\n message: string;\n path?: string;\n format?: string;\n sourceRange?: FormatSourceRange;\n cause?: unknown;\n}): FormatIssue {\n return {\n severity: params.severity,\n code: params.code,\n message: params.message,\n ...(params.path !== undefined ? { path: params.path } : {}),\n ...(params.format !== undefined ? { format: params.format } : {}),\n ...(params.sourceRange !== undefined ? { sourceRange: params.sourceRange } : {}),\n ...(params.cause !== undefined ? { cause: params.cause } : {}),\n };\n}\n\nexport function formatOk<T>(value: T, issues: readonly FormatIssue[] = []): FormatSuccess<T> {\n return { ok: true, value, issues };\n}\n\nexport function formatFail<T = never>(\n issues: readonly FormatIssue[],\n value?: T,\n): FormatFailure<T> {\n return {\n ok: false,\n issues,\n ...(value !== undefined ? { value } : {}),\n };\n}\n\nexport function hasFormatErrors(issues: readonly FormatIssue[]): boolean {\n return issues.some((issue) => issue.severity === 'error');\n}\n"],"mappings":";AA2CA,SAAgB,kBAAkB,QAQlB;AACd,QAAO;EACL,UAAU,OAAO;EACjB,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,GAAI,OAAO,SAAS,SAAY,EAAE,MAAM,OAAO,MAAM,GAAG,EAAE;EAC1D,GAAI,OAAO,WAAW,SAAY,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAChE,GAAI,OAAO,gBAAgB,SAAY,EAAE,aAAa,OAAO,aAAa,GAAG,EAAE;EAC/E,GAAI,OAAO,UAAU,SAAY,EAAE,OAAO,OAAO,OAAO,GAAG,EAAE;EAC9D;;AAGH,SAAgB,SAAY,OAAU,SAAiC,EAAE,EAAoB;AAC3F,QAAO;EAAE,IAAI;EAAM;EAAO;EAAQ;;AAGpC,SAAgB,WACd,QACA,OACkB;AAClB,QAAO;EACL,IAAI;EACJ;EACA,GAAI,UAAU,SAAY,EAAE,OAAO,GAAG,EAAE;EACzC;;AAGH,SAAgB,gBAAgB,QAAyC;AACvE,QAAO,OAAO,MAAM,UAAU,MAAM,aAAa,QAAQ"}
1
+ {"version":3,"file":"result-Cl7IY6PN.js","names":[],"sources":["../src/result.ts"],"sourcesContent":["export type FormatIssueSeverity = 'error' | 'warning';\n\nexport type FormatSourceRange = Readonly<{\n start?: number;\n end?: number;\n line?: number;\n column?: number;\n}>;\n\nexport type FormatIssue = Readonly<{\n severity: FormatIssueSeverity;\n code: string;\n message: string;\n path?: string;\n format?: string;\n sourceRange?: FormatSourceRange;\n cause?: unknown;\n}>;\n\nexport type FormatSuccess<T> = Readonly<{\n ok: true;\n value: T;\n issues: readonly FormatIssue[];\n}>;\n\nexport type FormatFailure<T = never> = Readonly<{\n ok: false;\n issues: readonly FormatIssue[];\n value?: T;\n}>;\n\nexport type FormatResult<T> = FormatSuccess<T> | FormatFailure<T>;\nexport type ParseResult<T> = FormatResult<T>;\nexport type SerializeResult<T> = FormatResult<T>;\n\nexport type RecordFormatAdapter<TRecord, TInput = string, TOutput = string> = Readonly<{\n format: string;\n parse(input: TInput): ParseResult<TRecord>;\n serialize(record: TRecord): SerializeResult<TOutput>;\n validate(record: TRecord): readonly FormatIssue[];\n detect?(input: TInput): boolean;\n}>;\n\nexport function createFormatIssue(params: {\n severity: FormatIssueSeverity;\n code: string;\n message: string;\n path?: string;\n format?: string;\n sourceRange?: FormatSourceRange;\n cause?: unknown;\n}): FormatIssue {\n return {\n severity: params.severity,\n code: params.code,\n message: params.message,\n ...(params.path !== undefined ? { path: params.path } : {}),\n ...(params.format !== undefined ? { format: params.format } : {}),\n ...(params.sourceRange !== undefined ? { sourceRange: params.sourceRange } : {}),\n ...(params.cause !== undefined ? { cause: params.cause } : {}),\n };\n}\n\nexport function formatOk<T>(value: T, issues: readonly FormatIssue[] = []): FormatSuccess<T> {\n return { ok: true, value, issues };\n}\n\nexport function formatFail<T = never>(\n issues: readonly FormatIssue[],\n value?: T,\n): FormatFailure<T> {\n return {\n ok: false,\n issues,\n ...(value !== undefined ? { value } : {}),\n };\n}\n\nexport function hasFormatErrors(issues: readonly FormatIssue[]): boolean {\n return issues.some((issue) => issue.severity === 'error');\n}\n"],"mappings":";AA2CA,SAAgB,kBAAkB,QAQlB;AACd,QAAO;EACL,UAAU,OAAO;EACjB,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,GAAI,OAAO,SAAS,SAAY,EAAE,MAAM,OAAO,MAAM,GAAG,EAAE;EAC1D,GAAI,OAAO,WAAW,SAAY,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAChE,GAAI,OAAO,gBAAgB,SAAY,EAAE,aAAa,OAAO,aAAa,GAAG,EAAE;EAC/E,GAAI,OAAO,UAAU,SAAY,EAAE,OAAO,OAAO,OAAO,GAAG,EAAE;EAC9D;;AAGH,SAAgB,SAAY,OAAU,SAAiC,EAAE,EAAoB;AAC3F,QAAO;EAAE,IAAI;EAAM;EAAO;EAAQ;;AAGpC,SAAgB,WACd,QACA,OACkB;AAClB,QAAO;EACL,IAAI;EACJ;EACA,GAAI,UAAU,SAAY,EAAE,OAAO,GAAG,EAAE;EACzC;;AAGH,SAAgB,gBAAgB,QAAyC;AACvE,QAAO,OAAO,MAAM,UAAU,MAAM,aAAa,QAAQ"}
@@ -49,4 +49,4 @@ declare function formatFail<T = never>(issues: readonly FormatIssue[], value?: T
49
49
  declare function hasFormatErrors(issues: readonly FormatIssue[]): boolean;
50
50
  //#endregion
51
51
  export { FormatSourceRange as a, RecordFormatAdapter as c, formatFail as d, formatOk as f, FormatResult as i, SerializeResult as l, FormatIssue as n, FormatSuccess as o, hasFormatErrors as p, FormatIssueSeverity as r, ParseResult as s, FormatFailure as t, createFormatIssue as u };
52
- //# sourceMappingURL=result-Dd9q1uJU.d.ts.map
52
+ //# sourceMappingURL=result-D7vcrlFh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-Dd9q1uJU.d.ts","names":[],"sources":["../src/result.ts"],"sourcesContent":[],"mappings":";KAAY,mBAAA;AAAA,KAEA,iBAAA,GAAoB,QAFD,CAAA;EAEnB,KAAA,CAAA,EAAA,MAAA;EAOA,GAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAAA,MAAA;EAKI,MAAA,CAAA,EAAA,MAAA;CANU,CAAA;AAAQ,KAAtB,WAAA,GAAc,QAAQ,CAAA;EAUtB,QAAA,EATA,mBASa;EAEhB,IAAA,EAAA,MAAA;EACU,OAAA,EAAA,MAAA;EAHY,IAAA,CAAA,EAAA,MAAA;EAAQ,MAAA,CAAA,EAAA,MAAA;EAM3B,WAAA,CAAA,EAVI,iBAUS;EAEN,KAAA,CAAA,EAAA,OAAA;CACT,CAAA;AAH6B,KAN3B,aAM2B,CAAA,CAAA,CAAA,GANR,QAMQ,CAAA;EAAQ,EAAA,EAAA,IAAA;EAMnC,KAAA,EAVH,CAUG;EAAgC,MAAA,EAAA,SATzB,WASyB,EAAA;CAAd,CAAA;AAAiC,KANnD,aAMmD,CAAA,IAAA,KAAA,CAAA,GANxB,QAMwB,CAAA;EAAd,EAAA,EAAA,KAAA;EAAa,MAAA,EAAA,SAJ3C,WAI2C,EAAA;EAClD,KAAA,CAAA,EAJF,CAIE;AACZ,CAAA,CAAA;AAEY,KAJA,YAIA,CAAA,CAAmB,CAAA,GAJD,aAIC,CAJa,CAIb,CAAA,GAJkB,aAIlB,CAJgC,CAIhC,CAAA;AAEhB,KALH,WAKG,CAAA,CAAA,CAAA,GALc,YAKd,CAL2B,CAK3B,CAAA;AAAqB,KAJxB,eAIwB,CAAA,CAAA,CAAA,GAJH,YAIG,CAJU,CAIV,CAAA;AAAZ,KAFZ,mBAEY,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,UAAA,MAAA,CAAA,GAFsD,QAEtD,CAAA;EACJ,MAAA,EAAA,MAAA;EAA0B,KAAA,CAAA,KAAA,EAD/B,MAC+B,CAAA,EADtB,WACsB,CADV,OACU,CAAA;EAAhB,SAAA,CAAA,MAAA,EAAV,OAAU,CAAA,EAAA,eAAA,CAAgB,OAAhB,CAAA;EACX,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,SAAmB,WAAnB,EAAA;EAAmB,MAAA,EAAA,KAAA,EACrB,MADqB,CAAA,EAAA,OAAA;CACrB,CAAA;AAL6D,iBAQ9D,iBAAA,CAR8D,MAAA,EAAA;EAAQ,QAAA,EAS1E,mBAT0E;EAQtE,IAAA,EAAA,MAAA;EACJ,OAAA,EAAA,MAAA;EAKI,IAAA,CAAA,EAAA,MAAA;EAEZ,MAAA,CAAA,EAAA,MAAA;EAAW,WAAA,CAAA,EAFC,iBAED;EAYC,KAAA,CAAA,EAAA,OAAQ;CAAW,CAAA,EAZ/B,WAY+B;AAAoB,iBAAvC,QAAuC,CAAA,CAAA,CAAA,CAAA,KAAA,EAApB,CAAoB,EAAA,MAAA,CAAA,EAAA,SAAA,WAAA,EAAA,CAAA,EAAqB,aAArB,CAAmC,CAAnC,CAAA;AAAmC,iBAI1E,UAJ0E,CAAA,IAAA,KAAA,CAAA,CAAA,MAAA,EAAA,SAKvE,WALuE,EAAA,EAAA,KAAA,CAAA,EAMhF,CANgF,CAAA,EAOvF,aAPuF,CAOzE,CAPyE,CAAA;AAAd,iBAe5D,eAAA,CAf4D,MAAA,EAAA,SAe3B,WAf2B,EAAA,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"result-D7vcrlFh.d.ts","names":[],"sources":["../src/result.ts"],"sourcesContent":[],"mappings":";KAAY,mBAAA;AAAA,KAEA,iBAAA,GAAoB,QAFD,CAAA;EAEnB,KAAA,CAAA,EAAA,MAAA;EAOA,GAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAAA,MAAA;EAKI,MAAA,CAAA,EAAA,MAAA;CANU,CAAA;AAAQ,KAAtB,WAAA,GAAc,QAAQ,CAAA;EAUtB,QAAA,EATA,mBASa;EAEhB,IAAA,EAAA,MAAA;EACU,OAAA,EAAA,MAAA;EAHY,IAAA,CAAA,EAAA,MAAA;EAAQ,MAAA,CAAA,EAAA,MAAA;EAM3B,WAAA,CAAA,EAVI,iBAUS;EAEN,KAAA,CAAA,EAAA,OAAA;CACT,CAAA;AAH6B,KAN3B,aAM2B,CAAA,CAAA,CAAA,GANR,QAMQ,CAAA;EAAQ,EAAA,EAAA,IAAA;EAMnC,KAAA,EAVH,CAUG;EAAgC,MAAA,EAAA,SATzB,WASyB,EAAA;CAAd,CAAA;AAAiC,KANnD,aAMmD,CAAA,IAAA,KAAA,CAAA,GANxB,QAMwB,CAAA;EAAd,EAAA,EAAA,KAAA;EAAa,MAAA,EAAA,SAJ3C,WAI2C,EAAA;EAClD,KAAA,CAAA,EAJF,CAIE;AACZ,CAAA,CAAA;AAEY,KAJA,YAIA,CAAA,CAAmB,CAAA,GAJD,aAIC,CAJa,CAIb,CAAA,GAJkB,aAIlB,CAJgC,CAIhC,CAAA;AAEhB,KALH,WAKG,CAAA,CAAA,CAAA,GALc,YAKd,CAL2B,CAK3B,CAAA;AAAqB,KAJxB,eAIwB,CAAA,CAAA,CAAA,GAJH,YAIG,CAJU,CAIV,CAAA;AAAZ,KAFZ,mBAEY,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,UAAA,MAAA,CAAA,GAFsD,QAEtD,CAAA;EACJ,MAAA,EAAA,MAAA;EAA0B,KAAA,CAAA,KAAA,EAD/B,MAC+B,CAAA,EADtB,WACsB,CADV,OACU,CAAA;EAAhB,SAAA,CAAA,MAAA,EAAV,OAAU,CAAA,EAAA,eAAA,CAAgB,OAAhB,CAAA;EACX,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,SAAmB,WAAnB,EAAA;EAAmB,MAAA,EAAA,KAAA,EACrB,MADqB,CAAA,EAAA,OAAA;CACrB,CAAA;AAL6D,iBAQ9D,iBAAA,CAR8D,MAAA,EAAA;EAAQ,QAAA,EAS1E,mBAT0E;EAQtE,IAAA,EAAA,MAAA;EACJ,OAAA,EAAA,MAAA;EAKI,IAAA,CAAA,EAAA,MAAA;EAEZ,MAAA,CAAA,EAAA,MAAA;EAAW,WAAA,CAAA,EAFC,iBAED;EAYC,KAAA,CAAA,EAAA,OAAQ;CAAW,CAAA,EAZ/B,WAY+B;AAAoB,iBAAvC,QAAuC,CAAA,CAAA,CAAA,CAAA,KAAA,EAApB,CAAoB,EAAA,MAAA,CAAA,EAAA,SAAA,WAAA,EAAA,CAAA,EAAqB,aAArB,CAAmC,CAAnC,CAAA;AAAmC,iBAI1E,UAJ0E,CAAA,IAAA,KAAA,CAAA,CAAA,MAAA,EAAA,SAKvE,WALuE,EAAA,EAAA,KAAA,CAAA,EAMhF,CANgF,CAAA,EAOvF,aAPuF,CAOzE,CAPyE,CAAA;AAAd,iBAe5D,eAAA,CAf4D,MAAA,EAAA,SAe3B,WAf2B,EAAA,CAAA,EAAA,OAAA"}
@@ -1,3 +1,3 @@
1
- import { _ as XmlParseOptions, a as getXmlText, c as parseXml, d as XmlAttributeMap, f as XmlBuildOptions, g as XmlObject, h as XmlNamespaceMap, i as getXmlChildren, l as splitXmlName, m as XmlName, n as buildXml, o as isXmlDocument, p as XmlDocument, r as findXmlValue, s as normalizeXmlName, t as asXmlArray, u as xmlPathToString } from "../index-90ZPmZ85.js";
2
- import "../result-Dd9q1uJU.js";
1
+ import "../result-D7vcrlFh.js";
2
+ import { _ as XmlParseOptions, a as getXmlText, c as parseXml, d as XmlAttributeMap, f as XmlBuildOptions, g as XmlObject, h as XmlNamespaceMap, i as getXmlChildren, l as splitXmlName, m as XmlName, n as buildXml, o as isXmlDocument, p as XmlDocument, r as findXmlValue, s as normalizeXmlName, t as asXmlArray, u as xmlPathToString } from "../index-BNudmNFx.js";
3
3
  export { XmlAttributeMap, XmlBuildOptions, XmlDocument, XmlName, XmlNamespaceMap, XmlObject, XmlParseOptions, asXmlArray, buildXml, findXmlValue, getXmlChildren, getXmlText, isXmlDocument, normalizeXmlName, parseXml, splitXmlName, xmlPathToString };
package/dist/xml/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import "../result-YrPe5I9D.js";
2
- import { a as getXmlText, c as parseXml, i as getXmlChildren, l as splitXmlName, n as buildXml, o as isXmlDocument, r as findXmlValue, s as normalizeXmlName, t as asXmlArray, u as xmlPathToString } from "../xml-6kdXnoBh.js";
1
+ import "../result-Cl7IY6PN.js";
2
+ import { a as getXmlText, c as parseXml, i as getXmlChildren, l as splitXmlName, n as buildXml, o as isXmlDocument, r as findXmlValue, s as normalizeXmlName, t as asXmlArray, u as xmlPathToString } from "../xml-DXtayJiw.js";
3
3
 
4
4
  export { asXmlArray, buildXml, findXmlValue, getXmlChildren, getXmlText, isXmlDocument, normalizeXmlName, parseXml, splitXmlName, xmlPathToString };
@@ -1,4 +1,4 @@
1
- import { n as formatFail, r as formatOk, t as createFormatIssue } from "./result-YrPe5I9D.js";
1
+ import { n as formatFail, r as formatOk, t as createFormatIssue } from "./result-Cl7IY6PN.js";
2
2
  import { XMLBuilder, XMLParser, XMLValidator } from "fast-xml-parser";
3
3
 
4
4
  //#region src/xml/xml.ts
@@ -146,4 +146,4 @@ function xmlPathToString(path) {
146
146
 
147
147
  //#endregion
148
148
  export { getXmlText as a, parseXml as c, getXmlChildren as i, splitXmlName as l, buildXml as n, isXmlDocument as o, findXmlValue as r, normalizeXmlName as s, asXmlArray as t, xmlPathToString as u };
149
- //# sourceMappingURL=xml-6kdXnoBh.js.map
149
+ //# sourceMappingURL=xml-DXtayJiw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-6kdXnoBh.js","names":["err: Record<string, unknown>"],"sources":["../src/xml/xml.ts"],"sourcesContent":["import { XMLBuilder, XMLParser, XMLValidator } from 'fast-xml-parser';\nimport {\n createFormatIssue,\n formatFail,\n formatOk,\n type FormatIssue,\n type ParseResult,\n type SerializeResult,\n} from '../result.js';\nimport type {\n XmlBuildOptions,\n XmlDocument,\n XmlName,\n XmlObject,\n XmlParseOptions,\n} from './types.js';\n\nconst XML_FORMAT_ID = 'xml';\nconst ATTRIBUTE_PREFIX = '@_';\nconst TEXT_NODE_NAME = '#text';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction describeCause(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\n\nfunction createXmlIssue(params: {\n code: string;\n message: string;\n path?: string;\n cause?: unknown;\n line?: number;\n column?: number;\n}): FormatIssue {\n const sourceRange = {\n ...(params.line !== undefined ? { line: params.line } : {}),\n ...(params.column !== undefined ? { column: params.column } : {}),\n };\n\n return createFormatIssue({\n severity: 'error',\n code: params.code,\n message: params.message,\n format: XML_FORMAT_ID,\n ...(params.path !== undefined ? { path: params.path } : {}),\n ...(params.cause !== undefined ? { cause: params.cause } : {}),\n ...(Object.keys(sourceRange).length > 0 ? { sourceRange } : {}),\n });\n}\n\nfunction shouldArray(\n arrayTags: XmlParseOptions['arrayTags'],\n name: string,\n path: string,\n): boolean {\n if (!arrayTags) return false;\n if (typeof arrayTags === 'function') return arrayTags(name, path);\n return arrayTags.includes(name) || arrayTags.includes(normalizeXmlName(name));\n}\n\nfunction getRootEntry(parsed: Record<string, unknown>): [string, XmlObject] | undefined {\n for (const [name, value] of Object.entries(parsed)) {\n if (name.startsWith('?')) continue;\n if (isRecord(value)) return [name, value];\n }\n return undefined;\n}\n\nexport function parseXml(input: string, options: XmlParseOptions = {}): ParseResult<XmlDocument> {\n const validation = XMLValidator.validate(input, {\n allowBooleanAttributes: options.preserveBooleanAttributes ?? true,\n });\n\n if (validation !== true) {\n const err: Record<string, unknown> = isRecord(validation) && isRecord(validation.err)\n ? validation.err\n : {};\n const line = typeof err.line === 'number' ? err.line : undefined;\n const column = typeof err.col === 'number' ? err.col : undefined;\n const message = typeof err.msg === 'string' ? err.msg : 'Invalid XML document.';\n return formatFail([\n createXmlIssue({\n code: 'xml.parse.invalid',\n message,\n ...(line !== undefined ? { line } : {}),\n ...(column !== undefined ? { column } : {}),\n }),\n ]);\n }\n\n try {\n const parser = new XMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: ATTRIBUTE_PREFIX,\n textNodeName: TEXT_NODE_NAME,\n allowBooleanAttributes: options.preserveBooleanAttributes ?? true,\n parseAttributeValue: false,\n parseTagValue: false,\n trimValues: options.trimValues ?? true,\n ...(options.arrayTags\n ? {\n isArray: (name: string, path: string): boolean =>\n shouldArray(options.arrayTags, name, path),\n }\n : {}),\n });\n const raw = parser.parse(input) as Record<string, unknown>;\n const rootEntry = getRootEntry(raw);\n\n if (!rootEntry) {\n return formatFail([\n createXmlIssue({\n code: 'xml.root.missing',\n message: 'XML document does not contain a root element.',\n }),\n ]);\n }\n\n const [rootName, root] = rootEntry;\n return formatOk({ rootName, root, raw });\n } catch (cause) {\n return formatFail([\n createXmlIssue({\n code: 'xml.parse.failed',\n message: `XML parser failed: ${describeCause(cause)}`,\n cause,\n }),\n ]);\n }\n}\n\nexport function buildXml(\n document: XmlDocument | XmlObject,\n options: XmlBuildOptions = {},\n): SerializeResult<string> {\n try {\n const raw = isXmlDocument(document) ? document.raw : document;\n const builder = new XMLBuilder({\n ignoreAttributes: false,\n attributeNamePrefix: ATTRIBUTE_PREFIX,\n textNodeName: TEXT_NODE_NAME,\n format: options.format ?? true,\n suppressEmptyNode: options.suppressEmptyNode ?? true,\n });\n return formatOk(builder.build(raw));\n } catch (cause) {\n return formatFail([\n createXmlIssue({\n code: 'xml.build.failed',\n message: `XML builder failed: ${describeCause(cause)}`,\n cause,\n }),\n ]);\n }\n}\n\nexport function isXmlDocument(value: unknown): value is XmlDocument {\n return (\n isRecord(value) &&\n typeof value.rootName === 'string' &&\n isRecord(value.root) &&\n isRecord(value.raw)\n );\n}\n\nexport function splitXmlName(name: string): XmlName {\n const isAttribute = name.startsWith(ATTRIBUTE_PREFIX);\n const bareName = isAttribute ? name.slice(ATTRIBUTE_PREFIX.length) : name;\n const [maybePrefix, maybeLocalName] = bareName.split(':', 2);\n const hasPrefix = maybeLocalName !== undefined;\n const localName = hasPrefix ? maybeLocalName : maybePrefix ?? '';\n\n return {\n name,\n localName,\n ...(hasPrefix && maybePrefix !== undefined ? { prefix: maybePrefix } : {}),\n isAttribute,\n };\n}\n\nexport function normalizeXmlName(name: string): string {\n return splitXmlName(name).localName;\n}\n\nexport function asXmlArray<T>(value: T | readonly T[] | undefined): readonly T[] {\n if (value === undefined) return [];\n if (Array.isArray(value)) return value as readonly T[];\n return [value as T];\n}\n\nexport function findXmlValue(parent: unknown, localName: string): unknown {\n if (!isRecord(parent)) return undefined;\n if (Object.prototype.hasOwnProperty.call(parent, localName)) return parent[localName];\n\n for (const [key, value] of Object.entries(parent)) {\n if (normalizeXmlName(key) === localName) return value;\n }\n\n return undefined;\n}\n\nexport function getXmlChildren(parent: unknown, localName: string): readonly unknown[] {\n return asXmlArray(findXmlValue(parent, localName));\n}\n\nexport function getXmlText(value: unknown): string | undefined {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n if (!isRecord(value)) return undefined;\n return getXmlText(value[TEXT_NODE_NAME]);\n}\n\nexport function xmlPathToString(path: readonly (string | number)[]): string {\n return path.reduce<string>((current, segment) => {\n if (typeof segment === 'number') return `${current}[${segment}]`;\n return current.length > 0 ? `${current}.${segment}` : segment;\n }, '');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"xml-DXtayJiw.js","names":["err: Record<string, unknown>"],"sources":["../src/xml/xml.ts"],"sourcesContent":["import { XMLBuilder, XMLParser, XMLValidator } from 'fast-xml-parser';\nimport {\n createFormatIssue,\n formatFail,\n formatOk,\n type FormatIssue,\n type ParseResult,\n type SerializeResult,\n} from '../result.js';\nimport type {\n XmlBuildOptions,\n XmlDocument,\n XmlName,\n XmlObject,\n XmlParseOptions,\n} from './types.js';\n\nconst XML_FORMAT_ID = 'xml';\nconst ATTRIBUTE_PREFIX = '@_';\nconst TEXT_NODE_NAME = '#text';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction describeCause(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\n\nfunction createXmlIssue(params: {\n code: string;\n message: string;\n path?: string;\n cause?: unknown;\n line?: number;\n column?: number;\n}): FormatIssue {\n const sourceRange = {\n ...(params.line !== undefined ? { line: params.line } : {}),\n ...(params.column !== undefined ? { column: params.column } : {}),\n };\n\n return createFormatIssue({\n severity: 'error',\n code: params.code,\n message: params.message,\n format: XML_FORMAT_ID,\n ...(params.path !== undefined ? { path: params.path } : {}),\n ...(params.cause !== undefined ? { cause: params.cause } : {}),\n ...(Object.keys(sourceRange).length > 0 ? { sourceRange } : {}),\n });\n}\n\nfunction shouldArray(\n arrayTags: XmlParseOptions['arrayTags'],\n name: string,\n path: string,\n): boolean {\n if (!arrayTags) return false;\n if (typeof arrayTags === 'function') return arrayTags(name, path);\n return arrayTags.includes(name) || arrayTags.includes(normalizeXmlName(name));\n}\n\nfunction getRootEntry(parsed: Record<string, unknown>): [string, XmlObject] | undefined {\n for (const [name, value] of Object.entries(parsed)) {\n if (name.startsWith('?')) continue;\n if (isRecord(value)) return [name, value];\n }\n return undefined;\n}\n\nexport function parseXml(input: string, options: XmlParseOptions = {}): ParseResult<XmlDocument> {\n const validation = XMLValidator.validate(input, {\n allowBooleanAttributes: options.preserveBooleanAttributes ?? true,\n });\n\n if (validation !== true) {\n const err: Record<string, unknown> = isRecord(validation) && isRecord(validation.err)\n ? validation.err\n : {};\n const line = typeof err.line === 'number' ? err.line : undefined;\n const column = typeof err.col === 'number' ? err.col : undefined;\n const message = typeof err.msg === 'string' ? err.msg : 'Invalid XML document.';\n return formatFail([\n createXmlIssue({\n code: 'xml.parse.invalid',\n message,\n ...(line !== undefined ? { line } : {}),\n ...(column !== undefined ? { column } : {}),\n }),\n ]);\n }\n\n try {\n const parser = new XMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: ATTRIBUTE_PREFIX,\n textNodeName: TEXT_NODE_NAME,\n allowBooleanAttributes: options.preserveBooleanAttributes ?? true,\n parseAttributeValue: false,\n parseTagValue: false,\n trimValues: options.trimValues ?? true,\n ...(options.arrayTags\n ? {\n isArray: (name: string, path: string): boolean =>\n shouldArray(options.arrayTags, name, path),\n }\n : {}),\n });\n const raw = parser.parse(input) as Record<string, unknown>;\n const rootEntry = getRootEntry(raw);\n\n if (!rootEntry) {\n return formatFail([\n createXmlIssue({\n code: 'xml.root.missing',\n message: 'XML document does not contain a root element.',\n }),\n ]);\n }\n\n const [rootName, root] = rootEntry;\n return formatOk({ rootName, root, raw });\n } catch (cause) {\n return formatFail([\n createXmlIssue({\n code: 'xml.parse.failed',\n message: `XML parser failed: ${describeCause(cause)}`,\n cause,\n }),\n ]);\n }\n}\n\nexport function buildXml(\n document: XmlDocument | XmlObject,\n options: XmlBuildOptions = {},\n): SerializeResult<string> {\n try {\n const raw = isXmlDocument(document) ? document.raw : document;\n const builder = new XMLBuilder({\n ignoreAttributes: false,\n attributeNamePrefix: ATTRIBUTE_PREFIX,\n textNodeName: TEXT_NODE_NAME,\n format: options.format ?? true,\n suppressEmptyNode: options.suppressEmptyNode ?? true,\n });\n return formatOk(builder.build(raw));\n } catch (cause) {\n return formatFail([\n createXmlIssue({\n code: 'xml.build.failed',\n message: `XML builder failed: ${describeCause(cause)}`,\n cause,\n }),\n ]);\n }\n}\n\nexport function isXmlDocument(value: unknown): value is XmlDocument {\n return (\n isRecord(value) &&\n typeof value.rootName === 'string' &&\n isRecord(value.root) &&\n isRecord(value.raw)\n );\n}\n\nexport function splitXmlName(name: string): XmlName {\n const isAttribute = name.startsWith(ATTRIBUTE_PREFIX);\n const bareName = isAttribute ? name.slice(ATTRIBUTE_PREFIX.length) : name;\n const [maybePrefix, maybeLocalName] = bareName.split(':', 2);\n const hasPrefix = maybeLocalName !== undefined;\n const localName = hasPrefix ? maybeLocalName : maybePrefix ?? '';\n\n return {\n name,\n localName,\n ...(hasPrefix && maybePrefix !== undefined ? { prefix: maybePrefix } : {}),\n isAttribute,\n };\n}\n\nexport function normalizeXmlName(name: string): string {\n return splitXmlName(name).localName;\n}\n\nexport function asXmlArray<T>(value: T | readonly T[] | undefined): readonly T[] {\n if (value === undefined) return [];\n if (Array.isArray(value)) return value as readonly T[];\n return [value as T];\n}\n\nexport function findXmlValue(parent: unknown, localName: string): unknown {\n if (!isRecord(parent)) return undefined;\n if (Object.prototype.hasOwnProperty.call(parent, localName)) return parent[localName];\n\n for (const [key, value] of Object.entries(parent)) {\n if (normalizeXmlName(key) === localName) return value;\n }\n\n return undefined;\n}\n\nexport function getXmlChildren(parent: unknown, localName: string): readonly unknown[] {\n return asXmlArray(findXmlValue(parent, localName));\n}\n\nexport function getXmlText(value: unknown): string | undefined {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n if (!isRecord(value)) return undefined;\n return getXmlText(value[TEXT_NODE_NAME]);\n}\n\nexport function xmlPathToString(path: readonly (string | number)[]): string {\n return path.reduce<string>((current, segment) => {\n if (typeof segment === 'number') return `${current}[${segment}]`;\n return current.length > 0 ? `${current}.${segment}` : segment;\n }, '');\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daihum/record-formats",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Tree-shakeable adapters for scholarly, archival, library, and cultural record formats.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,6 +19,10 @@
19
19
  "types": "./dist/ead3/index.d.ts",
20
20
  "import": "./dist/ead3/index.js"
21
21
  },
22
+ "./archive-description": {
23
+ "types": "./dist/archive-description/index.d.ts",
24
+ "import": "./dist/archive-description/index.js"
25
+ },
22
26
  "./package.json": "./package.json"
23
27
  },
24
28
  "files": [
@@ -41,6 +45,7 @@
41
45
  "fast-xml-parser": "^4.5.0"
42
46
  },
43
47
  "devDependencies": {
48
+ "ajv": "^8.18.0",
44
49
  "tsdown": "^0.16.6",
45
50
  "typescript": "^5.9.3",
46
51
  "vitest": "^2.1.8"
@@ -49,6 +54,9 @@
49
54
  "node": ">=22.19.0"
50
55
  },
51
56
  "sideEffects": false,
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
52
60
  "scripts": {
53
61
  "build": "tsdown",
54
62
  "clean": "rm -rf dist",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/ead3/types.ts","../../src/ead3/ead3.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["EAD3_ADAPTER_PROFILE: Ead3AdapterProfile","componentExtensions: Ead3ComponentExtensions","issues: FormatIssue[]","extensions: Ead3FindingAidExtensions","findingAid: Ead3FindingAid"],"sources":["../../src/ead3/ead3.ts"],"sourcesContent":["import {\n asXmlArray,\n buildXml,\n findXmlValue,\n getXmlText,\n normalizeXmlName,\n parseXml,\n type XmlDocument,\n type XmlObject,\n} from '../xml/index.js';\nimport {\n createFormatIssue,\n formatFail,\n formatOk,\n hasFormatErrors,\n type FormatFailure,\n type FormatIssue,\n type FormatSuccess,\n type ParseResult,\n type RecordFormatAdapter,\n type SerializeResult,\n} from '../result.js';\nimport type {\n Ead3AdapterProfile,\n Ead3Component,\n Ead3ComponentExtensions,\n Ead3Date,\n Ead3DigitalObjectRef,\n Ead3FindingAid,\n Ead3FindingAidExtensions,\n Ead3HrefPolicyKind,\n Ead3LevelOfDescription,\n Ead3MaintenanceStatus,\n Ead3ParseOptions,\n Ead3SerializeOptions,\n Ead3ValidationOptions,\n Ead3XmlExtensions,\n} from './types.js';\n\nexport const EAD3_FORMAT_ID = 'ead3';\nexport const EAD3_NAMESPACE = 'http://ead3.archivists.org/schema/';\nexport const EAD3_FORMAT_GENERATION = 'EAD3';\nexport const EAD3_SCHEMA_VERSION = '1.1.1';\nexport const EAD3_SCHEMA_REVISION = '1.1.1';\nexport const EAD3_TAG_LIBRARY_VERSION = '1.1.2';\nexport const EAD3_VALIDATION_LEVEL = 'projection';\nexport const EAD3_OFFICIAL_SCHEMA_VALIDATION = false;\nexport const EAD3_ADAPTER_PROFILE: Ead3AdapterProfile = {\n profileId: 'daihum.record-formats.ead3.projection.v0',\n profileVersion: '0.1.0',\n formatId: EAD3_FORMAT_ID,\n formatGeneration: EAD3_FORMAT_GENERATION,\n namespace: EAD3_NAMESPACE,\n schemaVersion: EAD3_SCHEMA_VERSION,\n schemaRevision: EAD3_SCHEMA_REVISION,\n tagLibraryVersion: EAD3_TAG_LIBRARY_VERSION,\n validationLevel: EAD3_VALIDATION_LEVEL,\n officialSchemaValidation: EAD3_OFFICIAL_SCHEMA_VALIDATION,\n conformanceNotes: [\n 'This adapter is a DAIHUM finding-aid projection for common EAD3 elements.',\n 'Validation checks required projection fields and structured parser/serializer invariants.',\n 'It does not run official EAD3 RNG, XSD, DTD, or Schematron schema validation.',\n 'Unknown XML subtrees can be preserved through extension fields when preserveUnknown is enabled.',\n 'DAIHUM href/source policy metadata is carried as projection attributes and is not official EAD3 schema validation.',\n ],\n sourceReferences: [\n {\n label: 'Library of Congress EAD3 schema page',\n url: 'https://www.loc.gov/ead/ead3schema.html',\n },\n {\n label: 'Library of Congress EAD3 tag library',\n url: 'https://www.loc.gov/ead/EAD3taglib/',\n },\n ],\n};\n\nexport type Ead3ResultMetadata = Readonly<{\n adapterProfile: Ead3AdapterProfile;\n}>;\n\nexport type Ead3ParseResult = ParseResult<Ead3FindingAid> & Ead3ResultMetadata;\nexport type Ead3XmlDocumentResult = SerializeResult<XmlDocument> & Ead3ResultMetadata;\nexport type Ead3XmlSerializeResult = SerializeResult<string> & Ead3ResultMetadata;\n\nconst EAD3_ARRAY_TAGS = ['unitdate', 'dao', 'c', 'odd'];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction readString(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction readElementText(parent: unknown, localName: string): string | undefined {\n return getXmlText(findXmlValue(parent, localName));\n}\n\nfunction readParagraphElementText(parent: unknown, localName: string): string | undefined {\n return readElementText(readRecord(parent, localName), 'p');\n}\n\nfunction readRecord(parent: unknown, localName: string): Record<string, unknown> {\n const value = findXmlValue(parent, localName);\n return isRecord(value) ? value : {};\n}\n\nfunction createEad3Issue(params: {\n code: string;\n path: string;\n message: string;\n severity?: 'error' | 'warning';\n}): FormatIssue {\n return createFormatIssue({\n severity: params.severity ?? 'error',\n code: params.code,\n path: params.path,\n message: params.message,\n format: EAD3_FORMAT_ID,\n });\n}\n\nfunction withEad3Profile<T extends ParseResult<unknown> | SerializeResult<unknown>>(result: T): T & Ead3ResultMetadata {\n return {\n ...result,\n adapterProfile: EAD3_ADAPTER_PROFILE,\n };\n}\n\nfunction ead3Ok<T>(value: T, issues: readonly FormatIssue[] = []): FormatSuccessWithProfile<T> {\n return withEad3Profile(formatOk(value, issues));\n}\n\nfunction ead3Fail<T = never>(issues: readonly FormatIssue[], value?: T): FormatFailureWithProfile<T> {\n return withEad3Profile(formatFail(issues, value));\n}\n\ntype FormatSuccessWithProfile<T> = FormatSuccess<T> & Ead3ResultMetadata;\ntype FormatFailureWithProfile<T = never> = FormatFailure<T> & Ead3ResultMetadata;\n\nfunction collectUnknownXml(\n record: Record<string, unknown>,\n knownLocalNames: readonly string[],\n): Ead3XmlExtensions | undefined {\n const known = new Set(knownLocalNames);\n const unknown = Object.fromEntries(\n Object.entries(record).filter(([key]) => !known.has(normalizeXmlName(key))),\n );\n return Object.keys(unknown).length > 0 ? unknown : undefined;\n}\n\nfunction mergeKnown<T extends Record<string, unknown>>(\n extension: Ead3XmlExtensions | undefined,\n known: T,\n): Record<string, unknown> {\n return {\n ...(extension ?? {}),\n ...known,\n };\n}\n\nfunction hasExtensionKeys(extension: Ead3XmlExtensions | undefined): boolean {\n return extension !== undefined && Object.keys(extension).length > 0;\n}\n\nfunction hasComponentExtensions(extensions: Ead3ComponentExtensions): boolean {\n return hasExtensionKeys(extensions.xml) || hasExtensionKeys(extensions.did);\n}\n\nfunction hasFindingAidExtensions(extensions: Ead3FindingAidExtensions): boolean {\n return hasExtensionKeys(extensions.ead) || hasExtensionKeys(extensions.control);\n}\n\nfunction dateToXml(date: Ead3Date): Record<string, unknown> {\n return mergeKnown(date.extensions, {\n '#text': date.expression,\n ...(date.normalized ? { '@_normal': date.normalized } : {}),\n ...(date.type ? { '@_type': date.type } : {}),\n });\n}\n\nfunction textBlockToXml(value: string): Record<string, unknown> {\n return { p: value };\n}\n\nfunction isHrefPolicyKind(value: string | undefined): value is Ead3HrefPolicyKind {\n return value === 'preserve' || value === 'relative' || value === 'redact' || value === 'externalize';\n}\n\nfunction readJsonRecord(value: unknown): Record<string, unknown> | undefined {\n const text = readString(value);\n if (!text) return undefined;\n try {\n const parsed = JSON.parse(text) as unknown;\n return isRecord(parsed) ? parsed : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction jsonRecordAttribute(value: Readonly<Record<string, unknown>> | undefined): string | undefined {\n if (!value || Object.keys(value).length === 0) return undefined;\n try {\n return JSON.stringify(value);\n } catch {\n return undefined;\n }\n}\n\nfunction digitalObjectToXml(ref: Ead3DigitalObjectRef): Record<string, unknown> {\n const locatorJson = jsonRecordAttribute(ref.sourceRef?.locator);\n const metadataJson = jsonRecordAttribute(ref.sourceRef?.metadata);\n return mergeKnown(ref.extensions, {\n '@_href': ref.href,\n ...(ref.label ? { '@_label': ref.label } : {}),\n ...(ref.role ? { '@_role': ref.role } : {}),\n ...(ref.targetKind ? { '@_targetkind': ref.targetKind } : {}),\n ...(ref.hrefPolicy?.kind ? { '@_data-daihum-href-policy': ref.hrefPolicy.kind } : {}),\n ...(ref.hrefPolicy?.publicHref ? { '@_data-daihum-public-href': ref.hrefPolicy.publicHref } : {}),\n ...(ref.hrefPolicy?.baseHref ? { '@_data-daihum-base-href': ref.hrefPolicy.baseHref } : {}),\n ...(ref.hrefPolicy?.redactedHref ? { '@_data-daihum-redacted-href': ref.hrefPolicy.redactedHref } : {}),\n ...(ref.hrefPolicy?.note ? { '@_data-daihum-policy-note': ref.hrefPolicy.note } : {}),\n ...(ref.sourceRef?.kind ? { '@_data-daihum-source-kind': ref.sourceRef.kind } : {}),\n ...(ref.sourceRef?.id ? { '@_data-daihum-source-id': ref.sourceRef.id } : {}),\n ...(ref.sourceRef?.label ? { '@_data-daihum-source-label': ref.sourceRef.label } : {}),\n ...(locatorJson ? { '@_data-daihum-source-locator': locatorJson } : {}),\n ...(metadataJson ? { '@_data-daihum-source-metadata': metadataJson } : {}),\n });\n}\n\nfunction componentToXml(component: Ead3Component): Record<string, unknown> {\n const did = mergeKnown(component.extensions?.did, {\n ...(component.referenceCode ? { unitid: component.referenceCode } : {}),\n unittitle: component.title,\n ...(component.dates?.length ? { unitdate: component.dates.map(dateToXml) } : {}),\n ...(component.extent ? { physdesc: { extent: component.extent } } : {}),\n ...(component.creator ? { origination: { name: component.creator } } : {}),\n ...(component.language ? { langmaterial: { language: component.language } } : {}),\n ...(component.digitalObjects?.length\n ? { dao: component.digitalObjects.map(digitalObjectToXml) }\n : {}),\n });\n\n return mergeKnown(component.extensions?.xml, {\n ...(component.id ? { '@_id': component.id } : {}),\n '@_level': component.level,\n ...(component.otherLevel ? { '@_otherlevel': component.otherLevel } : {}),\n did,\n ...(component.abstract ? { abstract: textBlockToXml(component.abstract) } : {}),\n ...(component.scopeContent ? { scopecontent: { p: component.scopeContent } } : {}),\n ...(component.arrangement ? { arrangement: { p: component.arrangement } } : {}),\n ...(component.accessRestriction ? { accessrestrict: { p: component.accessRestriction } } : {}),\n ...(component.useRestriction ? { userestrict: { p: component.useRestriction } } : {}),\n ...(component.biographicalHistory ? { bioghist: textBlockToXml(component.biographicalHistory) } : {}),\n ...(component.custodialHistory ? { custodhist: { p: component.custodialHistory } } : {}),\n ...(component.acquisitionInformation ? { acqinfo: textBlockToXml(component.acquisitionInformation) } : {}),\n ...(component.appraisal ? { appraisal: textBlockToXml(component.appraisal) } : {}),\n ...(component.processingInformation ? { processinfo: textBlockToXml(component.processingInformation) } : {}),\n ...(component.relatedMaterial ? { relatedmaterial: textBlockToXml(component.relatedMaterial) } : {}),\n ...(component.separatedMaterial ? { separatedmaterial: textBlockToXml(component.separatedMaterial) } : {}),\n ...(component.preferredCitation ? { prefercite: textBlockToXml(component.preferredCitation) } : {}),\n ...(component.notes?.length ? { odd: component.notes.map((note) => ({ p: note })) } : {}),\n ...(component.components?.length ? { dsc: { c: component.components.map(componentToXml) } } : {}),\n });\n}\n\nfunction findingAidToXmlObject(findingAid: Ead3FindingAid): XmlObject {\n const control = mergeKnown(findingAid.extensions?.control, {\n recordid: findingAid.recordId,\n maintenancestatus: findingAid.maintenanceStatus ?? 'new',\n publicationstatus: 'inprocess',\n ...(findingAid.agencyName ? { maintenanceagency: { agencyname: findingAid.agencyName } } : {}),\n filedesc: {\n titlestmt: {\n titleproper: findingAid.title,\n },\n },\n });\n\n return {\n ead: mergeKnown(findingAid.extensions?.ead, {\n '@_xmlns': EAD3_NAMESPACE,\n control,\n archdesc: componentToXml(findingAid.description),\n }),\n };\n}\n\nfunction readDate(value: unknown): Ead3Date | undefined {\n const expression = getXmlText(value);\n if (!expression) return undefined;\n const record = isRecord(value) ? value : {};\n const normalized = readString(findXmlValue(record, 'normal'));\n const type = readString(findXmlValue(record, 'type'));\n const extensions = collectUnknownXml(record, ['#text', 'normal', 'type']);\n return {\n expression,\n ...(normalized ? { normalized } : {}),\n ...(type ? { type } : {}),\n ...(extensions ? { extensions } : {}),\n };\n}\n\nfunction readDigitalObject(value: unknown): Ead3DigitalObjectRef | undefined {\n if (!isRecord(value)) return undefined;\n const href = readString(findXmlValue(value, 'href'));\n if (!href) return undefined;\n const label = readString(findXmlValue(value, 'label'));\n const role = readString(findXmlValue(value, 'role'));\n const targetKind = readString(findXmlValue(value, 'targetkind'));\n const hrefPolicyKind = readString(findXmlValue(value, 'data-daihum-href-policy'));\n const publicHref = readString(findXmlValue(value, 'data-daihum-public-href'));\n const baseHref = readString(findXmlValue(value, 'data-daihum-base-href'));\n const redactedHref = readString(findXmlValue(value, 'data-daihum-redacted-href'));\n const policyNote = readString(findXmlValue(value, 'data-daihum-policy-note'));\n const sourceKind = readString(findXmlValue(value, 'data-daihum-source-kind'));\n const sourceId = readString(findXmlValue(value, 'data-daihum-source-id'));\n const sourceLabel = readString(findXmlValue(value, 'data-daihum-source-label'));\n const sourceLocator = readJsonRecord(findXmlValue(value, 'data-daihum-source-locator'));\n const sourceMetadata = readJsonRecord(findXmlValue(value, 'data-daihum-source-metadata'));\n const extensions = collectUnknownXml(value, [\n 'href',\n 'label',\n 'role',\n 'targetkind',\n 'data-daihum-href-policy',\n 'data-daihum-public-href',\n 'data-daihum-base-href',\n 'data-daihum-redacted-href',\n 'data-daihum-policy-note',\n 'data-daihum-source-kind',\n 'data-daihum-source-id',\n 'data-daihum-source-label',\n 'data-daihum-source-locator',\n 'data-daihum-source-metadata',\n ]);\n return {\n href,\n ...(label ? { label } : {}),\n ...(role ? { role } : {}),\n ...(targetKind ? { targetKind } : {}),\n ...(isHrefPolicyKind(hrefPolicyKind)\n ? {\n hrefPolicy: {\n kind: hrefPolicyKind,\n ...(publicHref ? { publicHref } : {}),\n ...(baseHref ? { baseHref } : {}),\n ...(redactedHref ? { redactedHref } : {}),\n ...(policyNote ? { note: policyNote } : {}),\n },\n }\n : {}),\n ...(sourceKind && sourceId\n ? {\n sourceRef: {\n kind: sourceKind,\n id: sourceId,\n ...(sourceLabel ? { label: sourceLabel } : {}),\n ...(sourceLocator ? { locator: sourceLocator } : {}),\n ...(sourceMetadata ? { metadata: sourceMetadata } : {}),\n },\n }\n : {}),\n ...(extensions ? { extensions } : {}),\n };\n}\n\nfunction readMaintenanceStatus(value: unknown): Ead3MaintenanceStatus | undefined {\n const status = getXmlText(value);\n if (\n status === 'new' ||\n status === 'revised' ||\n status === 'deleted' ||\n status === 'derived' ||\n status === 'unknown'\n ) {\n return status;\n }\n return undefined;\n}\n\nfunction readLevel(value: unknown): {\n level: Ead3LevelOfDescription;\n otherLevel?: string;\n} {\n const level = readString(value);\n if (\n level === 'collection' ||\n level === 'series' ||\n level === 'subseries' ||\n level === 'file' ||\n level === 'item' ||\n level === 'otherlevel'\n ) {\n return { level };\n }\n return {\n level: 'otherlevel',\n ...(level ? { otherLevel: level } : {}),\n };\n}\n\nfunction readComponent(\n value: unknown,\n path: string,\n issues: FormatIssue[],\n options: Ead3ParseOptions,\n): Ead3Component | undefined {\n if (!isRecord(value)) return undefined;\n\n const did = readRecord(value, 'did');\n const title = readElementText(did, 'unittitle') ?? '';\n if (!title) {\n issues.push(createEad3Issue({\n code: 'ead3.component.title.required',\n path: `${path}.title`,\n message: 'EAD3 component title is required.',\n }));\n }\n\n const childrenContainer = readRecord(value, 'dsc');\n const dates = asXmlArray(findXmlValue(did, 'unitdate'))\n .map(readDate)\n .filter((date): date is Ead3Date => Boolean(date));\n const digitalObjects = asXmlArray(findXmlValue(did, 'dao'))\n .map(readDigitalObject)\n .filter((ref): ref is Ead3DigitalObjectRef => Boolean(ref));\n const components = asXmlArray(findXmlValue(childrenContainer, 'c'))\n .map((child, index) => readComponent(child, `${path}.components.${index}`, issues, options))\n .filter((component): component is Ead3Component => Boolean(component));\n const level = readLevel(findXmlValue(value, 'level'));\n const explicitOtherLevel = readString(findXmlValue(value, 'otherlevel'));\n const id = readString(findXmlValue(value, 'id'));\n const referenceCode = readElementText(did, 'unitid');\n const extent = readElementText(readRecord(did, 'physdesc'), 'extent');\n const creator = readElementText(readRecord(did, 'origination'), 'name');\n const abstract = readParagraphElementText(value, 'abstract');\n const scopeContent = readParagraphElementText(value, 'scopecontent');\n const arrangement = readParagraphElementText(value, 'arrangement');\n const accessRestriction = readParagraphElementText(value, 'accessrestrict');\n const useRestriction = readParagraphElementText(value, 'userestrict');\n const language = readElementText(readRecord(did, 'langmaterial'), 'language');\n const biographicalHistory = readParagraphElementText(value, 'bioghist');\n const custodialHistory = readParagraphElementText(value, 'custodhist');\n const acquisitionInformation = readParagraphElementText(value, 'acqinfo');\n const appraisal = readParagraphElementText(value, 'appraisal');\n const processingInformation = readParagraphElementText(value, 'processinfo');\n const relatedMaterial = readParagraphElementText(value, 'relatedmaterial');\n const separatedMaterial = readParagraphElementText(value, 'separatedmaterial');\n const preferredCitation = readParagraphElementText(value, 'prefercite');\n const notes = asXmlArray(findXmlValue(value, 'odd'))\n .map((note) => readElementText(note, 'p'))\n .filter((note): note is string => Boolean(note));\n const componentUnknown = collectUnknownXml(value, [\n 'id',\n 'level',\n 'otherlevel',\n 'did',\n 'abstract',\n 'scopecontent',\n 'arrangement',\n 'accessrestrict',\n 'userestrict',\n 'bioghist',\n 'custodhist',\n 'acqinfo',\n 'appraisal',\n 'processinfo',\n 'relatedmaterial',\n 'separatedmaterial',\n 'prefercite',\n 'odd',\n 'dsc',\n ]);\n const didUnknown = collectUnknownXml(did, [\n 'unitid',\n 'unittitle',\n 'unitdate',\n 'physdesc',\n 'origination',\n 'langmaterial',\n 'dao',\n ]);\n\n const componentExtensions: Ead3ComponentExtensions = options.preserveUnknown === false\n ? {}\n : {\n ...(componentUnknown ? { xml: componentUnknown } : {}),\n ...(didUnknown ? { did: didUnknown } : {}),\n };\n\n return {\n ...(id ? { id } : {}),\n level: level.level,\n ...(explicitOtherLevel ?? level.otherLevel ? { otherLevel: explicitOtherLevel ?? level.otherLevel } : {}),\n title,\n ...(referenceCode ? { referenceCode } : {}),\n ...(dates.length > 0 ? { dates } : {}),\n ...(extent ? { extent } : {}),\n ...(creator ? { creator } : {}),\n ...(abstract ? { abstract } : {}),\n ...(scopeContent ? { scopeContent } : {}),\n ...(arrangement ? { arrangement } : {}),\n ...(accessRestriction ? { accessRestriction } : {}),\n ...(useRestriction ? { useRestriction } : {}),\n ...(language ? { language } : {}),\n ...(biographicalHistory ? { biographicalHistory } : {}),\n ...(custodialHistory ? { custodialHistory } : {}),\n ...(acquisitionInformation ? { acquisitionInformation } : {}),\n ...(appraisal ? { appraisal } : {}),\n ...(processingInformation ? { processingInformation } : {}),\n ...(relatedMaterial ? { relatedMaterial } : {}),\n ...(separatedMaterial ? { separatedMaterial } : {}),\n ...(preferredCitation ? { preferredCitation } : {}),\n ...(notes.length > 0 ? { notes } : {}),\n ...(digitalObjects.length > 0 ? { digitalObjects } : {}),\n ...(components.length > 0 ? { components } : {}),\n ...(hasComponentExtensions(componentExtensions) ? { extensions: componentExtensions } : {}),\n };\n}\n\nfunction getEadRoot(document: XmlDocument): Record<string, unknown> | undefined {\n if (normalizeXmlName(document.rootName) === 'ead') return document.root as Record<string, unknown>;\n const maybeEad = findXmlValue(document.raw, 'ead');\n return isRecord(maybeEad) ? maybeEad : undefined;\n}\n\nexport function ead3FromXmlDocument(\n document: XmlDocument,\n options: Ead3ParseOptions = {},\n): Ead3ParseResult {\n const issues: FormatIssue[] = [];\n const ead = getEadRoot(document);\n\n if (!ead) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.root.required',\n path: 'ead',\n message: 'EAD3 document must contain an ead root element.',\n }),\n ]);\n }\n\n const control = readRecord(ead, 'control');\n const filedesc = readRecord(control, 'filedesc');\n const titlestmt = readRecord(filedesc, 'titlestmt');\n const description = readComponent(findXmlValue(ead, 'archdesc'), 'description', issues, options);\n\n if (!description) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.archdesc.required',\n path: 'ead.archdesc',\n message: 'EAD3 document must contain an archdesc element.',\n }),\n ]);\n }\n\n const recordId = readElementText(control, 'recordid') ?? '';\n if (!recordId) {\n issues.push(createEad3Issue({\n code: 'ead3.recordId.required',\n path: 'recordId',\n message: 'EAD3 record id is required.',\n }));\n }\n\n const title = readElementText(titlestmt, 'titleproper') ?? description.title;\n if (!title) {\n issues.push(createEad3Issue({\n code: 'ead3.title.required',\n path: 'title',\n message: 'EAD3 title is required.',\n }));\n }\n\n const agencyName = readElementText(readRecord(control, 'maintenanceagency'), 'agencyname');\n const maintenanceStatus = readMaintenanceStatus(findXmlValue(control, 'maintenancestatus'));\n const eadUnknown = options.preserveUnknown === false\n ? undefined\n : collectUnknownXml(ead, ['xmlns', 'control', 'archdesc']);\n const controlUnknown = options.preserveUnknown === false\n ? undefined\n : collectUnknownXml(control, [\n 'recordid',\n 'maintenancestatus',\n 'publicationstatus',\n 'maintenanceagency',\n 'filedesc',\n ]);\n const extensions: Ead3FindingAidExtensions = {\n ...(eadUnknown ? { ead: eadUnknown } : {}),\n ...(controlUnknown ? { control: controlUnknown } : {}),\n };\n const findingAid: Ead3FindingAid = {\n recordId,\n title,\n ...(maintenanceStatus ? { maintenanceStatus } : {}),\n ...(agencyName ? { agencyName } : {}),\n description,\n ...(hasFindingAidExtensions(extensions) ? { extensions } : {}),\n };\n\n return hasFormatErrors(issues) ? ead3Fail(issues, findingAid) : ead3Ok(findingAid, issues);\n}\n\nexport function parseEad3Xml(\n input: string,\n options: Ead3ParseOptions = {},\n): Ead3ParseResult {\n const parsed = parseXml(input, {\n arrayTags: EAD3_ARRAY_TAGS,\n });\n if (!parsed.ok) return ead3Fail(parsed.issues);\n return ead3FromXmlDocument(parsed.value, options);\n}\n\nexport function ead3ToXmlDocument(\n findingAid: Ead3FindingAid,\n options: Ead3ValidationOptions = {},\n): Ead3XmlDocumentResult {\n const issues = validateEad3(findingAid, options);\n if (hasFormatErrors(issues)) return ead3Fail(issues);\n\n const raw = findingAidToXmlObject(findingAid);\n const ead = raw.ead;\n if (!isRecord(ead)) {\n return ead3Fail([\n createEad3Issue({\n code: 'ead3.serialize.failed',\n path: 'ead',\n message: 'EAD3 serializer did not produce an ead root element.',\n }),\n ]);\n }\n return ead3Ok({ rootName: 'ead', root: ead, raw });\n}\n\nexport function serializeEad3Xml(\n findingAid: Ead3FindingAid,\n options: Ead3SerializeOptions = {},\n): Ead3XmlSerializeResult {\n const document = ead3ToXmlDocument(findingAid);\n if (!document.ok) return ead3Fail(document.issues);\n return withEad3Profile(buildXml(document.value, { format: options.format ?? true, suppressEmptyNode: true }));\n}\n\nfunction validateComponent(component: Ead3Component, path: string): FormatIssue[] {\n const issues: FormatIssue[] = [];\n if (!readString(component.title)) {\n issues.push(createEad3Issue({\n code: 'ead3.component.title.required',\n path: `${path}.title`,\n message: 'EAD3 component title is required.',\n }));\n }\n\n component.digitalObjects?.forEach((ref, index) => {\n if (!readString(ref.href)) {\n issues.push(createEad3Issue({\n code: 'ead3.digitalObject.href.required',\n path: `${path}.digitalObjects.${index}.href`,\n message: 'EAD3 digital object href is required.',\n }));\n }\n });\n\n component.components?.forEach((child, index) => {\n issues.push(...validateComponent(child, `${path}.components.${index}`));\n });\n\n return issues;\n}\n\nexport function validateEad3(\n findingAid: Ead3FindingAid,\n options: Ead3ValidationOptions = {},\n): readonly FormatIssue[] {\n const issues: FormatIssue[] = [];\n if ((options.requireRecordId ?? true) && !readString(findingAid.recordId)) {\n issues.push(createEad3Issue({\n code: 'ead3.recordId.required',\n path: 'recordId',\n message: 'EAD3 record id is required.',\n }));\n }\n if (!readString(findingAid.title)) {\n issues.push(createEad3Issue({\n code: 'ead3.title.required',\n path: 'title',\n message: 'EAD3 title is required.',\n }));\n }\n issues.push(...validateComponent(findingAid.description, 'description'));\n return issues;\n}\n\nexport const ead3Adapter = {\n format: EAD3_FORMAT_ID,\n profile: EAD3_ADAPTER_PROFILE,\n parse: parseEad3Xml,\n serialize: serializeEad3Xml,\n validate: validateEad3,\n detect(input: string): boolean {\n return /<([A-Za-z0-9_-]+:)?ead[\\s>]/.test(input);\n },\n} satisfies RecordFormatAdapter<Ead3FindingAid> & { profile: Ead3AdapterProfile };\n"],"mappings":"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"}