genosdb 0.15.5 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var _=async(D,T)=>{if(!T)return null;let F="owner",H="collaborators",P=()=>{let h=D.sm.getActiveEthAddress();if(!h)throw Error("❌ [SM-ACLs] Active user session required.");return h},V=(h)=>Error(`❌ [SM-ACLs] Only the owner can ${h}.`),Y=async(h,k)=>{let x=[];for(let z of h){let{signer:G,type:J,id:X}=z;if(!G||!X){x.push(z);continue}let Q=k.get(X),{[F]:K,[H]:Z={}}=Q?.value||{};if(J==="upsert"||J==="put"){if(!Q||K===void 0||G===K||Z[G]==="write")x.push(z);continue}if(J==="remove"){if(!Q||K===void 0||G===K)x.push(z);continue}x.push(z)}return x};return D.use(Y),{async set(h,k){let x=P(),{result:z}=await D.get(k);if(z){let{[F]:G,[H]:J={}}=z.value;if(x!==G&&J[x]!=="write")throw Error(`\uD83D\uDEE1️ [SM-ACLs] Write denied for node ${k}.`);let{[F]:X,[H]:Q,...K}=h;return D.put({...z.value,...K},k)}return D.put({...h,[F]:x,[H]:{}},k)},async grant(h,k,x){let z=P();if(!["read","write"].includes(x))throw Error("\uD83D\uDEE1️ [SM-ACLs] Permission must be 'read' or 'write'.");let{result:G}=await D.get(h);if(!G)throw Error(`❌ [SM-ACLs] Node ${h} not found.`);if(G.value[F]!==z)throw V("grant permissions");let J={...G.value[H]??{},[k]:x};await D.put({...G.value,[H]:J},h)},async revoke(h,k){let x=P(),{result:z}=await D.get(h);if(!z)throw Error(`❌ [SM-ACLs] Node ${h} not found.`);if(z.value[F]!==x)throw V("revoke permissions");let{[k]:G,...J}=z.value[H]??{};await D.put({...z.value,[H]:J},h)},async delete(h){let k=P(),{result:x}=await D.get(h);if(!x)return;if(x.value[F]!==k)throw V("delete this node");await D.remove(h)},async getPermissions(h){let{result:k}=await D.get(h);if(!k||k.value[F]===void 0)return null;return{owner:k.value[F],collaborators:k.value[H]??{}}}}};async function f(D,T){try{let F=await _(D,T);if(F)try{Object.defineProperty(D.sm,"acls",{value:F,writable:!0,enumerable:!1,configurable:!0})}catch(H){throw Error("❌ [SM-ACLs] Cannot attach ACL module to gdb.sm. Ensure gdb.sm is extensible.")}}catch(F){throw F}}export{f as start,_ as createAclModule};
1
+ var _=async(D,T)=>{if(!T)return null;let F="owner",H="collaborators",P=()=>{let h=D.sm.getActiveEthAddress();if(!h)throw Error("❌ [SM-ACLs] Active user session required.");return h},V=(h)=>Error(`❌ [SM-ACLs] Only the owner can ${h}.`),Z=async(h,k)=>{let x=[];for(let z of h){let{signer:G,type:J,id:X}=z;if(!G||!X){x.push(z);continue}let Q=k.get(X),{[F]:K,[H]:Y={}}=Q?.value||{};if(J==="upsert"||J==="put"){if(!Q||K===void 0||G===K||Y[G]==="write"||Y[G]==="delete")x.push(z);continue}if(J==="remove"){if(!Q||K===void 0||G===K||Y[G]==="delete")x.push(z);continue}x.push(z)}return x};return D.use(Z),{async set(h,k){let x=P(),{result:z}=await D.get(k);if(z){let{[F]:G,[H]:J={}}=z.value;if(x!==G&&J[x]!=="write")throw Error(`\uD83D\uDEE1️ [SM-ACLs] Write denied for node ${k}.`);let{[F]:X,[H]:Q,...K}=h;return D.put({...z.value,...K},k)}return D.put({...h,[F]:x,[H]:{}},k)},async grant(h,k,x){let z=P();if(!["read","write","delete"].includes(x))throw Error("\uD83D\uDEE1️ [SM-ACLs] Permission must be 'read', 'write' or 'delete'.");let{result:G}=await D.get(h);if(!G)throw Error(`❌ [SM-ACLs] Node ${h} not found.`);if(G.value[F]!==z)throw V("grant permissions");let J={...G.value[H]??{},[k]:x};await D.put({...G.value,[H]:J},h)},async revoke(h,k){let x=P(),{result:z}=await D.get(h);if(!z)throw Error(`❌ [SM-ACLs] Node ${h} not found.`);if(z.value[F]!==x)throw V("revoke permissions");let{[k]:G,...J}=z.value[H]??{};await D.put({...z.value,[H]:J},h)},async delete(h){let k=P(),{result:x}=await D.get(h);if(!x)return;if(x.value[F]!==k&&x.value[H]?.[k]!=="delete")throw V("delete this node");await D.remove(h)},async getPermissions(h){let{result:k}=await D.get(h);if(!k||k.value[F]===void 0)return null;return{owner:k.value[F],collaborators:k.value[H]??{}}}}};async function f(D,T){try{let F=await _(D,T);if(F)try{Object.defineProperty(D.sm,"acls",{value:F,writable:!0,enumerable:!1,configurable:!0})}catch(H){throw Error("❌ [SM-ACLs] Cannot attach ACL module to gdb.sm. Ensure gdb.sm is extensible.")}}catch(F){throw F}}export{f as start,_ as createAclModule};
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genosdb",
3
- "version": "0.15.5",
3
+ "version": "0.16.0",
4
4
  "description": "GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",