11import { INVALID } from '../denormalize/symbol.js' ;
22import type { EntityInterface } from '../interface.js' ;
33
4- export const addEntities =
5- (
6- newEntities : Map < string , Map < string , any > > ,
7- newIndexes : Map < string , Map < string , any > > ,
8- entitiesCopy : Record < string , any > ,
9- indexesCopy : Record < string , any > ,
10- entityMetaCopy : {
4+ export const addEntities = (
5+ {
6+ entities,
7+ indexes,
8+ entityMeta,
9+ } : {
10+ entities : Record < string , any > ;
11+ indexes : Record < string , any > ;
12+ entityMeta : {
1113 [ entityKey : string ] : {
1214 [ pk : string ] : {
1315 date : number ;
1416 expiresAt : number ;
1517 fetchedAt : number ;
1618 } ;
1719 } ;
18- } ,
19- actionMeta : { fetchedAt : number ; date : number ; expiresAt : number } ,
20- ) =>
21- ( schema : EntityInterface , processedEntity : any , id : string ) => {
20+ } ;
21+ } ,
22+ actionMeta : { fetchedAt : number ; date : number ; expiresAt : number } ,
23+ ) => {
24+ const newEntities = new Map < string , Map < string , any > > ( ) ;
25+ const newIndexes = new Map < string , Map < string , any > > ( ) ;
26+ return ( schema : EntityInterface , processedEntity : any , id : string ) => {
2227 const schemaKey = schema . key ;
2328 // first time we come across this type of entity
2429 if ( ! newEntities . has ( schemaKey ) ) {
2530 newEntities . set ( schemaKey , new Map ( ) ) ;
2631 // we will be editing these, so we need to clone them first
27- entitiesCopy [ schemaKey ] = { ...entitiesCopy [ schemaKey ] } ;
28- entityMetaCopy [ schemaKey ] = { ...entityMetaCopy [ schemaKey ] } ;
32+ entities [ schemaKey ] = { ...entities [ schemaKey ] } ;
33+ entityMeta [ schemaKey ] = { ...entityMeta [ schemaKey ] } ;
2934 }
3035
3136 const newEntitiesKey = newEntities . get ( schemaKey ) as Map < string , any > ;
3237 const existingEntity = newEntitiesKey . get ( id ) ;
3338 if ( existingEntity ) {
3439 newEntitiesKey . set ( id , schema . merge ( existingEntity , processedEntity ) ) ;
3540 } else {
36- const inStoreEntity = entitiesCopy [ schemaKey ] [ id ] ;
41+ const inStoreEntity = entities [ schemaKey ] [ id ] ;
3742 let inStoreMeta : {
3843 date : number ;
3944 expiresAt : number ;
4045 fetchedAt : number ;
4146 } ;
4247 // this case we already have this entity in store
43- if ( inStoreEntity && ( inStoreMeta = entityMetaCopy [ schemaKey ] [ id ] ) ) {
48+ if ( inStoreEntity && ( inStoreMeta = entityMeta [ schemaKey ] [ id ] ) ) {
4449 newEntitiesKey . set (
4550 id ,
4651 schema . mergeWithStore (
@@ -50,36 +55,37 @@ export const addEntities =
5055 processedEntity ,
5156 ) ,
5257 ) ;
53- entityMetaCopy [ schemaKey ] [ id ] = schema . mergeMetaWithStore (
58+ entityMeta [ schemaKey ] [ id ] = schema . mergeMetaWithStore (
5459 inStoreMeta ,
5560 actionMeta ,
5661 inStoreEntity ,
5762 processedEntity ,
5863 ) ;
5964 } else {
6065 newEntitiesKey . set ( id , processedEntity ) ;
61- entityMetaCopy [ schemaKey ] [ id ] = actionMeta ;
66+ entityMeta [ schemaKey ] [ id ] = actionMeta ;
6267 }
6368 }
6469
6570 // update index
6671 if ( schema . indexes ) {
6772 if ( ! newIndexes . has ( schemaKey ) ) {
6873 newIndexes . set ( schemaKey , new Map ( ) ) ;
69- indexesCopy [ schemaKey ] = { ...indexesCopy [ schemaKey ] } ;
74+ indexes [ schemaKey ] = { ...indexes [ schemaKey ] } ;
7075 }
7176 handleIndexes (
7277 id ,
7378 schema . indexes ,
7479 newIndexes . get ( schemaKey ) as Map < string , any > ,
75- indexesCopy [ schemaKey ] ,
80+ indexes [ schemaKey ] ,
7681 newEntitiesKey . get ( id ) ,
77- entitiesCopy [ schemaKey ] ,
82+ entities [ schemaKey ] ,
7883 ) ;
7984 }
8085 // set this after index updates so we know what indexes to remove from
81- entitiesCopy [ schemaKey ] [ id ] = newEntitiesKey . get ( id ) ;
86+ entities [ schemaKey ] [ id ] = newEntitiesKey . get ( id ) ;
8287 } ;
88+ } ;
8389
8490function handleIndexes (
8591 id : string ,
0 commit comments