@fraym/sync 1.0.0-alpha.23 → 1.0.0-alpha.24

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
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"newLockTracker",{enumerable:true,get:function(){return newLockTracker}});function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype),d=Object.defineProperty;return d(g,"next",{value:verb(0)}),d(g,"throw",{value:verb(1)}),d(g,"return",{value:verb(2)}),typeof Symbol==="function"&&d(g,Symbol.iterator,{value:function(){return this}}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var resourceKey=function resourceKey(tenantId,resource){return"".concat(tenantId,"\0").concat(resource.join("\0"))};var newLockTracker=function newLockTracker(){var writeLocked=new Set;var readLockCounts=new Map;var waitQueues=new Map;var isWriteLocked=function isWriteLocked(key){return writeLocked.has(key)};var isReadLocked=function isReadLocked(key){var _readLockCounts_get;return((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)>0};var hasWaiters=function hasWaiters(key){var _ref;var _waitQueues_get;return((_ref=(_waitQueues_get=waitQueues.get(key))===null||_waitQueues_get===void 0?void 0:_waitQueues_get.length)!==null&&_ref!==void 0?_ref:0)>0};var notifyWaiters=function notifyWaiters(key){if(isWriteLocked(key)){return}var queue=waitQueues.get(key);if(!queue||queue.length===0){return}var head=queue[0];if(head.kind==="write"){if(!isReadLocked(key)){queue.shift();writeLocked.add(key);head.resolve()}return}var next=queue[0];while(next!==undefined&&next.kind==="read"){var _readLockCounts_get;queue.shift();readLockCounts.set(key,((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)+1);next.resolve();next=queue[0]}};return{lock:function lock(tenantId,resource){return _async_to_generator(function(){var key;return _ts_generator(this,function(_state){key=resourceKey(tenantId,resource);return[2,new Promise(function(resolve){var _waitQueues_get;if(!isWriteLocked(key)&&!isReadLocked(key)&&!hasWaiters(key)){writeLocked.add(key);return}var queue=(_waitQueues_get=waitQueues.get(key))!==null&&_waitQueues_get!==void 0?_waitQueues_get:[];queue.push({kind:"write",resolve:resolve});waitQueues.set(key,queue)})]})})()},tryLock:function tryLock(tenantId,resource){var key=resourceKey(tenantId,resource);if(!isWriteLocked(key)&&!isReadLocked(key)&&!hasWaiters(key)){writeLocked.add(key);return true}return false},unlock:function unlock(tenantId,resource){var key=resourceKey(tenantId,resource);writeLocked.delete(key);notifyWaiters(key)},rLock:function rLock(tenantId,resource){return _async_to_generator(function(){var key;return _ts_generator(this,function(_state){key=resourceKey(tenantId,resource);return[2,new Promise(function(resolve){var _waitQueues_get;if(!isWriteLocked(key)&&!hasWaiters(key)){var _readLockCounts_get;var count=(_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0;readLockCounts.set(key,count+1);return}var queue=(_waitQueues_get=waitQueues.get(key))!==null&&_waitQueues_get!==void 0?_waitQueues_get:[];queue.push({kind:"read",resolve:resolve});waitQueues.set(key,queue)})]})})()},tryRLock:function tryRLock(tenantId,resource){var key=resourceKey(tenantId,resource);if(!isWriteLocked(key)&&!hasWaiters(key)){var _readLockCounts_get;readLockCounts.set(key,((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)+1);return true}return false},rUnlock:function rUnlock(tenantId,resource){var _readLockCounts_get;var key=resourceKey(tenantId,resource);var count=(_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0;if(count<=1){readLockCounts.delete(key)}else{readLockCounts.set(key,count-1)}notifyWaiters(key)}}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"newLockTracker",{enumerable:true,get:function(){return newLockTracker}});function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype),d=Object.defineProperty;return d(g,"next",{value:verb(0)}),d(g,"throw",{value:verb(1)}),d(g,"return",{value:verb(2)}),typeof Symbol==="function"&&d(g,Symbol.iterator,{value:function(){return this}}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var resourceKey=function resourceKey(tenantId,resource){return"".concat(tenantId,"\0").concat(resource.join("\0"))};var newLockTracker=function newLockTracker(){var writeLocked=new Set;var readLockCounts=new Map;var waitQueues=new Map;var isWriteLocked=function isWriteLocked(key){return writeLocked.has(key)};var isReadLocked=function isReadLocked(key){var _readLockCounts_get;return((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)>0};var hasWaiters=function hasWaiters(key){var _ref;var _waitQueues_get;return((_ref=(_waitQueues_get=waitQueues.get(key))===null||_waitQueues_get===void 0?void 0:_waitQueues_get.length)!==null&&_ref!==void 0?_ref:0)>0};var notifyWaiters=function notifyWaiters(key){if(isWriteLocked(key)){return}var queue=waitQueues.get(key);if(!queue||queue.length===0){return}var head=queue[0];if(head.kind==="write"){if(!isReadLocked(key)){queue.shift();writeLocked.add(key);head.resolve()}return}var next=queue[0];while(next!==undefined&&next.kind==="read"){var _readLockCounts_get;queue.shift();readLockCounts.set(key,((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)+1);next.resolve();next=queue[0]}};return{lock:function lock(tenantId,resource){return _async_to_generator(function(){var key;return _ts_generator(this,function(_state){key=resourceKey(tenantId,resource);return[2,new Promise(function(resolve){var _waitQueues_get;if(!isWriteLocked(key)&&!isReadLocked(key)&&!hasWaiters(key)){writeLocked.add(key);resolve();return}var queue=(_waitQueues_get=waitQueues.get(key))!==null&&_waitQueues_get!==void 0?_waitQueues_get:[];queue.push({kind:"write",resolve:resolve});waitQueues.set(key,queue)})]})})()},tryLock:function tryLock(tenantId,resource){var key=resourceKey(tenantId,resource);if(!isWriteLocked(key)&&!isReadLocked(key)&&!hasWaiters(key)){writeLocked.add(key);return true}return false},unlock:function unlock(tenantId,resource){var key=resourceKey(tenantId,resource);writeLocked.delete(key);notifyWaiters(key)},rLock:function rLock(tenantId,resource){return _async_to_generator(function(){var key;return _ts_generator(this,function(_state){key=resourceKey(tenantId,resource);return[2,new Promise(function(resolve){var _waitQueues_get;if(!isWriteLocked(key)&&!hasWaiters(key)){var _readLockCounts_get;var count=(_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0;readLockCounts.set(key,count+1);resolve();return}var queue=(_waitQueues_get=waitQueues.get(key))!==null&&_waitQueues_get!==void 0?_waitQueues_get:[];queue.push({kind:"read",resolve:resolve});waitQueues.set(key,queue)})]})})()},tryRLock:function tryRLock(tenantId,resource){var key=resourceKey(tenantId,resource);if(!isWriteLocked(key)&&!hasWaiters(key)){var _readLockCounts_get;readLockCounts.set(key,((_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0)+1);return true}return false},rUnlock:function rUnlock(tenantId,resource){var _readLockCounts_get;var key=resourceKey(tenantId,resource);var count=(_readLockCounts_get=readLockCounts.get(key))!==null&&_readLockCounts_get!==void 0?_readLockCounts_get:0;if(count<=1){readLockCounts.delete(key)}else{readLockCounts.set(key,count-1)}notifyWaiters(key)}}};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fraym/sync",
3
- "version": "1.0.0-alpha.23",
3
+ "version": "1.0.0-alpha.24",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/fraym/fraeym",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "node": ">=20"
23
23
  },
24
24
  "dependencies": {
25
- "@fraym/proto": "^1.0.0-alpha.23",
25
+ "@fraym/proto": "^1.0.0-alpha.24",
26
26
  "@grpc/grpc-js": "^1.14.3",
27
27
  "dotenv": "^17.2.4"
28
28
  },