@fraym/sync 0.32.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.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/client/client.d.ts +9 -0
- package/dist/client/client.js +1 -0
- package/dist/client/config.d.ts +8 -0
- package/dist/client/config.js +1 -0
- package/dist/client/connection.d.ts +7 -0
- package/dist/client/connection.js +1 -0
- package/dist/client/ip.d.ts +1 -0
- package/dist/client/ip.js +1 -0
- package/dist/client/lease.d.ts +12 -0
- package/dist/client/lease.js +1 -0
- package/dist/client/lock.d.ts +3 -0
- package/dist/client/lock.js +1 -0
- package/dist/client/promise.d.ts +6 -0
- package/dist/client/promise.js +1 -0
- package/dist/client/retry.d.ts +1 -0
- package/dist/client/retry.js +1 -0
- package/dist/client/rlock.d.ts +3 -0
- package/dist/client/rlock.js +1 -0
- package/dist/client/runlock.d.ts +3 -0
- package/dist/client/runlock.js +1 -0
- package/dist/client/unlock.d.ts +3 -0
- package/dist/client/unlock.js +1 -0
- package/dist/eslint.config.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/package.json +31 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Becklyn Studios
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# sync
|
|
2
|
+
|
|
3
|
+
Client implementation in JavaScript for the Freym service [sync](https://github.com/fraym/sync).
|
|
4
|
+
|
|
5
|
+
## Docs
|
|
6
|
+
|
|
7
|
+
Please have a look at our [documentation](https://docs.freym.becklyn.app/docs/services/sync/sdk).
|
|
8
|
+
|
|
9
|
+
## License
|
|
10
|
+
|
|
11
|
+
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ClientConfig } from "./config";
|
|
2
|
+
export interface Client {
|
|
3
|
+
lock: (tenantId: string, ...resource: string[]) => Promise<void>;
|
|
4
|
+
unlock: (tenantId: string, ...resource: string[]) => Promise<void>;
|
|
5
|
+
rLock: (tenantId: string, ...resource: string[]) => Promise<void>;
|
|
6
|
+
rUnlock: (tenantId: string, ...resource: string[]) => Promise<void>;
|
|
7
|
+
stop: () => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare const newClient: (config: ClientConfig) => Promise<Client>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"newClient",{enumerable:true,get:function(){return newClient}});var _indexfreymsyncmanagement=require("@fraym/proto/dist/index.freym.sync.management");var _grpcjs=require("@grpc/grpc-js");var _config=require("./config");var _connection=require("./connection");var _lease=require("./lease");var _lock=require("./lock");var _rlock=require("./rlock");var _runlock=require("./runlock");var _unlock=require("./unlock");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 newClient=/*#__PURE__*/function(){var _ref=_async_to_generator(function(config){var serviceClient,connection,lease;return _ts_generator(this,function(_state){switch(_state.label){case 0:config=(0,_config.useConfigDefaults)(config);serviceClient=new _indexfreymsyncmanagement.ServiceClient(config.serverAddress,_grpcjs.credentials.createInsecure(),{"grpc.keepalive_time_ms":config.keepaliveInterval,"grpc.keepalive_timeout_ms":config.keepaliveTimeout,"grpc.keepalive_permit_without_calls":1,"grpc.max_receive_message_length":0x7fffffff});return[4,(0,_connection.newConnection)()];case 1:connection=_state.sent();return[4,(0,_lease.createLease)(connection,config,serviceClient)];case 2:lease=_state.sent();return[4,lease.renew()];case 3:_state.sent();return[2,{lock:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenantId){var _len,resource,_key;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:for(_len=_arguments.length,resource=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){resource[_key-1]=_arguments[_key]}return[4,connection.waitForConnect()];case 1:_state.sent();return[4,(0,_lock.lock)(lease,tenantId,resource,serviceClient)];case 2:_state.sent();return[2]}})});return function(tenantId){return _ref.apply(this,arguments)}}(),unlock:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenantId){var _len,resource,_key;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:for(_len=_arguments.length,resource=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){resource[_key-1]=_arguments[_key]}return[4,connection.waitForConnect()];case 1:_state.sent();return[4,(0,_unlock.unlock)(lease,tenantId,resource,serviceClient)];case 2:_state.sent();return[2]}})});return function(tenantId){return _ref.apply(this,arguments)}}(),rLock:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenantId){var _len,resource,_key;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:for(_len=_arguments.length,resource=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){resource[_key-1]=_arguments[_key]}return[4,connection.waitForConnect()];case 1:_state.sent();return[4,(0,_rlock.rLock)(lease,tenantId,resource,serviceClient)];case 2:_state.sent();return[2]}})});return function(tenantId){return _ref.apply(this,arguments)}}(),rUnlock:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenantId){var _len,resource,_key;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:for(_len=_arguments.length,resource=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){resource[_key-1]=_arguments[_key]}return[4,connection.waitForConnect()];case 1:_state.sent();return[4,(0,_runlock.rUnlock)(lease,tenantId,resource,serviceClient)];case 2:_state.sent();return[2]}})});return function(tenantId){return _ref.apply(this,arguments)}}(),stop:/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:connection.stop();lease.stop();return[4,lease.waitForStop()];case 1:_state.sent();return[2]}})})}]}})});return function newClient(config){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface ClientConfig {
|
|
2
|
+
serverAddress: string;
|
|
3
|
+
appPrefix: string;
|
|
4
|
+
keepaliveInterval?: number;
|
|
5
|
+
keepaliveTimeout?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const useConfigDefaults: (config: ClientConfig) => Required<ClientConfig>;
|
|
8
|
+
export declare const getEnvDeliveryConfig: () => ClientConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{getEnvDeliveryConfig:function(){return getEnvDeliveryConfig},useConfigDefaults:function(){return useConfigDefaults}});var _dotenv=require("dotenv");var useConfigDefaults=function(config){var _config_keepaliveInterval,_config_keepaliveTimeout;return{serverAddress:config.serverAddress,appPrefix:config.appPrefix,keepaliveInterval:(_config_keepaliveInterval=config.keepaliveInterval)!==null&&_config_keepaliveInterval!==void 0?_config_keepaliveInterval:40*1e3,keepaliveTimeout:(_config_keepaliveTimeout=config.keepaliveTimeout)!==null&&_config_keepaliveTimeout!==void 0?_config_keepaliveTimeout:3*1e3}};var getEnvDeliveryConfig=function(){(0,_dotenv.config)();var keepaliveInterval;var keepaliveTimeout;var keepaliveIntervalString=process.env.STREAMS_CLIENT_KEEPALIVE_INTERVAL;var keepaliveTimeoutString=process.env.STREAMS_CLIENT_KEEPALIVE_TIMEOUT;if(keepaliveIntervalString){keepaliveInterval=parseInt(keepaliveIntervalString,10)}if(keepaliveTimeoutString){keepaliveTimeout=parseInt(keepaliveTimeoutString,10)}var _process_env_STREAMS_CLIENT_ADDRESS,_process_env_SYNC_CLIENT_APP_PREFIX;return{serverAddress:(_process_env_STREAMS_CLIENT_ADDRESS=process.env.STREAMS_CLIENT_ADDRESS)!==null&&_process_env_STREAMS_CLIENT_ADDRESS!==void 0?_process_env_STREAMS_CLIENT_ADDRESS:"",appPrefix:(_process_env_SYNC_CLIENT_APP_PREFIX=process.env.SYNC_CLIENT_APP_PREFIX)!==null&&_process_env_SYNC_CLIENT_APP_PREFIX!==void 0?_process_env_SYNC_CLIENT_APP_PREFIX:"",keepaliveInterval:keepaliveInterval,keepaliveTimeout:keepaliveTimeout}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"newConnection",{enumerable:true,get:function(){return newConnection}});var _asyncmutex=require("async-mutex");var _promise=require("./promise");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}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 _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 newConnection=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,waitForStop,onStop,mutex,connected,onConnectCallbacks;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForStop=_ref[0],onStop=_ref[1];mutex=new _asyncmutex.Mutex;connected=false;onConnectCallbacks=[];return[2,{connect:/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,mutex.runExclusive(/*#__PURE__*/_async_to_generator(function(){var _iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,callback;return _ts_generator(this,function(_state){connected=true;_iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(_iterator=onConnectCallbacks[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){callback=_step.value;callback()}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}onConnectCallbacks=[];return[2]})}))];case 1:_state.sent();return[2]}})}),disconnect:/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,mutex.runExclusive(/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){connected=false;return[2]})}))];case 1:_state.sent();return[2]}})}),waitForConnect:/*#__PURE__*/_async_to_generator(function(){var _ref,waitForConnect,onConnect,response;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForConnect=_ref[0],onConnect=_ref[1];return[4,mutex.runExclusive(/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){if(connected){onConnect();return[2]}onConnectCallbacks.push(onConnect);return[2]})}))];case 2:_state.sent();return[4,(0,_promise.racePromises)({connect:waitForConnect(),stop:waitForStop()})];case 3:response=_state.sent();if(response==="stop"){throw new Error("Stopping locking service...")}return[2]}})}),stop:onStop}]}})});return function newConnection(){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getOwnIpAddress: () => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getOwnIpAddress",{enumerable:true,get:function(){return getOwnIpAddress}});var _os=require("os");var getOwnIpAddress=function(){var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.values((0,_os.networkInterfaces)())[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var iface=_step.value;if(iface===undefined){continue}var _iteratorNormalCompletion1=true,_didIteratorError1=false,_iteratorError1=undefined;try{for(var _iterator1=iface[Symbol.iterator](),_step1;!(_iteratorNormalCompletion1=(_step1=_iterator1.next()).done);_iteratorNormalCompletion1=true){var alias=_step1.value;if(alias.family==="IPv4"&&alias.address!=="127.0.0.1"&&!alias.internal){return alias.address}}}catch(err){_didIteratorError1=true;_iteratorError1=err}finally{try{if(!_iteratorNormalCompletion1&&_iterator1.return!=null){_iterator1.return()}}finally{if(_didIteratorError1){throw _iteratorError1}}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}throw new Error("No local IP address found!")};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.sync.management";
|
|
2
|
+
import { ClientConfig } from "./config";
|
|
3
|
+
import { Connection } from "./connection";
|
|
4
|
+
export interface Lease {
|
|
5
|
+
stop: () => void;
|
|
6
|
+
runWithLeaseId: (callback: (leaseId: string) => Promise<void>) => Promise<void>;
|
|
7
|
+
waitForStop: () => Promise<void>;
|
|
8
|
+
renew: () => Promise<void>;
|
|
9
|
+
track: (tenant: string, resource: string[], read: boolean) => Promise<void>;
|
|
10
|
+
untrack: (tenant: string, resource: string[], read: boolean) => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare const createLease: (connection: Connection, config: ClientConfig, serviceClient: ServiceClient) => Promise<Lease>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"createLease",{enumerable:true,get:function(){return createLease}});var _asyncmutex=require("async-mutex");var _ip=require("./ip");var _promise=require("./promise");var _retry=require("./retry");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}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 _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 createLease=/*#__PURE__*/function(){var _ref=_async_to_generator(function(connection,config,serviceClient){var mutex,ttl,locks,rLocks,leaseId,_ref,waitForStopExecution,stopExecution,_ref1,waitForStop,stopped,renew,keepLeaseAlive,runKeepalive,runDropLease;return _ts_generator(this,function(_state){switch(_state.label){case 0:mutex=new _asyncmutex.Mutex;ttl=20;locks=[];rLocks=[];leaseId="";return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForStopExecution=_ref[0],stopExecution=_ref[1];return[4,(0,_promise.createResolvablePromise)()];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForStop=_ref1[0],stopped=_ref1[1];renew=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,waitForCreateLease,onCreateLease,release,response,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForCreateLease=_ref[0],onCreateLease=_ref[1];_state.label=2;case 2:_state.trys.push([2,6,,7]);return[4,mutex.acquire()];case 3:release=_state.sent();serviceClient.createLease({ip:(0,_ip.getOwnIpAddress)(),app:config.appPrefix,ttl:ttl,leaseId:leaseId,alreadyRegisteredLocks:getPbLocks(leaseId,locks),alreadyRegisteredRlocks:getPbLocks(leaseId,rLocks)},function(error,response){if(error){onCreateLease({error:error});return}onCreateLease({error:null,leaseId:response.leaseId})});return[4,waitForCreateLease()];case 4:response=_state.sent();if(response.error){release();throw response.error}leaseId=response.leaseId;keepLeaseAlive();release();return[4,connection.connect()];case 5:_state.sent();return[3,7];case 6:e=_state.sent();if(e===_asyncmutex.E_CANCELED){return[2]}throw e;case 7:return[2]}})});return function renew(){return _ref.apply(this,arguments)}}();keepLeaseAlive=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var response;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!true)return[3,5];return[4,(0,_promise.racePromises)({stop:waitForStopExecution(),keepalive:(0,_promise.wait)(ttl/2*1e3)})];case 1:response=_state.sent();if(!(response==="stop"))return[3,3];return[4,runDropLease()];case 2:_state.sent();return[2];case 3:return[4,runKeepalive()];case 4:if(!_state.sent()){return[2]}return[3,0];case 5:return[2]}})});return function keepLeaseAlive(){return _ref.apply(this,arguments)}}();runKeepalive=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,waitForKeepalive,onKeepalive,error,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForKeepalive=_ref[0],onKeepalive=_ref[1];serviceClient.keepLease({leaseId:leaseId,ttl:ttl},onKeepalive);return[4,waitForKeepalive()];case 2:error=_state.sent();if(!error)return[3,7];return[4,connection.disconnect()];case 3:_state.sent();_state.label=4;case 4:_state.trys.push([4,6,,7]);return[4,(0,_retry.retry)(renew,100,50)];case 5:_state.sent();return[2,false];case 6:e=_state.sent();throw new Error("Unable to renew lease");case 7:return[2,true]}})});return function runKeepalive(){return _ref.apply(this,arguments)}}();runDropLease=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,waitForDropped,onDrop,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promise.createResolvablePromise)()];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),2]),waitForDropped=_ref[0],onDrop=_ref[1];serviceClient.dropLease({leaseId:leaseId},onDrop);return[4,waitForDropped()];case 2:error=_state.sent();if(error){throw error}stopped();return[2]}})});return function runDropLease(){return _ref.apply(this,arguments)}}();return[2,{stop:function(){mutex.cancel();stopExecution()},runWithLeaseId:/*#__PURE__*/function(){var _ref=_async_to_generator(function(callback){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,mutex.runExclusive(/*#__PURE__*/_async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,callback(leaseId)];case 1:_state.sent();return[2]}})}))];case 1:_state.sent();return[2]}})});return function(callback){return _ref.apply(this,arguments)}}(),renew:renew,waitForStop:waitForStop,track:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenant,resource,read){var e;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,2,,3]);return[4,mutex.runExclusive(function(){if(read){rLocks.push({tenant:tenant,resource:resource});return}locks.push({tenant:tenant,resource:resource})})];case 1:_state.sent();return[3,3];case 2:e=_state.sent();if(e===_asyncmutex.E_CANCELED){return[2]}throw e;case 3:return[2]}})});return function(tenant,resource,read){return _ref.apply(this,arguments)}}(),untrack:/*#__PURE__*/function(){var _ref=_async_to_generator(function(tenant,resource,read){var e;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,2,,3]);return[4,mutex.runExclusive(function(){if(read){var found=false;var newRLocks=[];rLocks.forEach(function(lock){if(!found&&lock.tenant===tenant&&arraysEqual(lock.resource,resource)){found=true;return}newRLocks.push(lock)});rLocks=newRLocks;return}locks=locks.filter(function(lock){return lock.tenant!==tenant||!arraysEqual(lock.resource,resource)})})];case 1:_state.sent();return[3,3];case 2:e=_state.sent();if(e===_asyncmutex.E_CANCELED){return[2]}throw e;case 3:return[2]}})});return function(tenant,resource,read){return _ref.apply(this,arguments)}}()}]}})});return function createLease(connection,config,serviceClient){return _ref.apply(this,arguments)}}();var arraysEqual=function(a,b){if(a.length!==b.length){return false}for(var i=0;i<a.length;i++){if(a[i]!==b[i]){return false}}return true};var getPbLocks=function(leaseId,locks){return locks.map(function(lock){return{leaseId:leaseId,tenantId:lock.tenant,resource:lock.resource}})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"lock",{enumerable:true,get:function(){return lock}});var _retry=require("./retry");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 lock=/*#__PURE__*/function(){var _ref=_async_to_generator(function(lease,tenantId,resource,serviceClient){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_retry.retry)(function(){return lease.runWithLeaseId(/*#__PURE__*/function(){var _ref=_async_to_generator(function(leaseId){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){serviceClient.lock({leaseId:leaseId,tenantId:tenantId,resource:resource},function(error){if(error){reject(error);return}resolve()})})]})});return function(leaseId){return _ref.apply(this,arguments)}}())})];case 1:_state.sent();return[4,lease.track(tenantId,resource,false)];case 2:_state.sent();return[2]}})});return function lock(lease,tenantId,resource,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type ResolvablePromiseResolveFunction<T> = (value: T) => void;
|
|
2
|
+
type ResolvablePromise<T> = [() => Promise<T>, ResolvablePromiseResolveFunction<T>];
|
|
3
|
+
export declare const createResolvablePromise: <T>(onResolve?: (resolvePromise: (value: T) => void) => Promise<void>) => Promise<ResolvablePromise<T>>;
|
|
4
|
+
export declare const wait: (milliSeconds: number) => Promise<void>;
|
|
5
|
+
export declare const racePromises: <T extends string | number>(promises: Record<T, Promise<void>>) => Promise<T>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{createResolvablePromise:function(){return createResolvablePromise},racePromises:function(){return racePromises},wait:function(){return wait}});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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 createResolvablePromise=/*#__PURE__*/function(){var _ref=_async_to_generator(function(onResolve){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve){var promise=new Promise(function(resolvePromise){resolve([function(){return promise},/*#__PURE__*/function(){var _ref=_async_to_generator(function(value){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onResolve)return[3,2];return[4,onResolve(resolvePromise)];case 1:_state.sent();return[3,3];case 2:resolvePromise(value);_state.label=3;case 3:return[2]}})});return function(value){return _ref.apply(this,arguments)}}()])})})]})});return function createResolvablePromise(onResolve){return _ref.apply(this,arguments)}}();var wait=/*#__PURE__*/function(){var _ref=_async_to_generator(function(milliSeconds){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve){setTimeout(function(){resolve()},milliSeconds)})]})});return function wait(milliSeconds){return _ref.apply(this,arguments)}}();var racePromises=/*#__PURE__*/function(){var _ref=_async_to_generator(function(promises){var _loop,waitFunctions,key,response;return _ts_generator(this,function(_state){switch(_state.label){case 0:_loop=function(key){var waitFn=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,promises[key]];case 1:_state.sent();return[2,{response:key}]}})});return function waitFn(){return _ref.apply(this,arguments)}}();waitFunctions.push(waitFn())};waitFunctions=[];for(var key in promises)_loop(key);return[4,Promise.race(waitFunctions)];case 1:response=_state.sent().response;return[2,response]}})});return function racePromises(promises){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const retry: <T>(fn: () => Promise<T>, pause?: number, retries?: number) => Promise<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"retry",{enumerable:true,get:function(){return retry}});var _constants=require("@grpc/grpc-js/build/src/constants");var _promise=require("./promise");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 retry=/*#__PURE__*/function(){var _ref=_async_to_generator(function(fn){var pause,retries,err;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:pause=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:100,retries=_arguments.length>2&&_arguments[2]!==void 0?_arguments[2]:50;_state.label=1;case 1:_state.trys.push([1,3,,6]);return[4,fn()];case 2:return[2,_state.sent()];case 3:err=_state.sent();if(retries===0||err&&err.code&&err.code===_constants.Status.UNKNOWN){throw err}return[4,(0,_promise.wait)(pause)];case 4:_state.sent();return[4,retry(fn,pause,retries-1)];case 5:return[2,_state.sent()];case 6:return[2]}})});return function retry(fn){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"rLock",{enumerable:true,get:function(){return rLock}});var _retry=require("./retry");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 rLock=/*#__PURE__*/function(){var _ref=_async_to_generator(function(lease,tenantId,resource,serviceClient){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_retry.retry)(function(){return lease.runWithLeaseId(/*#__PURE__*/function(){var _ref=_async_to_generator(function(leaseId){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){serviceClient.rLock({leaseId:leaseId,tenantId:tenantId,resource:resource},function(error){if(error){reject(error);return}resolve()})})]})});return function(leaseId){return _ref.apply(this,arguments)}}())})];case 1:_state.sent();return[4,lease.track(tenantId,resource,true)];case 2:_state.sent();return[2]}})});return function rLock(lease,tenantId,resource,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"rUnlock",{enumerable:true,get:function(){return rUnlock}});var _retry=require("./retry");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 rUnlock=/*#__PURE__*/function(){var _ref=_async_to_generator(function(lease,tenantId,resource,serviceClient){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_retry.retry)(function(){return lease.runWithLeaseId(/*#__PURE__*/function(){var _ref=_async_to_generator(function(leaseId){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){serviceClient.rUnlock({leaseId:leaseId,tenantId:tenantId,resource:resource},function(error){if(error){reject(error);return}resolve()})})]})});return function(leaseId){return _ref.apply(this,arguments)}}())})];case 1:_state.sent();return[4,lease.untrack(tenantId,resource,true)];case 2:_state.sent();return[2]}})});return function rUnlock(lease,tenantId,resource,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"unlock",{enumerable:true,get:function(){return unlock}});var _retry=require("./retry");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,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=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(_)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 unlock=/*#__PURE__*/function(){var _ref=_async_to_generator(function(lease,tenantId,resource,serviceClient){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_retry.retry)(function(){return lease.runWithLeaseId(/*#__PURE__*/function(){var _ref=_async_to_generator(function(leaseId){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){serviceClient.unlock({leaseId:leaseId,tenantId:tenantId,resource:resource},function(error){if(error){reject(error);return}resolve()})})]})});return function(leaseId){return _ref.apply(this,arguments)}}())})];case 1:_state.sent();return[4,lease.untrack(tenantId,resource,false)];case 2:_state.sent();return[2]}})});return function unlock(lease,tenantId,resource,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});var _base=require("@becklyn/eslint/base");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var _default=_to_consumable_array(_base.config);
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./client/client"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fraym/sync",
|
|
3
|
+
"version": "0.32.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"homepage": "https://github.com/fraym/freym-api",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/fraym/freym-api.git"
|
|
9
|
+
},
|
|
10
|
+
"description": "JS client implementation of the sync service of Freym",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "rm -rf dist && tsc && npx swc . -d dist",
|
|
13
|
+
"lint": "eslint && prettier --check \"**/*.{ts,tsx,json,scss,css}\"",
|
|
14
|
+
"fix": "eslint --fix && prettier --write \"**/*.{ts,tsx,json,scss,css}\""
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist/**/*"
|
|
18
|
+
],
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=20"
|
|
21
|
+
},
|
|
22
|
+
"main": "dist/index.js",
|
|
23
|
+
"types": "dist/index.d.ts",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@fraym/proto": "^0.32.0",
|
|
26
|
+
"@grpc/grpc-js": "^1.13.0",
|
|
27
|
+
"async-mutex": "^0.5.0",
|
|
28
|
+
"dotenv": "^16.4.7"
|
|
29
|
+
},
|
|
30
|
+
"prettier": "@becklyn/prettier"
|
|
31
|
+
}
|