@warp-drive/ember 0.0.0-alpha.6 → 0.0.0-alpha.61

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