mandatory id in nested/anonymous objects

main
Laurin Weger 3 weeks ago
parent 42a6476fb8
commit 4cea4838d1
No known key found for this signature in database
GPG Key ID: 9B372BB0B792770F
  1. 15
      packages/schema-converter-shex/src/typing/ShexJTypingTransformerCompact.ts

@ -497,16 +497,18 @@ export const ShexJTypingTransformerCompact = ShexJTraverser.createTransformer<
// If anonymous object or union of object-like types, ensure id: IRI is present (mandatory)
if (objLike) {
if ((valueType as dom.ObjectType).kind === "object") {
const members = (valueType as unknown as {
const members = (
valueType as unknown as {
members?: dom.PropertyDeclaration[];
}).members;
}
).members;
const hasId = (members || []).some((m) => m.name === "id");
if (!hasId && members) {
members.unshift(
dom.create.property(
"id",
dom.create.namedTypeReference("IRI"),
dom.DeclarationFlags.None,
dom.DeclarationFlags.None
)
);
}
@ -516,15 +518,16 @@ export const ShexJTypingTransformerCompact = ShexJTraverser.createTransformer<
valueType as dom.UnionType
).members.map((m) => {
if ((m as dom.ObjectType).kind === "object") {
const mems = (m as unknown as { members?: dom.PropertyDeclaration[] })
.members;
const mems = (
m as unknown as { members?: dom.PropertyDeclaration[] }
).members;
const hasId = (mems || []).some((mm) => mm.name === "id");
if (!hasId && mems) {
mems.unshift(
dom.create.property(
"id",
dom.create.namedTypeReference("IRI"),
dom.DeclarationFlags.None,
dom.DeclarationFlags.None
)
);
}

Loading…
Cancel
Save