@@ -7,6 +7,7 @@ const databaseTiny = new dbDriver("tiny")
77
88export default class Page {
99 #tinyAction = 'create'
10+ #hydrated = false
1011 #setRerumId( ) {
1112 if ( ! this . id . startsWith ( process . env . RERUMIDPREFIX ) ) {
1213 this . id = `${ process . env . RERUMIDPREFIX } ${ this . id . split ( "/" ) . pop ( ) } `
@@ -105,13 +106,14 @@ export default class Page {
105106 }
106107 this . #tinyAction = 'update'
107108 this . id = rawPageData . id ?? rawPageData [ "@id" ] ?? this . id
108- if ( rawPageData . target ) this . target = rawPageData . target
109+ if ( ' target' in rawPageData ) this . target = rawPageData . target
109110 if ( 'items' in rawPageData ) this . items = rawPageData . items
110111 if ( rawPageData . creator ) this . creator = rawPageData . creator
111112 if ( rawPageData . label ) this . label = ProjectFactory . getLabelAsString ( rawPageData . label )
112- if ( rawPageData . partOf ) this . partOf = Array . isArray ( rawPageData . partOf ) ? rawPageData . partOf [ 0 ] ?. id ?? rawPageData . partOf [ 0 ] : rawPageData . partOf
113+ if ( ' partOf' in rawPageData ) this . partOf = Array . isArray ( rawPageData . partOf ) ? rawPageData . partOf [ 0 ] ?. id ?? rawPageData . partOf [ 0 ] : rawPageData . partOf
113114 if ( 'prev' in rawPageData ) this . prev = rawPageData . prev
114115 if ( 'next' in rawPageData ) this . next = rawPageData . next
116+ this . #hydrated = true
115117 }
116118 return this
117119 }
@@ -129,7 +131,7 @@ export default class Page {
129131 this . items . map ( async ( item ) => {
130132 // If item is a string, it's an annotation ID - fetch from RERUM
131133 let lineRef
132- if ( typeof item === "string" ) lineRef = { "id" : item , "target" :"placeholder " }
134+ if ( typeof item === "string" ) lineRef = { "id" : item , "target" :"pending-resolution " }
133135 else if ( typeof item === "object" && item . id ) lineRef = item
134136 else return { id : item ?. id ?? item , error : "Unrecognized Page item format" }
135137 let line
@@ -254,9 +256,9 @@ export default class Page {
254256 * @returns {Object } The Page as JSON.
255257 */
256258 async asJSON ( isLD ) {
257- if ( ! ( this . items ?. length || this . partOf || this . target || 'prev' in this || 'next' in this ) ) {
259+ if ( ! this . #hydrated && this . id ?. startsWith ?. ( process . env . RERUMIDPREFIX ) ) {
258260 await this . #loadAnnotationPageDataFromRerum( )
259- }
261+ }
260262 let result
261263 if ( isLD ) {
262264 result = {
0 commit comments