@@ -139,31 +139,37 @@ export class PresetsController implements vscode.Disposable {
139
139
}
140
140
141
141
private readonly _setExpandedPresets = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
142
- preset . setExpandedPresets ( folder , presetsFile ) ;
143
- this . _presetsChangedEmitter . fire ( presetsFile ) ;
142
+ const clone = lodash . cloneDeep ( presetsFile ) ;
143
+ preset . setExpandedPresets ( folder , clone ) ;
144
+ this . _presetsChangedEmitter . fire ( clone ) ;
144
145
} ;
145
146
146
147
private readonly _setExpandedUserPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
147
- preset . setExpandedUserPresetsFile ( folder , presetsFile ) ;
148
- this . _userPresetsChangedEmitter . fire ( presetsFile ) ;
148
+ const clone = lodash . cloneDeep ( presetsFile ) ;
149
+ preset . setExpandedUserPresetsFile ( folder , clone ) ;
150
+ this . _userPresetsChangedEmitter . fire ( clone ) ;
149
151
} ;
150
152
151
153
private readonly _setPresetsPlusIncluded = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
152
- preset . setPresetsPlusIncluded ( folder , presetsFile ) ;
153
- this . _presetsChangedEmitter . fire ( presetsFile ) ;
154
+ const clone = lodash . cloneDeep ( presetsFile ) ;
155
+ preset . setPresetsPlusIncluded ( folder , clone ) ;
156
+ this . _presetsChangedEmitter . fire ( clone ) ;
154
157
} ;
155
158
156
159
private readonly _setUserPresetsPlusIncluded = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
157
- preset . setUserPresetsPlusIncluded ( folder , presetsFile ) ;
158
- this . _userPresetsChangedEmitter . fire ( presetsFile ) ;
160
+ const clone = lodash . cloneDeep ( presetsFile ) ;
161
+ preset . setUserPresetsPlusIncluded ( folder , clone ) ;
162
+ this . _userPresetsChangedEmitter . fire ( clone ) ;
159
163
} ;
160
164
161
165
private readonly _setOriginalPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
162
- preset . setOriginalPresetsFile ( folder , presetsFile ) ;
166
+ const clone = lodash . cloneDeep ( presetsFile ) ;
167
+ preset . setOriginalPresetsFile ( folder , clone ) ;
163
168
} ;
164
169
165
170
private readonly _setOriginalUserPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
166
- preset . setOriginalUserPresetsFile ( folder , presetsFile ) ;
171
+ const clone = lodash . cloneDeep ( presetsFile ) ;
172
+ preset . setOriginalUserPresetsFile ( folder , clone ) ;
167
173
} ;
168
174
169
175
private async resetPresetsFile ( file : string , setExpandedPresets : SetPresetsFileFunc , setPresetsPlusIncluded : SetPresetsFileFunc , setOriginalPresetsFile : SetPresetsFileFunc , fileExistCallback : ( fileExists : boolean ) => void , referencedFiles : Map < string , preset . PresetsFile | undefined > ) {
@@ -176,8 +182,7 @@ export class PresetsController implements vscode.Disposable {
176
182
let presetsFile = await this . parsePresetsFile ( presetsFileBuffer , file ) ;
177
183
referencedFiles . set ( file , presetsFile ) ;
178
184
if ( presetsFile ) {
179
- // Parse again so we automatically have a copy by value
180
- setOriginalPresetsFile ( this . folderPath , await this . parsePresetsFile ( presetsFileBuffer , file ) ) ;
185
+ setOriginalPresetsFile ( this . folderPath , presetsFile ) ;
181
186
} else {
182
187
setOriginalPresetsFile ( this . folderPath , undefined ) ;
183
188
}
@@ -188,14 +193,12 @@ export class PresetsController implements vscode.Disposable {
188
193
this . populatePrivatePresetsFields ( presetsFile , file ) ;
189
194
await this . mergeIncludeFiles ( presetsFile , file , referencedFiles ) ;
190
195
191
- const copyOfPresetsFile = lodash . cloneDeep ( presetsFile ) ;
192
196
// add the include files to the original presets file
193
- setPresetsPlusIncluded ( this . folderPath , copyOfPresetsFile ) ;
197
+ setPresetsPlusIncluded ( this . folderPath , presetsFile ) ;
194
198
195
- const copyAgain = lodash . cloneDeep ( copyOfPresetsFile ) ;
196
199
// set the pre-expanded version so we can call expandPresetsFile on it
197
- setExpandedPresets ( this . folderPath , copyAgain ) ;
198
- presetsFile = await this . expandPresetsFile ( copyAgain ) ;
200
+ setExpandedPresets ( this . folderPath , presetsFile ) ;
201
+ presetsFile = await this . expandPresetsFile ( presetsFile ) ;
199
202
}
200
203
201
204
setExpandedPresets ( this . folderPath , presetsFile ) ;
@@ -1718,14 +1721,12 @@ export class PresetsController implements vscode.Disposable {
1718
1721
return undefined ;
1719
1722
}
1720
1723
1721
- const clonedPresetsFile = lodash . cloneDeep ( presetsFile ) ;
1722
-
1723
1724
log . info ( localize ( 'expanding.presets.file' , 'Expanding presets file {0}' , presetsFile ?. __path || '' ) ) ;
1724
1725
1725
1726
const expansionErrors : ExpansionErrorHandler = { errorList : [ ] , tempErrorList : [ ] } ;
1726
1727
1727
1728
const expandedConfigurePresets : preset . ConfigurePreset [ ] = [ ] ;
1728
- for ( const configurePreset of clonedPresetsFile ?. configurePresets || [ ] ) {
1729
+ for ( const configurePreset of presetsFile ?. configurePresets || [ ] ) {
1729
1730
const inheritedPreset = await preset . getConfigurePresetInherits (
1730
1731
this . folderPath ,
1731
1732
configurePreset . name ,
@@ -1747,7 +1748,7 @@ export class PresetsController implements vscode.Disposable {
1747
1748
}
1748
1749
1749
1750
const expandedBuildPresets : preset . BuildPreset [ ] = [ ] ;
1750
- for ( const buildPreset of clonedPresetsFile ?. buildPresets || [ ] ) {
1751
+ for ( const buildPreset of presetsFile ?. buildPresets || [ ] ) {
1751
1752
const inheritedPreset = await preset . getBuildPresetInherits (
1752
1753
this . folderPath ,
1753
1754
buildPreset . name ,
@@ -1771,7 +1772,7 @@ export class PresetsController implements vscode.Disposable {
1771
1772
}
1772
1773
1773
1774
const expandedTestPresets : preset . TestPreset [ ] = [ ] ;
1774
- for ( const testPreset of clonedPresetsFile ?. testPresets || [ ] ) {
1775
+ for ( const testPreset of presetsFile ?. testPresets || [ ] ) {
1775
1776
const inheritedPreset = await preset . getTestPresetInherits (
1776
1777
this . folderPath ,
1777
1778
testPreset . name ,
@@ -1795,7 +1796,7 @@ export class PresetsController implements vscode.Disposable {
1795
1796
}
1796
1797
1797
1798
const expandedPackagePresets : preset . PackagePreset [ ] = [ ] ;
1798
- for ( const packagePreset of clonedPresetsFile ?. packagePresets || [ ] ) {
1799
+ for ( const packagePreset of presetsFile ?. packagePresets || [ ] ) {
1799
1800
const inheritedPreset = await preset . getPackagePresetInherits (
1800
1801
this . folderPath ,
1801
1802
packagePreset . name ,
@@ -1819,7 +1820,7 @@ export class PresetsController implements vscode.Disposable {
1819
1820
}
1820
1821
1821
1822
const expandedWorkflowPresets : preset . WorkflowPreset [ ] = [ ] ;
1822
- for ( const workflowPreset of clonedPresetsFile ?. workflowPresets || [ ] ) {
1823
+ for ( const workflowPreset of presetsFile ?. workflowPresets || [ ] ) {
1823
1824
const inheritedPreset = await preset . getWorkflowPresetInherits (
1824
1825
this . folderPath ,
1825
1826
workflowPreset . name ,
@@ -1837,7 +1838,7 @@ export class PresetsController implements vscode.Disposable {
1837
1838
1838
1839
if ( expansionErrors . errorList . length > 0 ) {
1839
1840
log . error ( localize ( 'expansion.errors' , 'Expansion errors found in the presets file.' ) ) ;
1840
- await this . reportPresetsFileErrors ( clonedPresetsFile . __path , expansionErrors ) ;
1841
+ await this . reportPresetsFileErrors ( presetsFile . __path , expansionErrors ) ;
1841
1842
return undefined ;
1842
1843
} else {
1843
1844
log . info ( localize ( 'successfully.expanded.presets.file' , 'Successfully expanded presets file {0}' , presetsFile ?. __path || '' ) ) ;
@@ -1851,7 +1852,7 @@ export class PresetsController implements vscode.Disposable {
1851
1852
presetsFile . workflowPresets = expandedWorkflowPresets ;
1852
1853
1853
1854
// clear out the errors since there are none now
1854
- collections . presets . set ( vscode . Uri . file ( clonedPresetsFile . __path || "" ) , undefined ) ;
1855
+ collections . presets . set ( vscode . Uri . file ( presetsFile . __path || "" ) , undefined ) ;
1855
1856
1856
1857
return presetsFile ;
1857
1858
}
0 commit comments