@@ -201,36 +201,83 @@ const UserDetail = new Endpoint(({ id }) ⇒ fetch(`/users/${id}`));
201
201
const UserDetailNormalized = UserDetail .extend ({ schema: User });
202
202
```
203
203
204
- ### Index
205
-
206
- ``` typescript
207
- import { Entity } from ' @data-client/normalizr' ;
208
- import { Index } from ' @data-client/endpoint' ;
209
-
210
- class User extends Entity {
211
- id = ' ' ;
212
- username = ' ' ;\
213
-
214
- static indexes = [' username' ] as const ;
215
- }
216
-
217
- const bob = useQuery (User , { username: ' bob' });
218
-
219
- // @ts-expect-error Indexes don't fetch, they just retrieve already existing data
220
- const bob = useSuspense (UserIndex , { username: ' bob' });
221
- ```
222
-
223
204
## API
224
205
225
206
- Networking definition
226
207
- [ Endpoints] ( https://dataclient.io/rest/api/Endpoint )
227
208
- [ Data model] ( https://dataclient.io/docs/concepts/normalization )
228
- - [ Entity] ( https://dataclient.io/rest/api/Entity ) , [ schema.Entity] ( https://dataclient.io/rest/api/schema.Entity ) mixin
229
- - [ Object] ( https://dataclient.io/rest/api/Object )
230
- - [ Array] ( https://dataclient.io/rest/api/Array )
231
- - [ Values] ( https://dataclient.io/rest/api/Values )
232
- - [ All] ( https://dataclient.io/rest/api/All )
233
- - [ Query] ( https://dataclient.io/rest/api/Query )
234
- - [ Collection] ( https://dataclient.io/rest/api/Collection )
235
- - [ Union] ( https://dataclient.io/rest/api/Union )
236
- - [ Invalidate] ( https://dataclient.io/rest/api/Invalidate )
209
+ <table >
210
+ <thead >
211
+ <tr >
212
+ <th >Data Type</th >
213
+ <th >Mutable</th >
214
+ <th >Schema</th >
215
+ <th >Description</th >
216
+ <th ><a href =" https://dataclient.io/rest/api/schema#queryable " >Queryable</a ></th >
217
+ </tr >
218
+ </thead >
219
+ <tbody ><tr >
220
+ <td rowSpan =" 4 " ><a href =" https://en.wikipedia.org/wiki/Object_(computer_science) " >Object</a ></td >
221
+ <td align =" center " >✅</td >
222
+ <td ><a href =" https://dataclient.io/rest/api/Entity " >Entity</a >, <a href =" https://dataclient.io/rest/api/schema.Entity " >schema.Entity</a > mixin</td >
223
+ <td >single <em >unique</em > object</td >
224
+ <td align =" center " >✅</td >
225
+ </tr >
226
+ <tr >
227
+ <td align =" center " >✅</td >
228
+ <td ><a href =" https://dataclient.io/rest/api/Union " >Union(Entity)</a ></td >
229
+ <td >polymorphic objects (<code >A | B</code >)</td >
230
+ <td align =" center " >✅</td >
231
+ </tr >
232
+ <tr >
233
+ <td align =" center " >🛑</td >
234
+ <td ><a href =" https://dataclient.io/rest/api/Object " >Object</a ></td >
235
+ <td >statically known keys</td >
236
+ <td align =" center " >🛑</td >
237
+ </tr >
238
+ <tr >
239
+ <td align =" center " ></td >
240
+ <td ><a href =" https://dataclient.io/rest/api/Invalidate " >Invalidate(Entity)</a ></td >
241
+ <td ><a href =" https://dataclient.io/docs/concepts/expiry-policy#invalidate-entity " >delete an entity</a ></td >
242
+ <td align =" center " >🛑</td >
243
+ </tr >
244
+ <tr >
245
+ <td rowSpan =" 3 " ><a href =" https://en.wikipedia.org/wiki/List_(abstract_data_type) " >List</a ></td >
246
+ <td align =" center " >✅</td >
247
+ <td ><a href =" https://dataclient.io/rest/api/Collection " >Collection(Array)</a ></td >
248
+ <td >growable lists</td >
249
+ <td align =" center " >✅</td >
250
+ </tr >
251
+ <tr >
252
+ <td align =" center " >🛑</td >
253
+ <td ><a href =" https://dataclient.io/rest/api/Array " >Array</a ></td >
254
+ <td >immutable lists</td >
255
+ <td align =" center " >🛑</td >
256
+ </tr >
257
+ <tr >
258
+ <td align =" center " >✅</td >
259
+ <td ><a href =" https://dataclient.io/rest/api/All " >All</a ></td >
260
+ <td >list of all entities of a kind</td >
261
+ <td align =" center " >✅</td >
262
+ </tr >
263
+ <tr >
264
+ <td rowSpan =" 2 " ><a href =" https://en.wikipedia.org/wiki/Associative_array " >Map</a ></td >
265
+ <td align =" center " >✅</td >
266
+ <td ><a href =" https://dataclient.io/rest/api/Collection " >Collection(Values)</a ></td >
267
+ <td >growable maps</td >
268
+ <td align =" center " >✅</td >
269
+ </tr >
270
+ <tr >
271
+ <td align =" center " >🛑</td >
272
+ <td ><a href =" https://dataclient.io/rest/api/Values " >Values</a ></td >
273
+ <td >immutable maps</td >
274
+ <td align =" center " >🛑</td >
275
+ </tr >
276
+ <tr >
277
+ <td >any</td >
278
+ <td align =" center " ></td >
279
+ <td ><a href =" https://dataclient.io/rest/api/Query " >Query(Queryable)</a ></td >
280
+ <td >memoized custom transforms</td >
281
+ <td align =" center " >✅</td >
282
+ </tr >
283
+ </tbody ></table >
0 commit comments