@@ -17,35 +17,53 @@ import {
1717
1818export class RecordingExternalDeploymentCache implements ExternalDeploymentCache {
1919 readonly gets : Array < { environmentId : string ; externalId : string } > = [ ] ;
20- readonly writes : Array < { externalId : string ; entry : ExternalDeploymentCacheEntry } > = [ ] ;
20+ readonly writes : Array < {
21+ environmentId : string ;
22+ externalId : string ;
23+ entry : ExternalDeploymentCacheEntry ;
24+ } > = [ ] ;
25+ readonly missing : Array < { environmentId : string ; externalId : string } > = [ ] ;
26+ private readonly entries = new Map < string , ExternalDeploymentCacheEntry > ( ) ;
2127
22- constructor ( private readonly entries = new Map < string , ExternalDeploymentCacheEntry > ( ) ) { }
23-
24- readonly missing : string [ ] = [ ] ;
28+ constructor (
29+ entries : Array < {
30+ environmentId : string ;
31+ externalId : string ;
32+ entry : ExternalDeploymentCacheEntry ;
33+ } > = [ ]
34+ ) {
35+ for ( const { environmentId, externalId, entry } of entries ) {
36+ this . entries . set ( this . key ( environmentId , externalId ) , entry ) ;
37+ }
38+ }
2539
2640 async get ( environmentId : string , externalId : string ) {
2741 this . gets . push ( { environmentId, externalId } ) ;
2842
29- const entry = this . entries . get ( externalId ) ;
43+ const entry = this . entries . get ( this . key ( environmentId , externalId ) ) ;
3044
3145 if ( entry ) {
3246 return { outcome : "deployed" as const , entry } ;
3347 }
3448
35- return this . missing . includes ( externalId ) ? { outcome : "missing" as const } : null ;
49+ return this . missing . some (
50+ ( missing ) => missing . environmentId === environmentId && missing . externalId === externalId
51+ )
52+ ? { outcome : "missing" as const }
53+ : null ;
3654 }
3755
38- async setIfNewer (
39- _environmentId : string ,
40- externalId : string ,
41- entry : ExternalDeploymentCacheEntry
42- ) {
43- this . writes . push ( { externalId , entry } ) ;
44- this . entries . set ( externalId , entry ) ;
56+ async setIfNewer ( environmentId : string , externalId : string , entry : ExternalDeploymentCacheEntry ) {
57+ this . writes . push ( { environmentId , externalId , entry } ) ;
58+ this . entries . set ( this . key ( environmentId , externalId ) , entry ) ;
59+ }
60+
61+ async setMissing ( environmentId : string , externalId : string ) {
62+ this . missing . push ( { environmentId , externalId } ) ;
4563 }
4664
47- async setMissing ( _environmentId : string , externalId : string ) {
48- this . missing . push ( externalId ) ;
65+ private key ( environmentId : string , externalId : string ) {
66+ return JSON . stringify ( [ environmentId , externalId ] ) ;
4967 }
5068}
5169
0 commit comments