@univer-cli/generic-keyed-instance-pool 1.0.0-beta.2 → 1.0.0-rc.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/README.md +1 -0
- package/README.zh-CN.md +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,6 +69,7 @@ await pool.close();
|
|
|
69
69
|
- After normal release, the instance can enter the idle cache.
|
|
70
70
|
- Invalidation marks an instance as unsafe to reuse, so it is destroyed during release.
|
|
71
71
|
- TTL and LRU only recycle idle instances and do not interrupt active leases.
|
|
72
|
+
- For invalidation, TTL, and LRU eviction, `destroy-start` is emitted synchronously after the instance leaves the cache and immediately before destruction starts. Use it to discard generation-specific state; `evicted` is the later completion event.
|
|
72
73
|
- `close()` rejects new acquisitions, waits for or terminates remaining lifecycle work, and destroys cached instances.
|
|
73
74
|
|
|
74
75
|
The key is used only for equality checks and events; the package never interprets it. The caller must ensure that a key always maps to compatible initialization data. The pool does not define the application's target-to-key algorithm.
|
package/README.zh-CN.md
CHANGED
|
@@ -70,6 +70,7 @@ await pool.close();
|
|
|
70
70
|
- 正常 release 后 instance 可以进入 idle cache。
|
|
71
71
|
- invalidate 表示 instance 已不可安全复用,会在 release 时销毁。
|
|
72
72
|
- TTL 和 LRU 只回收 idle instance,不中断 active lease。
|
|
73
|
+
- invalidate、TTL 与 LRU eviction 会在 instance 离开 cache 后、销毁开始前同步发出 `destroy-start`。调用方应在此清理与该 generation 绑定的状态;`evicted` 是随后发出的完成事件。
|
|
73
74
|
- `close()` 拒绝新的 acquire,等待或终止剩余 lifecycle,并销毁缓存内容。
|
|
74
75
|
|
|
75
76
|
Key 只用于相等性与事件,不会被 package 解释。调用方必须保证同一 key 对应兼容的 init;pool 不替 application
|
package/dist/index.d.ts
CHANGED
|
@@ -46,6 +46,10 @@ type InstancePoolEvent = {
|
|
|
46
46
|
} | {
|
|
47
47
|
readonly key: string;
|
|
48
48
|
readonly type: "cache-hit";
|
|
49
|
+
} | {
|
|
50
|
+
readonly key: string;
|
|
51
|
+
readonly reason: "invalidate" | "lru" | "ttl";
|
|
52
|
+
readonly type: "destroy-start";
|
|
49
53
|
} | {
|
|
50
54
|
readonly key: string;
|
|
51
55
|
readonly reason: "invalidate" | "lru" | "ttl";
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const _0x49b1f4=_0x447a;(function(_0xa7ea34,_0x201ce5){const _0x39d74a=_0x447a,_0x1cbd6c=_0xa7ea34();while(!![]){try{const _0x39a173=-parseInt(_0x39d74a(0xdb))/0x1*(parseInt(_0x39d74a(0xe1))/0x2)+parseInt(_0x39d74a(0x105))/0x3*(-parseInt(_0x39d74a(0xef))/0x4)+-parseInt(_0x39d74a(0x100))/0x5+-parseInt(_0x39d74a(0xf8))/0x6*(-parseInt(_0x39d74a(0xea))/0x7)+parseInt(_0x39d74a(0xcf))/0x8+parseInt(_0x39d74a(0xfd))/0x9+-parseInt(_0x39d74a(0xeb))/0xa*(-parseInt(_0x39d74a(0xdc))/0xb);if(_0x39a173===_0x201ce5)break;else _0x1cbd6c['push'](_0x1cbd6c['shift']());}catch(_0x3a4e93){_0x1cbd6c['push'](_0x1cbd6c['shift']());}}}(_0x30a1,0xed1c2));var e=class extends Error{[_0x49b1f4(0xf9)];constructor(_0x378308,_0x5d091f,_0x23f8f3){const _0x2e889d=_0x49b1f4;super(_0x5d091f,_0x23f8f3),this['name']='InstancePoolError',this[_0x2e889d(0xf9)]=_0x378308;}},t=0x493e0,n=0x14;function r(_0x2f9139){const _0x2114b6=_0x49b1f4;let _0xa40c40=new Map(),_0x163108=new Set(),_0x3607f7=new Map(),_0x47c51d=_0x2f9139['cache']?.[_0x2114b6(0xcc)]??t,_0x4de7f7=_0x2f9139[_0x2114b6(0x109)]?.['maxEntries']??n,_0x1c8be2=!0x1,_0xfaf7be,_0x4311bd=0x0;i(_0x47c51d,_0x4de7f7);let _0x45afbd={async 'acquire'(_0x510996){const _0xb5239b=_0x2114b6;_0x514e6b(),a(_0x510996);let _0x25b0ba=_0xa40c40[_0xb5239b(0xd4)](_0x510996['key']);if(_0x25b0ba)return _0x25b0ba['busy']?await o(_0x510996,_0x25b0ba[_0xb5239b(0xd1)]):(c(_0x25b0ba),_0x25b0ba['busy']=!0x0,_0x4769eb({'key':_0x510996[_0xb5239b(0xee)],'type':_0xb5239b(0xed)}),_0x197c06(_0x510996[_0xb5239b(0xee)],_0x25b0ba));let _0x32729b=_0x3607f7[_0xb5239b(0xd4)](_0x510996[_0xb5239b(0xee)]);if(_0x32729b)return await o(_0x510996,_0x32729b);let _0x16a462,_0x457504=new Promise(_0x433146=>{_0x16a462=_0x433146;});_0x163108[_0xb5239b(0xff)](_0x457504),_0x3607f7[_0xb5239b(0x101)](_0x510996[_0xb5239b(0xee)],[]);let _0x353adf=Date[_0xb5239b(0xda)]();_0x4769eb({'key':_0x510996[_0xb5239b(0xee)],'type':_0xb5239b(0xcd)});try{await _0x2d956c();let _0xc79106=await _0x2f9139['factory'][_0xb5239b(0xe4)](_0x510996);if(_0x1c8be2)throw await _0x2f9139['factory'][_0xb5239b(0x10a)]({'instance':_0xc79106,'key':_0x510996[_0xb5239b(0xee)]}),l();let _0x2f7c71={'busy':!0x0,'closed':!0x1,'instance':_0xc79106,'invalidated':!0x1,'lastIdleSequence':0x0,'waiters':_0x3607f7[_0xb5239b(0xd4)](_0x510996['key'])??[]};return _0xa40c40[_0xb5239b(0x101)](_0x510996[_0xb5239b(0xee)],_0x2f7c71),_0x4769eb({'durationMs':Date[_0xb5239b(0xda)]()-_0x353adf,'key':_0x510996[_0xb5239b(0xee)],'type':_0xb5239b(0xdf)}),_0x197c06(_0x510996[_0xb5239b(0xee)],_0x2f7c71);}catch(_0x44ac86){throw s(_0x3607f7[_0xb5239b(0xd4)](_0x510996[_0xb5239b(0xee)])??[],_0x44ac86),_0x44ac86;}finally{_0x3607f7[_0xb5239b(0x108)](_0x510996[_0xb5239b(0xee)]),_0x163108[_0xb5239b(0x108)](_0x457504),_0x16a462();}},async 'close'(){if(_0xfaf7be)return await _0xfaf7be;_0x1c8be2=!0x0,_0xfaf7be=_0x4ff87b(),await _0xfaf7be;}};return _0x45afbd;function _0x197c06(_0x56f3ef,_0x10e982){const _0x973f9d=_0x2114b6;let _0x34c778=!0x1;return{'instance':_0x10e982[_0x973f9d(0xd9)],'key':_0x56f3ef,async 'invalidate'(){const _0x5a11b8=_0x973f9d;_0x34c778||(_0x34c778=!0x0,_0x10e982[_0x5a11b8(0xce)]=!0x0,await _0xd4d282(_0x56f3ef,_0x10e982,_0x5a11b8(0xfe)));},async 'release'(){const _0x38b3b7=_0x973f9d;if(_0x34c778||(_0x34c778=!0x0,_0x10e982[_0x38b3b7(0xf2)]))return;if(_0x10e982[_0x38b3b7(0xce)]){await _0xd4d282(_0x56f3ef,_0x10e982,_0x38b3b7(0xfe));return;}let _0x51357f=_0x10e982[_0x38b3b7(0xd1)][_0x38b3b7(0xe8)]();_0x51357f?_0x51357f[_0x38b3b7(0xd3)](_0x197c06(_0x56f3ef,_0x10e982)):(_0x10e982[_0x38b3b7(0xf7)]=!0x1,_0x10e982['lastIdleSequence']=++_0x4311bd,_0x110f75(_0x56f3ef,_0x10e982));}};}async function _0xd4d282(_0x25b5be,_0xcb567d,_0x33bbc6){const _0x55651a=_0x2114b6;let _0xf3df20=_0xcb567d[_0x55651a(0xd1)][_0x55651a(0xd0)](0x0);_0xa40c40[_0x55651a(0xd4)](_0x25b5be)===_0xcb567d&&_0xa40c40['delete'](_0x25b5be);try{await _0x18f9d2(_0x25b5be,_0xcb567d,_0x33bbc6);}finally{_0x33bbc6&&_0x4769eb({'key':_0x25b5be,'reason':_0x33bbc6,'type':_0x55651a(0xdd)}),_0x1c8be2?s(_0xf3df20,l()):_0x18e03c(_0xf3df20);}}function _0x110f75(_0x2352be,_0x5686a4){const _0x402ce3=_0x2114b6;c(_0x5686a4),_0x5686a4[_0x402ce3(0x102)]=setTimeout(()=>{const _0x44f4e5=_0x402ce3;_0x5686a4[_0x44f4e5(0xf7)]||_0xa40c40[_0x44f4e5(0xd4)](_0x2352be)!==_0x5686a4||(_0xa40c40[_0x44f4e5(0x108)](_0x2352be),_0x18f9d2(_0x2352be,_0x5686a4,'ttl')[_0x44f4e5(0xe0)](()=>_0x4769eb({'key':_0x2352be,'reason':_0x44f4e5(0xd5),'type':_0x44f4e5(0xdd)}))[_0x44f4e5(0x10b)](()=>void 0x0));},_0x47c51d),_0x5686a4[_0x402ce3(0x102)][_0x402ce3(0x103)]?.();}async function _0x2d956c(){const _0x52b2cd=_0x2114b6;for(;_0xa40c40['size']+_0x3607f7[_0x52b2cd(0xfc)]>_0x4de7f7;){let _0x3b7363;for(let _0x43d2dc of _0xa40c40)_0x43d2dc[0x1][_0x52b2cd(0xf7)]||(!_0x3b7363||_0x43d2dc[0x1]['lastIdleSequence']<_0x3b7363[0x1][_0x52b2cd(0xfa)])&&(_0x3b7363=_0x43d2dc);if(!_0x3b7363)throw new e(_0x52b2cd(0xf4),_0x52b2cd(0xe9)+_0x4de7f7+_0x52b2cd(0xe5));_0xa40c40[_0x52b2cd(0x108)](_0x3b7363[0x0]),await _0x18f9d2(_0x3b7363[0x0],_0x3b7363[0x1],_0x52b2cd(0xde)),_0x4769eb({'key':_0x3b7363[0x0],'reason':_0x52b2cd(0xde),'type':_0x52b2cd(0xdd)});}}async function _0x4ff87b(){const _0x21c20a=_0x2114b6;let _0x5912b0=l(),_0x12dc7f=[..._0xa40c40[_0x21c20a(0xf3)]()];for(let [,_0x56ce54]of _0x12dc7f)s(_0x56ce54[_0x21c20a(0xd1)],_0x5912b0);for(let _0x25ffcb of _0x3607f7['values']())s(_0x25ffcb,_0x5912b0);_0xa40c40['clear']();let _0x307e39=(await Promise['allSettled']([..._0x12dc7f[_0x21c20a(0xd2)](async([_0x3bb123,_0x366294])=>await _0x18f9d2(_0x3bb123,_0x366294)),..._0x163108]))['find'](_0x450067=>_0x450067[_0x21c20a(0x107)]===_0x21c20a(0xd8));if(_0x307e39?.['status']===_0x21c20a(0xd8))throw _0x307e39[_0x21c20a(0xd7)];}function _0x4769eb(_0x19a9ab){const _0x5a19e2=_0x2114b6;try{_0x2f9139[_0x5a19e2(0xd6)]?.(_0x19a9ab);}catch{}}function _0x514e6b(){if(_0x1c8be2)throw l();}function _0x18e03c(_0x25dbca){const _0x2766a2=_0x2114b6;for(let _0x21827f of _0x25dbca)_0x45afbd[_0x2766a2(0xf5)](_0x21827f[_0x2766a2(0x104)])[_0x2766a2(0xe0)](_0x21827f[_0x2766a2(0xd3)],_0x21827f[_0x2766a2(0x10c)]);}async function _0x18f9d2(_0x2c55dd,_0x2d350c,_0x20deb2){const _0x39427a=_0x2114b6;_0x2d350c[_0x39427a(0xf2)]||(_0x2d350c[_0x39427a(0xf2)]=!0x0,c(_0x2d350c),_0x20deb2&&_0x4769eb({'key':_0x2c55dd,'reason':_0x20deb2,'type':'destroy-start'}),await _0x2f9139[_0x39427a(0xe3)][_0x39427a(0x10a)]({'instance':_0x2d350c[_0x39427a(0xd9)],'key':_0x2c55dd}));}}function i(_0x512ce8,_0x25155b){const _0x515948=_0x49b1f4;if(!Number[_0x515948(0xf0)](_0x512ce8)||_0x512ce8<0x0)throw new e(_0x515948(0xfb),_0x515948(0xec));if(!Number[_0x515948(0xe2)](_0x25155b)||_0x25155b<=0x0)throw new e(_0x515948(0xfb),_0x515948(0xe7));}function a(_0x1fdfb8){const _0x4194ba=_0x49b1f4;if(_0x1fdfb8[_0x4194ba(0xee)][_0x4194ba(0x106)]===0x0)throw new e('INSTANCE_POOL_INVALID_INPUT',_0x4194ba(0xe6));}function o(_0x210963,_0x81168d){return new Promise((_0x553a42,_0x5cc9a1)=>{_0x81168d['push']({'input':_0x210963,'reject':_0x5cc9a1,'resolve':_0x553a42});});}function s(_0x1da466,_0x37a45d){const _0x89763=_0x49b1f4;for(let _0x549955 of _0x1da466[_0x89763(0xd0)](0x0))_0x549955[_0x89763(0x10c)](_0x37a45d);}function c(_0x4b907b){const _0x471815=_0x49b1f4;_0x4b907b[_0x471815(0x102)]!==void 0x0&&(clearTimeout(_0x4b907b[_0x471815(0x102)]),delete _0x4b907b['idleTimer']);}function _0x447a(_0x2eaf0a,_0x3bfe85){_0x2eaf0a=_0x2eaf0a-0xcc;const _0x30a1a1=_0x30a1();let _0x447ad7=_0x30a1a1[_0x2eaf0a];return _0x447ad7;}function l(){const _0x41f6bf=_0x49b1f4;return new e(_0x41f6bf(0xf6),_0x41f6bf(0xf1));}export{e as InstancePoolError,r as createGenericKeyedInstancePool};function _0x30a1(){const _0x383e6e=['cache','destroy','catch','reject','idleTtlMs','create-start','invalidated','4810008cqrwGK','splice','waiters','map','resolve','get','ttl','onEvent','reason','rejected','instance','now','1lvOQTA','123068MHMpEN','evicted','lru','create-complete','then','2609990mxTIzn','isSafeInteger','factory','create','\x20is\x20occupied\x20by\x20active\x20or\x20loading\x20instances','key\x20must\x20not\x20be\x20empty','cache.maxEntries\x20must\x20be\x20a\x20positive\x20integer','shift','Instance\x20pool\x20capacity\x20','124243LkXSFg','1490RBOnKU','cache.idleTtlMs\x20must\x20be\x20a\x20finite\x20non-negative\x20number','cache-hit','key','2877164aHuoqg','isFinite','Instance\x20pool\x20is\x20closed','closed','entries','INSTANCE_POOL_CAPACITY_EXCEEDED','acquire','INSTANCE_POOL_CLOSED','busy','60NKDZBp','code','lastIdleSequence','INSTANCE_POOL_INVALID_INPUT','size','10716696ruMpJD','invalidate','add','3205045LkkxHH','set','idleTimer','unref','input','3MuOweq','length','status','delete'];_0x30a1=function(){return _0x383e6e;};return _0x30a1();}
|