@avstantso/utils-locker 1.0.3 → 1.1.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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.1.0] - 2026-01-18
6
+
7
+ ### Changed
8
+
9
+ - Updated all dependencies
10
+
11
+ ## [1.0.4] - 2026-01-16
12
+
13
+ ### Changed
14
+
15
+ - Updated `@avstantso/core` dependency (fix `process is not defined` error in Vite build)
16
+
5
17
  ## [1.0.3] - 2026-01-16
6
18
 
7
19
  ### Changed
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@avstantso/utils-locker",
3
3
  "license": "MIT",
4
4
  "author": "avstantso",
5
- "version": "1.0.3",
5
+ "version": "1.1.0",
6
6
  "description": "AVStantso framework utils: Locker",
7
7
  "keywords": [
8
8
  "Locker"
@@ -23,12 +23,12 @@
23
23
  "test": "NODE_ENV=test jest --coverage"
24
24
  },
25
25
  "dependencies": {
26
- "@avstantso/concepts": "1.0.3",
27
- "@avstantso/core": "1.0.3",
28
- "@avstantso/errors": "1.0.4",
29
- "@avstantso/js": "1.0.3",
30
- "@avstantso/std-ext": "1.0.2",
31
- "@avstantso/ts": "1.0.3"
26
+ "@avstantso/concepts": "1.1.0",
27
+ "@avstantso/core": "1.1.0",
28
+ "@avstantso/errors": "1.1.0",
29
+ "@avstantso/js": "1.1.0",
30
+ "@avstantso/std-ext": "1.1.0",
31
+ "@avstantso/ts": "1.1.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@avstantso/dev-basic": "1.0.0"
@@ -1,47 +0,0 @@
1
- declare namespace AVStantso {
2
- /**
3
- * @summary Async locker
4
- */
5
- namespace Locker {
6
- /**
7
- * @summary Async locker options
8
- */
9
- type Options = AsyncTasksManager.Option;
10
- }
11
- interface Locker {
12
- /**
13
- * @summary Async lock state
14
- */
15
- readonly isLocked: boolean;
16
- /**
17
- * @summary Acquire lock
18
- * @returns Release method for this lock
19
- */
20
- acquire(): () => void;
21
- /**
22
- * @summary Wait for all locks will be released
23
- */
24
- waitFor(): Promise<void>;
25
- }
26
- namespace Code {
27
- /**
28
- * @summary Locker utilities
29
- */
30
- namespace Locker {
31
- /**
32
- * @summary Locker factory
33
- */
34
- type Factory = {
35
- (options?: AVStantso.Locker.Options): Locker;
36
- is(candidate: unknown): candidate is Locker;
37
- };
38
- }
39
- }
40
- interface Code {
41
- /**
42
- * @summary Locker utilities
43
- */
44
- Locker: Code.Locker.Factory;
45
- }
46
- const Locker: Code.Locker.Factory;
47
- }
@@ -1 +0,0 @@
1
- import './_register';
package/dist/export.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import Locker = AVStantso.Locker;
2
- export { Locker };
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import '@avstantso/errors';
2
- import '@avstantso/js';
3
- import '@avstantso/concepts';
4
- import './_global';
5
- export * from './export';
package/dist/index.js DELETED
@@ -1,69 +0,0 @@
1
- 'use strict';
2
-
3
- require('@avstantso/errors');
4
- require('@avstantso/js');
5
- require('@avstantso/concepts');
6
-
7
- var AVStantso$1;
8
- (function (AVStantso) {
9
- /**
10
- * @summary Async locker implementation
11
- */
12
- class MultiLocker {
13
- #manager;
14
- #locks = new Set();
15
- #lockNo = 0;
16
- #consumers;
17
- constructor(options) {
18
- const { manager } = options || {};
19
- if (manager) {
20
- const { AsyncTasksManager } = avstantso;
21
- this.#manager = AsyncTasksManager.is(manager)
22
- ? manager
23
- : AsyncTasksManager;
24
- }
25
- }
26
- get isLocked() {
27
- return this.#locks.size > 0;
28
- }
29
- #release(currentNo) {
30
- if (!this.#locks.has(currentNo))
31
- throw new AVStantso_InvalidStateError(this, 'locks', 'Locker release out of scope attempt');
32
- this.#locks.delete(currentNo);
33
- if (this.isLocked || !this.#consumers?.length)
34
- return;
35
- for (const c of this.#consumers)
36
- c();
37
- this.#consumers.length = 0;
38
- }
39
- acquire() {
40
- const currentNo = ++this.#lockNo;
41
- this.#locks.add(currentNo);
42
- return this.#release.bind(this, currentNo);
43
- }
44
- async waitFor() {
45
- if (!this.isLocked)
46
- return;
47
- const cc = (this.#consumers ??= []);
48
- const p = new Promise((resolve) => cc.push(resolve));
49
- return this.#manager?.regTask(p) || p;
50
- }
51
- }
52
- AVStantso.Locker = avstantso._reg.Locker(({ JS }) => Object.assign(function Locker(options) {
53
- return new MultiLocker(options);
54
- }, {
55
- is: function isLocker(candidate) {
56
- return (candidate
57
- && (candidate instanceof MultiLocker
58
- || (JS.is.object(candidate)
59
- && 'isLocked' in candidate
60
- && 'acquire' in candidate
61
- && 'waitFor' in candidate)));
62
- }
63
- }));
64
- })(AVStantso$1 || (AVStantso$1 = {}));
65
-
66
- var Locker = AVStantso.Locker;
67
-
68
- exports.Locker = Locker;
69
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n /**\n * @summary Async locker\n */\n export namespace Locker {\n /**\n * @summary Async locker options\n */\n export type Options = AsyncTasksManager.Option;\n }\n\n export interface Locker {\n /**\n * @summary Async lock state\n */\n readonly isLocked: boolean;\n\n /**\n * @summary Acquire lock\n * @returns Release method for this lock\n */\n acquire(): () => void;\n\n /**\n * @summary Wait for all locks will be released\n */\n waitFor(): Promise<void>;\n }\n\n /**\n * @summary Async locker implementation\n */\n class MultiLocker implements Locker {\n #manager: AsyncTasksManager;\n #locks: Set<number> = new Set();\n #lockNo: number = 0;\n #consumers: ((value?: void) => void)[];\n\n constructor (options?: Locker.Options) {\n const { manager } = options || {};\n\n if (manager) {\n const { AsyncTasksManager } = avstantso;\n\n this.#manager = AsyncTasksManager.is(manager)\n ? manager\n : AsyncTasksManager;\n }\n }\n\n public get isLocked(): boolean {\n return this.#locks.size > 0;\n }\n\n #release(currentNo: number) {\n if (!this.#locks.has(currentNo))\n throw new AVStantso_InvalidStateError(\n this,\n 'locks',\n 'Locker release out of scope attempt'\n );\n\n this.#locks.delete(currentNo);\n\n if (this.isLocked || !this.#consumers?.length) return;\n\n for (const c of this.#consumers) c();\n\n this.#consumers.length = 0;\n }\n\n public acquire(): () => void {\n const currentNo = ++this.#lockNo;\n this.#locks.add(currentNo);\n return this.#release.bind(this, currentNo);\n }\n\n public async waitFor(): Promise<void> {\n if (!this.isLocked) return;\n\n const cc = (this.#consumers ??= []);\n const p = new Promise<void>((resolve) => cc.push(resolve));\n\n return this.#manager?.regTask(p) || p;\n }\n }\n\n export namespace Code {\n /**\n * @summary Locker utilities\n */\n export namespace Locker {\n /**\n * @summary Locker factory\n */\n export type Factory = {\n (options?: AVStantso.Locker.Options): Locker;\n is(candidate: unknown): candidate is Locker;\n };\n }\n }\n\n export interface Code {\n /**\n * @summary Locker utilities\n */\n Locker: Code.Locker.Factory;\n }\n\n export const Locker: Code.Locker.Factory = avstantso._reg.Locker(({ JS }) =>\n Object.assign(\n function Locker(options?: Locker.Options) {\n return new MultiLocker(options);\n },\n {\n is: function isLocker(candidate: unknown): candidate is Locker {\n return (\n candidate\n && (candidate instanceof MultiLocker\n || (JS.is.object(candidate)\n && 'isLocked' in candidate\n && 'acquire' in candidate\n && 'waitFor' in candidate)\n )\n );\n }\n }\n )\n );\n}\n","import Locker = AVStantso.Locker;\n\nexport {\n Locker\n};\n"],"names":["AVStantso"],"mappings":";;;;;;AAAA,IAAUA,WAAS;AAAnB,CAAA,UAAU,SAAS,EAAA;AA6BjB;;AAEG;AACH,IAAA,MAAM,WAAW,CAAA;AACf,QAAA,QAAQ;AACR,QAAA,MAAM,GAAgB,IAAI,GAAG,EAAE;QAC/B,OAAO,GAAW,CAAC;AACnB,QAAA,UAAU;AAEV,QAAA,WAAA,CAAa,OAAwB,EAAA;AACnC,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE;YAEjC,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS;gBAEvC,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC,OAAO;AAC1C,sBAAE;sBACA,iBAAiB;YACvB;QACF;AAEA,QAAA,IAAW,QAAQ,GAAA;AACjB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;QAC7B;AAEA,QAAA,QAAQ,CAAC,SAAiB,EAAA;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC7B,MAAM,IAAI,2BAA2B,CACnC,IAAI,EACJ,OAAO,EACP,qCAAqC,CACtC;AAEH,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YAE7B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM;gBAAE;AAE/C,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU;AAAE,gBAAA,CAAC,EAAE;AAEpC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC5B;QAEO,OAAO,GAAA;AACZ,YAAA,MAAM,SAAS,GAAG,EAAE,IAAI,CAAC,OAAO;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5C;AAEO,QAAA,MAAM,OAAO,GAAA;YAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE;YAEpB,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;AACnC,YAAA,MAAM,CAAC,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE1D,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC;AACD;IAwBY,SAAA,CAAA,MAAM,GAAwB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KACtE,MAAM,CAAC,MAAM,CACX,SAAS,MAAM,CAAC,OAAwB,EAAA;AACtC,QAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;AACjC,IAAA,CAAC,EACD;AACE,QAAA,EAAE,EAAE,SAAS,QAAQ,CAAC,SAAkB,EAAA;AACtC,YAAA,QACE;oBACI,SAAS,YAAY;AACtB,wBAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS;AACrB,2BAAA,UAAU,IAAI;AACd,2BAAA,SAAS,IAAI;AACb,2BAAA,SAAS,IAAI,SAAS,CAAC,CAC3B;QAEL;AACD,KAAA,CACF,CACF;AACH,CAAC,EAjISA,WAAS,KAATA,WAAS,GAAA,EAAA,CAAA,CAAA;;ACAnB,IAAO,MAAM,GAAG,SAAS,CAAC;;;;"}