@push-rpc/next 2.0.25 → 3.0.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 (40) hide show
  1. package/README.md +9 -1
  2. package/dist/client/RpcClientImpl.d.ts +2 -2
  3. package/dist/client/RpcClientImpl.js.map +1 -1
  4. package/dist/client/index.d.ts +2 -2
  5. package/dist/client/index.js +2 -4
  6. package/dist/client/index.js.map +1 -1
  7. package/dist/client/remote.d.ts +8 -6
  8. package/dist/client/remote.js.map +1 -1
  9. package/dist/index.d.ts +10 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/server/RpcServerImpl.d.ts +3 -3
  12. package/dist/server/RpcServerImpl.js +48 -10
  13. package/dist/server/RpcServerImpl.js.map +1 -1
  14. package/dist/server/{LocalSubscriptions.d.ts → ServerSubscriptions.d.ts} +11 -5
  15. package/dist/server/{LocalSubscriptions.js → ServerSubscriptions.js} +24 -7
  16. package/dist/server/ServerSubscriptions.js.map +1 -0
  17. package/dist/server/http.js +1 -1
  18. package/dist/server/http.js.map +1 -1
  19. package/dist/server/implementation.d.ts +32 -0
  20. package/dist/server/{local.js → implementation.js} +21 -7
  21. package/dist/server/implementation.js.map +1 -0
  22. package/dist/server/index.d.ts +2 -2
  23. package/dist/server/index.js +1 -1
  24. package/dist/server/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/client/RpcClientImpl.ts +2 -2
  27. package/src/client/index.ts +4 -6
  28. package/src/client/remote.ts +10 -13
  29. package/src/index.ts +20 -3
  30. package/src/server/RpcServerImpl.ts +76 -13
  31. package/src/server/{LocalSubscriptions.ts → ServerSubscriptions.ts} +40 -10
  32. package/src/server/http.ts +1 -1
  33. package/src/server/implementation.ts +116 -0
  34. package/src/server/index.ts +12 -9
  35. package/tests/events.ts +82 -0
  36. package/tests/testUtils.ts +4 -4
  37. package/dist/server/LocalSubscriptions.js.map +0 -1
  38. package/dist/server/local.d.ts +0 -15
  39. package/dist/server/local.js.map +0 -1
  40. package/src/server/local.ts +0 -80
@@ -7,8 +7,8 @@ import {
7
7
  RpcContext,
8
8
  RpcServer,
9
9
  Services,
10
- ServicesWithSubscriptions,
11
- ServicesWithTriggers,
10
+ ServicesClient,
11
+ ServicesImplementation,
12
12
  } from "../src/index.js"
13
13
  import WebSocket from "ws"
14
14
 
@@ -21,7 +21,7 @@ export let testServer: RpcServer | null = null
21
21
  export async function startTestServer<S extends Services<S>, C extends RpcContext>(
22
22
  local: S,
23
23
  options: Partial<PublishServicesOptions<C>> = {},
24
- ): Promise<ServicesWithTriggers<S>> {
24
+ ): Promise<ServicesImplementation<S>> {
25
25
  const r = await publishServices<S, C>(local, {
26
26
  port: TEST_PORT,
27
27
  path: "/rpc",
@@ -35,7 +35,7 @@ export let testClient: RpcClient | null = null
35
35
 
36
36
  export async function createTestClient<S extends Services<S>>(
37
37
  options?: Partial<ConsumeServicesOptions>,
38
- ): Promise<ServicesWithSubscriptions<S>> {
38
+ ): Promise<ServicesClient<S>> {
39
39
  if (!options) options = {}
40
40
  if (!options.middleware) options.middleware = []
41
41
  options.middleware = [logMiddleware, ...options.middleware]
@@ -1 +0,0 @@
1
- {"version":3,"file":"LocalSubscriptions.js","sourceRoot":"","sources":["../../src/server/LocalSubscriptions.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { RemoteFunction, Services } from "../rpc.js";
2
- import { LocalSubscriptions } from "./LocalSubscriptions.js";
3
- import { ExtractPromiseResult } from "../utils/types.js";
4
- import { ThrottleArgsReducer } from "../utils/throttle.js";
5
- export type ThrottleSettings<D> = {
6
- timeout: number;
7
- reducer?: ThrottleArgsReducer<D>;
8
- };
9
- export declare function withTriggers<T extends Services<T>>(localSubscriptions: LocalSubscriptions, services: T, name?: string): ServicesWithTriggers<T>;
10
- export type ServicesWithTriggers<T extends Services<T>> = {
11
- [K in keyof T]: T[K] extends RemoteFunction ? T[K] & {
12
- trigger(filter?: Partial<Parameters<T[K]>[0]>, suppliedData?: ExtractPromiseResult<ReturnType<T[K]>>): void;
13
- throttle(settings: ThrottleSettings<ExtractPromiseResult<ReturnType<T[K]>>>): void;
14
- } : T[K] extends object ? ServicesWithTriggers<T[K]> : never;
15
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/server/local.ts"],"names":[],"mappings":";;;AAUA,SAAgB,YAAY,CAC1B,kBAAsC,EACtC,QAAW,EACX,IAAI,GAAG,EAAE;IAET,MAAM,WAAW,GAAQ,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IAE3E,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QACzB,GAAG,CAAC,MAAW,EAAE,QAAgB;YAC/B,sBAAsB;YACtB,IAAI,OAAO,QAAQ,IAAI,QAAQ;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;YAExD,0BAA0B;YAC1B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;YAE5F,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;YAExD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAiB,EAAE,EAAE;oBACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;gBACpC,CAAC,CAAA;gBAED,QAAQ,CAAC,OAAO,GAAG,CAAC,SAAkC,EAAE,EAAE,YAAsB,EAAE,EAAE;oBAClF,qFAAqF;oBACrF,UAAU,CAAC,GAAG,EAAE;wBACd,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;oBAC5D,CAAC,EAAE,CAAC,CAAC,CAAA;gBACP,CAAC,CAAA;gBAED,QAAQ,CAAC,QAAQ,GAAG,CAAC,QAAmC,EAAE,EAAE;oBAC1D,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBACrD,CAAC,CAAA;gBAED,OAAO,QAAQ,CAAA;YACjB,CAAC;iBAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAClC,kBAAkB,EAClB,QAAQ,CAAC,QAAmB,CAAQ,EACpC,QAAQ,CACT,CAAA;YACH,CAAC;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK;YACzB,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO;YACL,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QACvD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAvDD,oCAuDC"}
@@ -1,80 +0,0 @@
1
- import {RemoteFunction, Services} from "../rpc.js"
2
- import {LocalSubscriptions} from "./LocalSubscriptions.js"
3
- import {ExtractPromiseResult} from "../utils/types.js"
4
- import {ThrottleArgsReducer} from "../utils/throttle.js"
5
-
6
- export type ThrottleSettings<D> = {
7
- timeout: number
8
- reducer?: ThrottleArgsReducer<D>
9
- }
10
-
11
- export function withTriggers<T extends Services<T>>(
12
- localSubscriptions: LocalSubscriptions,
13
- services: T,
14
- name = ""
15
- ): ServicesWithTriggers<T> {
16
- const cachedItems: any = {}
17
- const skippedProps = ["length", "name", "prototype", "arguments", "caller"]
18
-
19
- return new Proxy(services, {
20
- get(target: any, propName: string) {
21
- // skip internal props
22
- if (typeof propName != "string") return target[propName]
23
-
24
- // skip other system props
25
- if (["then", "catch", "toJSON", ...skippedProps].includes(propName)) return target[propName]
26
-
27
- const itemName = name ? name + "/" + propName : propName
28
-
29
- if (typeof target[propName] == "function") {
30
- const delegate = (...params: unknown[]) => {
31
- return target[propName](...params)
32
- }
33
-
34
- delegate.trigger = (filter: Record<string, unknown> = {}, suppliedData?: unknown) => {
35
- // triggers are delayed for consumers to receive updates after the current call ends.
36
- setTimeout(() => {
37
- localSubscriptions.trigger(itemName, filter, suppliedData)
38
- }, 0)
39
- }
40
-
41
- delegate.throttle = (settings: ThrottleSettings<unknown>) => {
42
- localSubscriptions.throttleItem(itemName, settings)
43
- }
44
-
45
- return delegate
46
- } else if (!cachedItems[propName]) {
47
- cachedItems[propName] = withTriggers(
48
- localSubscriptions,
49
- services[propName as keyof T] as any,
50
- itemName
51
- )
52
- }
53
-
54
- return cachedItems[propName]
55
- },
56
-
57
- set(target, propName, value) {
58
- cachedItems[propName] = value
59
- return true
60
- },
61
-
62
- ownKeys() {
63
- return [...skippedProps, ...Object.keys(cachedItems)]
64
- },
65
- })
66
- }
67
-
68
- export type ServicesWithTriggers<T extends Services<T>> = {
69
- [K in keyof T]: T[K] extends RemoteFunction
70
- ? T[K] & {
71
- trigger(
72
- filter?: Partial<Parameters<T[K]>[0]>,
73
- suppliedData?: ExtractPromiseResult<ReturnType<T[K]>>
74
- ): void
75
- throttle(settings: ThrottleSettings<ExtractPromiseResult<ReturnType<T[K]>>>): void
76
- }
77
- : T[K] extends object
78
- ? ServicesWithTriggers<T[K]>
79
- : never
80
- }