@pezkuwi/rpc-core 16.5.5 → 16.5.8

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 (152) hide show
  1. package/LICENSE +201 -0
  2. package/build/LICENSE +201 -0
  3. package/build/README.md +3 -0
  4. package/build/bundle.d.ts +1 -1
  5. package/build/bundle.js +411 -0
  6. package/build/cjs/bundle.d.ts +91 -0
  7. package/build/cjs/bundle.js +417 -0
  8. package/build/cjs/index.d.ts +2 -0
  9. package/build/cjs/index.js +5 -0
  10. package/build/cjs/package.json +3 -0
  11. package/build/cjs/packageDetect.d.ts +1 -0
  12. package/build/cjs/packageDetect.js +7 -0
  13. package/build/cjs/packageInfo.d.ts +6 -0
  14. package/build/cjs/packageInfo.js +4 -0
  15. package/build/cjs/types/base.d.ts +22 -0
  16. package/build/cjs/types/base.js +2 -0
  17. package/build/cjs/types/index.d.ts +2 -0
  18. package/build/cjs/types/index.js +5 -0
  19. package/build/cjs/types/jsonrpc.d.ts +2 -0
  20. package/build/cjs/types/jsonrpc.js +2 -0
  21. package/build/cjs/util/drr.d.ts +15 -0
  22. package/build/cjs/util/drr.js +31 -0
  23. package/build/cjs/util/index.d.ts +3 -0
  24. package/build/cjs/util/index.js +6 -0
  25. package/build/cjs/util/memo.d.ts +6 -0
  26. package/build/cjs/util/memo.js +18 -0
  27. package/build/cjs/util/refCountDelay.d.ts +3 -0
  28. package/build/cjs/util/refCountDelay.js +40 -0
  29. package/build/index.js +2 -0
  30. package/build/package.json +209 -0
  31. package/build/packageDetect.js +5 -0
  32. package/build/packageInfo.js +1 -0
  33. package/build/types/base.js +1 -0
  34. package/build/types/index.js +2 -0
  35. package/build/types/jsonrpc.js +1 -0
  36. package/build/util/drr.js +28 -0
  37. package/build/util/index.js +3 -0
  38. package/build/util/memo.js +15 -0
  39. package/build/util/refCountDelay.js +37 -0
  40. package/build-deno/README.md +3 -0
  41. package/build-deno/bundle.ts +532 -0
  42. package/build-deno/checkTypes.manual.ts +2 -0
  43. package/build-deno/index.ts +4 -0
  44. package/build-deno/mod.ts +2 -0
  45. package/build-deno/packageDetect.ts +9 -0
  46. package/build-deno/packageInfo.ts +3 -0
  47. package/build-deno/types/base.ts +26 -0
  48. package/build-deno/types/index.ts +4 -0
  49. package/build-deno/types/jsonrpc.ts +4 -0
  50. package/build-deno/util/drr.ts +50 -0
  51. package/build-deno/util/index.ts +4 -0
  52. package/build-deno/util/memo.ts +30 -0
  53. package/build-deno/util/refCountDelay.ts +43 -0
  54. package/build-tsc/bundle.d.ts +91 -0
  55. package/build-tsc/index.d.ts +2 -0
  56. package/build-tsc/packageDetect.d.ts +1 -0
  57. package/build-tsc/packageInfo.d.ts +6 -0
  58. package/build-tsc/types/base.d.ts +22 -0
  59. package/build-tsc/types/index.d.ts +2 -0
  60. package/build-tsc/types/jsonrpc.d.ts +2 -0
  61. package/build-tsc/util/drr.d.ts +15 -0
  62. package/build-tsc/util/index.d.ts +3 -0
  63. package/build-tsc/util/memo.d.ts +6 -0
  64. package/build-tsc/util/refCountDelay.d.ts +3 -0
  65. package/build-tsc-cjs/bundle.js +417 -0
  66. package/build-tsc-cjs/index.js +5 -0
  67. package/build-tsc-cjs/packageDetect.js +7 -0
  68. package/build-tsc-cjs/packageInfo.js +4 -0
  69. package/build-tsc-cjs/types/base.js +2 -0
  70. package/build-tsc-cjs/types/index.js +5 -0
  71. package/build-tsc-cjs/types/jsonrpc.js +2 -0
  72. package/build-tsc-cjs/util/drr.js +31 -0
  73. package/build-tsc-cjs/util/index.js +6 -0
  74. package/build-tsc-cjs/util/memo.js +18 -0
  75. package/build-tsc-cjs/util/refCountDelay.js +40 -0
  76. package/build-tsc-esm/bundle.js +411 -0
  77. package/build-tsc-esm/index.js +2 -0
  78. package/build-tsc-esm/packageDetect.js +5 -0
  79. package/build-tsc-esm/packageInfo.js +1 -0
  80. package/build-tsc-esm/types/base.js +1 -0
  81. package/build-tsc-esm/types/index.js +2 -0
  82. package/build-tsc-esm/types/jsonrpc.js +1 -0
  83. package/build-tsc-esm/util/drr.js +28 -0
  84. package/build-tsc-esm/util/index.js +3 -0
  85. package/build-tsc-esm/util/memo.js +15 -0
  86. package/build-tsc-esm/util/refCountDelay.js +37 -0
  87. package/bundle.d.ts +91 -0
  88. package/bundle.js +411 -0
  89. package/cjs/bundle.d.ts +91 -0
  90. package/cjs/bundle.js +417 -0
  91. package/cjs/index.d.ts +2 -0
  92. package/cjs/index.js +5 -0
  93. package/cjs/package.json +3 -0
  94. package/cjs/packageDetect.d.ts +1 -0
  95. package/cjs/packageDetect.js +7 -0
  96. package/cjs/packageInfo.d.ts +6 -0
  97. package/cjs/packageInfo.js +4 -0
  98. package/cjs/types/base.d.ts +22 -0
  99. package/cjs/types/base.js +2 -0
  100. package/cjs/types/index.d.ts +2 -0
  101. package/cjs/types/index.js +5 -0
  102. package/cjs/types/jsonrpc.d.ts +2 -0
  103. package/cjs/types/jsonrpc.js +2 -0
  104. package/cjs/util/drr.d.ts +15 -0
  105. package/cjs/util/drr.js +31 -0
  106. package/cjs/util/index.d.ts +3 -0
  107. package/cjs/util/index.js +6 -0
  108. package/cjs/util/memo.d.ts +6 -0
  109. package/cjs/util/memo.js +18 -0
  110. package/cjs/util/refCountDelay.d.ts +3 -0
  111. package/cjs/util/refCountDelay.js +40 -0
  112. package/index.d.ts +2 -0
  113. package/index.js +2 -0
  114. package/package.json +186 -12
  115. package/packageDetect.d.ts +1 -0
  116. package/packageDetect.js +5 -0
  117. package/packageInfo.d.ts +6 -0
  118. package/packageInfo.js +1 -0
  119. package/src/bundle.ts +2 -2
  120. package/src/cached.spec.ts +1 -1
  121. package/src/checkTypes.manual.ts +1 -1
  122. package/src/index.spec.ts +1 -1
  123. package/src/index.ts +1 -1
  124. package/src/methodSend.spec.ts +1 -1
  125. package/src/mod.ts +1 -1
  126. package/src/packageDetect.ts +2 -2
  127. package/src/packageInfo.ts +3 -3
  128. package/src/replay.spec.ts +1 -1
  129. package/src/types/base.ts +1 -1
  130. package/src/types/index.ts +1 -1
  131. package/src/types/jsonrpc.ts +1 -1
  132. package/src/util/drr.spec.ts +1 -1
  133. package/src/util/drr.ts +1 -1
  134. package/src/util/index.ts +1 -1
  135. package/src/util/memo.ts +1 -1
  136. package/src/util/refCountDelay.ts +1 -1
  137. package/tsconfig.build.tsbuildinfo +1 -1
  138. package/tsconfig.spec.tsbuildinfo +1 -0
  139. package/types/base.d.ts +22 -0
  140. package/types/base.js +1 -0
  141. package/types/index.d.ts +2 -0
  142. package/types/index.js +2 -0
  143. package/types/jsonrpc.d.ts +2 -0
  144. package/types/jsonrpc.js +1 -0
  145. package/util/drr.d.ts +15 -0
  146. package/util/drr.js +28 -0
  147. package/util/index.d.ts +3 -0
  148. package/util/index.js +3 -0
  149. package/util/memo.d.ts +6 -0
  150. package/util/memo.js +15 -0
  151. package/util/refCountDelay.d.ts +3 -0
  152. package/util/refCountDelay.js +37 -0
package/util/drr.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import type { Observable } from 'rxjs';
2
+ export type DrrResult = <T>(source$: Observable<T>) => Observable<T>;
3
+ interface Options {
4
+ delay?: number;
5
+ skipChange?: boolean;
6
+ skipTimeout?: boolean;
7
+ }
8
+ /**
9
+ * Shorthand for distinctUntilChanged(), publishReplay(1) and refCount().
10
+ *
11
+ * @ignore
12
+ * @internal
13
+ */
14
+ export declare function drr({ delay, skipChange, skipTimeout }?: Options): DrrResult;
15
+ export {};
package/util/drr.js ADDED
@@ -0,0 +1,28 @@
1
+ import { catchError, distinctUntilChanged, publishReplay, refCount, tap } from 'rxjs';
2
+ import { stringify } from '@pezkuwi/util';
3
+ import { refCountDelay } from './refCountDelay.js';
4
+ function CMP(a, b) {
5
+ return stringify({ t: a }) === stringify({ t: b });
6
+ }
7
+ function ERR(error) {
8
+ throw error;
9
+ }
10
+ function NOOP() {
11
+ // empty
12
+ }
13
+ /**
14
+ * Shorthand for distinctUntilChanged(), publishReplay(1) and refCount().
15
+ *
16
+ * @ignore
17
+ * @internal
18
+ */
19
+ export function drr({ delay, skipChange = false, skipTimeout = false } = {}) {
20
+ return (source$) => source$.pipe(catchError(ERR), skipChange
21
+ ? tap(NOOP)
22
+ : distinctUntilChanged(CMP),
23
+ // eslint-disable-next-line deprecation/deprecation
24
+ publishReplay(1), skipTimeout
25
+ // eslint-disable-next-line deprecation/deprecation
26
+ ? refCount()
27
+ : refCountDelay(delay));
28
+ }
@@ -0,0 +1,3 @@
1
+ export * from './drr.js';
2
+ export * from './memo.js';
3
+ export * from './refCountDelay.js';
package/util/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './drr.js';
2
+ export * from './memo.js';
3
+ export * from './refCountDelay.js';
package/util/memo.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { Memoized } from '@pezkuwi/util/types';
2
+ import { Observable } from 'rxjs';
3
+ type ObsFn<T> = (...params: unknown[]) => Observable<T>;
4
+ /** @internal */
5
+ export declare function memo<T>(instanceId: string, inner: Function): Memoized<ObsFn<T>>;
6
+ export {};
package/util/memo.js ADDED
@@ -0,0 +1,15 @@
1
+ import { Observable } from 'rxjs';
2
+ import { memoize } from '@pezkuwi/util';
3
+ import { drr } from './drr.js';
4
+ /** @internal */
5
+ export function memo(instanceId, inner) {
6
+ const options = { getInstanceId: () => instanceId };
7
+ const cached = memoize((...params) => new Observable((observer) => {
8
+ const subscription = inner(...params).subscribe(observer);
9
+ return () => {
10
+ cached.unmemoize(...params);
11
+ subscription.unsubscribe();
12
+ };
13
+ }).pipe(drr()), options);
14
+ return cached;
15
+ }
@@ -0,0 +1,3 @@
1
+ import type { MonoTypeOperatorFunction } from 'rxjs';
2
+ /** @internal */
3
+ export declare function refCountDelay<T>(delay?: number): MonoTypeOperatorFunction<T>;
@@ -0,0 +1,37 @@
1
+ import { asapScheduler, Observable, Subscription } from 'rxjs';
2
+ /** @internal */
3
+ export function refCountDelay(delay = 1750) {
4
+ return (source) => {
5
+ // state: 0 = disconnected, 1 = disconnecting, 2 = connecting, 3 = connected
6
+ let [state, refCount, connection, scheduler] = [0, 0, Subscription.EMPTY, Subscription.EMPTY];
7
+ return new Observable((ob) => {
8
+ source.subscribe(ob);
9
+ if (refCount++ === 0) {
10
+ if (state === 1) {
11
+ scheduler.unsubscribe();
12
+ }
13
+ else {
14
+ // eslint-disable-next-line deprecation/deprecation
15
+ connection = source.connect();
16
+ }
17
+ state = 3;
18
+ }
19
+ return () => {
20
+ if (--refCount === 0) {
21
+ if (state === 2) {
22
+ state = 0;
23
+ scheduler.unsubscribe();
24
+ }
25
+ else {
26
+ // state === 3
27
+ state = 1;
28
+ scheduler = asapScheduler.schedule(() => {
29
+ state = 0;
30
+ connection.unsubscribe();
31
+ }, delay);
32
+ }
33
+ }
34
+ };
35
+ });
36
+ };
37
+ }