@warp-drive/ember 0.0.0-alpha.9 → 0.0.0-alpha.90

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.
@@ -3,31 +3,196 @@ declare module '@warp-drive/ember/-private/request' {
3
3
  import type { Future, StructuredErrorDocument } from '@ember-data/request';
4
4
  import type { StoreRequestInput } from '@ember-data/store';
5
5
  import type Store from '@ember-data/store';
6
- import type { RequestLoadingState } from '@warp-drive/ember/-private/request-state.ts';
7
- interface RequestSignature<T> {
6
+ import type { RequestLoadingState, RequestState } from '@warp-drive/ember/-private/request-state.ts';
7
+ type AutorefreshBehaviorType = 'online' | 'interval' | 'invalid';
8
+ type AutorefreshBehaviorCombos = true | AutorefreshBehaviorType | `${AutorefreshBehaviorType},${AutorefreshBehaviorType}` | `${AutorefreshBehaviorType},${AutorefreshBehaviorType},${AutorefreshBehaviorType}`;
9
+ type ContentFeatures<RT> = {
10
+ isOnline: boolean;
11
+ isHidden: boolean;
12
+ isRefreshing: boolean;
13
+ refresh: () => Promise<void>;
14
+ reload: () => Promise<void>;
15
+ abort?: () => void;
16
+ latestRequest?: Future<RT>;
17
+ };
18
+ interface RequestSignature<T, RT> {
8
19
  Args: {
9
- request?: Future<T>;
10
- query?: StoreRequestInput;
20
+ request?: Future<RT>;
21
+ query?: StoreRequestInput<T, RT>;
11
22
  store?: Store;
23
+ autorefresh?: AutorefreshBehaviorCombos;
24
+ autorefreshThreshold?: number;
25
+ autorefreshBehavior?: 'refresh' | 'reload' | 'policy';
12
26
  };
13
27
  Blocks: {
28
+ idle: [];
14
29
  loading: [state: RequestLoadingState];
15
- cancelled: [error: StructuredErrorDocument];
16
- error: [error: StructuredErrorDocument];
17
- content: [value: T];
30
+ cancelled: [
31
+ error: StructuredErrorDocument,
32
+ features: {
33
+ isOnline: boolean;
34
+ isHidden: boolean;
35
+ retry: () => Promise<void>;
36
+ }
37
+ ];
38
+ error: [
39
+ error: StructuredErrorDocument,
40
+ features: {
41
+ isOnline: boolean;
42
+ isHidden: boolean;
43
+ retry: () => Promise<void>;
44
+ }
45
+ ];
46
+ content: [value: RT, features: ContentFeatures<RT>];
47
+ always: [state: RequestState<T, RT>];
18
48
  };
19
49
  }
20
- export class Request<T> extends Component<RequestSignature<T>> {
50
+ /**
51
+ * The `<Request>` component is a powerful tool for managing data fetching and
52
+ * state in your Ember application. It provides declarative reactive control-flow
53
+ * for managing requests and state in your application.
54
+ *
55
+ * @typedoc
56
+ */
57
+ export class Request<T, RT> extends Component<RequestSignature<T, RT>> {
21
58
  /**
59
+ * The store instance to use for making requests. If contexts are available, this
60
+ * will be the `store` on the context, else it will be the store service.
61
+ *
22
62
  * @internal
23
63
  */
24
64
  _store: Store;
25
- retry: () => void;
26
- reload: () => void;
27
- refresh: () => void;
28
- get request(): Future<T>;
65
+ /**
66
+ * Whether the browser reports that the network is online.
67
+ *
68
+ * @internal
69
+ */
70
+ isOnline: boolean;
71
+ /**
72
+ * Whether the browser reports that the tab is hidden.
73
+ *
74
+ * @internal
75
+ */
76
+ isHidden: boolean;
77
+ /**
78
+ * Whether the component is currently refreshing the request.
79
+ *
80
+ * @internal
81
+ */
82
+ isRefreshing: boolean;
83
+ /**
84
+ * The most recent blocking request that was made, typically
85
+ * the result of a reload.
86
+ *
87
+ * This will never be the original request passed as an arg to
88
+ * the component.
89
+ *
90
+ * @internal
91
+ */
92
+ _localRequest: Future<RT> | undefined;
93
+ /**
94
+ * The most recent request that was made, typically due to either a
95
+ * reload or a refresh.
96
+ *
97
+ * This will never be the original request passed as an arg to
98
+ * the component.
99
+ *
100
+ * @internal
101
+ */
102
+ _latestRequest: Future<RT> | undefined;
103
+ /**
104
+ * The time at which the network was reported as offline.
105
+ *
106
+ * @internal
107
+ */
108
+ unavailableStart: number | null;
109
+ intervalStart: number | null;
110
+ nextInterval: number | null;
111
+ invalidated: boolean;
112
+ isUpdating: boolean;
113
+ /**
114
+ * The event listener for network status changes,
115
+ * cached to use the reference for removal.
116
+ *
117
+ * @internal
118
+ */
119
+ onlineChanged: (event: Event) => void;
120
+ /**
121
+ * The event listener for visibility status changes,
122
+ * cached to use the reference for removal.
123
+ *
124
+ * @internal
125
+ */
126
+ backgroundChanged: (event: Event) => void;
127
+ /**
128
+ * The last request passed as an arg to the component,
129
+ * cached for comparison.
130
+ *
131
+ * @internal
132
+ */
133
+ _originalRequest: Future<RT> | undefined;
134
+ /**
135
+ * The last query passed as an arg to the component,
136
+ * cached for comparison.
137
+ *
138
+ * @internal
139
+ */
140
+ _originalQuery: StoreRequestInput<T, RT> | undefined;
141
+ _subscription: object | null;
142
+ _subscribedTo: object | null;
143
+ constructor(owner: unknown, args: RequestSignature<T, RT>['Args']);
144
+ beginPolling(): Promise<void>;
145
+ get isIdle(): boolean;
146
+ get autorefreshTypes(): Set<AutorefreshBehaviorType>;
147
+ scheduleInterval(): Promise<void>;
148
+ clearInterval(): void;
149
+ updateSubscriptions(): void;
150
+ removeSubscriptions(): void;
151
+ /**
152
+ * Install the event listeners for network and visibility changes.
153
+ * This is only done in browser environments with a global `window`.
154
+ *
155
+ * @internal
156
+ */
157
+ installListeners(): void;
158
+ /**
159
+ * If the network is online and the tab is visible, either reload or refresh the request
160
+ * based on the component's configuration and the requested update mode.
161
+ *
162
+ * Valid modes are:
163
+ *
164
+ * - `'reload'`: Force a reload of the request.
165
+ * - `'refresh'`: Refresh the request in the background.
166
+ * - `'policy'`: Make the request, letting the store's configured CachePolicy decide whether to reload, refresh, or do nothing.
167
+ * - `undefined`: Make the request using the component's autorefreshBehavior setting if the autorefreshThreshold has passed.
168
+ *
169
+ * @internal
170
+ */
171
+ maybeUpdate(mode?: 'reload' | 'refresh' | 'policy' | 'invalidated', silent?: boolean): void;
172
+ /**
173
+ * Retry the request, reloading it from the server.
174
+ *
175
+ * @internal
176
+ */
177
+ retry: () => Promise<void>;
178
+ /**
179
+ * Refresh the request, updating it in the background.
180
+ *
181
+ * @internal
182
+ */
183
+ refresh: () => Promise<void>;
184
+ get errorFeatures(): {
185
+ isHidden: boolean;
186
+ isOnline: boolean;
187
+ retry: () => Promise<void>;
188
+ };
189
+ get contentFeatures(): ContentFeatures<RT>;
190
+ willDestroy(): void;
191
+ get _request(): Future<RT>;
192
+ get request(): Future<RT>;
29
193
  get store(): Store;
30
- get reqState(): import("@warp-drive/ember/-private/request-state.ts").RequestState<T>;
194
+ get reqState(): RequestState<T, RT>;
195
+ get result(): RT;
31
196
  }
32
197
  export {};
33
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAI3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAS9D,UAAU,gBAAgB,CAAC,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACtC,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5D;;OAEG;IACuB,MAAM,EAAE,KAAK,CAAC;IAExC,KAAK,aAAY;IACjB,MAAM,aAAY;IAClB,OAAO,aAAY;IAEnB,IACI,OAAO,cAQV;IAED,IAAI,KAAK,IAAI,KAAK,CASjB;IAED,IAAI,QAAQ,iDAEX;CAyBF"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- /// <reference path="./-private/promise-state.d.ts" />
2
- /// <reference path="./-private/request-state.d.ts" />
3
1
  /// <reference path="./-private/request.d.ts" />
2
+ /// <reference path="./-private/promise-state.d.ts" />
4
3
  /// <reference path="./-private/await.d.ts" />
4
+ /// <reference path="./-private/request-state.d.ts" />
5
5
  declare module '@warp-drive/ember' {
6
- export { getRequestState } from '@warp-drive/ember/-private/request-state.ts';
7
- export { getPromiseState } from '@warp-drive/ember/-private/promise-state.ts';
6
+ export { getRequestState } from '@warp-drive/ember/-private/request-state';
7
+ export { getPromiseState } from '@warp-drive/ember/-private/promise-state';
8
8
  export { Request } from '@warp-drive/ember/-private/request.gts';
9
9
  export { Await, Throw } from '@warp-drive/ember/-private/await.gts';
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC"}