@warp-drive/ember 0.0.0-beta.0 → 0.0.0-beta.10

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.
@@ -4,6 +4,8 @@ declare module '@warp-drive/ember/-private/request' {
4
4
  import type { StoreRequestInput } from '@ember-data/store';
5
5
  import type Store from '@ember-data/store';
6
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}`;
7
9
  type ContentFeatures<RT> = {
8
10
  isOnline: boolean;
9
11
  isHidden: boolean;
@@ -18,11 +20,12 @@ declare module '@warp-drive/ember/-private/request' {
18
20
  request?: Future<RT>;
19
21
  query?: StoreRequestInput<T, RT>;
20
22
  store?: Store;
21
- autorefresh?: boolean;
23
+ autorefresh?: AutorefreshBehaviorCombos;
22
24
  autorefreshThreshold?: number;
23
25
  autorefreshBehavior?: 'refresh' | 'reload' | 'policy';
24
26
  };
25
27
  Blocks: {
28
+ idle: [];
26
29
  loading: [state: RequestLoadingState];
27
30
  cancelled: [
28
31
  error: StructuredErrorDocument,
@@ -44,25 +47,139 @@ declare module '@warp-drive/ember/-private/request' {
44
47
  always: [state: RequestState<T, RT>];
45
48
  };
46
49
  }
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
+ */
47
57
  export class Request<T, RT> extends Component<RequestSignature<T, RT>> {
48
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
+ *
49
62
  * @internal
50
63
  */
51
64
  _store: Store;
65
+ /**
66
+ * Whether the browser reports that the network is online.
67
+ *
68
+ * @internal
69
+ */
52
70
  isOnline: boolean;
71
+ /**
72
+ * Whether the browser reports that the tab is hidden.
73
+ *
74
+ * @internal
75
+ */
53
76
  isHidden: boolean;
77
+ /**
78
+ * Whether the component is currently refreshing the request.
79
+ *
80
+ * @internal
81
+ */
54
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
+ */
55
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
+ */
56
102
  _latestRequest: Future<RT> | undefined;
103
+ /**
104
+ * The time at which the network was reported as offline.
105
+ *
106
+ * @internal
107
+ */
57
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
+ */
58
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
+ */
59
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
+ */
60
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
+ */
61
140
  _originalQuery: StoreRequestInput<T, RT> | undefined;
141
+ _subscription: object | null;
142
+ _subscribedTo: object | null;
62
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
+ */
63
157
  installListeners(): void;
64
- maybeUpdate(mode?: 'reload' | 'refresh' | 'policy'): 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
+ */
65
177
  retry: () => Promise<void>;
178
+ /**
179
+ * Refresh the request, updating it in the background.
180
+ *
181
+ * @internal
182
+ */
66
183
  refresh: () => Promise<void>;
67
184
  get errorFeatures(): {
68
185
  isHidden: boolean;
@@ -71,6 +188,7 @@ declare module '@warp-drive/ember/-private/request' {
71
188
  };
72
189
  get contentFeatures(): ContentFeatures<RT>;
73
190
  willDestroy(): void;
191
+ get _request(): Future<RT>;
74
192
  get request(): Future<RT>;
75
193
  get store(): Store;
76
194
  get reqState(): RequestState<T, RT>;
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- /// <reference path="./-private/request.d.ts" />
2
- /// <reference path="./-private/promise-state.d.ts" />
3
1
  /// <reference path="./-private/request-state.d.ts" />
4
2
  /// <reference path="./-private/await.d.ts" />
3
+ /// <reference path="./-private/promise-state.d.ts" />
4
+ /// <reference path="./-private/request.d.ts" />
5
5
  declare module '@warp-drive/ember' {
6
6
  export { getRequestState } from '@warp-drive/ember/-private/request-state';
7
7
  export { getPromiseState } from '@warp-drive/ember/-private/promise-state';