@praxisjs/concurrent 0.1.0 → 0.2.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
@@ -1,5 +1,31 @@
1
1
  # @praxisjs/concurrent
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bb0d4f8: **Refactor decorator system and component architecture across PraxisJS packages**
8
+
9
+ - Replaced legacy decorator signatures (`constructor`, `target`, `propertyKey`, method descriptor) with the standard TC39 decorator context API (`ClassDecoratorContext`, `ClassFieldDecoratorContext`, `ClassMethodDecoratorContext`) across `@praxisjs/decorators`, `@praxisjs/store`, `@praxisjs/concurrent`, `@praxisjs/router`, `@praxisjs/motion`, `@praxisjs/di`, and `@praxisjs/fsm`.
10
+ - Introduced `StatefulComponent` and `StatelessComponent` as the new base classes, replacing the deprecated `BaseComponent`/`Function Component` pattern, across `@praxisjs/core`, `@praxisjs/runtime`, `@praxisjs/devtools`, and templates.
11
+ - Implemented core rendering functionality in `@praxisjs/runtime` (`mountChildren`, `mountComponent`, reactive scope management) and removed the deprecated `renderer.ts`.
12
+ - Refactored `@praxisjs/jsx` to delegate rendering to `@praxisjs/runtime` and improved type safety with `flattenChildren` and `isComponent` utilities.
13
+ - Updated internal module structure with new `internal` exports in `package.json` files for shared utilities and types.
14
+ - Removed `experimentalDecorators`/`emitDecoratorMetadata` from `tsconfig.json` in favor of native decorator support.
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [bb0d4f8]
19
+ - @praxisjs/core@0.3.0
20
+ - @praxisjs/shared@0.2.0
21
+
22
+ ## 0.1.1
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [f48dbc4]
27
+ - @praxisjs/core@0.2.0
28
+
3
29
  ## 0.1.0
4
30
 
5
31
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- export declare function Task(): (_target: object, methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
2
- export declare function Queue(): (_target: object, methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
3
- export declare function Pool(concurrency: number): (_target: object, methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ export declare function Task(): (value: (...args: unknown[]) => Promise<unknown>, context: ClassMethodDecoratorContext) => void;
2
+ export declare function Queue(): (value: (...args: unknown[]) => Promise<unknown>, context: ClassMethodDecoratorContext) => void;
3
+ export declare function Pool(concurrency: number): (value: (...args: unknown[]) => Promise<unknown>, context: ClassMethodDecoratorContext) => void;
4
4
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAIA,wBAAgB,IAAI,KAEhB,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,kBAAkB,KAC7B,kBAAkB,CA2BtB;AAED,wBAAgB,KAAK,KAEjB,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,kBAAkB,KAC7B,kBAAkB,CA2BtB;AAED,wBAAgB,IAAI,CAAC,WAAW,EAAE,MAAM,IAEpC,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,kBAAkB,KAC7B,kBAAkB,CA4BtB"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAIA,wBAAgB,IAAI,KAEhB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAC/C,SAAS,2BAA2B,KACnC,IAAI,CAYR;AAED,wBAAgB,KAAK,KAEjB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAC/C,SAAS,2BAA2B,KACnC,IAAI,CAYR;AAED,wBAAgB,IAAI,CAAC,WAAW,EAAE,MAAM,IAEpC,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAC/C,SAAS,2BAA2B,KACnC,IAAI,CAaR"}
@@ -2,85 +2,43 @@ import { pool } from "./pool";
2
2
  import { queue } from "./queue";
3
3
  import { task } from "./task";
4
4
  export function Task() {
5
- return function (_target, methodKey, descriptor) {
6
- const original = descriptor.value;
7
- const cacheKey = `__task_${methodKey}`;
8
- return {
9
- configurable: true,
10
- enumerable: false,
11
- get() {
12
- if (!this[cacheKey]) {
13
- const t = task(original.bind(this));
14
- this[cacheKey] = t;
15
- this[`${methodKey}_loading`] = t.loading;
16
- this[`${methodKey}_error`] = t.error;
17
- this[`${methodKey}_lastResult`] = t.lastResult;
18
- }
19
- const t = this[cacheKey];
20
- const bound = (...args) => t(...args);
21
- Object.defineProperty(this, methodKey, {
22
- value: bound,
23
- configurable: true,
24
- writable: true,
25
- });
26
- return bound;
27
- },
28
- };
5
+ return function (value, context) {
6
+ const methodKey = String(context.name);
7
+ context.addInitializer(function () {
8
+ const self = this;
9
+ const t = task(value.bind(this));
10
+ self[`${methodKey}_loading`] = t.loading;
11
+ self[`${methodKey}_error`] = t.error;
12
+ self[`${methodKey}_lastResult`] = t.lastResult;
13
+ self[methodKey] = (...args) => t(...args);
14
+ });
29
15
  };
30
16
  }
31
17
  export function Queue() {
32
- return function (_target, methodKey, descriptor) {
33
- const original = descriptor.value;
34
- const cacheKey = `__queue_${methodKey}`;
35
- return {
36
- configurable: true,
37
- enumerable: false,
38
- get() {
39
- if (!this[cacheKey]) {
40
- const q = queue(original.bind(this));
41
- this[cacheKey] = q;
42
- this[`${methodKey}_loading`] = q.loading;
43
- this[`${methodKey}_pending`] = q.pending;
44
- this[`${methodKey}_error`] = q.error;
45
- }
46
- const q = this[cacheKey];
47
- const bound = (...args) => q(...args);
48
- Object.defineProperty(this, methodKey, {
49
- value: bound,
50
- configurable: true,
51
- writable: true,
52
- });
53
- return bound;
54
- },
55
- };
18
+ return function (value, context) {
19
+ const methodKey = String(context.name);
20
+ context.addInitializer(function () {
21
+ const self = this;
22
+ const q = queue(value.bind(this));
23
+ self[`${methodKey}_loading`] = q.loading;
24
+ self[`${methodKey}_pending`] = q.pending;
25
+ self[`${methodKey}_error`] = q.error;
26
+ self[methodKey] = (...args) => q(...args);
27
+ });
56
28
  };
57
29
  }
58
30
  export function Pool(concurrency) {
59
- return function (_target, methodKey, descriptor) {
60
- const original = descriptor.value;
61
- const cacheKey = `__pool_${methodKey}`;
62
- return {
63
- configurable: true,
64
- enumerable: false,
65
- get() {
66
- if (!this[cacheKey]) {
67
- const p = pool(concurrency, original.bind(this));
68
- this[cacheKey] = p;
69
- this[`${methodKey}_loading`] = p.loading;
70
- this[`${methodKey}_active`] = p.active;
71
- this[`${methodKey}_pending`] = p.pending;
72
- this[`${methodKey}_error`] = p.error;
73
- }
74
- const p = this[cacheKey];
75
- const bound = (...args) => p(...args);
76
- Object.defineProperty(this, methodKey, {
77
- value: bound,
78
- configurable: true,
79
- writable: true,
80
- });
81
- return bound;
82
- },
83
- };
31
+ return function (value, context) {
32
+ const methodKey = String(context.name);
33
+ context.addInitializer(function () {
34
+ const self = this;
35
+ const p = pool(concurrency, value.bind(this));
36
+ self[`${methodKey}_loading`] = p.loading;
37
+ self[`${methodKey}_active`] = p.active;
38
+ self[`${methodKey}_pending`] = p.pending;
39
+ self[`${methodKey}_error`] = p.error;
40
+ self[methodKey] = (...args) => p(...args);
41
+ });
84
42
  };
85
43
  }
86
44
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,UAAU,IAAI;IAClB,OAAO,UACL,OAAe,EACf,SAAiB,EACjB,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEP,CAAC;QACtB,MAAM,QAAQ,GAAG,UAAU,SAAS,EAAE,CAAC;QACvC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrC,IAAI,CAAC,GAAG,SAAS,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;gBACjD,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAA6C,CAAC;gBACrE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;oBACrC,KAAK,EAAE,KAAK;oBACZ,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,OAAO,UACL,OAAe,EACf,SAAiB,EACjB,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEP,CAAC;QACtB,MAAM,QAAQ,GAAG,WAAW,SAAS,EAAE,CAAC;QACxC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBACzC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvC,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAA6C,CAAC;gBACrE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;oBACrC,KAAK,EAAE,KAAK;oBACZ,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,WAAmB;IACtC,OAAO,UACL,OAAe,EACf,SAAiB,EACjB,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEP,CAAC;QACtB,MAAM,QAAQ,GAAG,UAAU,SAAS,EAAE,CAAC;QACvC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBACzC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;oBACvC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvC,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAA6C,CAAC;gBACrE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;oBACrC,KAAK,EAAE,KAAK;oBACZ,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,UAAU,IAAI;IAClB,OAAO,UACL,KAA+C,EAC/C,OAAoC;QAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,IAAI,GAAG,IAA+B,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,GAAG,SAAS,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,OAAO,UACL,KAA+C,EAC/C,OAAoC;QAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,IAAI,GAAG,IAA+B,CAAC;YAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,WAAmB;IACtC,OAAO,UACL,KAA+C,EAC/C,OAAoC;QAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,IAAI,GAAG,IAA+B,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
package/dist/pool.js CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  export function pool(concurrency, fn) {
3
3
  const _active = signal(0);
4
4
  const _pending = signal(0);
package/dist/pool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAWlD,MAAM,UAAU,IAAI,CAClB,WAAmB,EACnB,EAAsC;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAGP,EAAE,CAAC;IAER,KAAK,UAAU,MAAM;QACnB,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,SAAS,GAAG,CAAC,GAAG,IAAe;QAC7B,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAErC,OAAO,GAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAW3D,MAAM,UAAU,IAAI,CAClB,WAAmB,EACnB,EAAsC;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAGP,EAAE,CAAC;IAER,KAAK,UAAU,MAAM;QACnB,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,SAAS,GAAG,CAAC,GAAG,IAAe;QAC7B,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAErC,OAAO,GAAsB,CAAC;AAChC,CAAC"}
package/dist/queue.js CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  export function queue(fn) {
3
3
  const _loading = signal(false);
4
4
  const _pending = signal(0);
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAWlD,MAAM,UAAU,KAAK,CACnB,EAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAIP,EAAE,CAAC;IACR,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,UAAU,KAAK;QAClB,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC5C,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;QACjB,QAAQ,GAAG,KAAK,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,OAAO,CAAC,GAAG,IAAe;QACjC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,OAA2B,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAW3D,MAAM,UAAU,KAAK,CACnB,EAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAIP,EAAE,CAAC;IACR,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,UAAU,KAAK;QAClB,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC5C,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;QACjB,QAAQ,GAAG,KAAK,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,OAAO,CAAC,GAAG,IAAe;QACjC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,OAA2B,CAAC;AACrC,CAAC"}
package/dist/task.js CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  export function task(fn) {
3
3
  const _loading = signal(false);
4
4
  const _error = signal(null);
package/dist/task.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAWlD,MAAM,UAAU,IAAI,CAClB,EAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,UAAU,GAAG,CAAC,GAAG,IAAe;QACnC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,IAAI,EAAE,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YACpC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE;QACnB,MAAM,EAAE,CAAC;QACT,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,GAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAW3D,MAAM,UAAU,IAAI,CAClB,EAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,UAAU,GAAG,CAAC,GAAG,IAAe;QACnC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,IAAI,EAAE,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YACpC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE;QACnB,MAAM,EAAE,CAAC;QACT,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,GAAsB,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisjs/concurrent",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -14,8 +14,8 @@
14
14
  "typescript": "^5.9.3"
15
15
  },
16
16
  "dependencies": {
17
- "@praxisjs/core": "0.1.0",
18
- "@praxisjs/shared": "0.1.0"
17
+ "@praxisjs/core": "0.3.0",
18
+ "@praxisjs/shared": "0.2.0"
19
19
  },
20
20
  "scripts": {
21
21
  "build": "tsc",
package/src/decorators.ts CHANGED
@@ -4,103 +4,55 @@ import { task } from "./task";
4
4
 
5
5
  export function Task() {
6
6
  return function (
7
- _target: object,
8
- methodKey: string,
9
- descriptor: PropertyDescriptor,
10
- ): PropertyDescriptor {
11
- const original = descriptor.value as (
12
- ...args: unknown[]
13
- ) => Promise<unknown>;
14
- const cacheKey = `__task_${methodKey}`;
15
- return {
16
- configurable: true,
17
- enumerable: false,
18
- get(this: Record<string, unknown>) {
19
- if (!this[cacheKey]) {
20
- const t = task(original.bind(this));
21
- this[cacheKey] = t;
22
- this[`${methodKey}_loading`] = t.loading;
23
- this[`${methodKey}_error`] = t.error;
24
- this[`${methodKey}_lastResult`] = t.lastResult;
25
- }
26
- const t = this[cacheKey] as (...args: unknown[]) => Promise<unknown>;
27
- const bound = (...args: unknown[]) => t(...args);
28
- Object.defineProperty(this, methodKey, {
29
- value: bound,
30
- configurable: true,
31
- writable: true,
32
- });
33
- return bound;
34
- },
35
- };
7
+ value: (...args: unknown[]) => Promise<unknown>,
8
+ context: ClassMethodDecoratorContext,
9
+ ): void {
10
+ const methodKey = String(context.name);
11
+
12
+ context.addInitializer(function (this: unknown) {
13
+ const self = this as Record<string, unknown>;
14
+ const t = task(value.bind(this));
15
+ self[`${methodKey}_loading`] = t.loading;
16
+ self[`${methodKey}_error`] = t.error;
17
+ self[`${methodKey}_lastResult`] = t.lastResult;
18
+ self[methodKey] = (...args: unknown[]) => t(...args);
19
+ });
36
20
  };
37
21
  }
38
22
 
39
23
  export function Queue() {
40
24
  return function (
41
- _target: object,
42
- methodKey: string,
43
- descriptor: PropertyDescriptor,
44
- ): PropertyDescriptor {
45
- const original = descriptor.value as (
46
- ...args: unknown[]
47
- ) => Promise<unknown>;
48
- const cacheKey = `__queue_${methodKey}`;
49
- return {
50
- configurable: true,
51
- enumerable: false,
52
- get(this: Record<string, unknown>) {
53
- if (!this[cacheKey]) {
54
- const q = queue(original.bind(this));
55
- this[cacheKey] = q;
56
- this[`${methodKey}_loading`] = q.loading;
57
- this[`${methodKey}_pending`] = q.pending;
58
- this[`${methodKey}_error`] = q.error;
59
- }
60
- const q = this[cacheKey] as (...args: unknown[]) => Promise<unknown>;
61
- const bound = (...args: unknown[]) => q(...args);
62
- Object.defineProperty(this, methodKey, {
63
- value: bound,
64
- configurable: true,
65
- writable: true,
66
- });
67
- return bound;
68
- },
69
- };
25
+ value: (...args: unknown[]) => Promise<unknown>,
26
+ context: ClassMethodDecoratorContext,
27
+ ): void {
28
+ const methodKey = String(context.name);
29
+
30
+ context.addInitializer(function (this: unknown) {
31
+ const self = this as Record<string, unknown>;
32
+ const q = queue(value.bind(this));
33
+ self[`${methodKey}_loading`] = q.loading;
34
+ self[`${methodKey}_pending`] = q.pending;
35
+ self[`${methodKey}_error`] = q.error;
36
+ self[methodKey] = (...args: unknown[]) => q(...args);
37
+ });
70
38
  };
71
39
  }
72
40
 
73
41
  export function Pool(concurrency: number) {
74
42
  return function (
75
- _target: object,
76
- methodKey: string,
77
- descriptor: PropertyDescriptor,
78
- ): PropertyDescriptor {
79
- const original = descriptor.value as (
80
- ...args: unknown[]
81
- ) => Promise<unknown>;
82
- const cacheKey = `__pool_${methodKey}`;
83
- return {
84
- configurable: true,
85
- enumerable: false,
86
- get(this: Record<string, unknown>) {
87
- if (!this[cacheKey]) {
88
- const p = pool(concurrency, original.bind(this));
89
- this[cacheKey] = p;
90
- this[`${methodKey}_loading`] = p.loading;
91
- this[`${methodKey}_active`] = p.active;
92
- this[`${methodKey}_pending`] = p.pending;
93
- this[`${methodKey}_error`] = p.error;
94
- }
95
- const p = this[cacheKey] as (...args: unknown[]) => Promise<unknown>;
96
- const bound = (...args: unknown[]) => p(...args);
97
- Object.defineProperty(this, methodKey, {
98
- value: bound,
99
- configurable: true,
100
- writable: true,
101
- });
102
- return bound;
103
- },
104
- };
43
+ value: (...args: unknown[]) => Promise<unknown>,
44
+ context: ClassMethodDecoratorContext,
45
+ ): void {
46
+ const methodKey = String(context.name);
47
+
48
+ context.addInitializer(function (this: unknown) {
49
+ const self = this as Record<string, unknown>;
50
+ const p = pool(concurrency, value.bind(this));
51
+ self[`${methodKey}_loading`] = p.loading;
52
+ self[`${methodKey}_active`] = p.active;
53
+ self[`${methodKey}_pending`] = p.pending;
54
+ self[`${methodKey}_error`] = p.error;
55
+ self[methodKey] = (...args: unknown[]) => p(...args);
56
+ });
105
57
  };
106
58
  }
package/src/pool.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  import type { Computed } from "@praxisjs/shared";
3
3
 
4
4
  export interface PoolInstance<T> {
package/src/queue.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  import type { Computed } from "@praxisjs/shared";
3
3
 
4
4
  export interface QueueInstance<T> {
package/src/task.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { signal, computed } from "@praxisjs/core";
1
+ import { signal, computed } from "@praxisjs/core/internal";
2
2
  import type { Computed } from "@praxisjs/shared";
3
3
 
4
4
  export interface TaskInstance<T> {