@ifc-lite/mutations 1.4.0
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.
- package/LICENSE +373 -0
- package/dist/bulk-query-engine.d.ts +138 -0
- package/dist/bulk-query-engine.d.ts.map +1 -0
- package/dist/bulk-query-engine.js +281 -0
- package/dist/bulk-query-engine.js.map +1 -0
- package/dist/change-set.d.ts +73 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +178 -0
- package/dist/change-set.js.map +1 -0
- package/dist/csv-connector.d.ts +146 -0
- package/dist/csv-connector.d.ts.map +1 -0
- package/dist/csv-connector.js +305 -0
- package/dist/csv-connector.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/mutable-property-view.d.ts +110 -0
- package/dist/mutable-property-view.d.ts.map +1 -0
- package/dist/mutable-property-view.js +414 -0
- package/dist/mutable-property-view.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +34 -0
- package/dist/types.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Bulk Query Engine for mass property updates
|
|
6
|
+
*/
|
|
7
|
+
export class BulkQueryEngine {
|
|
8
|
+
entities;
|
|
9
|
+
spatialHierarchy;
|
|
10
|
+
properties;
|
|
11
|
+
mutationView;
|
|
12
|
+
strings;
|
|
13
|
+
constructor(entities, mutationView, spatialHierarchy, properties, strings) {
|
|
14
|
+
this.entities = entities;
|
|
15
|
+
this.mutationView = mutationView;
|
|
16
|
+
this.spatialHierarchy = spatialHierarchy || null;
|
|
17
|
+
this.properties = properties || null;
|
|
18
|
+
this.strings = strings || null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Select entities matching criteria
|
|
22
|
+
*/
|
|
23
|
+
select(criteria) {
|
|
24
|
+
let candidates = this.getAllEntityIds();
|
|
25
|
+
// Filter by entity types
|
|
26
|
+
if (criteria.entityTypes && criteria.entityTypes.length > 0) {
|
|
27
|
+
const typeSet = new Set(criteria.entityTypes);
|
|
28
|
+
candidates = candidates.filter((id) => {
|
|
29
|
+
const idx = this.findEntityIndex(id);
|
|
30
|
+
return idx !== -1 && typeSet.has(this.entities.typeEnum[idx]);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Filter by storeys
|
|
34
|
+
if (criteria.storeys && criteria.storeys.length > 0 && this.spatialHierarchy) {
|
|
35
|
+
const storeySet = new Set(criteria.storeys);
|
|
36
|
+
const storeyElements = new Set();
|
|
37
|
+
for (const storeyId of storeySet) {
|
|
38
|
+
const elements = this.spatialHierarchy.byStorey.get(storeyId);
|
|
39
|
+
if (elements) {
|
|
40
|
+
for (const el of elements) {
|
|
41
|
+
storeyElements.add(el);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
candidates = candidates.filter((id) => storeyElements.has(id));
|
|
46
|
+
}
|
|
47
|
+
// Filter by buildings
|
|
48
|
+
if (criteria.buildings && criteria.buildings.length > 0 && this.spatialHierarchy) {
|
|
49
|
+
const buildingSet = new Set(criteria.buildings);
|
|
50
|
+
const buildingElements = new Set();
|
|
51
|
+
for (const buildingId of buildingSet) {
|
|
52
|
+
const elements = this.spatialHierarchy.byBuilding.get(buildingId);
|
|
53
|
+
if (elements) {
|
|
54
|
+
for (const el of elements) {
|
|
55
|
+
buildingElements.add(el);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
candidates = candidates.filter((id) => buildingElements.has(id));
|
|
60
|
+
}
|
|
61
|
+
// Filter by spaces
|
|
62
|
+
if (criteria.spaces && criteria.spaces.length > 0 && this.spatialHierarchy) {
|
|
63
|
+
const spaceSet = new Set(criteria.spaces);
|
|
64
|
+
const spaceElements = new Set();
|
|
65
|
+
for (const spaceId of spaceSet) {
|
|
66
|
+
const elements = this.spatialHierarchy.bySpace.get(spaceId);
|
|
67
|
+
if (elements) {
|
|
68
|
+
for (const el of elements) {
|
|
69
|
+
spaceElements.add(el);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
candidates = candidates.filter((id) => spaceElements.has(id));
|
|
74
|
+
}
|
|
75
|
+
// Filter by express IDs (direct selection)
|
|
76
|
+
if (criteria.expressIds && criteria.expressIds.length > 0) {
|
|
77
|
+
const idSet = new Set(criteria.expressIds);
|
|
78
|
+
candidates = candidates.filter((id) => idSet.has(id));
|
|
79
|
+
}
|
|
80
|
+
// Filter by global IDs
|
|
81
|
+
if (criteria.globalIds && criteria.globalIds.length > 0 && this.strings) {
|
|
82
|
+
const globalIdSet = new Set(criteria.globalIds);
|
|
83
|
+
candidates = candidates.filter((id) => {
|
|
84
|
+
const idx = this.findEntityIndex(id);
|
|
85
|
+
if (idx === -1)
|
|
86
|
+
return false;
|
|
87
|
+
const globalIdIdx = this.entities.globalId[idx];
|
|
88
|
+
const globalId = this.strings.get(globalIdIdx);
|
|
89
|
+
return globalIdSet.has(globalId);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Filter by name pattern
|
|
93
|
+
if (criteria.namePattern && this.strings) {
|
|
94
|
+
const regex = new RegExp(criteria.namePattern, 'i');
|
|
95
|
+
candidates = candidates.filter((id) => {
|
|
96
|
+
const idx = this.findEntityIndex(id);
|
|
97
|
+
if (idx === -1)
|
|
98
|
+
return false;
|
|
99
|
+
const nameIdx = this.entities.name[idx];
|
|
100
|
+
const name = this.strings.get(nameIdx);
|
|
101
|
+
return regex.test(name);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Filter by property conditions
|
|
105
|
+
if (criteria.propertyFilters && criteria.propertyFilters.length > 0) {
|
|
106
|
+
for (const filter of criteria.propertyFilters) {
|
|
107
|
+
candidates = this.filterByProperty(candidates, filter);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return candidates;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Preview a bulk query without executing
|
|
114
|
+
*/
|
|
115
|
+
preview(query) {
|
|
116
|
+
const matchedEntityIds = this.select(query.select);
|
|
117
|
+
return {
|
|
118
|
+
matchedEntityIds,
|
|
119
|
+
matchedCount: matchedEntityIds.length,
|
|
120
|
+
estimatedMutations: matchedEntityIds.length,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Execute a bulk query
|
|
125
|
+
*/
|
|
126
|
+
execute(query) {
|
|
127
|
+
const entityIds = this.select(query.select);
|
|
128
|
+
const mutations = [];
|
|
129
|
+
const errors = [];
|
|
130
|
+
for (const entityId of entityIds) {
|
|
131
|
+
try {
|
|
132
|
+
const mutation = this.applyAction(entityId, query.action);
|
|
133
|
+
if (mutation) {
|
|
134
|
+
mutations.push(mutation);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
errors.push(`Entity ${entityId}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
mutations,
|
|
143
|
+
affectedEntityCount: mutations.length,
|
|
144
|
+
success: errors.length === 0,
|
|
145
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Apply an action to a single entity
|
|
150
|
+
*/
|
|
151
|
+
applyAction(entityId, action) {
|
|
152
|
+
switch (action.type) {
|
|
153
|
+
case 'SET_PROPERTY':
|
|
154
|
+
return this.mutationView.setProperty(entityId, action.psetName, action.propName, action.value, action.valueType);
|
|
155
|
+
case 'DELETE_PROPERTY':
|
|
156
|
+
return this.mutationView.deleteProperty(entityId, action.psetName, action.propName);
|
|
157
|
+
case 'SET_ATTRIBUTE':
|
|
158
|
+
// Attribute mutations would need to be implemented
|
|
159
|
+
// For now, we'll skip these
|
|
160
|
+
return null;
|
|
161
|
+
default:
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Filter candidates by property condition
|
|
167
|
+
*/
|
|
168
|
+
filterByProperty(candidates, filter) {
|
|
169
|
+
return candidates.filter((entityId) => {
|
|
170
|
+
// Get property value from mutation view (includes mutations)
|
|
171
|
+
const value = filter.psetName
|
|
172
|
+
? this.mutationView.getPropertyValue(entityId, filter.psetName, filter.propName)
|
|
173
|
+
: this.findPropertyByName(entityId, filter.propName);
|
|
174
|
+
return this.matchesFilter(value, filter);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Find a property by name across all property sets
|
|
179
|
+
*/
|
|
180
|
+
findPropertyByName(entityId, propName) {
|
|
181
|
+
if (!this.properties)
|
|
182
|
+
return null;
|
|
183
|
+
const psets = this.properties.getForEntity(entityId);
|
|
184
|
+
for (const pset of psets) {
|
|
185
|
+
for (const prop of pset.properties) {
|
|
186
|
+
if (prop.name === propName) {
|
|
187
|
+
return prop.value;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if a value matches a filter condition
|
|
195
|
+
*/
|
|
196
|
+
matchesFilter(value, filter) {
|
|
197
|
+
// Handle null checks
|
|
198
|
+
if (filter.operator === 'IS_NULL') {
|
|
199
|
+
return value === null || value === undefined;
|
|
200
|
+
}
|
|
201
|
+
if (filter.operator === 'IS_NOT_NULL') {
|
|
202
|
+
return value !== null && value !== undefined;
|
|
203
|
+
}
|
|
204
|
+
// For other operators, null values don't match
|
|
205
|
+
if (value === null || value === undefined) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
const filterValue = filter.value;
|
|
209
|
+
// String operations
|
|
210
|
+
if (typeof value === 'string' && typeof filterValue === 'string') {
|
|
211
|
+
switch (filter.operator) {
|
|
212
|
+
case '=':
|
|
213
|
+
return value === filterValue;
|
|
214
|
+
case '!=':
|
|
215
|
+
return value !== filterValue;
|
|
216
|
+
case 'CONTAINS':
|
|
217
|
+
return value.toLowerCase().includes(filterValue.toLowerCase());
|
|
218
|
+
case 'STARTS_WITH':
|
|
219
|
+
return value.toLowerCase().startsWith(filterValue.toLowerCase());
|
|
220
|
+
case 'ENDS_WITH':
|
|
221
|
+
return value.toLowerCase().endsWith(filterValue.toLowerCase());
|
|
222
|
+
default:
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Numeric operations
|
|
227
|
+
if (typeof value === 'number' && typeof filterValue === 'number') {
|
|
228
|
+
switch (filter.operator) {
|
|
229
|
+
case '=':
|
|
230
|
+
return value === filterValue;
|
|
231
|
+
case '!=':
|
|
232
|
+
return value !== filterValue;
|
|
233
|
+
case '>':
|
|
234
|
+
return value > filterValue;
|
|
235
|
+
case '<':
|
|
236
|
+
return value < filterValue;
|
|
237
|
+
case '>=':
|
|
238
|
+
return value >= filterValue;
|
|
239
|
+
case '<=':
|
|
240
|
+
return value <= filterValue;
|
|
241
|
+
default:
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Boolean operations
|
|
246
|
+
if (typeof value === 'boolean') {
|
|
247
|
+
const boolFilterValue = filterValue === true || filterValue === 'true';
|
|
248
|
+
switch (filter.operator) {
|
|
249
|
+
case '=':
|
|
250
|
+
return value === boolFilterValue;
|
|
251
|
+
case '!=':
|
|
252
|
+
return value !== boolFilterValue;
|
|
253
|
+
default:
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get all entity IDs
|
|
261
|
+
*/
|
|
262
|
+
getAllEntityIds() {
|
|
263
|
+
const ids = [];
|
|
264
|
+
for (let i = 0; i < this.entities.count; i++) {
|
|
265
|
+
ids.push(this.entities.expressId[i]);
|
|
266
|
+
}
|
|
267
|
+
return ids;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Find the index of an entity by ID
|
|
271
|
+
*/
|
|
272
|
+
findEntityIndex(expressId) {
|
|
273
|
+
for (let i = 0; i < this.entities.count; i++) {
|
|
274
|
+
if (this.entities.expressId[i] === expressId) {
|
|
275
|
+
return i;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return -1;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=bulk-query-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-query-engine.js","sourceRoot":"","sources":["../src/bulk-query-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Change set management for IFC mutations
|
|
3
|
+
*/
|
|
4
|
+
import type { ChangeSet, Mutation } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Manages collections of mutations as named change sets
|
|
7
|
+
*/
|
|
8
|
+
export declare class ChangeSetManager {
|
|
9
|
+
private changeSets;
|
|
10
|
+
private activeChangeSetId;
|
|
11
|
+
/**
|
|
12
|
+
* Create a new change set
|
|
13
|
+
*/
|
|
14
|
+
createChangeSet(name: string): ChangeSet;
|
|
15
|
+
/**
|
|
16
|
+
* Get the active change set
|
|
17
|
+
*/
|
|
18
|
+
getActiveChangeSet(): ChangeSet | null;
|
|
19
|
+
/**
|
|
20
|
+
* Set the active change set
|
|
21
|
+
*/
|
|
22
|
+
setActiveChangeSet(id: string | null): void;
|
|
23
|
+
/**
|
|
24
|
+
* Add a mutation to the active change set
|
|
25
|
+
*/
|
|
26
|
+
addMutation(mutation: Mutation): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get a change set by ID
|
|
29
|
+
*/
|
|
30
|
+
getChangeSet(id: string): ChangeSet | null;
|
|
31
|
+
/**
|
|
32
|
+
* Get all change sets
|
|
33
|
+
*/
|
|
34
|
+
getAllChangeSets(): ChangeSet[];
|
|
35
|
+
/**
|
|
36
|
+
* Delete a change set
|
|
37
|
+
*/
|
|
38
|
+
deleteChangeSet(id: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Rename a change set
|
|
41
|
+
*/
|
|
42
|
+
renameChangeSet(id: string, newName: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Mark a change set as applied
|
|
45
|
+
*/
|
|
46
|
+
markApplied(id: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Merge multiple change sets into one
|
|
49
|
+
*/
|
|
50
|
+
mergeChangeSets(ids: string[], newName: string): ChangeSet;
|
|
51
|
+
/**
|
|
52
|
+
* Export a change set as JSON
|
|
53
|
+
*/
|
|
54
|
+
exportChangeSet(id: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Import a change set from JSON
|
|
57
|
+
*/
|
|
58
|
+
importChangeSet(json: string): ChangeSet;
|
|
59
|
+
/**
|
|
60
|
+
* Get statistics about all change sets
|
|
61
|
+
*/
|
|
62
|
+
getStatistics(): {
|
|
63
|
+
totalChangeSets: number;
|
|
64
|
+
totalMutations: number;
|
|
65
|
+
affectedEntities: number;
|
|
66
|
+
affectedModels: number;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Clear all change sets
|
|
70
|
+
*/
|
|
71
|
+
clear(): void;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=change-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAexC;;OAEG;IACH,kBAAkB,IAAI,SAAS,GAAG,IAAI;IAKtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAO3C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWrC;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C;;OAEG;IACH,gBAAgB,IAAI,SAAS,EAAE;IAI/B;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAOpC;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAyB1D;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAanC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAiBxC;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACxB;IAqBD;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { generateChangeSetId } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Manages collections of mutations as named change sets
|
|
7
|
+
*/
|
|
8
|
+
export class ChangeSetManager {
|
|
9
|
+
changeSets = new Map();
|
|
10
|
+
activeChangeSetId = null;
|
|
11
|
+
/**
|
|
12
|
+
* Create a new change set
|
|
13
|
+
*/
|
|
14
|
+
createChangeSet(name) {
|
|
15
|
+
const changeSet = {
|
|
16
|
+
id: generateChangeSetId(),
|
|
17
|
+
name,
|
|
18
|
+
createdAt: Date.now(),
|
|
19
|
+
mutations: [],
|
|
20
|
+
applied: false,
|
|
21
|
+
};
|
|
22
|
+
this.changeSets.set(changeSet.id, changeSet);
|
|
23
|
+
this.activeChangeSetId = changeSet.id;
|
|
24
|
+
return changeSet;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the active change set
|
|
28
|
+
*/
|
|
29
|
+
getActiveChangeSet() {
|
|
30
|
+
if (!this.activeChangeSetId)
|
|
31
|
+
return null;
|
|
32
|
+
return this.changeSets.get(this.activeChangeSetId) || null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set the active change set
|
|
36
|
+
*/
|
|
37
|
+
setActiveChangeSet(id) {
|
|
38
|
+
if (id && !this.changeSets.has(id)) {
|
|
39
|
+
throw new Error(`Change set ${id} not found`);
|
|
40
|
+
}
|
|
41
|
+
this.activeChangeSetId = id;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Add a mutation to the active change set
|
|
45
|
+
*/
|
|
46
|
+
addMutation(mutation) {
|
|
47
|
+
const changeSet = this.getActiveChangeSet();
|
|
48
|
+
if (!changeSet) {
|
|
49
|
+
// Auto-create a default change set
|
|
50
|
+
const newChangeSet = this.createChangeSet('Unsaved Changes');
|
|
51
|
+
newChangeSet.mutations.push(mutation);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
changeSet.mutations.push(mutation);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a change set by ID
|
|
59
|
+
*/
|
|
60
|
+
getChangeSet(id) {
|
|
61
|
+
return this.changeSets.get(id) || null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get all change sets
|
|
65
|
+
*/
|
|
66
|
+
getAllChangeSets() {
|
|
67
|
+
return Array.from(this.changeSets.values());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Delete a change set
|
|
71
|
+
*/
|
|
72
|
+
deleteChangeSet(id) {
|
|
73
|
+
if (this.activeChangeSetId === id) {
|
|
74
|
+
this.activeChangeSetId = null;
|
|
75
|
+
}
|
|
76
|
+
return this.changeSets.delete(id);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Rename a change set
|
|
80
|
+
*/
|
|
81
|
+
renameChangeSet(id, newName) {
|
|
82
|
+
const changeSet = this.changeSets.get(id);
|
|
83
|
+
if (changeSet) {
|
|
84
|
+
changeSet.name = newName;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Mark a change set as applied
|
|
89
|
+
*/
|
|
90
|
+
markApplied(id) {
|
|
91
|
+
const changeSet = this.changeSets.get(id);
|
|
92
|
+
if (changeSet) {
|
|
93
|
+
changeSet.applied = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Merge multiple change sets into one
|
|
98
|
+
*/
|
|
99
|
+
mergeChangeSets(ids, newName) {
|
|
100
|
+
const mutations = [];
|
|
101
|
+
for (const id of ids) {
|
|
102
|
+
const changeSet = this.changeSets.get(id);
|
|
103
|
+
if (changeSet) {
|
|
104
|
+
mutations.push(...changeSet.mutations);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Sort by timestamp
|
|
108
|
+
mutations.sort((a, b) => a.timestamp - b.timestamp);
|
|
109
|
+
const merged = {
|
|
110
|
+
id: generateChangeSetId(),
|
|
111
|
+
name: newName,
|
|
112
|
+
createdAt: Date.now(),
|
|
113
|
+
mutations,
|
|
114
|
+
applied: false,
|
|
115
|
+
};
|
|
116
|
+
this.changeSets.set(merged.id, merged);
|
|
117
|
+
return merged;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Export a change set as JSON
|
|
121
|
+
*/
|
|
122
|
+
exportChangeSet(id) {
|
|
123
|
+
const changeSet = this.changeSets.get(id);
|
|
124
|
+
if (!changeSet) {
|
|
125
|
+
throw new Error(`Change set ${id} not found`);
|
|
126
|
+
}
|
|
127
|
+
return JSON.stringify({
|
|
128
|
+
version: 1,
|
|
129
|
+
changeSet,
|
|
130
|
+
exportedAt: Date.now(),
|
|
131
|
+
}, null, 2);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Import a change set from JSON
|
|
135
|
+
*/
|
|
136
|
+
importChangeSet(json) {
|
|
137
|
+
const data = JSON.parse(json);
|
|
138
|
+
if (!data.changeSet) {
|
|
139
|
+
throw new Error('Invalid change set format');
|
|
140
|
+
}
|
|
141
|
+
const changeSet = {
|
|
142
|
+
...data.changeSet,
|
|
143
|
+
id: generateChangeSetId(), // Generate new ID to avoid conflicts
|
|
144
|
+
applied: false,
|
|
145
|
+
};
|
|
146
|
+
this.changeSets.set(changeSet.id, changeSet);
|
|
147
|
+
return changeSet;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get statistics about all change sets
|
|
151
|
+
*/
|
|
152
|
+
getStatistics() {
|
|
153
|
+
const entities = new Set();
|
|
154
|
+
const models = new Set();
|
|
155
|
+
let totalMutations = 0;
|
|
156
|
+
for (const changeSet of this.changeSets.values()) {
|
|
157
|
+
totalMutations += changeSet.mutations.length;
|
|
158
|
+
for (const mutation of changeSet.mutations) {
|
|
159
|
+
entities.add(`${mutation.modelId}:${mutation.entityId}`);
|
|
160
|
+
models.add(mutation.modelId);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
totalChangeSets: this.changeSets.size,
|
|
165
|
+
totalMutations,
|
|
166
|
+
affectedEntities: entities.size,
|
|
167
|
+
affectedModels: models.size,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Clear all change sets
|
|
172
|
+
*/
|
|
173
|
+
clear() {
|
|
174
|
+
this.changeSets.clear();
|
|
175
|
+
this.activeChangeSetId = null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=change-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-set.js","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"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"}
|