@livequery/rpc 2.0.99 → 2.0.101
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/README.md +11 -22
- package/dist/ServiceLinker.js +1 -1
- package/dist/ServiceLinker.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Lightweight RxJS-based RPC utilities for exposing services from a `SharedWorker` and consuming them from the main thread with typed proxies.
|
|
4
4
|
|
|
5
|
+
## AI Agent Notes
|
|
6
|
+
|
|
7
|
+
Repository-specific guidance for coding agents lives in `AGENTS.md`.
|
|
8
|
+
|
|
5
9
|
This package is built for a simple model:
|
|
6
10
|
|
|
7
11
|
- Expose plain classes as worker services.
|
|
@@ -157,7 +161,7 @@ In practice:
|
|
|
157
161
|
|
|
158
162
|
## BehaviorSubject Mirroring
|
|
159
163
|
|
|
160
|
-
If your service exposes a
|
|
164
|
+
If your service exposes a `BehaviorSubject` property, the client can treat it like remote reactive state.
|
|
161
165
|
|
|
162
166
|
This is what allows a worker-side `BehaviorSubject` to feel usable on the client:
|
|
163
167
|
|
|
@@ -177,24 +181,12 @@ settings.theme.subscribe((theme) => {
|
|
|
177
181
|
|
|
178
182
|
Notes:
|
|
179
183
|
|
|
180
|
-
-
|
|
181
|
-
-
|
|
184
|
+
- `ServiceLinker` special-cases only `subscribe()`, `pipe()`, and `getValue()` on remote properties
|
|
185
|
+
- updates are fetched by subscribing to the remote property path, not through a separate initialization API
|
|
186
|
+
- `getValue()` reads the locally cached value, so subscribe first if you need the current worker value to be populated locally
|
|
182
187
|
- this pattern is designed around `BehaviorSubject`-like objects
|
|
183
188
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
`ServiceLinker` exposes a helper for waiting until all linked services have loaded their initial state.
|
|
187
|
-
|
|
188
|
-
```ts
|
|
189
|
-
const counter = linker.linkService<WorkerService<CounterService>>("counter")
|
|
190
|
-
const settings = linker.linkService<WorkerService<SettingsService>>("settings")
|
|
191
|
-
|
|
192
|
-
ServiceLinker.ready$({ counter, settings }).subscribe((ready) => {
|
|
193
|
-
if (ready) {
|
|
194
|
-
console.log("all services initialized")
|
|
195
|
-
}
|
|
196
|
-
})
|
|
197
|
-
```
|
|
189
|
+
There is currently no built-in readiness helper in `ServiceLinker`.
|
|
198
190
|
|
|
199
191
|
## Nested Access
|
|
200
192
|
|
|
@@ -310,7 +302,6 @@ Creates and caches client-side proxies.
|
|
|
310
302
|
class ServiceLinker {
|
|
311
303
|
constructor(channel: RpcChannel)
|
|
312
304
|
linkService<T>(name: string): WorkerService<T>
|
|
313
|
-
static ready$(services: Record<string, any>): Observable<boolean>
|
|
314
305
|
}
|
|
315
306
|
```
|
|
316
307
|
|
|
@@ -320,7 +311,7 @@ Behavior:
|
|
|
320
311
|
- assigns incrementing request ids
|
|
321
312
|
- returns an `Observable` that is also `PromiseLike`
|
|
322
313
|
- sends cancellation when a request is unsubscribed early
|
|
323
|
-
-
|
|
314
|
+
- special-cases `subscribe`, `pipe`, and `getValue` for remote observable-like properties
|
|
324
315
|
|
|
325
316
|
### `WorkerService<T>`
|
|
326
317
|
|
|
@@ -330,7 +321,7 @@ Rules:
|
|
|
330
321
|
|
|
331
322
|
- `BehaviorSubject<T>` stays `BehaviorSubject<T>`
|
|
332
323
|
- `Observable<T>` stays `Observable<T>`
|
|
333
|
-
- methods become async call signatures
|
|
324
|
+
- methods become async call signatures unless their awaited return type is already an `Observable`
|
|
334
325
|
|
|
335
326
|
Example:
|
|
336
327
|
|
|
@@ -422,8 +413,6 @@ bun run build
|
|
|
422
413
|
Other scripts:
|
|
423
414
|
|
|
424
415
|
- `bun run clean`
|
|
425
|
-
- `bun run build:js`
|
|
426
|
-
- `bun run build:types`
|
|
427
416
|
- `bun run build:watch`
|
|
428
417
|
|
|
429
418
|
## Package Output
|
package/dist/ServiceLinker.js
CHANGED
|
@@ -69,7 +69,7 @@ export class ServiceLinker {
|
|
|
69
69
|
if (cache)
|
|
70
70
|
return cache[prop](...args);
|
|
71
71
|
const sbj = new BehaviorSubject(null);
|
|
72
|
-
const observable = Object.assign(rpc(paths,
|
|
72
|
+
const observable = Object.assign(rpc(paths, []).pipe(share({
|
|
73
73
|
connector: () => sbj,
|
|
74
74
|
resetOnRefCountZero: false,
|
|
75
75
|
resetOnComplete: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceLinker.js","sourceRoot":"","sources":["../src/ServiceLinker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ServiceLinker.js","sourceRoot":"","sources":["../src/ServiceLinker.ts"],"names":[],"mappings":"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"}
|