diff --git a/sdk/js/shex-orm/src/schema-converter/transformers/ShexJTypingTransformer.ts b/sdk/js/shex-orm/src/schema-converter/transformers/ShexJTypingTransformer.ts index 9cd7d68..4463367 100644 --- a/sdk/js/shex-orm/src/schema-converter/transformers/ShexJTypingTransformer.ts +++ b/sdk/js/shex-orm/src/schema-converter/transformers/ShexJTypingTransformer.ts @@ -225,7 +225,7 @@ function dedupeCompactProperties( return merged; } -// Helpers to add id: IRI to anonymous object(-union) types +// Helpers to add @id: IRI to anonymous object(-union) types function ensureIdOnMembers(members?: any[]): void { if (!members) return; const props = (members.filter?.((m: any) => m?.kind === "property") || @@ -233,9 +233,9 @@ function ensureIdOnMembers(members?: any[]): void { if (!props.some((m) => m.name === "id")) { members.unshift( dom.create.property( - "id", + "@id", dom.create.namedTypeReference("IRI"), - dom.DeclarationFlags.None + dom.DeclarationFlags.ReadOnly ) ); } @@ -322,15 +322,15 @@ export const ShexJTypingTransformerCompact = ShexJTraverser.createTransformer< shapeInterface.shapeId = shapeDecl.id; if ( !shapeInterface.members.find( - (m) => m.kind === "property" && m.name === "id" + (m) => m.kind === "property" && m.name === "@id" ) ) { shapeInterface.members.unshift( dom.create.property( - "id", + "@id", dom.create.namedTypeReference("IRI"), - // Root interfaces should have mandatory id - dom.DeclarationFlags.None + // Root interfaces should have mandatory @id + dom.DeclarationFlags.ReadOnly ) ); } @@ -380,7 +380,7 @@ export const ShexJTypingTransformerCompact = ShexJTraverser.createTransformer< const merged = [ ...extInt.members.filter( (m) => - !(m.kind === "property" && m.name === "id") + !(m.kind === "property" && m.name === "@id") ), ...newInterface.members, ].filter( @@ -394,7 +394,7 @@ export const ShexJTypingTransformerCompact = ShexJTraverser.createTransformer< // Final pass: ensure only a single id property const idSeen = new Set(); newInterface.members = newInterface.members.filter((m, idx) => { - if (m.kind !== "property" || m.name !== "id") return true; + if (m.kind !== "property" || m.name !== "@id") return true; if (idSeen.size === 0) { idSeen.add(idx); // normalize id type to IRI diff --git a/sdk/js/shex-orm/src/types.ts b/sdk/js/shex-orm/src/types.ts index fa044bc..2f4308b 100644 --- a/sdk/js/shex-orm/src/types.ts +++ b/sdk/js/shex-orm/src/types.ts @@ -4,7 +4,7 @@ export interface ShapeType { } export interface BaseType extends Record { - id: string; + "@id": string; } export type Schema = {