@sylwellsoftware/glue 0.8.1 → 0.9.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/README.md CHANGED
@@ -200,11 +200,40 @@ const handler = new RestQueryHandler({
200
200
  const users = new LiveQuery({handler, args: {search}})
201
201
  ```
202
202
 
203
- Arguments are a named record of emitters. Construction fetches immediately
204
- unless `autoFetch: false`; `refresh()` and `retry()` return the active request
205
- promise. A newer request aborts and supersedes the older request, and stale
206
- results cannot overwrite current state. `abort()` cancels without disposing;
207
- `dispose()` aborts the active request and releases argument subscriptions.
203
+ Arguments are a named record of emitters. By default construction fetches
204
+ immediately and later argument changes refresh. The named `execution` policy
205
+ makes other timing explicit:
206
+
207
+ | Policy | Initial behavior | Later behavior |
208
+ | --- | --- | --- |
209
+ | `immediate` | Fetch immediately. | Arguments and configured polling refresh automatically. |
210
+ | `deferred` | Stay `FetchState.Initial` with no argument subscriptions, request, or poll until `activate()` (or a dormant `refresh()`). | Become an ordinary reactive query after the first activation attempt. |
211
+ | `explicit` | Stay `FetchState.Initial`. | Fetch only through `refresh()`/`retry()`; never react to arguments and reject polling. |
212
+
213
+ ```ts
214
+ const deferredUsers = new LiveQuery({
215
+ handler,
216
+ args: {search},
217
+ execution: 'deferred',
218
+ })
219
+ await deferredUsers.activate('users view mounted')
220
+ ```
221
+
222
+ Deferred activation is one-way, idempotent, and independent of whether the
223
+ first request succeeds. Concurrent activators share the first request, which
224
+ uses the current argument values. Subscribing to the query does not activate
225
+ it. A later `activate()` does not reload; use `refresh()` for an intentional
226
+ reload.
227
+
228
+ `autoFetch: false` remains a compatibility option with its historical narrow
229
+ meaning: it skips only the constructor request while argument and polling
230
+ triggers are already live. It cannot be combined with `execution`; new code
231
+ should choose a named policy.
232
+
233
+ `refresh()` and `retry()` return the active request promise. A newer request
234
+ aborts and supersedes the older request, and stale results cannot overwrite
235
+ current state. `abort()` cancels without disposing; `dispose()` aborts the
236
+ active request and releases argument/polling subscriptions.
208
237
 
209
238
  By default the last successful value remains visible while refreshing and after
210
239
  a refresh error. Set `keepPreviousValue: false` to clear it while loading or in
@@ -247,7 +276,8 @@ application chooses and constructs its service scope. Fray applications may
247
276
  expose those services through Fray's typed runtime `ServiceScope`; non-Fray
248
277
  applications use their own explicit composition. Every `open()` call creates a
249
278
  caller-owned result with independent arguments, request state, polling, and
250
- disposal.
279
+ disposal. Endpoint `query` defaults and per-`open()` options accept the same
280
+ `execution` policy as `LiveQuery`.
251
281
 
252
282
  ```ts
253
283
  import {DerivedEndpoint, RestEndpoint} from '@sylwellsoftware/glue'
@@ -16,9 +16,19 @@ export interface LiveQueryPollingOptions {
16
16
  enabled?: boolean | ReadableEmitter<boolean, unknown>;
17
17
  scheduler?: PollingScheduler;
18
18
  }
19
+ export type LiveQueryExecution = 'immediate' | 'deferred' | 'explicit';
19
20
  export interface LiveQueryOptions<TResult, TArguments extends QueryArgumentEmitters> {
20
21
  handler: QueryHandlerLike<QueryArgumentValues<TArguments>, TResult>;
21
22
  args?: TArguments;
23
+ /**
24
+ * Controls whether this query starts live, becomes live on first activation,
25
+ * or executes only through explicit refresh/retry calls.
26
+ */
27
+ execution?: LiveQueryExecution;
28
+ /**
29
+ * Compatibility option that suppresses only the initial fetch. Prefer
30
+ * execution for new code; the two options are mutually exclusive.
31
+ */
22
32
  autoFetch?: boolean;
23
33
  keepPreviousValue?: boolean;
24
34
  polling?: LiveQueryPollingOptions;
@@ -31,8 +41,11 @@ export declare class LiveQuery<TResult, TArguments extends QueryArgumentEmitters
31
41
  readonly handler: QueryHandlerLike<QueryArgumentValues<TArguments>, TResult>;
32
42
  readonly args: TArguments;
33
43
  readonly keepPreviousValue: boolean;
44
+ private readonly execution;
34
45
  private lastSuccessfulValue;
35
46
  private hasSuccessfulValue;
47
+ private automaticTriggersInitialized;
48
+ private activated;
36
49
  private argumentUnsubscribers;
37
50
  private pollingUnsubscribers;
38
51
  private readonly polling;
@@ -44,10 +57,17 @@ export declare class LiveQuery<TResult, TArguments extends QueryArgumentEmitters
44
57
  _activeRequest: Promise<TResult | undefined> | null;
45
58
  constructor(options: LiveQueryOptions<TResult, TArguments>);
46
59
  get argumentValues(): QueryArgumentValues<TArguments>;
60
+ /**
61
+ * Activates a deferred query exactly once. Concurrent callers share the
62
+ * first request; later calls return the current value without reloading.
63
+ */
64
+ activate(eventOrCause?: EventBubble<unknown> | unknown): Promise<TResult | undefined>;
47
65
  refresh(eventOrCause?: EventBubble<unknown> | unknown): Promise<TResult | undefined>;
66
+ private executeRequest;
48
67
  retry(eventOrCause?: EventBubble<unknown> | unknown): Promise<TResult | undefined>;
49
68
  abort(eventOrCause?: EventBubble<unknown> | unknown): void;
50
69
  dispose(): void;
70
+ private initializeAutomaticTriggers;
51
71
  private initializePolling;
52
72
  private scheduleNextPoll;
53
73
  private cancelScheduledPoll;
@@ -1 +1 @@
1
- {"version":3,"file":"liveQuery.d.ts","sourceRoot":"","sources":["../../src/emitters/liveQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liveQuery.d.ts","sourceRoot":"","sources":["../../src/emitters/liveQuery.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { Emitter } from './emitters/emitter.js';
8
8
  export { AsyncCommand, AsyncCommandConcurrencyError } from './commands/asyncCommand.js';
9
9
  export type { AsyncCommandConcurrency, AsyncCommandContext, AsyncCommandExecutor, AsyncCommandOptions, } from './commands/asyncCommand.js';
10
10
  export { LiveQuery } from './emitters/liveQuery.js';
11
- export type { LiveQueryPollingOptions, LiveQueryOptions, PollingScheduler, QueryArgumentEmitters, QueryArgumentValues, } from './emitters/liveQuery.js';
11
+ export type { LiveQueryExecution, LiveQueryPollingOptions, LiveQueryOptions, PollingScheduler, QueryArgumentEmitters, QueryArgumentValues, } from './emitters/liveQuery.js';
12
12
  export type { LiveResult, RefreshableLiveResult } from './emitters/liveResult.js';
13
13
  export { combineFetchStates, FetchState, FetchStateValues } from './enums/fetchState.js';
14
14
  export type { FetchStateValue } from './enums/fetchState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AACtD,YAAY,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAChD,YAAY,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,2BAA2B,CAAA;AACrE,YAAY,EACR,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAE,4BAA4B,EAAC,MAAM,4BAA4B,CAAA;AACrF,YAAY,EACR,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAA;AACjD,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,0BAA0B,CAAA;AAE/E,OAAO,EAAC,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAA;AACtF,YAAY,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAA;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,iCAAiC,CAAA;AAC5D,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,GACd,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAA;AACpE,YAAY,EACR,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,GACV,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,GACf,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACR,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACR,aAAa,EAChB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AACtD,YAAY,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAChD,YAAY,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,2BAA2B,CAAA;AACrE,YAAY,EACR,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAE,4BAA4B,EAAC,MAAM,4BAA4B,CAAA;AACrF,YAAY,EACR,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAA;AACjD,YAAY,EACR,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,0BAA0B,CAAA;AAE/E,OAAO,EAAC,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAA;AACtF,YAAY,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAA;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,iCAAiC,CAAA;AAC5D,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,GACd,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAA;AACpE,YAAY,EACR,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,GACV,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,GACf,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACR,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACR,aAAa,EAChB,MAAM,gBAAgB,CAAA"}