snowflake bug fix

This commit is contained in:
MathMan05 2024-07-24 19:44:21 -05:00
parent 12cc5dffa5
commit f1d9fdbe3c
2 changed files with 8 additions and 8 deletions

View file

@ -1,8 +1,8 @@
class SnowFlake { class SnowFlake {
id; id;
static SnowFlakes = new Map(); static SnowFlakes = new Map();
static FinalizationRegistry = new FinalizationRegistry((id) => { static FinalizationRegistry = new FinalizationRegistry((a) => {
SnowFlake.SnowFlakes.delete(id); SnowFlake.SnowFlakes.get(a[1]).delete(a[0]);
}); });
obj; obj;
constructor(id, obj) { constructor(id, obj) {
@ -20,7 +20,7 @@ class SnowFlake {
} }
this.id = id; this.id = id;
SnowFlake.SnowFlakes.get(obj.constructor).set(id, new WeakRef(this)); SnowFlake.SnowFlakes.get(obj.constructor).set(id, new WeakRef(this));
SnowFlake.FinalizationRegistry.register(this, id); SnowFlake.FinalizationRegistry.register(this, [id, obj.constructor]);
this.obj = obj; this.obj = obj;
} }
static getSnowFlakeFromID(id, type) { static getSnowFlakeFromID(id, type) {
@ -34,7 +34,7 @@ class SnowFlake {
{ {
const snowflake = new SnowFlake(id, undefined); const snowflake = new SnowFlake(id, undefined);
SnowFlake.SnowFlakes.get(type).set(id, new WeakRef(snowflake)); SnowFlake.SnowFlakes.get(type).set(id, new WeakRef(snowflake));
SnowFlake.FinalizationRegistry.register(snowflake, id); SnowFlake.FinalizationRegistry.register(this, [id, type]);
return snowflake; return snowflake;
} }
} }

View file

@ -1,8 +1,8 @@
class SnowFlake<x>{ class SnowFlake<x>{
public readonly id:string; public readonly id:string;
private static readonly SnowFlakes:Map<any,Map<string,WeakRef<SnowFlake<any>>>>=new Map(); private static readonly SnowFlakes:Map<any,Map<string,WeakRef<SnowFlake<any>>>>=new Map();
private static readonly FinalizationRegistry=new FinalizationRegistry((id:string)=>{ private static readonly FinalizationRegistry=new FinalizationRegistry((a:[string,any])=>{
SnowFlake.SnowFlakes.delete(id); SnowFlake.SnowFlakes.get(a[1]).delete(a[0]);
}); });
private obj:x; private obj:x;
constructor(id:string,obj:x){ constructor(id:string,obj:x){
@ -20,7 +20,7 @@ class SnowFlake<x>{
} }
this.id=id; this.id=id;
SnowFlake.SnowFlakes.get(obj.constructor).set(id,new WeakRef(this)); SnowFlake.SnowFlakes.get(obj.constructor).set(id,new WeakRef(this));
SnowFlake.FinalizationRegistry.register(this,id); SnowFlake.FinalizationRegistry.register(this,[id,obj.constructor]);
this.obj=obj; this.obj=obj;
} }
static getSnowFlakeFromID(id:string,type:any):SnowFlake<any>{ static getSnowFlakeFromID(id:string,type:any):SnowFlake<any>{
@ -35,7 +35,7 @@ class SnowFlake<x>{
const snowflake=new SnowFlake(id,undefined); const snowflake=new SnowFlake(id,undefined);
SnowFlake.SnowFlakes.get(type).set(id,new WeakRef(snowflake)); SnowFlake.SnowFlakes.get(type).set(id,new WeakRef(snowflake));
SnowFlake.FinalizationRegistry.register(snowflake,id); SnowFlake.FinalizationRegistry.register(this,[id,type]);
return snowflake; return snowflake;
} }