1- import { deepGet } from '@orbit/utils ' ;
1+ import { registerDestructor } from '@ember/destroyable ' ;
22import { Orbit } from '@orbit/core' ;
33import {
44 buildQuery ,
@@ -7,29 +7,34 @@ import {
77 FullResponse ,
88 RequestOptions
99} from '@orbit/data' ;
10+ import IdentityMap from '@orbit/identity-map' ;
11+ import { MemoryCache } from '@orbit/memory' ;
12+ import {
13+ RecordCacheQueryOptions ,
14+ RecordCacheTransformOptions
15+ } from '@orbit/record-cache' ;
1016import {
17+ InitializedRecord ,
1118 RecordIdentity ,
12- RecordOperation ,
13- Record ,
1419 RecordKeyMap ,
15- RecordQueryOrExpressions ,
16- RecordSchema ,
17- RecordTransformBuilder ,
20+ RecordOperation ,
21+ RecordOperationResult ,
1822 RecordQuery ,
19- RecordTransform ,
20- RecordQueryResult ,
2123 RecordQueryExpressionResult ,
22- RecordTransformResult ,
23- RecordOperationResult ,
24- RecordQueryBuilder
24+ RecordQueryResult ,
25+ RecordSchema ,
26+ RecordTransform ,
27+ RecordTransformResult
2528} from '@orbit/records' ;
26- import { RecordCacheQueryOptions } from '@orbit/record-cache' ;
27- import { MemoryCache } from '@orbit/memory' ;
28- import IdentityMap from '@orbit/identity-map' ;
29- import { registerDestructor } from '@ember/destroyable' ;
30- import Model from './model' ;
29+ import { deepGet } from '@orbit/utils' ;
3130import LiveQuery from './live-query' ;
31+ import Model from './model' ;
3232import ModelFactory from './model-factory' ;
33+ import {
34+ ModelAwareQueryBuilder ,
35+ ModelAwareQueryOrExpressions ,
36+ ModelAwareTransformBuilder
37+ } from './utils/model-aware-types' ;
3338import recordIdentitySerializer from './utils/record-identity-serializer' ;
3439
3540const { assert } = Orbit ;
@@ -40,7 +45,12 @@ export interface CacheSettings {
4045}
4146
4247export default class Cache {
43- private _sourceCache : MemoryCache ;
48+ private _sourceCache : MemoryCache <
49+ RecordCacheQueryOptions ,
50+ RecordCacheTransformOptions ,
51+ ModelAwareQueryBuilder ,
52+ ModelAwareTransformBuilder
53+ > ;
4454 private _modelFactory : ModelFactory ;
4555 private _identityMap : IdentityMap < RecordIdentity , Model > = new IdentityMap ( {
4656 serializer : recordIdentitySerializer
@@ -69,11 +79,11 @@ export default class Cache {
6979 return this . _sourceCache . schema ;
7080 }
7181
72- get queryBuilder ( ) : RecordQueryBuilder {
82+ get queryBuilder ( ) : ModelAwareQueryBuilder {
7383 return this . _sourceCache . queryBuilder ;
7484 }
7585
76- get transformBuilder ( ) : RecordTransformBuilder {
86+ get transformBuilder ( ) : ModelAwareTransformBuilder {
7787 return this . _sourceCache . transformBuilder ;
7888 }
7989
@@ -90,18 +100,18 @@ export default class Cache {
90100 }
91101
92102 get defaultTransformOptions ( ) :
93- | DefaultRequestOptions < RequestOptions >
103+ | DefaultRequestOptions < RecordCacheTransformOptions >
94104 | undefined {
95105 return this . _sourceCache . defaultTransformOptions ;
96106 }
97107
98108 set defaultTransformOptions (
99- options : DefaultRequestOptions < RequestOptions > | undefined
109+ options : DefaultRequestOptions < RecordCacheTransformOptions > | undefined
100110 ) {
101111 this . _sourceCache . defaultTransformOptions = options ;
102112 }
103113
104- peekRecordData ( type : string , id : string ) : Record | undefined {
114+ peekRecordData ( type : string , id : string ) : InitializedRecord | undefined {
105115 return this . _sourceCache . getRecordSync ( { type, id } ) ;
106116 }
107117
@@ -186,21 +196,21 @@ export default class Cache {
186196 query <
187197 RequestData extends RecordQueryResult < Model > = RecordQueryResult < Model >
188198 > (
189- queryOrExpressions : RecordQueryOrExpressions ,
199+ queryOrExpressions : ModelAwareQueryOrExpressions ,
190200 options ?: DefaultRequestOptions < RecordCacheQueryOptions > ,
191201 id ?: string
192202 ) : RequestData ;
193203 query <
194204 RequestData extends RecordQueryResult < Model > = RecordQueryResult < Model >
195205 > (
196- queryOrExpressions : RecordQueryOrExpressions ,
206+ queryOrExpressions : ModelAwareQueryOrExpressions ,
197207 options : FullRequestOptions < RecordCacheQueryOptions > ,
198208 id ?: string
199209 ) : FullResponse < RequestData , undefined , RecordOperation > ;
200210 query <
201211 RequestData extends RecordQueryResult < Model > = RecordQueryResult < Model >
202212 > (
203- queryOrExpressions : RecordQueryOrExpressions ,
213+ queryOrExpressions : ModelAwareQueryOrExpressions ,
204214 options ?: RecordCacheQueryOptions ,
205215 id ?: string
206216 ) : RequestData | FullResponse < RequestData , undefined , RecordOperation > {
@@ -224,7 +234,7 @@ export default class Cache {
224234 }
225235
226236 liveQuery (
227- queryOrExpressions : RecordQueryOrExpressions ,
237+ queryOrExpressions : ModelAwareQueryOrExpressions ,
228238 options ?: RequestOptions ,
229239 id ?: string
230240 ) : LiveQuery {
@@ -269,7 +279,7 @@ export default class Cache {
269279 }
270280 }
271281
272- lookup ( record : Record ) : Model {
282+ lookup ( record : InitializedRecord ) : Model {
273283 let model = this . _identityMap . get ( record ) ;
274284
275285 if ( ! model ) {
@@ -282,13 +292,16 @@ export default class Cache {
282292
283293 lookupQueryResult (
284294 query : RecordQuery ,
285- result : RecordQueryResult < Record >
295+ result : RecordQueryResult < InitializedRecord >
286296 ) : RecordQueryResult < Model > {
287297 if (
288- isQueryExpressionResultArray < Record > ( result , query . expressions . length )
298+ isQueryExpressionResultArray < InitializedRecord > (
299+ result ,
300+ query . expressions . length
301+ )
289302 ) {
290- return ( result as RecordQueryExpressionResult < Record > [ ] ) . map ( ( i ) =>
291- this . lookupQueryExpressionResult ( i )
303+ return ( result as RecordQueryExpressionResult < InitializedRecord > [ ] ) . map (
304+ ( i ) => this . lookupQueryExpressionResult ( i )
292305 ) ;
293306 } else {
294307 return this . lookupQueryExpressionResult ( result ) ;
@@ -297,17 +310,22 @@ export default class Cache {
297310
298311 lookupTransformResult (
299312 transform : RecordTransform ,
300- result : RecordTransformResult < Record >
313+ result : RecordTransformResult < InitializedRecord >
301314 ) : RecordTransformResult < Model > {
302- if ( isOperationResultArray < Record > ( result , transform . operations . length ) ) {
315+ if (
316+ isOperationResultArray < InitializedRecord > (
317+ result ,
318+ transform . operations . length
319+ )
320+ ) {
303321 return result . map ( ( i ) => this . lookupOperationResult ( i ) ) ;
304322 } else {
305323 return this . lookupOperationResult ( result ) ;
306324 }
307325 }
308326
309327 private lookupQueryExpressionResult (
310- result : RecordQueryExpressionResult < Record >
328+ result : RecordQueryExpressionResult < InitializedRecord >
311329 ) : RecordQueryExpressionResult < Model > {
312330 if ( Array . isArray ( result ) ) {
313331 return result . map ( ( i ) => ( i ? this . lookup ( i ) : i ) ) ;
@@ -319,7 +337,7 @@ export default class Cache {
319337 }
320338
321339 private lookupOperationResult (
322- result : RecordOperationResult < Record >
340+ result : RecordOperationResult < InitializedRecord >
323341 ) : RecordOperationResult < Model > {
324342 if ( result ) {
325343 return this . lookup ( result ) ;
@@ -341,7 +359,7 @@ export default class Cache {
341359
342360 private generatePatchListener ( ) : ( operation : RecordOperation ) => void {
343361 return ( operation : RecordOperation ) => {
344- const record = operation . record as Record ;
362+ const record = operation . record as InitializedRecord ;
345363 const { type, id, keys, attributes, relationships } = record ;
346364 const identity = { type, id } ;
347365
0 commit comments