@praxisjs/decorators 0.2.0 → 0.4.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.
Files changed (131) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/component/component.d.ts +2 -2
  3. package/dist/component/component.d.ts.map +1 -1
  4. package/dist/component/component.js +5 -2
  5. package/dist/component/component.js.map +1 -1
  6. package/dist/component/index.d.ts +0 -1
  7. package/dist/component/index.d.ts.map +1 -1
  8. package/dist/component/index.js +0 -1
  9. package/dist/component/index.js.map +1 -1
  10. package/dist/component/lazy.d.ts +2 -2
  11. package/dist/component/lazy.d.ts.map +1 -1
  12. package/dist/component/lazy.js +8 -8
  13. package/dist/component/lazy.js.map +1 -1
  14. package/dist/component/virtual.d.ts +2 -2
  15. package/dist/component/virtual.d.ts.map +1 -1
  16. package/dist/component/virtual.js +45 -14
  17. package/dist/component/virtual.js.map +1 -1
  18. package/dist/events/emit.d.ts +2 -1
  19. package/dist/events/emit.d.ts.map +1 -1
  20. package/dist/events/emit.js +11 -16
  21. package/dist/events/emit.js.map +1 -1
  22. package/dist/events/helper.d.ts +2 -2
  23. package/dist/events/helper.d.ts.map +1 -1
  24. package/dist/events/helper.js.map +1 -1
  25. package/dist/events/on-command.d.ts +2 -1
  26. package/dist/events/on-command.d.ts.map +1 -1
  27. package/dist/events/on-command.js +30 -27
  28. package/dist/events/on-command.js.map +1 -1
  29. package/dist/functions/bind.d.ts +2 -1
  30. package/dist/functions/bind.d.ts.map +1 -1
  31. package/dist/functions/bind.js +10 -15
  32. package/dist/functions/bind.js.map +1 -1
  33. package/dist/functions/debounce.d.ts +2 -1
  34. package/dist/functions/debounce.d.ts.map +1 -1
  35. package/dist/functions/debounce.js +20 -24
  36. package/dist/functions/debounce.js.map +1 -1
  37. package/dist/functions/log.d.ts +2 -1
  38. package/dist/functions/log.d.ts.map +1 -1
  39. package/dist/functions/log.js +5 -6
  40. package/dist/functions/log.js.map +1 -1
  41. package/dist/functions/memo.d.ts +2 -1
  42. package/dist/functions/memo.d.ts.map +1 -1
  43. package/dist/functions/memo.js +5 -6
  44. package/dist/functions/memo.js.map +1 -1
  45. package/dist/functions/once.d.ts +2 -1
  46. package/dist/functions/once.d.ts.map +1 -1
  47. package/dist/functions/once.js +3 -5
  48. package/dist/functions/once.js.map +1 -1
  49. package/dist/functions/retry.d.ts +2 -1
  50. package/dist/functions/retry.d.ts.map +1 -1
  51. package/dist/functions/retry.js +3 -5
  52. package/dist/functions/retry.js.map +1 -1
  53. package/dist/functions/throttle.d.ts +2 -1
  54. package/dist/functions/throttle.d.ts.map +1 -1
  55. package/dist/functions/throttle.js +18 -22
  56. package/dist/functions/throttle.js.map +1 -1
  57. package/dist/functions/watch.d.ts +7 -7
  58. package/dist/functions/watch.d.ts.map +1 -1
  59. package/dist/functions/watch.js +31 -35
  60. package/dist/functions/watch.js.map +1 -1
  61. package/dist/functions/when.d.ts +2 -1
  62. package/dist/functions/when.d.ts.map +1 -1
  63. package/dist/functions/when.js +24 -24
  64. package/dist/functions/when.js.map +1 -1
  65. package/dist/index.d.ts +2 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/properties/computed.d.ts +3 -0
  70. package/dist/properties/computed.d.ts.map +1 -0
  71. package/dist/properties/computed.js +15 -0
  72. package/dist/properties/computed.js.map +1 -0
  73. package/dist/properties/history.d.ts +3 -2
  74. package/dist/properties/history.d.ts.map +1 -1
  75. package/dist/properties/history.js +35 -27
  76. package/dist/properties/history.js.map +1 -1
  77. package/dist/properties/index.d.ts +1 -0
  78. package/dist/properties/index.d.ts.map +1 -1
  79. package/dist/properties/index.js +1 -0
  80. package/dist/properties/index.js.map +1 -1
  81. package/dist/properties/persisted.d.ts +3 -2
  82. package/dist/properties/persisted.d.ts.map +1 -1
  83. package/dist/properties/persisted.js +20 -23
  84. package/dist/properties/persisted.js.map +1 -1
  85. package/dist/properties/prop.d.ts +2 -1
  86. package/dist/properties/prop.d.ts.map +1 -1
  87. package/dist/properties/prop.js +24 -13
  88. package/dist/properties/prop.js.map +1 -1
  89. package/dist/properties/slot.d.ts +4 -8
  90. package/dist/properties/slot.d.ts.map +1 -1
  91. package/dist/properties/slot.js +34 -24
  92. package/dist/properties/slot.js.map +1 -1
  93. package/dist/properties/state.d.ts +2 -1
  94. package/dist/properties/state.d.ts.map +1 -1
  95. package/dist/properties/state.js +19 -19
  96. package/dist/properties/state.js.map +1 -1
  97. package/package.json +3 -4
  98. package/src/component/component.ts +9 -2
  99. package/src/component/index.ts +0 -1
  100. package/src/component/lazy.ts +10 -8
  101. package/src/component/virtual.tsx +71 -28
  102. package/src/events/emit.ts +15 -22
  103. package/src/events/helper.ts +5 -2
  104. package/src/events/on-command.ts +43 -44
  105. package/src/functions/bind.ts +14 -18
  106. package/src/functions/debounce.ts +23 -26
  107. package/src/functions/log.ts +11 -11
  108. package/src/functions/memo.ts +8 -9
  109. package/src/functions/once.ts +7 -10
  110. package/src/functions/retry.ts +7 -12
  111. package/src/functions/throttle.ts +21 -24
  112. package/src/functions/watch.ts +44 -48
  113. package/src/functions/when.ts +30 -32
  114. package/src/index.ts +11 -2
  115. package/src/properties/computed.ts +20 -0
  116. package/src/properties/history.ts +49 -32
  117. package/src/properties/index.ts +1 -0
  118. package/src/properties/persisted.ts +40 -31
  119. package/src/properties/prop.ts +30 -13
  120. package/src/properties/slot.ts +46 -50
  121. package/src/properties/state.ts +24 -18
  122. package/dist/component/lifecycle.d.ts +0 -3
  123. package/dist/component/lifecycle.d.ts.map +0 -1
  124. package/dist/component/lifecycle.js +0 -35
  125. package/dist/component/lifecycle.js.map +0 -1
  126. package/dist/component/memoize.d.ts +0 -5
  127. package/dist/component/memoize.d.ts.map +0 -1
  128. package/dist/component/memoize.js +0 -23
  129. package/dist/component/memoize.js.map +0 -1
  130. package/src/component/lifecycle.ts +0 -47
  131. package/src/component/memoize.ts +0 -31
@@ -1,12 +1,12 @@
1
1
  export function Log(options = {}) {
2
2
  const { level = "log", args: logArgs = true, result = true, time = false, devOnly = true, } = options;
3
- return function (_target, methodKey, descriptor) {
4
- const originalMethod = descriptor.value;
5
- descriptor.value = function (...args) {
3
+ return function (value, context) {
4
+ const methodKey = context.name;
5
+ return function (...args) {
6
6
  if (devOnly &&
7
7
  typeof process !== "undefined" &&
8
8
  process.env.NODE_ENV === "production") {
9
- return originalMethod.apply(this, args);
9
+ return value.apply(this, args);
10
10
  }
11
11
  const className = this.constructor.name ?? "Unknown";
12
12
  const label = `[${className}.${methodKey}]`;
@@ -14,7 +14,7 @@ export function Log(options = {}) {
14
14
  if (logArgs)
15
15
  logger(`${label} args:`, args);
16
16
  const start = time ? performance.now() : 0;
17
- const output = originalMethod.apply(this, args);
17
+ const output = value.apply(this, args);
18
18
  if (output instanceof Promise) {
19
19
  return output
20
20
  .then((resolved) => {
@@ -37,7 +37,6 @@ export function Log(options = {}) {
37
37
  logger(`${label} returned:`, output, elapsed);
38
38
  return output;
39
39
  };
40
- return descriptor;
41
40
  };
42
41
  }
43
42
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/functions/log.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAE;IAC1C,MAAM,EACJ,KAAK,GAAG,KAAK,EACb,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,MAAM,GAAG,IAAI,EACb,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,IAAI,GACf,GAAG,OAAO,CAAC;IAEZ,OAAO,UACL,OAAe,EACf,SAAiB,EACjB,UAA8B;QAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAwC,CAAC;QAE3E,UAAU,CAAC,KAAK,GAAG,UAAwB,GAAG,IAAe;YAC3D,IACE,OAAO;gBACP,OAAO,OAAO,KAAK,WAAW;gBAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EACrC,CAAC;gBACD,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,SAAS,GAAI,IAAI,CAAC,WAAiC,CAAC,IAAI,IAAI,SAAS,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,OAAO;gBAAE,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEhD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,OAAQ,MAA2B;qBAChC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACjB,MAAM,OAAO,GAAG,IAAI;wBAClB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;wBAClD,CAAC,CAAC,EAAE,CAAC;oBACP,IAAI,MAAM;wBAAE,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC5D,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;oBACpB,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;YACP,CAAC;YAED,MAAM,OAAO,GAAG,IAAI;gBAClB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBAClD,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE1D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/functions/log.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAE;IAC1C,MAAM,EACJ,KAAK,GAAG,KAAK,EACb,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,MAAM,GAAG,IAAI,EACb,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,IAAI,GACf,GAAG,OAAO,CAAC;IAEZ,OAAO,UACL,KAAoD,EACpD,OAAuD;QAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAc,CAAC;QAEzC,OAAO,UAAwB,GAAG,IAAe;YAC/C,IACE,OAAO;gBACP,OAAO,OAAO,KAAK,WAAW;gBAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EACrC,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,SAAS,GACZ,IAAI,CAAC,WAAiC,CAAC,IAAI,IAAI,SAAS,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,OAAO;gBAAE,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,OAAQ,MAA2B;qBAChC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACjB,MAAM,OAAO,GAAG,IAAI;wBAClB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;wBAClD,CAAC,CAAC,EAAE,CAAC;oBACP,IAAI,MAAM;wBAAE,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC5D,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;oBACpB,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;YACP,CAAC;YAED,MAAM,OAAO,GAAG,IAAI;gBAClB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBAClD,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE1D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function Memo(): (_target: object, methodName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ export declare function Memo(): (value: (this: object, ...args: unknown[]) => unknown, context: ClassMethodDecoratorContext<StatefulComponent>) => (this: object, ...args: unknown[]) => unknown;
2
3
  //# sourceMappingURL=memo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/functions/memo.ts"],"names":[],"mappings":"AA8CA,wBAAgB,IAAI,KAEhB,SAAS,MAAM,EACf,YAAY,MAAM,EAClB,YAAY,kBAAkB,KAC7B,kBAAkB,CAWtB"}
1
+ {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/functions/memo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA+CxD,wBAAgB,IAAI,KAEhB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACpD,SAAS,2BAA2B,CAAC,iBAAiB,CAAC,KACtD,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAUjD"}
@@ -1,4 +1,4 @@
1
- import { computed } from "@praxisjs/core";
1
+ import { computed } from "@praxisjs/core/internal";
2
2
  const instanceCache = new WeakMap();
3
3
  function getCache(instance, methodName, argKey, factory) {
4
4
  let methodMap = instanceCache.get(instance);
@@ -32,14 +32,13 @@ function serializeArgs(args) {
32
32
  .join("|");
33
33
  }
34
34
  export function Memo() {
35
- return function (_target, methodName, descriptor) {
36
- const originalMethod = descriptor.value;
37
- descriptor.value = function (...args) {
35
+ return function (value, context) {
36
+ const methodName = context.name;
37
+ return function (...args) {
38
38
  const argKey = serializeArgs(args);
39
- const memoized = getCache(this, methodName, argKey, () => originalMethod.apply(this, args));
39
+ const memoized = getCache(this, methodName, argKey, () => value.apply(this, args));
40
40
  return memoized();
41
41
  };
42
- return descriptor;
43
42
  };
44
43
  }
45
44
  //# sourceMappingURL=memo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/functions/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,aAAa,GAAG,IAAI,OAAO,EAG9B,CAAC;AAEJ,SAAS,QAAQ,CACf,QAAgB,EAChB,UAAkB,EAClB,MAAc,EACd,OAAsB;IAEtB,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAe;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAC5C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAmD,CAAC,CAAC;IACrE,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,OAAO,UACL,OAAe,EACf,UAAkB,EAClB,UAA8B;QAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAwC,CAAC;QAC3E,UAAU,CAAC,KAAK,GAAG,UAAwB,GAAG,IAAe;YAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CACvD,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CACjC,CAAC;YACF,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/functions/memo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,aAAa,GAAG,IAAI,OAAO,EAG9B,CAAC;AAEJ,SAAS,QAAQ,CACf,QAAgB,EAChB,UAAkB,EAClB,MAAc,EACd,OAAsB;IAEtB,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAe;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAC5C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAmD,CAAC,CAAC;IACrE,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,OAAO,UACL,KAAoD,EACpD,OAAuD;QAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAc,CAAC;QAC1C,OAAO,UAAwB,GAAG,IAAe;YAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CACvD,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CACxB,CAAC;YACF,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function Once(): (_target: object, _methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ export declare function Once(): (value: (this: object, ...args: unknown[]) => unknown, _context: ClassMethodDecoratorContext<StatefulComponent>) => (this: object, ...args: unknown[]) => unknown;
2
3
  //# sourceMappingURL=once.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../src/functions/once.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,KAKhB,SAAS,MAAM,EACf,YAAY,MAAM,EAClB,YAAY,kBAAkB,KAC7B,kBAAkB,CAatB"}
1
+ {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../src/functions/once.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,IAAI,KAKhB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACpD,UAAU,2BAA2B,CAAC,iBAAiB,CAAC,KACvD,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CASjD"}
@@ -1,17 +1,15 @@
1
1
  export function Once() {
2
2
  const called = new WeakMap();
3
3
  const results = new WeakMap();
4
- return function (_target, _methodKey, descriptor) {
5
- const originalMethod = descriptor.value;
6
- descriptor.value = function (...args) {
4
+ return function (value, _context) {
5
+ return function (...args) {
7
6
  if (called.get(this))
8
7
  return results.get(this);
9
- const result = originalMethod.apply(this, args);
8
+ const result = value.apply(this, args);
10
9
  called.set(this, true);
11
10
  results.set(this, result);
12
11
  return result;
13
12
  };
14
- return descriptor;
15
13
  };
16
14
  }
17
15
  //# sourceMappingURL=once.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"once.js","sourceRoot":"","sources":["../../src/functions/once.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAmB,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAmB,CAAC;IAE/C,OAAO,UACL,OAAe,EACf,UAAkB,EAClB,UAA8B;QAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAwC,CAAC;QAE3E,UAAU,CAAC,KAAK,GAAG,UAAwB,GAAG,IAAe;YAC3D,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"once.js","sourceRoot":"","sources":["../../src/functions/once.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAmB,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAmB,CAAC;IAE/C,OAAO,UACL,KAAoD,EACpD,QAAwD;QAExD,OAAO,UAAwB,GAAG,IAAe;YAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,8 @@
1
+ import type { StatefulComponent } from "@praxisjs/core";
1
2
  export interface RetryOptions {
2
3
  delay?: number;
3
4
  backoff?: number;
4
5
  onRetry?: (error: Error, attempt: number) => void;
5
6
  }
6
- export declare function Retry(maxAttempts: number, options?: RetryOptions): (_target: object, _methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
7
+ export declare function Retry(maxAttempts: number, options?: RetryOptions): (value: (this: object, ...args: unknown[]) => Promise<unknown>, _context: ClassMethodDecoratorContext<StatefulComponent>) => (this: object, ...args: unknown[]) => Promise<unknown>;
7
8
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/functions/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,IAIjE,SAAS,MAAM,EACf,YAAY,MAAM,EAClB,YAAY,kBAAkB,KAC7B,kBAAkB,CA6BtB"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/functions/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,IAIjE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAC7D,UAAU,2BAA2B,CAAC,iBAAiB,CAAC,KACvD,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAuB1D"}
@@ -1,13 +1,12 @@
1
1
  export function Retry(maxAttempts, options = {}) {
2
2
  const { delay = 0, backoff = 1, onRetry } = options;
3
- return function (_target, _methodKey, descriptor) {
4
- const originalMethod = descriptor.value;
5
- descriptor.value = async function (...args) {
3
+ return function (value, _context) {
4
+ return async function (...args) {
6
5
  let lastError = new Error("Unknown error");
7
6
  let currentDelay = delay;
8
7
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
9
8
  try {
10
- return await originalMethod.apply(this, args);
9
+ return await value.apply(this, args);
11
10
  }
12
11
  catch (e) {
13
12
  lastError = e instanceof Error ? e : new Error(String(e));
@@ -22,7 +21,6 @@ export function Retry(maxAttempts, options = {}) {
22
21
  }
23
22
  throw lastError;
24
23
  };
25
- return descriptor;
26
24
  };
27
25
  }
28
26
  //# sourceMappingURL=retry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/functions/retry.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,KAAK,CAAC,WAAmB,EAAE,UAAwB,EAAE;IACnE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEpD,OAAO,UACL,OAAe,EACf,UAAkB,EAClB,UAA8B;QAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,KAEb,CAAC;QAEtB,UAAU,CAAC,KAAK,GAAG,KAAK,WAAyB,GAAG,IAAe;YACjE,IAAI,SAAS,GAAU,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAClD,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,OAAO,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,SAAS,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,IAAI,OAAO,KAAK,WAAW;wBAAE,MAAM;oBACnC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAE9B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;wBAC1D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,SAAS,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/functions/retry.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,KAAK,CAAC,WAAmB,EAAE,UAAwB,EAAE;IACnE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEpD,OAAO,UACL,KAA6D,EAC7D,QAAwD;QAExD,OAAO,KAAK,WAAyB,GAAG,IAAe;YACrD,IAAI,SAAS,GAAU,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAClD,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,SAAS,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,IAAI,OAAO,KAAK,WAAW;wBAAE,MAAM;oBACnC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAE9B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;wBAC1D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,SAAS,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function Throttle(ms: number): (_target: object, methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ export declare function Throttle(ms: number): (value: (this: object, ...args: unknown[]) => unknown, context: ClassMethodDecoratorContext<StatefulComponent>) => void;
2
3
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAI/B,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,kBAAkB,KAC7B,kBAAkB,CAwBtB"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAI/B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACpD,SAAS,2BAA2B,CAAC,iBAAiB,CAAC,KACtD,IAAI,CAoBR"}
@@ -1,27 +1,23 @@
1
1
  export function Throttle(ms) {
2
2
  const lastRun = new WeakMap();
3
- return function (_target, methodKey, descriptor) {
4
- const originalMethod = descriptor.value;
5
- return {
6
- enumerable: false,
7
- configurable: true,
8
- get() {
9
- const bound = (...args) => {
10
- const now = Date.now();
11
- const last = lastRun.get(this) ?? 0;
12
- if (now - last < ms)
13
- return;
14
- lastRun.set(this, now);
15
- return originalMethod.apply(this, args);
16
- };
17
- Object.defineProperty(this, methodKey, {
18
- value: bound,
19
- configurable: true,
20
- writable: true,
21
- });
22
- return bound;
23
- },
24
- };
3
+ return function (value, context) {
4
+ context.addInitializer(function () {
5
+ const instance = this;
6
+ const name = context.name;
7
+ const bound = (...args) => {
8
+ const now = Date.now();
9
+ const last = lastRun.get(instance) ?? 0;
10
+ if (now - last < ms)
11
+ return;
12
+ lastRun.set(instance, now);
13
+ return value.apply(instance, args);
14
+ };
15
+ Object.defineProperty(instance, name, {
16
+ value: bound,
17
+ configurable: true,
18
+ writable: true,
19
+ });
20
+ });
25
21
  };
26
22
  }
27
23
  //# sourceMappingURL=throttle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAC;IAE9C,OAAO,UACL,OAAe,EACf,SAAiB,EACjB,UAA8B;QAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAwC,CAAC;QAC3E,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,GAAG;gBACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;oBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEpC,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE;wBAAE,OAAO;oBAE5B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACvB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1C,CAAC,CAAC;gBACF,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":"throttle.js","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAC;IAE9C,OAAO,UACL,KAAoD,EACpD,OAAuD;QAEvD,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAc,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAc,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAExC,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE;oBAAE,OAAO;gBAE5B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC,CAAC;YACF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACpC,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
- import { type BaseComponent } from "@praxisjs/core";
2
- import { type Computed } from "@praxisjs/shared";
3
- type BaseComponentKeys = keyof BaseComponent;
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ import type { Computed } from "@praxisjs/shared";
3
+ type BaseComponentKeys = keyof StatefulComponent;
4
4
  type WatchableKeys<T> = {
5
5
  [K in Exclude<keyof T, BaseComponentKeys>]: T[K] extends (...args: infer A) => unknown ? A extends [] ? T[K] extends Computed<unknown> ? K : never : never : K;
6
6
  }[Exclude<keyof T, BaseComponentKeys>] & string;
@@ -8,12 +8,12 @@ type NoDuplicates<Keys extends readonly string[], Seen extends string = never> =
8
8
  infer Head extends string,
9
9
  ...infer Rest extends string[]
10
10
  ] ? Head extends Seen ? [`Error: prop '${Head}' is duplicated`, ...Rest] : [Head, ...NoDuplicates<Rest, Seen | Head>] : Keys;
11
- type ValidateKeys<T extends BaseComponent, Keys extends ReadonlyArray<WatchableKeys<T>>> = NoDuplicates<[...Keys]> extends Keys ? Keys : NoDuplicates<[...Keys]>;
11
+ type ValidateKeys<T extends StatefulComponent, Keys extends ReadonlyArray<WatchableKeys<T>>> = NoDuplicates<[...Keys]> extends Keys ? Keys : NoDuplicates<[...Keys]>;
12
12
  type Unwrap<T> = T extends Computed<infer U> ? U : T extends () => infer U ? U : T;
13
- export type WatchVal<T extends BaseComponent, K extends keyof T> = Unwrap<T[K]>;
14
- export type WatchVals<T extends BaseComponent, K extends keyof T> = {
13
+ export type WatchVal<T extends StatefulComponent, K extends keyof T> = Unwrap<T[K]>;
14
+ export type WatchVals<T extends StatefulComponent, K extends keyof T> = {
15
15
  [P in K]: Unwrap<T[P]>;
16
16
  };
17
- export declare function Watch<T extends BaseComponent, const Keys extends ReadonlyArray<WatchableKeys<T>>>(...propNames: ValidateKeys<T, Keys>): (target: T, _key: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
17
+ export declare function Watch<T extends StatefulComponent, const Keys extends ReadonlyArray<WatchableKeys<T>>>(...propNames: ValidateKeys<T, Keys>): (value: (this: T, ...args: unknown[]) => void, context: ClassMethodDecoratorContext<T>) => void;
18
18
  export {};
19
19
  //# sourceMappingURL=watch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/functions/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,kBAAkB,CAAC;AAE7D,KAAK,iBAAiB,GAAG,MAAM,aAAa,CAAC;AAE7C,KAAK,aAAa,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CACvD,GAAG,IAAI,EAAE,MAAM,CAAC,KACb,OAAO,GACR,CAAC,SAAS,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,CAAC,GAC5B,CAAC,GACD,KAAK,GACP,KAAK,GACP,CAAC;CACN,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,GACpC,MAAM,CAAC;AAET,KAAK,YAAY,CACf,IAAI,SAAS,SAAS,MAAM,EAAE,EAC9B,IAAI,SAAS,MAAM,GAAG,KAAK,IACzB,IAAI,SAAS,SAAS;IACxB,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE;CAC/B,GACG,IAAI,SAAS,IAAI,GACf,CAAC,gBAAgB,IAAI,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAChD,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,GAC5C,IAAI,CAAC;AAET,KAAK,YAAY,CACf,CAAC,SAAS,aAAa,EACvB,IAAI,SAAS,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAC1C,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAE1E,KAAK,MAAM,CAAC,CAAC,IACX,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KACjE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAmBF,wBAAgB,KAAK,CACnB,CAAC,SAAS,aAAa,EACvB,KAAK,CAAC,IAAI,SAAS,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAClD,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAEjC,QAAQ,CAAC,EACT,MAAM,MAAM,EACZ,YAAY,kBAAkB,KAC7B,kBAAkB,CA8BtB"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/functions/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,KAAK,iBAAiB,GAAG,MAAM,iBAAiB,CAAC;AAEjD,KAAK,aAAa,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CACvD,GAAG,IAAI,EAAE,MAAM,CAAC,KACb,OAAO,GACR,CAAC,SAAS,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,CAAC,GAC5B,CAAC,GACD,KAAK,GACP,KAAK,GACP,CAAC;CACN,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,GACpC,MAAM,CAAC;AAET,KAAK,YAAY,CACf,IAAI,SAAS,SAAS,MAAM,EAAE,EAC9B,IAAI,SAAS,MAAM,GAAG,KAAK,IACzB,IAAI,SAAS,SAAS;IACxB,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE;CAC/B,GACG,IAAI,SAAS,IAAI,GACf,CAAC,gBAAgB,IAAI,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAChD,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,GAC5C,IAAI,CAAC;AAET,KAAK,YAAY,CACf,CAAC,SAAS,iBAAiB,EAC3B,IAAI,SAAS,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAC1C,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAE1E,KAAK,MAAM,CAAC,CAAC,IACX,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,MAAM,CAC3E,CAAC,CAAC,CAAC,CAAC,CACL,CAAC;AACF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KACrE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAOF,wBAAgB,KAAK,CACnB,CAAC,SAAS,iBAAiB,EAC3B,KAAK,CAAC,IAAI,SAAS,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAClD,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAEjC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAC5C,SAAS,2BAA2B,CAAC,CAAC,CAAC,KACtC,IAAI,CAmCR"}
@@ -1,45 +1,41 @@
1
- import { effect } from "@praxisjs/core";
2
- import { isComputed } from "@praxisjs/shared";
1
+ import { effect } from "@praxisjs/core/internal";
2
+ import { isComputed } from "@praxisjs/shared/internal";
3
3
  function readValue(instance, key) {
4
4
  const raw = instance[key];
5
5
  return isComputed(raw) ? raw() : raw;
6
6
  }
7
- function injectOnMount(target, fn) {
8
- const t = target;
9
- const originalMethod = t.onMount;
10
- t.onMount = function () {
11
- originalMethod?.call(this);
12
- fn.call(this);
13
- };
14
- }
15
7
  export function Watch(...propNames) {
16
- return function (target, _key, descriptor) {
8
+ return function (value, context) {
17
9
  const props = propNames;
18
- const method = descriptor.value;
19
- injectOnMount(target, function () {
20
- if (props.length === 1) {
21
- let oldVal = readValue(this, props[0]);
22
- effect(() => {
23
- const newVal = readValue(this, props[0]);
24
- if (!Object.is(newVal, oldVal)) {
25
- method.call(this, newVal, oldVal);
26
- oldVal = newVal;
27
- }
28
- });
29
- }
30
- else {
31
- const read = () => Object.fromEntries(props.map((p) => [p, readValue(this, p)]));
32
- let oldVals = read();
33
- effect(() => {
34
- const newVals = read();
35
- if (props.some((p) => !Object.is(newVals[p], oldVals[p]))) {
36
- method.call(this, newVals, oldVals);
37
- oldVals = newVals;
38
- }
39
- });
40
- }
10
+ context.addInitializer(function () {
11
+ const instance = this;
12
+ // eslint-disable-next-line @typescript-eslint/unbound-method
13
+ const originalOnMount = instance.onMount;
14
+ instance.onMount = function () {
15
+ originalOnMount?.call(this);
16
+ if (props.length === 1) {
17
+ let oldVal = readValue(this, props[0]);
18
+ effect(() => {
19
+ const newVal = readValue(this, props[0]);
20
+ if (!Object.is(newVal, oldVal)) {
21
+ value.call(this, newVal, oldVal);
22
+ oldVal = newVal;
23
+ }
24
+ });
25
+ }
26
+ else {
27
+ const read = () => Object.fromEntries(props.map((p) => [p, readValue(this, p)]));
28
+ let oldVals = read();
29
+ effect(() => {
30
+ const newVals = read();
31
+ if (props.some((p) => !Object.is(newVals[p], oldVals[p]))) {
32
+ value.call(this, newVals, oldVals);
33
+ oldVals = newVals;
34
+ }
35
+ });
36
+ }
37
+ };
41
38
  });
42
- return descriptor;
43
39
  };
44
40
  }
45
41
  //# sourceMappingURL=watch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/functions/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAiB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA0C7D,SAAS,SAAS,CAAC,QAAiC,EAAE,GAAW;IAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAyB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CACpB,MAAc,EACd,EAA2C;IAE3C,MAAM,CAAC,GAAG,MAAkC,CAAC;IAC7C,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC;IACjC,CAAC,CAAC,OAAO,GAAG;QACV,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAGnB,GAAG,SAAgC;IACnC,OAAO,UACL,MAAS,EACT,IAAY,EACZ,UAA8B;QAE9B,MAAM,KAAK,GAAG,SAAgC,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAoE,CAAC;QAE/F,aAAa,CAAC,MAAM,EAAE;YACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;wBAClC,MAAM,GAAG,MAAM,CAAC;oBAClB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,EAAE,CAChB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;oBACvB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;wBACpC,OAAO,GAAG,OAAO,CAAC;oBACpB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/functions/watch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA4CvD,SAAS,SAAS,CAAC,QAAiC,EAAE,GAAW;IAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAyB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,KAAK,CAGnB,GAAG,SAAgC;IACnC,OAAO,UACL,KAA4C,EAC5C,OAAuC;QAEvC,MAAM,KAAK,GAAG,SAAgC,CAAC;QAE/C,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAmC,CAAC;YACrD,6DAA6D;YAC7D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;YAEzC,QAAQ,CAAC,OAAO,GAAG;gBACjB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,MAAM,CAAC,GAAG,EAAE;wBACV,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;4BAC/B,KAAK,CAAC,IAAI,CAAC,IAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;4BACtC,MAAM,GAAG,MAAM,CAAC;wBAClB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,GAAG,EAAE,CAChB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChE,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,EAAE;wBACV,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;wBACvB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC1D,KAAK,CAAC,IAAI,CAAC,IAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;4BACxC,OAAO,GAAG,OAAO,CAAC;wBACpB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function When(propName: string): (target: object, _methodKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ export declare function When(propName: string): (value: (this: StatefulComponent, val: unknown) => void, context: ClassMethodDecoratorContext<StatefulComponent>) => void;
2
3
  //# sourceMappingURL=when.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../src/functions/when.ts"],"names":[],"mappings":"AAGA,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,IAEjC,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,YAAY,kBAAkB,KAC7B,kBAAkB,CAmCtB"}
1
+ {"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../src/functions/when.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,IAEjC,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,EACtD,SAAS,2BAA2B,CAAC,iBAAiB,CAAC,KACtD,IAAI,CAgCR"}
@@ -1,31 +1,31 @@
1
- import { when } from "@praxisjs/core";
2
- import { isComputed } from "@praxisjs/shared";
1
+ import { when } from "@praxisjs/core/internal";
2
+ import { isComputed } from "@praxisjs/shared/internal";
3
3
  export function When(propName) {
4
- return function (target, _methodKey, descriptor) {
5
- // eslint-disable-next-line @typescript-eslint/unbound-method
6
- const originalOnMount = target.onMount;
7
- // eslint-disable-next-line @typescript-eslint/unbound-method
8
- const originalOnUnmount = target.onUnmount;
9
- const method = descriptor.value;
4
+ return function (value, context) {
10
5
  const cancels = new WeakMap();
11
- target.onMount = function () {
12
- originalOnMount?.call(this);
6
+ context.addInitializer(function () {
13
7
  const instance = this;
14
- const source = () => {
15
- const raw = instance[propName];
16
- return isComputed(raw) ? raw() : raw;
8
+ // eslint-disable-next-line @typescript-eslint/unbound-method
9
+ const originalOnMount = instance.onMount;
10
+ // eslint-disable-next-line @typescript-eslint/unbound-method
11
+ const originalOnUnmount = instance.onUnmount;
12
+ instance.onMount = function () {
13
+ originalOnMount?.call(this);
14
+ const raw = this[propName];
15
+ const source = isComputed(raw)
16
+ ? raw
17
+ : raw;
18
+ const cancel = when(source, (val) => {
19
+ value.call(this, val);
20
+ });
21
+ cancels.set(this, cancel);
17
22
  };
18
- const cancel = when(source, (value) => {
19
- method.call(this, value);
20
- });
21
- cancels.set(this, cancel);
22
- };
23
- target.onUnmount = function () {
24
- originalOnUnmount?.call(this);
25
- cancels.get(this)?.();
26
- cancels.delete(this);
27
- };
28
- return descriptor;
23
+ instance.onUnmount = function () {
24
+ originalOnUnmount?.call(this);
25
+ cancels.get(this)?.();
26
+ cancels.delete(this);
27
+ };
28
+ });
29
29
  };
30
30
  }
31
31
  //# sourceMappingURL=when.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"when.js","sourceRoot":"","sources":["../../src/functions/when.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,IAAI,CAAC,QAAgB;IACnC,OAAO,UACL,MAAc,EACd,UAAkB,EAClB,UAA8B;QAE9B,6DAA6D;QAC7D,MAAM,eAAe,GAAI,MAA+B,CAAC,OAAO,CAAC;QACjE,6DAA6D;QAC7D,MAAM,iBAAiB,GAAI,MAAiC,CAAC,SAAS,CAAC;QAEvE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAiC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAsB,CAAC;QAEjD,MAA+B,CAAC,OAAO,GAAG;YACzC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,IAA0C,CAAC;YAC5D,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC/B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAgC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACrE,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAED,MAAiC,CAAC,SAAS,GAAG;YAG7C,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"when.js","sourceRoot":"","sources":["../../src/functions/when.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,UAAU,IAAI,CAAC,QAAgB;IACnC,OAAO,UACL,KAAsD,EACtD,OAAuD;QAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAsB,CAAC;QAElD,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAyB,CAAC;YAC3C,6DAA6D;YAC7D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;YACzC,6DAA6D;YAC7D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;YAE7C,QAAQ,CAAC,OAAO,GAAG;gBACjB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5B,MAAM,GAAG,GAAI,IAA2C,CAAC,QAAQ,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;oBAC5B,CAAC,CAAE,GAAyB;oBAC5B,CAAC,CAAE,GAAuB,CAAC;gBAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;oBAClC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC,CAAC;YAEF,QAAQ,CAAC,SAAS,GAAG;gBACnB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { Component, Memoize, Lazy, Virtual } from "./component";
1
+ export { Component, Lazy, Virtual } from "./component";
2
2
  export { Memo, Bind, Log, Once, Retry, Debounce, Throttle, When, Watch, type WatchVal, type WatchVals, } from "./functions";
3
- export { Prop, State, Persisted, Slot, initSlots, History, type WithHistory } from "./properties";
3
+ export { Prop, State, Computed, Persisted, Slot, initSlots, History, type WithHistory, } from "./properties";
4
4
  export { type Command, createCommand, Emit, OnCommand } from "./events";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,EACT,OAAO,EACP,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Component, Memoize, Lazy, Virtual } from "./component";
1
+ export { Component, Lazy, Virtual } from "./component";
2
2
  export { Memo, Bind, Log, Once, Retry, Debounce, Throttle, When, Watch, } from "./functions";
3
- export { Prop, State, Persisted, Slot, initSlots, History } from "./properties";
3
+ export { Prop, State, Computed, Persisted, Slot, initSlots, History, } from "./properties";
4
4
  export { createCommand, Emit, OnCommand } from "./events";
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,GAGN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AAClG,OAAO,EAAgB,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,GAGN,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,EACT,OAAO,GAER,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ export declare function Computed(): <This extends StatefulComponent, T>(target: (this: This) => T, _context: ClassGetterDecoratorContext<This, T>) => (this: This) => T;
3
+ //# sourceMappingURL=computed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/properties/computed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,wBAAgB,QAAQ,KACL,IAAI,SAAS,iBAAiB,EAAE,CAAC,EAChD,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,EACzB,UAAU,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC,KAC7C,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAYrB"}
@@ -0,0 +1,15 @@
1
+ import { computed } from "@praxisjs/core/internal";
2
+ export function Computed() {
3
+ return function (target, _context) {
4
+ const computedMap = new WeakMap();
5
+ return function () {
6
+ let c = computedMap.get(this);
7
+ if (!c) {
8
+ c = computed(() => target.call(this));
9
+ computedMap.set(this, c);
10
+ }
11
+ return c();
12
+ };
13
+ };
14
+ }
15
+ //# sourceMappingURL=computed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/properties/computed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,UAAU,QAAQ;IACtB,OAAO,UACL,MAAyB,EACzB,QAA8C;QAE9C,MAAM,WAAW,GAAG,IAAI,OAAO,EAAmB,CAAC;QAEnD,OAAO;YACL,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,CAAC,EAAE,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type HistoryElement } from "@praxisjs/core";
1
+ import type { StatefulComponent } from "@praxisjs/core";
2
+ import { type HistoryElement } from "@praxisjs/core/internal";
2
3
  export type WithHistory<T, K extends keyof T> = Record<`${string & K}History`, HistoryElement<T[K]>>;
3
- export declare function History(limit?: number): (target: object, propertyKey: string) => void;
4
+ export declare function History(limit?: number): (_value: undefined, context: ClassFieldDecoratorContext<StatefulComponent>) => void;
4
5
  //# sourceMappingURL=history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/properties/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErG,wBAAgB,OAAO,CAAC,KAAK,SAAK,IACf,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,IAAI,CAkC5D"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/properties/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,yBAAyB,CAAC;AAGvE,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,MAAM,CACpD,GAAG,MAAM,GAAG,CAAC,SAAS,EACtB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,SAAK,IAE9B,QAAQ,SAAS,EACjB,SAAS,0BAA0B,CAAC,iBAAiB,CAAC,KACrD,IAAI,CA2CR"}