@@ -155,12 +155,32 @@ export function createTypeIndexLogic(store, authn, profileLogic, utilityLogic):
155155
156156 async function getScopedAppsFromIndex ( scope : TypeIndexScope , theClass : NamedNode | null ) : Promise < ScopedApp [ ] > {
157157 const index = scope . index
158+ let results : ScopedApp [ ] = [ ]
158159 const registrations = store . statementsMatching ( null , ns . solid ( 'instance' ) , null , index )
159160 . concat ( store . statementsMatching ( null , ns . solid ( 'instanceContainer' ) , null , index ) )
160161 . map ( st => st . subject )
161162 const relevant = theClass ? registrations . filter ( reg => store . any ( reg , ns . solid ( 'forClass' ) , null , index ) ?. sameTerm ( theClass ) )
162163 : registrations
163- const directInstances = relevant . map ( reg => store . each ( reg , ns . solid ( 'instance' ) , null , index ) . map ( one => sym ( one . value ) ) ) . flat ( )
164+
165+ for ( const reg of relevant ) {
166+ const klass = store . any ( reg , ns . solid ( 'forClass' ) , null , index )
167+ const instances = store . each ( reg , ns . solid ( 'instance' ) , null , index )
168+ for ( const instance of instances ) {
169+ results . push ( { instance, type : klass , scope } )
170+ }
171+ const containers = store . each ( reg , ns . solid ( 'instanceContainer' ) , null , index )
172+ for ( const cont of containers ) {
173+ await store . fetcher . load ( cont )
174+ const contents = store . each ( cont , ns . ldp ( 'contains' ) , null , cont ) . map ( one => sym ( one . value ) )
175+ for ( const instance of contents ) {
176+ results . push ( { instance : sym ( instance . value ) , type : klass , scope } )
177+ }
178+ }
179+ }
180+ return results
181+ /*
182+ const directInstances = relevant.map(reg => store.each(reg, ns.solid('instance'), null, index)).flat()
183+ // const directInstances = relevant.map(reg => store.each(reg, ns.solid('instance'), null, index).map(one => sym(one.value))).flat()
164184 let instances = uniqueNodes(directInstances)
165185
166186 const instanceContainers = relevant.map(
@@ -176,8 +196,9 @@ export function createTypeIndexLogic(store, authn, profileLogic, utilityLogic):
176196 instances = instances.concat(contents)
177197 }
178198 return instances.map(instance => { return { instance, scope } })
199+ */
179200 }
180-
201+
181202 return {
182203 registerInTypeIndex,
183204 getRegistrations,
0 commit comments