@adminide-stack/core 7.0.1-alpha.0 → 7.0.1-alpha.3

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.
Files changed (93) hide show
  1. package/lib/constants/billing-plan.js +1 -1
  2. package/lib/constants/billing-plan.js.map +1 -0
  3. package/lib/constants/configuration.js +1 -1
  4. package/lib/constants/configuration.js.map +1 -0
  5. package/lib/constants/constants.js +1 -1
  6. package/lib/constants/constants.js.map +1 -0
  7. package/lib/constants/default-workspace-config.js +1 -1
  8. package/lib/constants/default-workspace-config.js.map +1 -0
  9. package/lib/constants/routes.js +1 -1
  10. package/lib/constants/routes.js.map +1 -0
  11. package/lib/constants/types.js +14 -14
  12. package/lib/constants/types.js.map +1 -0
  13. package/lib/constants/urls.js +1 -1
  14. package/lib/constants/urls.js.map +1 -0
  15. package/lib/core/configurations/configuration.js +546 -434
  16. package/lib/core/configurations/configuration.js.map +1 -0
  17. package/lib/core/configurations/events/ConfigurationChangeEvent.js +52 -41
  18. package/lib/core/configurations/events/ConfigurationChangeEvent.js.map +1 -0
  19. package/lib/core/configurations/helpers/configuration.js +138 -149
  20. package/lib/core/configurations/helpers/configuration.js.map +1 -0
  21. package/lib/core/configurations/models/ConfigurationModel.js +186 -187
  22. package/lib/core/configurations/models/ConfigurationModel.js.map +1 -0
  23. package/lib/core/disposable.js +67 -68
  24. package/lib/core/disposable.js.map +1 -0
  25. package/lib/core/event.js +240 -230
  26. package/lib/core/event.js.map +1 -0
  27. package/lib/core/organization/configuration.js +15 -14
  28. package/lib/core/organization/configuration.js.map +1 -0
  29. package/lib/core/organization/helpers/organization-helpers.js +7 -14
  30. package/lib/core/organization/helpers/organization-helpers.js.map +1 -0
  31. package/lib/core/organization/organization.js +132 -105
  32. package/lib/core/organization/organization.js.map +1 -0
  33. package/lib/core/path.js +155 -151
  34. package/lib/core/path.js.map +1 -0
  35. package/lib/enums/connection-status.js +5 -5
  36. package/lib/enums/connection-status.js.map +1 -0
  37. package/lib/enums/integration-configuration-status.js +4 -4
  38. package/lib/enums/integration-configuration-status.js.map +1 -0
  39. package/lib/enums/integrations-configuration-steps.js +7 -7
  40. package/lib/enums/integrations-configuration-steps.js.map +1 -0
  41. package/lib/enums/integrations-connection-names.js +11 -11
  42. package/lib/enums/integrations-connection-names.js.map +1 -0
  43. package/lib/enums/integrations.js +9 -9
  44. package/lib/enums/integrations.js.map +1 -0
  45. package/lib/enums/permissions.js +6 -6
  46. package/lib/enums/permissions.js.map +1 -0
  47. package/lib/enums/team-member-status.js +3 -3
  48. package/lib/enums/team-member-status.js.map +1 -0
  49. package/lib/errors/auth-error-messages.js +23 -23
  50. package/lib/errors/auth-error-messages.js.map +1 -0
  51. package/lib/errors/auth-error.js +10 -6
  52. package/lib/errors/auth-error.js.map +1 -0
  53. package/lib/index.js +1 -1
  54. package/lib/index.js.map +1 -0
  55. package/lib/interfaces/configuration/configuration.js +31 -31
  56. package/lib/interfaces/configuration/configuration.js.map +1 -0
  57. package/lib/interfaces/generated/generated-models.d.ts +267 -13
  58. package/lib/interfaces/generated/generated-models.js +15744 -919
  59. package/lib/interfaces/generated/generated-models.js.map +1 -0
  60. package/lib/interfaces/organization/organization-context.js +12 -17
  61. package/lib/interfaces/organization/organization-context.js.map +1 -0
  62. package/lib/modules/account-api/enums/index.js +65 -65
  63. package/lib/modules/account-api/enums/index.js.map +1 -0
  64. package/lib/modules/billing-api/enums/index.js +19 -19
  65. package/lib/modules/billing-api/enums/index.js.map +1 -0
  66. package/lib/modules/inbox/enums/index.js +24 -24
  67. package/lib/modules/inbox/enums/index.js.map +1 -0
  68. package/lib/routes.json +1 -0
  69. package/lib/services/abstract-configuration.js +113 -110
  70. package/lib/services/abstract-configuration.js.map +1 -0
  71. package/lib/services/abstract-organization-context-service.js +97 -89
  72. package/lib/services/abstract-organization-context-service.js.map +1 -0
  73. package/lib/utils/configuration-utils.js +9 -9
  74. package/lib/utils/configuration-utils.js.map +1 -0
  75. package/lib/utils/date-utils.js +3 -3
  76. package/lib/utils/date-utils.js.map +1 -0
  77. package/lib/utils/flatten-utils.js +36 -40
  78. package/lib/utils/flatten-utils.js.map +1 -0
  79. package/lib/utils/generate-uri.js +24 -14
  80. package/lib/utils/generate-uri.js.map +1 -0
  81. package/lib/utils/generated-settings-id.js +5 -5
  82. package/lib/utils/generated-settings-id.js.map +1 -0
  83. package/lib/utils/omit-deep.js +8 -8
  84. package/lib/utils/omit-deep.js.map +1 -0
  85. package/lib/utils/roles-utils.js +6 -2
  86. package/lib/utils/roles-utils.js.map +1 -0
  87. package/lib/utils/uri.js +10 -12
  88. package/lib/utils/uri.js.map +1 -0
  89. package/lib/utils/utils.js +20 -15
  90. package/lib/utils/utils.js.map +1 -0
  91. package/lib/utils/validations.js +3 -3
  92. package/lib/utils/validations.js.map +1 -0
  93. package/package.json +2 -2
@@ -7,448 +7,560 @@ import {URI}from'@vscode-alt/monaco-editor/esm/vs/base/common/uri.js';import {Re
7
7
  * 09/18/2021: We converted `localUser` -> `application`; `remoteUser` => `machine`
8
8
  */
9
9
  class Configuration {
10
- constructor(_defaultConfiguration, _policyConfiguration = new ConfigurationModel(), _applicationConfiguration = new ConfigurationModel(), _userConfiguration = new ConfigurationModel(), _machineConfiguration = new ConfigurationModel(), _organizationConfiguration = new ConfigurationModel(), _resourceConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {
11
- this._defaultConfiguration = _defaultConfiguration;
12
- this._policyConfiguration = _policyConfiguration;
13
- this._applicationConfiguration = _applicationConfiguration;
14
- this._userConfiguration = _userConfiguration;
15
- this._machineConfiguration = _machineConfiguration;
16
- this._organizationConfiguration = _organizationConfiguration;
17
- this._resourceConfigurations = _resourceConfigurations;
18
- this._memoryConfiguration = _memoryConfiguration;
19
- this._memoryConfigurationByResource = _memoryConfigurationByResource;
20
- this._freeze = _freeze;
21
- this._organizationConsolidatedConfiguration = null;
22
- this._resourcesConsolidatedConfigurations = new ResourceMap();
23
- }
24
- getValue(section, overrides, organization, externalConfiguration) {
25
- const consolidateConfigurationModel = this.getConsolidateConfigurationModel(section, overrides, organization);
26
- // if (externalConfiguration) {
27
- // const { contents, keys } = externalConfiguration;
28
- // const externalModel = new ConfigurationModel(contents, keys);
29
- // const withExternalModel = consolidateConfigurationModel.merge(externalModel);
30
- // return withExternalModel.getValue(section);
31
- // }
32
- return consolidateConfigurationModel.getValue(section);
33
- }
34
- updateValue(key, value, overrides = {}) {
35
- let memoryConfiguration;
36
- if (overrides.resource) {
37
- memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);
38
- if (!memoryConfiguration) {
39
- memoryConfiguration = new ConfigurationModel();
40
- this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);
41
- }
42
- }
43
- else {
44
- memoryConfiguration = this._memoryConfiguration;
45
- }
46
- if (value === undefined) {
47
- memoryConfiguration.removeValue(key);
48
- }
49
- else {
50
- memoryConfiguration.setValue(key, value);
51
- this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);
52
- }
53
- if (!overrides.resource) {
54
- this._organizationConsolidatedConfiguration = null;
55
- }
56
- }
57
- inspect(key, overrides, organization) {
58
- const consolidateConfigurationModel = this.getConsolidateConfigurationModel(key, overrides, organization);
59
- const resourceConfigurationModel = this.getResourceConfigurationModelForResource(overrides.resource, organization);
60
- const memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;
61
- const defaultValue = overrides.overrideIdentifier ? this._defaultConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._defaultConfiguration.freeze().getValue(key);
62
- const policyValue = this._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration.freeze().getValue(key);
63
- const applicationValue = this.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration.freeze().getValue(key);
64
- const userValue = overrides.overrideIdentifier ? this.userConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.userConfiguration.freeze().getValue(key);
65
- const machineValue = overrides.overrideIdentifier ? this.machineConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.machineConfiguration.freeze().getValue(key);
66
- const organizationValue = organization ? overrides.overrideIdentifier ? this._organizationConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._organizationConfiguration.freeze().getValue(key) : undefined; //Check on organization exists or not because _organizationConfiguration is never null
67
- const organizationResourceValue = resourceConfigurationModel ? overrides.overrideIdentifier ? resourceConfigurationModel.freeze().override(overrides.overrideIdentifier).getValue(key) : resourceConfigurationModel.freeze().getValue(key) : undefined;
68
- const memoryValue = overrides.overrideIdentifier ? memoryConfigurationModel.override(overrides.overrideIdentifier).getValue(key) : memoryConfigurationModel.getValue(key);
69
- const value = consolidateConfigurationModel.getValue(key);
70
- const overrideIdentifiers = arrays.distinct(consolidateConfigurationModel.overrides.map(override => override.identifiers).flat()).filter(overrideIdentifier => consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined);
71
- return {
72
- defaultValue,
73
- policyValue,
74
- applicationValue,
75
- userValue,
76
- machineValue,
77
- organizationValue,
78
- organizationResourceValue,
79
- memoryValue,
80
- value,
81
- default: defaultValue !== undefined ? { value: this._defaultConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this._defaultConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
82
- policy: policyValue !== undefined ? { value: policyValue } : undefined,
83
- application: applicationValue !== undefined ? { value: applicationValue, override: overrides.overrideIdentifier ? this.applicationConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
84
- user: userValue !== undefined ? { value: this.userConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this.userConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
85
- machine: machineValue !== undefined ? { value: this.machineConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this.machineConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
86
- organization: organizationValue !== undefined ? { value: this._organizationConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this._organizationConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
87
- organizationResource: organizationResourceValue !== undefined ? { value: resourceConfigurationModel?.freeze().getValue(key), override: overrides.overrideIdentifier ? resourceConfigurationModel?.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
88
- memory: memoryValue !== undefined ? { value: memoryConfigurationModel.getValue(key), override: overrides.overrideIdentifier ? memoryConfigurationModel.getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,
89
- overrideIdentifiers: overrideIdentifiers.length ? overrideIdentifiers : undefined
90
- };
91
- }
92
- keys(organization) {
93
- const resourceConfigurationModel = this.getResourceConfigurationModelForResource(undefined, organization);
94
- return {
95
- default: this._defaultConfiguration.freeze().keys,
96
- user: this.userConfiguration.freeze().keys,
97
- organization: this._organizationConfiguration.freeze().keys,
98
- organizationResource: resourceConfigurationModel ? resourceConfigurationModel.freeze().keys : []
99
- };
100
- }
101
- updateDefaultConfiguration(defaultConfiguration) {
102
- this._defaultConfiguration = defaultConfiguration;
103
- this._organizationConsolidatedConfiguration = null;
104
- this._resourcesConsolidatedConfigurations.clear();
105
- }
106
- updatePolicyConfiguration(_policyConfiguration) {
107
- this._policyConfiguration = _policyConfiguration;
108
- }
109
- updateApplicationConfiguration(applicationConfiguration) {
110
- this._applicationConfiguration = applicationConfiguration;
111
- //this._machineConfiguration = null;
112
- this._organizationConsolidatedConfiguration = null;
113
- this._resourcesConsolidatedConfigurations.clear();
114
- }
115
- updateUserConfiguration(userConfiguration) {
116
- //this._applicationConfiguration = null;
117
- this._userConfiguration = userConfiguration;
118
- //this._machineConfiguration = null;
119
- this._organizationConsolidatedConfiguration = null;
120
- this._resourcesConsolidatedConfigurations.clear();
121
- }
122
- updateMachineConfiguration(machineConfiguration) {
123
- //this._applicationConfiguration = null;
124
- //this._userConfiguration = null;
125
- this._machineConfiguration = machineConfiguration;
126
- this._organizationConsolidatedConfiguration = null;
127
- this._resourcesConsolidatedConfigurations.clear();
128
- }
129
- updateOrganizationConfiguration(organizationConfiguration) {
130
- this._organizationConfiguration = organizationConfiguration;
131
- this._organizationConsolidatedConfiguration = organizationConfiguration;
132
- this._resourcesConsolidatedConfigurations.clear();
133
- }
134
- updateResourceConfiguration(resource, configuration) {
135
- this._resourceConfigurations.set(resource, configuration);
136
- this._resourcesConsolidatedConfigurations.delete(resource);
137
- }
138
- addResourceConfiguration(resource, configuration) {
139
- if (this._resourceConfigurations.get(resource)) {
140
- console.log('resource already exist', resource);
141
- // this.updateResourceConfiguration(resource, configuration);
142
- }
143
- this._resourceConfigurations.set(resource, configuration);
144
- }
145
- deleteResourceConfiguration(resource) {
146
- this.resourceConfigurations.delete(resource);
147
- this._resourcesConsolidatedConfigurations.delete(resource);
148
- }
149
- compareAndUpdateDefaultConfiguration(defaults, keys) {
150
- const overrides = [];
151
- if (!keys) {
152
- const { added, updated, removed } = compare(this._defaultConfiguration, defaults);
153
- keys = [...added, ...updated, ...removed];
154
- }
155
- for (const key of keys) {
156
- for (const overrideIdentifier of overrideIdentifiersFromKey(key)) {
157
- const fromKeys = this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier);
158
- const toKeys = defaults.getKeysForOverrideIdentifier(overrideIdentifier);
159
- const keys = [
160
- ...toKeys.filter(key => fromKeys.indexOf(key) === -1),
161
- ...fromKeys.filter(key => toKeys.indexOf(key) === -1),
162
- ...fromKeys.filter(key => !objects.equals(this._defaultConfiguration.override(overrideIdentifier).getValue(key), defaults.override(overrideIdentifier).getValue(key)))
163
- ];
164
- overrides.push([overrideIdentifier, keys]);
165
- }
166
- }
167
- this.updateDefaultConfiguration(defaults);
168
- return { keys, overrides };
169
- }
170
- compareAndUpdatePolicyConfiguration(policyConfiguration) {
171
- const { added, updated, removed } = compare(this._policyConfiguration, policyConfiguration);
172
- const keys = [...added, ...updated, ...removed];
173
- if (keys.length) {
174
- this.updatePolicyConfiguration(policyConfiguration);
175
- }
176
- return { keys, overrides: [] };
177
- }
178
- compareAndUpdateApplicationConfiguration(application) {
179
- const { added, updated, removed, overrides } = compare(this.applicationConfiguration, application);
180
- const keys = [...added, ...updated, ...removed];
181
- if (keys.length) {
182
- this.updateApplicationConfiguration(application);
183
- }
184
- return { keys, overrides };
185
- }
186
- compareAndUpdateUserConfiguration(user) {
187
- const { added, updated, removed, overrides } = compare(this.userConfiguration, user);
188
- const keys = [...added, ...updated, ...removed];
189
- if (keys.length) {
190
- this.updateUserConfiguration(user);
191
- }
192
- return { keys, overrides };
193
- }
194
- compareAndUpdateMachineConfiguration(machine) {
195
- const { added, updated, removed, overrides } = compare(this.machineConfiguration, machine);
196
- let keys = [...added, ...updated, ...removed];
197
- if (keys.length) {
198
- this.updateMachineConfiguration(machine);
199
- }
200
- return { keys, overrides };
201
- }
202
- compareAndUpdateOrganizationConfiguration(organizationConfiguration) {
203
- const { added, updated, removed, overrides } = compare(this.organizationConfiguration, organizationConfiguration);
204
- let keys = [...added, ...updated, ...removed];
205
- if (overrides.length) {
206
- this.updateOrganizationConfiguration(organizationConfiguration);
207
- }
208
- return { keys, overrides };
209
- }
210
- compareAndUpdateResourceConfiguration(resource, resourceConfiguration) {
211
- const currentResourceConfiguration = this.resourceConfigurations.get(resource);
212
- const { added, updated, removed, overrides } = compare(currentResourceConfiguration, resourceConfiguration);
213
- let keys = [...added, ...updated, ...removed];
214
- if (keys.length || !currentResourceConfiguration) {
215
- this.updateResourceConfiguration(resource, resourceConfiguration);
216
- }
217
- return { keys, overrides };
218
- }
219
- compareAndDeleteResourceConfiguration(resource) {
220
- const resourceConfig = this.resourceConfigurations.get(resource);
221
- if (!resourceConfig) {
222
- throw new Error('Unknown resource ' + resource.fsPath);
223
- }
224
- this.deleteResourceConfiguration(resource);
225
- const { added, updated, removed, overrides } = compare(resourceConfig, undefined);
226
- return { keys: [...added, ...updated, ...removed], overrides };
227
- }
228
- get defaults() {
229
- return this._defaultConfiguration;
230
- }
231
- get userConfiguration() {
232
- return this._userConfiguration;
233
- }
234
- get applicationConfiguration() {
235
- return this._applicationConfiguration;
236
- }
237
- get machineConfiguration() {
238
- return this._machineConfiguration;
239
- }
240
- get organizationConfiguration() {
241
- return this._organizationConfiguration;
242
- }
243
- get resourceConfigurations() {
244
- return this._resourceConfigurations;
245
- }
246
- getConsolidateConfigurationModel(section, overrides, organization) {
247
- let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, organization);
248
- if (overrides.overrideIdentifier) {
249
- configurationModel = configurationModel.override(overrides.overrideIdentifier);
250
- }
251
- if (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {
252
- configurationModel = configurationModel.merge(this._policyConfiguration);
253
- }
254
- return configurationModel;
255
- }
256
- getConsolidatedConfigurationModelForResource({ resource }, organization) {
257
- let consolidateConfiguration = this.getOrganizationConsolidatedConfiguration();
258
- if (organization && resource) {
259
- const root = organization.getResource(resource);
260
- console.log('---root-', root);
261
- if (root) {
262
- //@sri instead of uri, we use resource.
263
- consolidateConfiguration = this.getResourceConsolidatedConfiguration(resource) || consolidateConfiguration;
264
- }
265
- else {
266
- // if not organization resource
267
- consolidateConfiguration = this.getResourceConsolidatedConfiguration(resource) || new ConfigurationModel();
268
- }
269
- const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);
270
- if (memoryConfigurationForResource) {
271
- consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);
272
- }
273
- }
274
- return consolidateConfiguration;
275
- }
276
- getOrganizationConsolidatedConfiguration() {
277
- if (!this._organizationConsolidatedConfiguration) {
278
- this._organizationConsolidatedConfiguration = this._defaultConfiguration.merge(this._applicationConfiguration, this._userConfiguration, this._organizationConfiguration, this._memoryConfiguration);
279
- if (this._freeze) {
280
- this._organizationConfiguration = this._organizationConfiguration.freeze();
281
- }
282
- }
283
- return this._organizationConsolidatedConfiguration;
284
- }
285
- getResourceConsolidatedConfiguration(resource) {
286
- let resourceConsolidatedConfiguration = this._resourcesConsolidatedConfigurations.get(resource);
287
- if (!resourceConsolidatedConfiguration) {
288
- const organizationConsolidateConfiguration = this.getOrganizationConsolidatedConfiguration();
289
- const resourceConfiguration = this._resourceConfigurations.get(resource);
290
- if (resourceConfiguration) {
291
- resourceConsolidatedConfiguration = organizationConsolidateConfiguration.merge(resourceConfiguration);
292
- if (this._freeze) {
293
- resourceConsolidatedConfiguration = resourceConsolidatedConfiguration.freeze();
294
- }
295
- this._resourcesConsolidatedConfigurations.set(resource, resourceConsolidatedConfiguration);
296
- }
297
- else {
298
- resourceConsolidatedConfiguration = organizationConsolidateConfiguration;
299
- }
300
- }
301
- return resourceConsolidatedConfiguration;
302
- }
303
- getResourceConfigurationModelForResource(resource, organization) {
304
- if (organization && resource) {
305
- const root = organization.getResource(resource);
306
- if (root) {
307
- return types.withUndefinedAsNull(this._resourceConfigurations.get(root.uri));
308
- }
10
+ _defaultConfiguration;
11
+ _policyConfiguration;
12
+ _applicationConfiguration;
13
+ _userConfiguration;
14
+ _machineConfiguration;
15
+ _organizationConfiguration;
16
+ _resourceConfigurations;
17
+ _memoryConfiguration;
18
+ _memoryConfigurationByResource;
19
+ _freeze;
20
+ _organizationConsolidatedConfiguration = null;
21
+ _resourcesConsolidatedConfigurations = new ResourceMap();
22
+ constructor(_defaultConfiguration, _policyConfiguration = new ConfigurationModel(), _applicationConfiguration = new ConfigurationModel(), _userConfiguration = new ConfigurationModel(), _machineConfiguration = new ConfigurationModel(), _organizationConfiguration = new ConfigurationModel(), _resourceConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {
23
+ this._defaultConfiguration = _defaultConfiguration;
24
+ this._policyConfiguration = _policyConfiguration;
25
+ this._applicationConfiguration = _applicationConfiguration;
26
+ this._userConfiguration = _userConfiguration;
27
+ this._machineConfiguration = _machineConfiguration;
28
+ this._organizationConfiguration = _organizationConfiguration;
29
+ this._resourceConfigurations = _resourceConfigurations;
30
+ this._memoryConfiguration = _memoryConfiguration;
31
+ this._memoryConfigurationByResource = _memoryConfigurationByResource;
32
+ this._freeze = _freeze;
33
+ }
34
+ getValue(section, overrides, organization, externalConfiguration) {
35
+ const consolidateConfigurationModel = this.getConsolidateConfigurationModel(section, overrides, organization);
36
+ // if (externalConfiguration) {
37
+ // const { contents, keys } = externalConfiguration;
38
+ // const externalModel = new ConfigurationModel(contents, keys);
39
+ // const withExternalModel = consolidateConfigurationModel.merge(externalModel);
40
+ // return withExternalModel.getValue(section);
41
+ // }
42
+ return consolidateConfigurationModel.getValue(section);
43
+ }
44
+ updateValue(key, value, overrides = {}) {
45
+ let memoryConfiguration;
46
+ if (overrides.resource) {
47
+ memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);
48
+ if (!memoryConfiguration) {
49
+ memoryConfiguration = new ConfigurationModel();
50
+ this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);
51
+ }
52
+ } else {
53
+ memoryConfiguration = this._memoryConfiguration;
54
+ }
55
+ if (value === undefined) {
56
+ memoryConfiguration.removeValue(key);
57
+ } else {
58
+ memoryConfiguration.setValue(key, value);
59
+ this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);
60
+ }
61
+ if (!overrides.resource) {
62
+ this._organizationConsolidatedConfiguration = null;
63
+ }
64
+ }
65
+ inspect(key, overrides, organization) {
66
+ const consolidateConfigurationModel = this.getConsolidateConfigurationModel(key, overrides, organization);
67
+ const resourceConfigurationModel = this.getResourceConfigurationModelForResource(overrides.resource, organization);
68
+ const memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;
69
+ const defaultValue = overrides.overrideIdentifier ? this._defaultConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._defaultConfiguration.freeze().getValue(key);
70
+ const policyValue = this._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration.freeze().getValue(key);
71
+ const applicationValue = this.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration.freeze().getValue(key);
72
+ const userValue = overrides.overrideIdentifier ? this.userConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.userConfiguration.freeze().getValue(key);
73
+ const machineValue = overrides.overrideIdentifier ? this.machineConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.machineConfiguration.freeze().getValue(key);
74
+ const organizationValue = organization ? overrides.overrideIdentifier ? this._organizationConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._organizationConfiguration.freeze().getValue(key) : undefined; //Check on organization exists or not because _organizationConfiguration is never null
75
+ const organizationResourceValue = resourceConfigurationModel ? overrides.overrideIdentifier ? resourceConfigurationModel.freeze().override(overrides.overrideIdentifier).getValue(key) : resourceConfigurationModel.freeze().getValue(key) : undefined;
76
+ const memoryValue = overrides.overrideIdentifier ? memoryConfigurationModel.override(overrides.overrideIdentifier).getValue(key) : memoryConfigurationModel.getValue(key);
77
+ const value = consolidateConfigurationModel.getValue(key);
78
+ const overrideIdentifiers = arrays.distinct(consolidateConfigurationModel.overrides.map(override => override.identifiers).flat()).filter(overrideIdentifier => consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined);
79
+ return {
80
+ defaultValue,
81
+ policyValue,
82
+ applicationValue,
83
+ userValue,
84
+ machineValue,
85
+ organizationValue,
86
+ organizationResourceValue,
87
+ memoryValue,
88
+ value,
89
+ default: defaultValue !== undefined ? {
90
+ value: this._defaultConfiguration.freeze().getValue(key),
91
+ override: overrides.overrideIdentifier ? this._defaultConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
92
+ } : undefined,
93
+ policy: policyValue !== undefined ? {
94
+ value: policyValue
95
+ } : undefined,
96
+ application: applicationValue !== undefined ? {
97
+ value: applicationValue,
98
+ override: overrides.overrideIdentifier ? this.applicationConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
99
+ } : undefined,
100
+ user: userValue !== undefined ? {
101
+ value: this.userConfiguration.freeze().getValue(key),
102
+ override: overrides.overrideIdentifier ? this.userConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
103
+ } : undefined,
104
+ machine: machineValue !== undefined ? {
105
+ value: this.machineConfiguration.freeze().getValue(key),
106
+ override: overrides.overrideIdentifier ? this.machineConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
107
+ } : undefined,
108
+ organization: organizationValue !== undefined ? {
109
+ value: this._organizationConfiguration.freeze().getValue(key),
110
+ override: overrides.overrideIdentifier ? this._organizationConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
111
+ } : undefined,
112
+ organizationResource: organizationResourceValue !== undefined ? {
113
+ value: resourceConfigurationModel?.freeze().getValue(key),
114
+ override: overrides.overrideIdentifier ? resourceConfigurationModel?.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined
115
+ } : undefined,
116
+ memory: memoryValue !== undefined ? {
117
+ value: memoryConfigurationModel.getValue(key),
118
+ override: overrides.overrideIdentifier ? memoryConfigurationModel.getOverrideValue(key, overrides.overrideIdentifier) : undefined
119
+ } : undefined,
120
+ overrideIdentifiers: overrideIdentifiers.length ? overrideIdentifiers : undefined
121
+ };
122
+ }
123
+ keys(organization) {
124
+ const resourceConfigurationModel = this.getResourceConfigurationModelForResource(undefined, organization);
125
+ return {
126
+ default: this._defaultConfiguration.freeze().keys,
127
+ user: this.userConfiguration.freeze().keys,
128
+ organization: this._organizationConfiguration.freeze().keys,
129
+ organizationResource: resourceConfigurationModel ? resourceConfigurationModel.freeze().keys : []
130
+ };
131
+ }
132
+ updateDefaultConfiguration(defaultConfiguration) {
133
+ this._defaultConfiguration = defaultConfiguration;
134
+ this._organizationConsolidatedConfiguration = null;
135
+ this._resourcesConsolidatedConfigurations.clear();
136
+ }
137
+ updatePolicyConfiguration(_policyConfiguration) {
138
+ this._policyConfiguration = _policyConfiguration;
139
+ }
140
+ updateApplicationConfiguration(applicationConfiguration) {
141
+ this._applicationConfiguration = applicationConfiguration;
142
+ //this._machineConfiguration = null;
143
+ this._organizationConsolidatedConfiguration = null;
144
+ this._resourcesConsolidatedConfigurations.clear();
145
+ }
146
+ updateUserConfiguration(userConfiguration) {
147
+ //this._applicationConfiguration = null;
148
+ this._userConfiguration = userConfiguration;
149
+ //this._machineConfiguration = null;
150
+ this._organizationConsolidatedConfiguration = null;
151
+ this._resourcesConsolidatedConfigurations.clear();
152
+ }
153
+ updateMachineConfiguration(machineConfiguration) {
154
+ //this._applicationConfiguration = null;
155
+ //this._userConfiguration = null;
156
+ this._machineConfiguration = machineConfiguration;
157
+ this._organizationConsolidatedConfiguration = null;
158
+ this._resourcesConsolidatedConfigurations.clear();
159
+ }
160
+ updateOrganizationConfiguration(organizationConfiguration) {
161
+ this._organizationConfiguration = organizationConfiguration;
162
+ this._organizationConsolidatedConfiguration = organizationConfiguration;
163
+ this._resourcesConsolidatedConfigurations.clear();
164
+ }
165
+ updateResourceConfiguration(resource, configuration) {
166
+ this._resourceConfigurations.set(resource, configuration);
167
+ this._resourcesConsolidatedConfigurations.delete(resource);
168
+ }
169
+ addResourceConfiguration(resource, configuration) {
170
+ if (this._resourceConfigurations.get(resource)) {
171
+ console.log('resource already exist', resource);
172
+ // this.updateResourceConfiguration(resource, configuration);
173
+ }
174
+ this._resourceConfigurations.set(resource, configuration);
175
+ }
176
+ deleteResourceConfiguration(resource) {
177
+ this.resourceConfigurations.delete(resource);
178
+ this._resourcesConsolidatedConfigurations.delete(resource);
179
+ }
180
+ compareAndUpdateDefaultConfiguration(defaults, keys) {
181
+ const overrides = [];
182
+ if (!keys) {
183
+ const {
184
+ added,
185
+ updated,
186
+ removed
187
+ } = compare(this._defaultConfiguration, defaults);
188
+ keys = [...added, ...updated, ...removed];
189
+ }
190
+ for (const key of keys) {
191
+ for (const overrideIdentifier of overrideIdentifiersFromKey(key)) {
192
+ const fromKeys = this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier);
193
+ const toKeys = defaults.getKeysForOverrideIdentifier(overrideIdentifier);
194
+ const keys = [...toKeys.filter(key => fromKeys.indexOf(key) === -1), ...fromKeys.filter(key => toKeys.indexOf(key) === -1), ...fromKeys.filter(key => !objects.equals(this._defaultConfiguration.override(overrideIdentifier).getValue(key), defaults.override(overrideIdentifier).getValue(key)))];
195
+ overrides.push([overrideIdentifier, keys]);
196
+ }
197
+ }
198
+ this.updateDefaultConfiguration(defaults);
199
+ return {
200
+ keys,
201
+ overrides
202
+ };
203
+ }
204
+ compareAndUpdatePolicyConfiguration(policyConfiguration) {
205
+ const {
206
+ added,
207
+ updated,
208
+ removed
209
+ } = compare(this._policyConfiguration, policyConfiguration);
210
+ const keys = [...added, ...updated, ...removed];
211
+ if (keys.length) {
212
+ this.updatePolicyConfiguration(policyConfiguration);
213
+ }
214
+ return {
215
+ keys,
216
+ overrides: []
217
+ };
218
+ }
219
+ compareAndUpdateApplicationConfiguration(application) {
220
+ const {
221
+ added,
222
+ updated,
223
+ removed,
224
+ overrides
225
+ } = compare(this.applicationConfiguration, application);
226
+ const keys = [...added, ...updated, ...removed];
227
+ if (keys.length) {
228
+ this.updateApplicationConfiguration(application);
229
+ }
230
+ return {
231
+ keys,
232
+ overrides
233
+ };
234
+ }
235
+ compareAndUpdateUserConfiguration(user) {
236
+ const {
237
+ added,
238
+ updated,
239
+ removed,
240
+ overrides
241
+ } = compare(this.userConfiguration, user);
242
+ const keys = [...added, ...updated, ...removed];
243
+ if (keys.length) {
244
+ this.updateUserConfiguration(user);
245
+ }
246
+ return {
247
+ keys,
248
+ overrides
249
+ };
250
+ }
251
+ compareAndUpdateMachineConfiguration(machine) {
252
+ const {
253
+ added,
254
+ updated,
255
+ removed,
256
+ overrides
257
+ } = compare(this.machineConfiguration, machine);
258
+ let keys = [...added, ...updated, ...removed];
259
+ if (keys.length) {
260
+ this.updateMachineConfiguration(machine);
261
+ }
262
+ return {
263
+ keys,
264
+ overrides
265
+ };
266
+ }
267
+ compareAndUpdateOrganizationConfiguration(organizationConfiguration) {
268
+ const {
269
+ added,
270
+ updated,
271
+ removed,
272
+ overrides
273
+ } = compare(this.organizationConfiguration, organizationConfiguration);
274
+ let keys = [...added, ...updated, ...removed];
275
+ if (overrides.length) {
276
+ this.updateOrganizationConfiguration(organizationConfiguration);
277
+ }
278
+ return {
279
+ keys,
280
+ overrides
281
+ };
282
+ }
283
+ compareAndUpdateResourceConfiguration(resource, resourceConfiguration) {
284
+ const currentResourceConfiguration = this.resourceConfigurations.get(resource);
285
+ const {
286
+ added,
287
+ updated,
288
+ removed,
289
+ overrides
290
+ } = compare(currentResourceConfiguration, resourceConfiguration);
291
+ let keys = [...added, ...updated, ...removed];
292
+ if (keys.length || !currentResourceConfiguration) {
293
+ this.updateResourceConfiguration(resource, resourceConfiguration);
294
+ }
295
+ return {
296
+ keys,
297
+ overrides
298
+ };
299
+ }
300
+ compareAndDeleteResourceConfiguration(resource) {
301
+ const resourceConfig = this.resourceConfigurations.get(resource);
302
+ if (!resourceConfig) {
303
+ throw new Error('Unknown resource ' + resource.fsPath);
304
+ }
305
+ this.deleteResourceConfiguration(resource);
306
+ const {
307
+ added,
308
+ updated,
309
+ removed,
310
+ overrides
311
+ } = compare(resourceConfig, undefined);
312
+ return {
313
+ keys: [...added, ...updated, ...removed],
314
+ overrides
315
+ };
316
+ }
317
+ get defaults() {
318
+ return this._defaultConfiguration;
319
+ }
320
+ get userConfiguration() {
321
+ return this._userConfiguration;
322
+ }
323
+ get applicationConfiguration() {
324
+ return this._applicationConfiguration;
325
+ }
326
+ get machineConfiguration() {
327
+ return this._machineConfiguration;
328
+ }
329
+ get organizationConfiguration() {
330
+ return this._organizationConfiguration;
331
+ }
332
+ get resourceConfigurations() {
333
+ return this._resourceConfigurations;
334
+ }
335
+ getConsolidateConfigurationModel(section, overrides, organization) {
336
+ let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, organization);
337
+ if (overrides.overrideIdentifier) {
338
+ configurationModel = configurationModel.override(overrides.overrideIdentifier);
339
+ }
340
+ if (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {
341
+ configurationModel = configurationModel.merge(this._policyConfiguration);
342
+ }
343
+ return configurationModel;
344
+ }
345
+ getConsolidatedConfigurationModelForResource({
346
+ resource
347
+ }, organization) {
348
+ let consolidateConfiguration = this.getOrganizationConsolidatedConfiguration();
349
+ if (organization && resource) {
350
+ const root = organization.getResource(resource);
351
+ console.log('---root-', root);
352
+ if (root) {
353
+ //@sri instead of uri, we use resource.
354
+ consolidateConfiguration = this.getResourceConsolidatedConfiguration(resource) || consolidateConfiguration;
355
+ } else {
356
+ // if not organization resource
357
+ consolidateConfiguration = this.getResourceConsolidatedConfiguration(resource) || new ConfigurationModel();
358
+ }
359
+ const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);
360
+ if (memoryConfigurationForResource) {
361
+ consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);
362
+ }
363
+ }
364
+ return consolidateConfiguration;
365
+ }
366
+ getOrganizationConsolidatedConfiguration() {
367
+ if (!this._organizationConsolidatedConfiguration) {
368
+ this._organizationConsolidatedConfiguration = this._defaultConfiguration.merge(this._applicationConfiguration, this._userConfiguration, this._organizationConfiguration, this._memoryConfiguration);
369
+ if (this._freeze) {
370
+ this._organizationConfiguration = this._organizationConfiguration.freeze();
371
+ }
372
+ }
373
+ return this._organizationConsolidatedConfiguration;
374
+ }
375
+ getResourceConsolidatedConfiguration(resource) {
376
+ let resourceConsolidatedConfiguration = this._resourcesConsolidatedConfigurations.get(resource);
377
+ if (!resourceConsolidatedConfiguration) {
378
+ const organizationConsolidateConfiguration = this.getOrganizationConsolidatedConfiguration();
379
+ const resourceConfiguration = this._resourceConfigurations.get(resource);
380
+ if (resourceConfiguration) {
381
+ resourceConsolidatedConfiguration = organizationConsolidateConfiguration.merge(resourceConfiguration);
382
+ if (this._freeze) {
383
+ resourceConsolidatedConfiguration = resourceConsolidatedConfiguration.freeze();
309
384
  }
310
- return null;
311
- }
312
- toData() {
313
- return {
314
- defaults: {
315
- contents: this._defaultConfiguration.contents,
316
- overrides: this._defaultConfiguration.overrides,
317
- keys: this._defaultConfiguration.keys
318
- },
319
- policy: {
320
- contents: this._policyConfiguration.contents,
321
- overrides: this._policyConfiguration.overrides,
322
- keys: this._policyConfiguration.keys,
323
- },
324
- application: {
325
- contents: this._applicationConfiguration.contents,
326
- overrides: this._applicationConfiguration.overrides,
327
- keys: this._applicationConfiguration.keys,
328
- },
329
- user: {
330
- contents: this._userConfiguration.contents,
331
- overrides: this._userConfiguration.overrides,
332
- keys: this._userConfiguration.keys
333
- },
334
- machine: {
335
- contents: this._machineConfiguration.contents,
336
- overrides: this._machineConfiguration.overrides,
337
- keys: this._machineConfiguration.keys
338
- },
339
- organization: {
340
- contents: this._organizationConfiguration.contents,
341
- overrides: this._organizationConfiguration.overrides,
342
- keys: this._organizationConfiguration.keys
343
- },
344
- resources: [...this._resourceConfigurations.keys()].reduce((result, resource) => {
345
- const { contents, overrides, keys } = this._resourceConfigurations.get(resource);
346
- result[resource.toString()] = { contents, overrides, keys };
347
- return result;
348
- }, Object.create({}))
385
+ this._resourcesConsolidatedConfigurations.set(resource, resourceConsolidatedConfiguration);
386
+ } else {
387
+ resourceConsolidatedConfiguration = organizationConsolidateConfiguration;
388
+ }
389
+ }
390
+ return resourceConsolidatedConfiguration;
391
+ }
392
+ getResourceConfigurationModelForResource(resource, organization) {
393
+ if (organization && resource) {
394
+ const root = organization.getResource(resource);
395
+ if (root) {
396
+ return types.withUndefinedAsNull(this._resourceConfigurations.get(root.uri));
397
+ }
398
+ }
399
+ return null;
400
+ }
401
+ toData() {
402
+ return {
403
+ defaults: {
404
+ contents: this._defaultConfiguration.contents,
405
+ overrides: this._defaultConfiguration.overrides,
406
+ keys: this._defaultConfiguration.keys
407
+ },
408
+ policy: {
409
+ contents: this._policyConfiguration.contents,
410
+ overrides: this._policyConfiguration.overrides,
411
+ keys: this._policyConfiguration.keys
412
+ },
413
+ application: {
414
+ contents: this._applicationConfiguration.contents,
415
+ overrides: this._applicationConfiguration.overrides,
416
+ keys: this._applicationConfiguration.keys
417
+ },
418
+ user: {
419
+ contents: this._userConfiguration.contents,
420
+ overrides: this._userConfiguration.overrides,
421
+ keys: this._userConfiguration.keys
422
+ },
423
+ machine: {
424
+ contents: this._machineConfiguration.contents,
425
+ overrides: this._machineConfiguration.overrides,
426
+ keys: this._machineConfiguration.keys
427
+ },
428
+ organization: {
429
+ contents: this._organizationConfiguration.contents,
430
+ overrides: this._organizationConfiguration.overrides,
431
+ keys: this._organizationConfiguration.keys
432
+ },
433
+ resources: [...this._resourceConfigurations.keys()].reduce((result, resource) => {
434
+ const {
435
+ contents,
436
+ overrides,
437
+ keys
438
+ } = this._resourceConfigurations.get(resource);
439
+ result[resource.toString()] = {
440
+ contents,
441
+ overrides,
442
+ keys
349
443
  };
350
- }
351
- allKeys() {
352
- const keys = new Set();
353
- this._defaultConfiguration.freeze().keys.forEach(key => keys.add(key));
354
- this.userConfiguration.freeze().keys.forEach(key => keys.add(key));
355
- this._organizationConfiguration.freeze().keys.forEach(key => keys.add(key));
356
- this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.freeze().keys.forEach(key => keys.add(key)));
357
- return [...keys.values()];
358
- }
359
- allOverrideIdentifiers() {
360
- const keys = new Set();
361
- this._defaultConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
362
- this.userConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
363
- this._organizationConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
364
- this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key)));
365
- return [...keys.values()];
366
- }
367
- getAllKeysForOverrideIdentifier(overrideIdentifier) {
368
- const keys = new Set();
369
- this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
370
- this.userConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
371
- this._organizationConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
372
- this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key)));
373
- return [...keys.values()];
374
- }
375
- static parse(data) {
376
- const defaultConfiguration = this.parseConfigurationModel(data.defaults);
377
- const policyConfiguration = this.parseConfigurationModel(data.policy);
378
- const applicationConfiguration = this.parseConfigurationModel(data.application);
379
- const userConfiguration = this.parseConfigurationModel(data.user);
380
- const organizationConfiguration = this.parseConfigurationModel(data.organization);
381
- const resources = data.resources.reduce((result, value) => {
382
- result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));
383
- return result;
384
- }, new ResourceMap());
385
- return new Configuration(defaultConfiguration, policyConfiguration, applicationConfiguration, userConfiguration, new ConfigurationModel(), organizationConfiguration, resources, new ConfigurationModel(), new ResourceMap(), false);
386
- }
387
- static parseConfigurationModel(model) {
388
- return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();
389
- }
444
+ return result;
445
+ }, Object.create({}))
446
+ };
447
+ }
448
+ allKeys() {
449
+ const keys = new Set();
450
+ this._defaultConfiguration.freeze().keys.forEach(key => keys.add(key));
451
+ this.userConfiguration.freeze().keys.forEach(key => keys.add(key));
452
+ this._organizationConfiguration.freeze().keys.forEach(key => keys.add(key));
453
+ this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.freeze().keys.forEach(key => keys.add(key)));
454
+ return [...keys.values()];
455
+ }
456
+ allOverrideIdentifiers() {
457
+ const keys = new Set();
458
+ this._defaultConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
459
+ this.userConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
460
+ this._organizationConfiguration.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key));
461
+ this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.freeze().getAllOverrideIdentifiers().forEach(key => keys.add(key)));
462
+ return [...keys.values()];
463
+ }
464
+ getAllKeysForOverrideIdentifier(overrideIdentifier) {
465
+ const keys = new Set();
466
+ this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
467
+ this.userConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
468
+ this._organizationConfiguration.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key));
469
+ this._resourceConfigurations.forEach(resourceConfiguraiton => resourceConfiguraiton.getKeysForOverrideIdentifier(overrideIdentifier).forEach(key => keys.add(key)));
470
+ return [...keys.values()];
471
+ }
472
+ static parse(data) {
473
+ const defaultConfiguration = this.parseConfigurationModel(data.defaults);
474
+ const policyConfiguration = this.parseConfigurationModel(data.policy);
475
+ const applicationConfiguration = this.parseConfigurationModel(data.application);
476
+ const userConfiguration = this.parseConfigurationModel(data.user);
477
+ const organizationConfiguration = this.parseConfigurationModel(data.organization);
478
+ const resources = data.resources.reduce((result, value) => {
479
+ result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));
480
+ return result;
481
+ }, new ResourceMap());
482
+ return new Configuration(defaultConfiguration, policyConfiguration, applicationConfiguration, userConfiguration, new ConfigurationModel(), organizationConfiguration, resources, new ConfigurationModel(), new ResourceMap(), false);
483
+ }
484
+ static parseConfigurationModel(model) {
485
+ return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();
486
+ }
390
487
  }
391
488
  function compare(from, to) {
392
- const { added, removed, updated } = compareConfigurationContents(to, from);
393
- const overrides = [];
394
- const fromOverrideIdentifiers = from?.getAllOverrideIdentifiers() || [];
395
- const toOverrideIdentifiers = to?.getAllOverrideIdentifiers() || [];
396
- if (to) {
397
- const addedOverrideIdentifiers = toOverrideIdentifiers.filter(key => !fromOverrideIdentifiers.includes(key));
398
- for (const identifier of addedOverrideIdentifiers) {
399
- overrides.push([identifier, to.getKeysForOverrideIdentifier(identifier)]);
400
- }
401
- }
402
- if (from) {
403
- const removedOverrideIdentifiers = fromOverrideIdentifiers.filter(key => !toOverrideIdentifiers.includes(key));
404
- for (const identifier of removedOverrideIdentifiers) {
405
- overrides.push([identifier, from.getKeysForOverrideIdentifier(identifier)]);
406
- }
407
- }
408
- if (to && from) {
409
- for (const identifier of fromOverrideIdentifiers) {
410
- if (toOverrideIdentifiers.includes(identifier)) {
411
- const result = compareConfigurationContents({ contents: from.getOverrideValue(undefined, identifier) || {}, keys: from.getKeysForOverrideIdentifier(identifier) }, { contents: to.getOverrideValue(undefined, identifier) || {}, keys: to.getKeysForOverrideIdentifier(identifier) });
412
- overrides.push([identifier, [...result.added, ...result.removed, ...result.updated]]);
413
- }
414
- }
415
- }
416
- return { added, removed, updated, overrides };
489
+ const {
490
+ added,
491
+ removed,
492
+ updated
493
+ } = compareConfigurationContents(to, from);
494
+ const overrides = [];
495
+ const fromOverrideIdentifiers = from?.getAllOverrideIdentifiers() || [];
496
+ const toOverrideIdentifiers = to?.getAllOverrideIdentifiers() || [];
497
+ if (to) {
498
+ const addedOverrideIdentifiers = toOverrideIdentifiers.filter(key => !fromOverrideIdentifiers.includes(key));
499
+ for (const identifier of addedOverrideIdentifiers) {
500
+ overrides.push([identifier, to.getKeysForOverrideIdentifier(identifier)]);
501
+ }
502
+ }
503
+ if (from) {
504
+ const removedOverrideIdentifiers = fromOverrideIdentifiers.filter(key => !toOverrideIdentifiers.includes(key));
505
+ for (const identifier of removedOverrideIdentifiers) {
506
+ overrides.push([identifier, from.getKeysForOverrideIdentifier(identifier)]);
507
+ }
508
+ }
509
+ if (to && from) {
510
+ for (const identifier of fromOverrideIdentifiers) {
511
+ if (toOverrideIdentifiers.includes(identifier)) {
512
+ const result = compareConfigurationContents({
513
+ contents: from.getOverrideValue(undefined, identifier) || {},
514
+ keys: from.getKeysForOverrideIdentifier(identifier)
515
+ }, {
516
+ contents: to.getOverrideValue(undefined, identifier) || {},
517
+ keys: to.getKeysForOverrideIdentifier(identifier)
518
+ });
519
+ overrides.push([identifier, [...result.added, ...result.removed, ...result.updated]]);
520
+ }
521
+ }
522
+ }
523
+ return {
524
+ added,
525
+ removed,
526
+ updated,
527
+ overrides
528
+ };
417
529
  }
418
530
  function compareConfigurationContents(to, from) {
419
- const added = to
420
- ? from ? to.keys.filter(key => from.keys.indexOf(key) === -1) : [...to.keys]
421
- : [];
422
- const removed = from
423
- ? to ? from.keys.filter(key => to.keys.indexOf(key) === -1) : [...from.keys]
424
- : [];
425
- const updated = [];
426
- if (to && from) {
427
- for (const key of from.keys) {
428
- if (to.keys.indexOf(key) !== -1) {
429
- const value1 = getConfigurationValue(from.contents, key);
430
- const value2 = getConfigurationValue(to.contents, key);
431
- if (!objects.equals(value1, value2)) {
432
- updated.push(key);
433
- }
434
- }
531
+ const added = to ? from ? to.keys.filter(key => from.keys.indexOf(key) === -1) : [...to.keys] : [];
532
+ const removed = from ? to ? from.keys.filter(key => to.keys.indexOf(key) === -1) : [...from.keys] : [];
533
+ const updated = [];
534
+ if (to && from) {
535
+ for (const key of from.keys) {
536
+ if (to.keys.indexOf(key) !== -1) {
537
+ const value1 = getConfigurationValue(from.contents, key);
538
+ const value2 = getConfigurationValue(to.contents, key);
539
+ if (!objects.equals(value1, value2)) {
540
+ updated.push(key);
435
541
  }
436
- }
437
- return { added, removed, updated };
542
+ }
543
+ }
544
+ }
545
+ return {
546
+ added,
547
+ removed,
548
+ updated
549
+ };
438
550
  }
439
551
  const OVERRIDE_IDENTIFIER_REGEX = new RegExp(OVERRIDE_IDENTIFIER_PATTERN, 'g');
440
552
  const OVERRIDE_PROPERTY_REGEX = new RegExp(OVERRIDE_PROPERTY_PATTERN);
441
553
  function overrideIdentifiersFromKey(key) {
442
- const identifiers = [];
443
- if (OVERRIDE_PROPERTY_REGEX.test(key)) {
444
- let matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);
445
- while (matches?.length) {
446
- const identifier = matches[1].trim();
447
- if (identifier) {
448
- identifiers.push(identifier);
449
- }
450
- matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);
451
- }
452
- }
453
- return arrays.distinct(identifiers);
454
- }export{Configuration,OVERRIDE_PROPERTY_REGEX,compare,overrideIdentifiersFromKey};
554
+ const identifiers = [];
555
+ if (OVERRIDE_PROPERTY_REGEX.test(key)) {
556
+ let matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);
557
+ while (matches?.length) {
558
+ const identifier = matches[1].trim();
559
+ if (identifier) {
560
+ identifiers.push(identifier);
561
+ }
562
+ matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);
563
+ }
564
+ }
565
+ return arrays.distinct(identifiers);
566
+ }export{Configuration,OVERRIDE_PROPERTY_REGEX,compare,overrideIdentifiersFromKey};//# sourceMappingURL=configuration.js.map