@teambit/objects 0.0.488 → 0.0.489
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/dist/models/lane-history.d.ts +1 -0
- package/dist/models/lane-history.js +7 -1
- package/dist/models/lane-history.js.map +1 -1
- package/dist/models/lane.d.ts +13 -10
- package/dist/models/lane.js +51 -27
- package/dist/models/lane.js.map +1 -1
- package/dist/models/model-component.js +17 -3
- package/dist/models/model-component.js.map +1 -1
- package/models/lane-history.ts +14 -1
- package/models/lane.ts +58 -26
- package/models/model-component.ts +22 -4
- package/package.json +30 -30
- /package/dist/{preview-1778595769695.js → preview-1778613913688.js} +0 -0
|
@@ -86,11 +86,17 @@ class LaneHistory extends _objects().BitObject {
|
|
|
86
86
|
if (msg) log.message = msg;
|
|
87
87
|
const components = laneObj.toComponentIds().toStringArray();
|
|
88
88
|
const deleted = laneObj.components.filter(c => c.isDeleted).map(c => c.id.changeVersion(c.head.toString()).toString());
|
|
89
|
-
|
|
89
|
+
// Always write `updateDependents` (even when empty) so checkout/revert can distinguish a
|
|
90
|
+
// post-PR entry that legitimately had no hidden entries (drop current hidden) from a legacy
|
|
91
|
+
// pre-PR entry that never recorded the field at all (leave current hidden alone).
|
|
92
|
+
const updateDependents = (laneObj.updateDependents || []).map(id => id.toString());
|
|
93
|
+
this.history[historyKey || (0, _uuid().v4)()] = _objectSpread(_objectSpread({
|
|
90
94
|
log,
|
|
91
95
|
components
|
|
92
96
|
}, deleted.length && {
|
|
93
97
|
deleted
|
|
98
|
+
}), {}, {
|
|
99
|
+
updateDependents
|
|
94
100
|
});
|
|
95
101
|
}
|
|
96
102
|
removeHistoryEntries(keys) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","data","require","_legacy","_harmonyModules","_objects","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LaneHistory","BitObject","constructor","props","name","scope","laneHash","history","id","fromLaneObject","laneObject","hash","toString","toObject","pretty","args","getStringifyArgs","JSON","stringify","toBuffer","Buffer","from","getHistory","getHistoryIds","entries","sort","a","b","log","date","map","addHistory","laneObj","msg","historyKey","getBasicLog","message","components","toComponentIds","toStringArray","deleted","c","isDeleted","changeVersion","head","v4","removeHistoryEntries","key","merge","laneHistory","create","parse","contents","parsed","exports"],"sources":["lane-history.ts"],"sourcesContent":["import { v4 } from 'uuid';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { getBasicLog } from '@teambit/harmony.modules.get-basic-log';\nimport { BitObject } from '../objects';\nimport type Lane from './lane';\n\ntype Log = { date: string; username?: string; email?: string; message?: string };\n\nexport type HistoryItem = {\n log: Log;\n components: string[];\n deleted?: string[];\n};\n\ntype History = { [uuid: string]: HistoryItem };\n\ntype LaneHistoryProps = {\n name: string;\n scope: string;\n laneHash: string;\n history: History;\n};\n\nexport class LaneHistory extends BitObject {\n private name: string;\n private scope: string;\n private laneHash: string;\n private history: History;\n\n constructor(props: LaneHistoryProps) {\n super();\n this.name = props.name;\n this.scope = props.scope;\n this.laneHash = props.laneHash;\n this.history = props.history;\n }\n\n id() {\n return `${this.laneHash}:${LaneHistory.name}`;\n }\n\n static fromLaneObject(laneObject: Lane): LaneHistory {\n return new LaneHistory({\n scope: laneObject.scope,\n name: laneObject.name,\n laneHash: laneObject.hash().toString(),\n history: {},\n });\n }\n\n toObject(): Record<string, any> {\n return {\n name: this.name,\n scope: this.scope,\n laneHash: this.laneHash,\n history: this.history,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n getHistory(): History {\n return this.history;\n }\n\n getHistoryIds(): string[] {\n return Object.entries(this.history)\n .sort(([, a], [, b]) => Number(a.log.date) - Number(b.log.date))\n .map(([id]) => id);\n }\n\n async addHistory(laneObj: Lane, msg?: string, historyKey?: string) {\n const log: Log = await getBasicLog();\n if (msg) log.message = msg;\n const components = laneObj.toComponentIds().toStringArray();\n const deleted = laneObj.components\n .filter((c) => c.isDeleted)\n .map((c) => c.id.changeVersion(c.head.toString()).toString());\n this.history[historyKey || v4()] = {
|
|
1
|
+
{"version":3,"names":["_uuid","data","require","_legacy","_harmonyModules","_objects","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LaneHistory","BitObject","constructor","props","name","scope","laneHash","history","id","fromLaneObject","laneObject","hash","toString","toObject","pretty","args","getStringifyArgs","JSON","stringify","toBuffer","Buffer","from","getHistory","getHistoryIds","entries","sort","a","b","log","date","map","addHistory","laneObj","msg","historyKey","getBasicLog","message","components","toComponentIds","toStringArray","deleted","c","isDeleted","changeVersion","head","updateDependents","v4","removeHistoryEntries","key","merge","laneHistory","create","parse","contents","parsed","exports"],"sources":["lane-history.ts"],"sourcesContent":["import { v4 } from 'uuid';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { getBasicLog } from '@teambit/harmony.modules.get-basic-log';\nimport { BitObject } from '../objects';\nimport type Lane from './lane';\n\ntype Log = { date: string; username?: string; email?: string; message?: string };\n\nexport type HistoryItem = {\n log: Log;\n components: string[];\n deleted?: string[];\n // hidden lane.updateDependents at the time of the snapshot. Recorded in their own field so\n // `historyItem.components` keeps its workspace-checkout/revert contract intact — those flows\n // must not materialize hidden entries into the bitmap.\n updateDependents?: string[];\n};\n\ntype History = { [uuid: string]: HistoryItem };\n\ntype LaneHistoryProps = {\n name: string;\n scope: string;\n laneHash: string;\n history: History;\n};\n\nexport class LaneHistory extends BitObject {\n private name: string;\n private scope: string;\n private laneHash: string;\n private history: History;\n\n constructor(props: LaneHistoryProps) {\n super();\n this.name = props.name;\n this.scope = props.scope;\n this.laneHash = props.laneHash;\n this.history = props.history;\n }\n\n id() {\n return `${this.laneHash}:${LaneHistory.name}`;\n }\n\n static fromLaneObject(laneObject: Lane): LaneHistory {\n return new LaneHistory({\n scope: laneObject.scope,\n name: laneObject.name,\n laneHash: laneObject.hash().toString(),\n history: {},\n });\n }\n\n toObject(): Record<string, any> {\n return {\n name: this.name,\n scope: this.scope,\n laneHash: this.laneHash,\n history: this.history,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n getHistory(): History {\n return this.history;\n }\n\n getHistoryIds(): string[] {\n return Object.entries(this.history)\n .sort(([, a], [, b]) => Number(a.log.date) - Number(b.log.date))\n .map(([id]) => id);\n }\n\n async addHistory(laneObj: Lane, msg?: string, historyKey?: string) {\n const log: Log = await getBasicLog();\n if (msg) log.message = msg;\n const components = laneObj.toComponentIds().toStringArray();\n const deleted = laneObj.components\n .filter((c) => c.isDeleted)\n .map((c) => c.id.changeVersion(c.head.toString()).toString());\n // Always write `updateDependents` (even when empty) so checkout/revert can distinguish a\n // post-PR entry that legitimately had no hidden entries (drop current hidden) from a legacy\n // pre-PR entry that never recorded the field at all (leave current hidden alone).\n const updateDependents = (laneObj.updateDependents || []).map((id) => id.toString());\n this.history[historyKey || v4()] = {\n log,\n components,\n ...(deleted.length && { deleted }),\n updateDependents,\n };\n }\n\n removeHistoryEntries(keys: string[]) {\n for (const key of keys) {\n delete this.history[key];\n }\n }\n\n merge(laneHistory: LaneHistory) {\n this.history = { ...this.history, ...laneHistory.history };\n }\n\n static create(name: string, scope: string, laneHash: string) {\n return new LaneHistory({\n name,\n scope,\n laneHash,\n history: {},\n });\n }\n\n static parse(contents: string): LaneHistory {\n const parsed = JSON.parse(contents);\n const props: LaneHistoryProps = {\n name: parsed.name,\n scope: parsed.scope,\n laneHash: parsed.laneHash,\n history: parsed.history,\n };\n return new LaneHistory(props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/models/lane.d.ts
CHANGED
|
@@ -42,10 +42,11 @@ export default class Lane extends BitObject {
|
|
|
42
42
|
isNew: boolean;
|
|
43
43
|
hasChanged: boolean;
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
45
|
+
* components that are dependents of components in the lane and need to be re-snapped against the
|
|
46
|
+
* lane's heads. populated by the bare-scope cascade producer (UI "snap updates" / `bit _snap`)
|
|
47
|
+
* and by `bit _merge-lane`. these entries are part of the lane's graph (Ripple CI builds them,
|
|
48
|
+
* merge engine refreshes them) but are intentionally hidden from workspace-facing flows
|
|
49
|
+
* (`bit status`, `bit compile`, `bit install`, the bitmap).
|
|
49
50
|
*/
|
|
50
51
|
updateDependents?: ComponentID[];
|
|
51
52
|
private overrideUpdateDependents?;
|
|
@@ -82,18 +83,20 @@ export default class Lane extends BitObject {
|
|
|
82
83
|
static parse(contents: string, hash: string): Lane;
|
|
83
84
|
toBuffer(pretty?: boolean): Buffer<ArrayBuffer>;
|
|
84
85
|
addComponent(component: LaneComponent): void;
|
|
86
|
+
findUpdateDependent(componentId: ComponentID): ComponentID | undefined;
|
|
87
|
+
getUpdateDependentAsLaneComponent(componentId: ComponentID): LaneComponent | undefined;
|
|
85
88
|
removeComponentFromUpdateDependentsIfExist(componentId: ComponentID): void;
|
|
86
89
|
addComponentToUpdateDependents(componentId: ComponentID): void;
|
|
87
90
|
removeAllUpdateDependents(): void;
|
|
88
|
-
shouldOverrideUpdateDependents(): boolean | undefined;
|
|
89
91
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
92
|
+
* Signals an explicit `_snap --update-dependents` insertion. On export, the receiving scope
|
|
93
|
+
* gates its "add this new hidden entry" branch on this flag so a stale workspace lane can't
|
|
94
|
+
* resurrect entries the Cloud UI dropped. Workspace cascades — which only update existing
|
|
95
|
+
* entries — deliberately do NOT set the flag. The field is also serialized by `Lane.toObject`
|
|
96
|
+
* for older remotes that gate their pre-diverge-check override branch on it.
|
|
95
97
|
*/
|
|
96
98
|
setOverrideUpdateDependents(overrideUpdateDependents: boolean): void;
|
|
99
|
+
shouldOverrideUpdateDependents(): boolean;
|
|
97
100
|
removeComponent(id: ComponentID): boolean;
|
|
98
101
|
getComponent(id: ComponentID): LaneComponent | undefined;
|
|
99
102
|
getComponentHead(bitId: ComponentID): Ref | null;
|
package/dist/models/lane.js
CHANGED
|
@@ -134,10 +134,11 @@ class Lane extends _objects().BitObject {
|
|
|
134
134
|
_defineProperty(this, "hasChanged", false);
|
|
135
135
|
// doesn't get saved in the object. only needed for in-memory instance
|
|
136
136
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
137
|
+
* components that are dependents of components in the lane and need to be re-snapped against the
|
|
138
|
+
* lane's heads. populated by the bare-scope cascade producer (UI "snap updates" / `bit _snap`)
|
|
139
|
+
* and by `bit _merge-lane`. these entries are part of the lane's graph (Ripple CI builds them,
|
|
140
|
+
* merge engine refreshes them) but are intentionally hidden from workspace-facing flows
|
|
141
|
+
* (`bit status`, `bit compile`, `bit install`, the bitmap).
|
|
141
142
|
*/
|
|
142
143
|
_defineProperty(this, "updateDependents", void 0);
|
|
143
144
|
_defineProperty(this, "overrideUpdateDependents", void 0);
|
|
@@ -268,7 +269,9 @@ class Lane extends _objects().BitObject {
|
|
|
268
269
|
addComponent(component) {
|
|
269
270
|
const existsComponent = this.getComponent(component.id);
|
|
270
271
|
if (existsComponent) {
|
|
271
|
-
if (!existsComponent.head.isEqual(component.head))
|
|
272
|
+
if (!existsComponent.head.isEqual(component.head) || Boolean(existsComponent.isDeleted) !== Boolean(component.isDeleted)) {
|
|
273
|
+
this.hasChanged = true;
|
|
274
|
+
}
|
|
272
275
|
existsComponent.id = component.id;
|
|
273
276
|
existsComponent.head = component.head;
|
|
274
277
|
existsComponent.isDeleted = component.isDeleted;
|
|
@@ -278,38 +281,50 @@ class Lane extends _objects().BitObject {
|
|
|
278
281
|
this.hasChanged = true;
|
|
279
282
|
}
|
|
280
283
|
}
|
|
284
|
+
findUpdateDependent(componentId) {
|
|
285
|
+
return this.updateDependents?.find(c => c.isEqualWithoutVersion(componentId));
|
|
286
|
+
}
|
|
287
|
+
getUpdateDependentAsLaneComponent(componentId) {
|
|
288
|
+
const found = this.findUpdateDependent(componentId);
|
|
289
|
+
if (!found?.version) return undefined;
|
|
290
|
+
return {
|
|
291
|
+
id: found.changeVersion(undefined),
|
|
292
|
+
head: _objects().Ref.from(found.version)
|
|
293
|
+
};
|
|
294
|
+
}
|
|
281
295
|
removeComponentFromUpdateDependentsIfExist(componentId) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (!
|
|
285
|
-
this.updateDependents = updateDependentsList.removeIfExist(exist);
|
|
286
|
-
if (!this.updateDependents.length) this.updateDependents = undefined;
|
|
296
|
+
if (!this.findUpdateDependent(componentId)) return;
|
|
297
|
+
this.updateDependents = this.updateDependents?.filter(c => !c.isEqualWithoutVersion(componentId));
|
|
298
|
+
if (!this.updateDependents?.length) this.updateDependents = undefined;
|
|
287
299
|
this.hasChanged = true;
|
|
288
300
|
}
|
|
289
301
|
addComponentToUpdateDependents(componentId) {
|
|
302
|
+
if (!componentId.hasVersion()) {
|
|
303
|
+
throw new (_legacyCli().ValidationError)(`Lane.addComponentToUpdateDependents: ${componentId.toString()} is missing a version`);
|
|
304
|
+
}
|
|
290
305
|
this.removeComponentFromUpdateDependentsIfExist(componentId);
|
|
291
306
|
(this.updateDependents ||= []).push(componentId);
|
|
292
307
|
this.hasChanged = true;
|
|
293
308
|
}
|
|
294
309
|
removeAllUpdateDependents() {
|
|
295
|
-
if (this.updateDependents?.length) return;
|
|
310
|
+
if (!this.updateDependents?.length) return;
|
|
296
311
|
this.updateDependents = undefined;
|
|
297
312
|
this.hasChanged = true;
|
|
298
313
|
}
|
|
299
|
-
shouldOverrideUpdateDependents() {
|
|
300
|
-
return this.overrideUpdateDependents;
|
|
301
|
-
}
|
|
302
314
|
/**
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
315
|
+
* Signals an explicit `_snap --update-dependents` insertion. On export, the receiving scope
|
|
316
|
+
* gates its "add this new hidden entry" branch on this flag so a stale workspace lane can't
|
|
317
|
+
* resurrect entries the Cloud UI dropped. Workspace cascades — which only update existing
|
|
318
|
+
* entries — deliberately do NOT set the flag. The field is also serialized by `Lane.toObject`
|
|
319
|
+
* for older remotes that gate their pre-diverge-check override branch on it.
|
|
308
320
|
*/
|
|
309
321
|
setOverrideUpdateDependents(overrideUpdateDependents) {
|
|
310
322
|
this.overrideUpdateDependents = overrideUpdateDependents;
|
|
311
323
|
this.hasChanged = true;
|
|
312
324
|
}
|
|
325
|
+
shouldOverrideUpdateDependents() {
|
|
326
|
+
return Boolean(this.overrideUpdateDependents);
|
|
327
|
+
}
|
|
313
328
|
removeComponent(id) {
|
|
314
329
|
const existsComponent = this.getComponent(id);
|
|
315
330
|
if (!existsComponent) return false;
|
|
@@ -328,9 +343,11 @@ class Lane extends _objects().BitObject {
|
|
|
328
343
|
setLaneComponents(laneComponents) {
|
|
329
344
|
// this gets called when adding lane-components from other lanes/remotes, so it's better to
|
|
330
345
|
// clone the objects to not change the original data.
|
|
331
|
-
this.components = laneComponents.map(c => ({
|
|
346
|
+
this.components = laneComponents.map(c => _objectSpread({
|
|
332
347
|
id: c.id.clone(),
|
|
333
348
|
head: c.head.clone()
|
|
349
|
+
}, c.isDeleted && {
|
|
350
|
+
isDeleted: c.isDeleted
|
|
334
351
|
}));
|
|
335
352
|
this.hasChanged = true;
|
|
336
353
|
}
|
|
@@ -420,9 +437,7 @@ class Lane extends _objects().BitObject {
|
|
|
420
437
|
getCompHeadIncludeUpdateDependents(componentId) {
|
|
421
438
|
const comp = this.getComponent(componentId);
|
|
422
439
|
if (comp) return comp.head;
|
|
423
|
-
|
|
424
|
-
if (fromUpdateDependents) return _objects().Ref.from(fromUpdateDependents.version);
|
|
425
|
-
return undefined;
|
|
440
|
+
return this.getUpdateDependentAsLaneComponent(componentId)?.head;
|
|
426
441
|
}
|
|
427
442
|
validate() {
|
|
428
443
|
const message = `unable to save Lane object "${this.id()}"`;
|
|
@@ -444,15 +459,24 @@ class Lane extends _objects().BitObject {
|
|
|
444
459
|
}
|
|
445
460
|
isEqual(lane) {
|
|
446
461
|
if (this.id() !== lane.id()) return false;
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
462
|
+
// include isDeleted in equality so a soft-delete flip with the same head still counts as a
|
|
463
|
+
// state change — `Lane.isEqual` is used by importers to decide whether to write a
|
|
464
|
+
// LaneHistory entry.
|
|
465
|
+
const normalize = l => l.components.map(c => ({
|
|
466
|
+
id: c.id.toStringWithoutVersion(),
|
|
467
|
+
head: c.head.toString(),
|
|
468
|
+
isDeleted: Boolean(c.isDeleted)
|
|
469
|
+
})).sort((a, b) => `${a.id}@${a.head}:${a.isDeleted ? 1 : 0}`.localeCompare(`${b.id}@${b.head}:${b.isDeleted ? 1 : 0}`));
|
|
470
|
+
const thisUpdDeps = (this.updateDependents || []).map(c => c.toString()).sort();
|
|
471
|
+
const otherUpdDeps = (lane.updateDependents || []).map(c => c.toString()).sort();
|
|
472
|
+
return (0, _lodash().isEqual)(normalize(this), normalize(lane)) && (0, _lodash().isEqual)(thisUpdDeps, otherUpdDeps);
|
|
450
473
|
}
|
|
451
474
|
clone() {
|
|
452
475
|
return new Lane(_objectSpread(_objectSpread({}, this), {}, {
|
|
453
476
|
hash: this._hash,
|
|
454
477
|
overrideUpdateDependents: this.overrideUpdateDependents,
|
|
455
|
-
components: (0, _lodash().cloneDeep)(this.components)
|
|
478
|
+
components: (0, _lodash().cloneDeep)(this.components),
|
|
479
|
+
updateDependents: this.updateDependents ? (0, _lodash().cloneDeep)(this.updateDependents) : undefined
|
|
456
480
|
}));
|
|
457
481
|
}
|
|
458
482
|
}
|
package/dist/models/lane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","data","require","_semver","_lodash","_bitError","_componentId","_componentVersion","_laneId","_legacy","_legacyCli","_legacy2","_legacy3","_toolboxCrypto","_component","_objects","_configStore","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","OLD_LANE_SCHEMA","SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA","CURRENT_LANE_SCHEMA","Lane","BitObject","constructor","props","name","scope","components","log","date","Date","now","toString","_hash","hash","readmeComponent","forkedFrom","schema","updateDependents","overrideUpdateDependents","id","LANE_REMOTE_DELIMITER","Error","Ref","changeName","hasChanged","changeScope","refs","map","c","head","validateBeforePersisting","str","logger","debug","lane","parse","validate","toObject","obj","pickBy","component","fullName","isDeleted","val","from","create","bitCloudUser","username","getConfig","CFG_USER_NAME_KEY","email","CFG_USER_EMAIL_KEY","profileImage","sha1","v4","isNew","contents","laneObject","JSON","ComponentID","fromObject","LaneId","fromString","toBuffer","pretty","args","getStringifyArgs","stringify","validateBeforePersist","Buffer","addComponent","existsComponent","getComponent","isEqual","removeComponentFromUpdateDependentsIfExist","componentId","updateDependentsList","ComponentIdList","fromArray","exist","searchWithoutVersion","removeIfExist","undefined","addComponentToUpdateDependents","removeAllUpdateDependents","shouldOverrideUpdateDependents","setOverrideUpdateDependents","removeComponent","isEqualWithoutVersion","find","getComponentHead","bitId","found","setLaneComponents","laneComponents","clone","setReadmeComponent","previousReadme","isFullyMerged","unmerged","getMergedAndUnmergedIds","merged","Promise","all","modelComponent","getModelComponentIfExist","startTraverseFrom","getHead","headExist","hasVersionByRef","objects","toBitIds","toComponentIds","changeVersion","toComponentIdsIncludeUpdateDependents","concat","toLaneId","collectObjectsById","repo","headVersion","load","collect","includeDeletedData","gte","setSchemaToSupportDeletedData","setSchemaToNotSupportDeletedData","getCompHeadIncludeUpdateDependents","comp","fromUpdateDependents","version","message","bitIds","filterWithoutVersion","ValidationError","isSnap","toStringWithoutVersion","DEFAULT_LANE","BitError","PREVIOUS_DEFAULT_LANE","thisComponents","toStringArray","sort","otherComponents","cloneDeep","exports","default"],"sources":["lane.ts"],"sourcesContent":["import { v4 } from 'uuid';\nimport { gte } from 'semver';\nimport { cloneDeep, isEqual, pickBy } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { isSnap } from '@teambit/component-version';\nimport { LaneId, DEFAULT_LANE, LANE_REMOTE_DELIMITER } from '@teambit/lane-id';\nimport type { Scope } from '@teambit/legacy.scope';\nimport { CFG_USER_EMAIL_KEY, CFG_USER_NAME_KEY, PREVIOUS_DEFAULT_LANE } from '@teambit/legacy.constants';\nimport { ValidationError } from '@teambit/legacy.cli.error';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { hasVersionByRef } from '@teambit/component.snap-distance';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type Version from './version';\nimport { getConfig } from '@teambit/config-store';\n\nexport type Log = { date: string; username?: string; email?: string; profileImage?: string };\n\nexport type LaneProps = {\n name: string;\n scope: string;\n log: Log;\n components?: LaneComponent[];\n hash: string;\n schema?: string;\n readmeComponent?: LaneReadmeComponent;\n forkedFrom?: LaneId;\n updateDependents?: ComponentID[];\n overrideUpdateDependents?: boolean;\n};\n\nconst OLD_LANE_SCHEMA = '0.0.0';\nconst SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA = '1.0.0';\nconst CURRENT_LANE_SCHEMA = SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA;\n\nexport type LaneComponent = { id: ComponentID; head: Ref; isDeleted?: boolean };\nexport type LaneReadmeComponent = { id: ComponentID; head: Ref | null };\nexport default class Lane extends BitObject {\n name: string;\n scope: string;\n components: LaneComponent[];\n log: Log;\n schema: string;\n readmeComponent?: LaneReadmeComponent;\n forkedFrom?: LaneId;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n isNew = false; // doesn't get saved in the object. only needed for in-memory instance\n hasChanged = false; // doesn't get saved in the object. only needed for in-memory instance\n /**\n * populated when a user clicks on \"update\" in the UI. it's a list of components that are dependents on the\n * components in the lane. their dependencies are updated according to the lane.\n * from the CLI perspective, it's added by \"bit _snap\" and merged by \"bit _merge-lane\".\n * otherwise, the user is not aware of it. it's not imported to the workspace and the objects are not fetched.\n */\n updateDependents?: ComponentID[];\n private overrideUpdateDependents?: boolean;\n constructor(props: LaneProps) {\n super();\n if (!props.name) throw new TypeError('Lane constructor expects to get a name parameter');\n this.name = props.name;\n this.scope = props.scope;\n this.components = props.components || [];\n this.log = props.log || { date: Date.now().toString() };\n this._hash = props.hash;\n this.readmeComponent = props.readmeComponent;\n this.forkedFrom = props.forkedFrom;\n this.schema = props.schema || OLD_LANE_SCHEMA;\n this.updateDependents = props.updateDependents;\n this.overrideUpdateDependents = props.overrideUpdateDependents;\n }\n id(): string {\n return this.scope + LANE_REMOTE_DELIMITER + this.name;\n }\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Lane object');\n }\n return new Ref(this._hash);\n }\n changeName(name: string) {\n this.name = name;\n this.hasChanged = true;\n }\n changeScope(scope: string) {\n this.scope = scope;\n this.hasChanged = true;\n }\n refs(): Ref[] {\n return this.components.map((c) => c.head);\n }\n validateBeforePersisting(str: string) {\n logger.debug(`validating lane object: ${this.hash().toString()} ${this.id()}`);\n const lane = Lane.parse(str, this.hash().toString());\n lane.validate();\n }\n toObject() {\n const obj = pickBy(\n {\n name: this.name,\n scope: this.scope,\n components: this.components.map((component) => ({\n id: { scope: component.id.scope, name: component.id.fullName },\n head: component.head.toString(),\n ...(component.isDeleted && { isDeleted: component.isDeleted }),\n })),\n log: this.log,\n readmeComponent: this.readmeComponent && {\n id: { scope: this.readmeComponent.id.scope, name: this.readmeComponent.id.fullName },\n head: this.readmeComponent.head?.toString() ?? null,\n },\n forkedFrom: this.forkedFrom && this.forkedFrom.toObject(),\n schema: this.schema,\n updateDependents: this.updateDependents?.map((c) => c.toString()),\n overrideUpdateDependents: this.overrideUpdateDependents,\n },\n (val) => !!val\n );\n return obj;\n }\n static from(props: LaneProps): Lane {\n return new Lane(props);\n }\n static create(\n name: string,\n scope: string,\n forkedFrom?: LaneId,\n bitCloudUser?: {\n username?: string;\n email?: string;\n profileImage?: string;\n }\n ) {\n const log = {\n date: Date.now().toString(),\n username: bitCloudUser?.username || getConfig(CFG_USER_NAME_KEY),\n email: bitCloudUser?.email || getConfig(CFG_USER_EMAIL_KEY),\n profileImage: bitCloudUser?.profileImage,\n };\n const lane = new Lane({ name, scope, hash: sha1(v4()), log, forkedFrom, schema: CURRENT_LANE_SCHEMA });\n lane.isNew = true;\n lane.hasChanged = true;\n return lane;\n }\n static parse(contents: string, hash: string): Lane {\n const laneObject = JSON.parse(contents);\n return Lane.from({\n name: laneObject.name,\n scope: laneObject.scope,\n log: laneObject.log,\n components: laneObject.components.map((component) => ({\n id: ComponentID.fromObject({ scope: component.id.scope, name: component.id.name }),\n head: new Ref(component.head),\n isDeleted: component.isDeleted,\n })),\n readmeComponent: laneObject.readmeComponent && {\n id: ComponentID.fromObject({\n scope: laneObject.readmeComponent.id.scope,\n name: laneObject.readmeComponent.id.name,\n }),\n head: laneObject.readmeComponent.head && new Ref(laneObject.readmeComponent.head),\n },\n forkedFrom: laneObject.forkedFrom && LaneId.from(laneObject.forkedFrom.name, laneObject.forkedFrom.scope),\n updateDependents: laneObject.updateDependents?.map((c) => ComponentID.fromString(c)),\n overrideUpdateDependents: laneObject.overrideUpdateDependents,\n hash: laneObject.hash || hash,\n schema: laneObject.schema,\n });\n }\n toBuffer(pretty?: boolean) {\n const args = getStringifyArgs(pretty);\n const obj = this.toObject();\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n addComponent(component: LaneComponent) {\n const existsComponent = this.getComponent(component.id);\n if (existsComponent) {\n if (!existsComponent.head.isEqual(component.head)) this.hasChanged = true;\n existsComponent.id = component.id;\n existsComponent.head = component.head;\n existsComponent.isDeleted = component.isDeleted;\n } else {\n logger.debug(`Lane.addComponent, adding component ${component.id.toString()} to lane ${this.id()}`);\n this.components.push(component);\n this.hasChanged = true;\n }\n }\n removeComponentFromUpdateDependentsIfExist(componentId: ComponentID) {\n const updateDependentsList = ComponentIdList.fromArray(this.updateDependents || []);\n const exist = updateDependentsList.searchWithoutVersion(componentId);\n if (!exist) return;\n this.updateDependents = updateDependentsList.removeIfExist(exist);\n if (!this.updateDependents.length) this.updateDependents = undefined;\n this.hasChanged = true;\n }\n addComponentToUpdateDependents(componentId: ComponentID) {\n this.removeComponentFromUpdateDependentsIfExist(componentId);\n (this.updateDependents ||= []).push(componentId);\n this.hasChanged = true;\n }\n removeAllUpdateDependents() {\n if (this.updateDependents?.length) return;\n this.updateDependents = undefined;\n this.hasChanged = true;\n }\n shouldOverrideUpdateDependents() {\n return this.overrideUpdateDependents;\n }\n /**\n * !!! important !!!\n * this should get called only on a \"temp lane\", such as running \"bit _snap\", which the scope gets destroys after the\n * command is done. when _scope exports the lane, this \"overrideUpdateDependents\" is not saved to the remote-scope.\n *\n * on a user local lane object, this prop should never be true. otherwise, it'll override the remote-scope data.\n */\n setOverrideUpdateDependents(overrideUpdateDependents: boolean) {\n this.overrideUpdateDependents = overrideUpdateDependents;\n this.hasChanged = true;\n }\n\n removeComponent(id: ComponentID): boolean {\n const existsComponent = this.getComponent(id);\n if (!existsComponent) return false;\n this.components = this.components.filter((c) => !c.id.isEqualWithoutVersion(id));\n this.hasChanged = true;\n return true;\n }\n getComponent(id: ComponentID): LaneComponent | undefined {\n return this.components.find((c) => c.id.isEqualWithoutVersion(id));\n }\n getComponentHead(bitId: ComponentID): Ref | null {\n const found = this.components.find((c) => c.id.isEqual(bitId));\n if (found) return found.head;\n return null;\n }\n setLaneComponents(laneComponents: LaneComponent[]) {\n // this gets called when adding lane-components from other lanes/remotes, so it's better to\n // clone the objects to not change the original data.\n this.components = laneComponents.map((c) => ({ id: c.id.clone(), head: c.head.clone() }));\n this.hasChanged = true;\n }\n setReadmeComponent(id?: ComponentID) {\n const previousReadme = this.readmeComponent;\n if (!id) {\n this.readmeComponent = undefined;\n if (previousReadme) this.hasChanged = true;\n return;\n }\n const readmeComponent = this.getComponent(id);\n if (!readmeComponent) {\n this.readmeComponent = { id, head: null };\n } else {\n this.readmeComponent = readmeComponent;\n }\n if (\n !previousReadme ||\n !previousReadme.id.isEqual(id) ||\n previousReadme.head?.toString() !== this.readmeComponent.head?.toString()\n ) {\n this.hasChanged = true;\n }\n }\n\n async isFullyMerged(scope: Scope): Promise<boolean> {\n const { unmerged } = await this.getMergedAndUnmergedIds(scope);\n return unmerged.length === 0;\n }\n async getMergedAndUnmergedIds(scope: Scope): Promise<{ merged: ComponentID[]; unmerged: ComponentID[] }> {\n const merged: ComponentID[] = [];\n const unmerged: ComponentID[] = [];\n await Promise.all(\n this.components.map(async (component) => {\n const modelComponent = await scope.getModelComponentIfExist(component.id);\n if (!modelComponent) {\n unmerged.push(component.id);\n return;\n }\n const startTraverseFrom = modelComponent.getHead() || null; // it's important to have it as null and not as undefined, see hasVersionByRef\n const headExist = await hasVersionByRef(modelComponent, component.head, scope.objects, startTraverseFrom);\n if (headExist) merged.push(component.id);\n else unmerged.push(component.id);\n })\n );\n return { merged, unmerged };\n }\n /**\n * @deprecated use toComponentIds instead\n */\n toBitIds(): ComponentIdList {\n return this.toComponentIds();\n }\n toComponentIds(): ComponentIdList {\n return ComponentIdList.fromArray(this.components.map((c) => c.id.changeVersion(c.head.toString())));\n }\n toComponentIdsIncludeUpdateDependents(): ComponentIdList {\n return ComponentIdList.fromArray(this.toComponentIds().concat(this.updateDependents || []));\n }\n toLaneId() {\n return new LaneId({ scope: this.scope, name: this.name });\n }\n collectObjectsById(repo: Repository): Promise<Array<{ id: ComponentID; objects: BitObject[] }>> {\n return Promise.all(\n this.components.map(async (component) => {\n const headVersion = (await component.head.load(repo)) as Version;\n const objects = [headVersion, ...headVersion.collect(repo)];\n return { id: component.id, objects };\n })\n );\n }\n includeDeletedData(): boolean {\n return gte(this.schema, SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA);\n }\n setSchemaToSupportDeletedData() {\n this.schema = SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA;\n this.hasChanged = true;\n }\n setSchemaToNotSupportDeletedData() {\n this.schema = OLD_LANE_SCHEMA;\n this.hasChanged = true;\n }\n getCompHeadIncludeUpdateDependents(componentId: ComponentID): Ref | undefined {\n const comp = this.getComponent(componentId);\n if (comp) return comp.head;\n const fromUpdateDependents = this.updateDependents?.find((c) => c.isEqualWithoutVersion(componentId));\n if (fromUpdateDependents) return Ref.from(fromUpdateDependents.version);\n return undefined;\n }\n validate() {\n const message = `unable to save Lane object \"${this.id()}\"`;\n const bitIds = this.toComponentIds();\n this.components.forEach((component) => {\n if (bitIds.filterWithoutVersion(component.id).length > 1) {\n throw new ValidationError(`${message}, the following component is duplicated \"${component.id.fullName}\"`);\n }\n if (!isSnap(component.head.hash)) {\n throw new ValidationError(\n `${message}, lane component ${component.id.toStringWithoutVersion()} head should be a hash, got ${\n component.head.hash\n }`\n );\n }\n });\n if (this.name === DEFAULT_LANE) {\n throw new BitError(`${message}, this name is reserved as the default lane`);\n }\n if (this.name === PREVIOUS_DEFAULT_LANE) {\n throw new BitError(`${message}, this name is reserved as the old default lane`);\n }\n }\n isEqual(lane: Lane): boolean {\n if (this.id() !== lane.id()) return false;\n const thisComponents = this.toComponentIds().toStringArray().sort();\n const otherComponents = lane.toComponentIds().toStringArray().sort();\n return isEqual(thisComponents, otherComponents);\n }\n clone() {\n return new Lane({\n ...this,\n hash: this._hash,\n overrideUpdateDependents: this.overrideUpdateDependents,\n components: cloneDeep(this.components),\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_uuid","data","require","_semver","_lodash","_bitError","_componentId","_componentVersion","_laneId","_legacy","_legacyCli","_legacy2","_legacy3","_toolboxCrypto","_component","_objects","_configStore","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","OLD_LANE_SCHEMA","SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA","CURRENT_LANE_SCHEMA","Lane","BitObject","constructor","props","name","scope","components","log","date","Date","now","toString","_hash","hash","readmeComponent","forkedFrom","schema","updateDependents","overrideUpdateDependents","id","LANE_REMOTE_DELIMITER","Error","Ref","changeName","hasChanged","changeScope","refs","map","c","head","validateBeforePersisting","str","logger","debug","lane","parse","validate","toObject","obj","pickBy","component","fullName","isDeleted","val","from","create","bitCloudUser","username","getConfig","CFG_USER_NAME_KEY","email","CFG_USER_EMAIL_KEY","profileImage","sha1","v4","isNew","contents","laneObject","JSON","ComponentID","fromObject","LaneId","fromString","toBuffer","pretty","args","getStringifyArgs","stringify","validateBeforePersist","Buffer","addComponent","existsComponent","getComponent","isEqual","Boolean","findUpdateDependent","componentId","find","isEqualWithoutVersion","getUpdateDependentAsLaneComponent","found","version","undefined","changeVersion","removeComponentFromUpdateDependentsIfExist","addComponentToUpdateDependents","hasVersion","ValidationError","removeAllUpdateDependents","setOverrideUpdateDependents","shouldOverrideUpdateDependents","removeComponent","getComponentHead","bitId","setLaneComponents","laneComponents","clone","setReadmeComponent","previousReadme","isFullyMerged","unmerged","getMergedAndUnmergedIds","merged","Promise","all","modelComponent","getModelComponentIfExist","startTraverseFrom","getHead","headExist","hasVersionByRef","objects","toBitIds","toComponentIds","ComponentIdList","fromArray","toComponentIdsIncludeUpdateDependents","concat","toLaneId","collectObjectsById","repo","headVersion","load","collect","includeDeletedData","gte","setSchemaToSupportDeletedData","setSchemaToNotSupportDeletedData","getCompHeadIncludeUpdateDependents","comp","message","bitIds","filterWithoutVersion","isSnap","toStringWithoutVersion","DEFAULT_LANE","BitError","PREVIOUS_DEFAULT_LANE","normalize","l","sort","a","b","localeCompare","thisUpdDeps","otherUpdDeps","cloneDeep","exports","default"],"sources":["lane.ts"],"sourcesContent":["import { v4 } from 'uuid';\nimport { gte } from 'semver';\nimport { cloneDeep, isEqual, pickBy } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { isSnap } from '@teambit/component-version';\nimport { LaneId, DEFAULT_LANE, LANE_REMOTE_DELIMITER } from '@teambit/lane-id';\nimport type { Scope } from '@teambit/legacy.scope';\nimport { CFG_USER_EMAIL_KEY, CFG_USER_NAME_KEY, PREVIOUS_DEFAULT_LANE } from '@teambit/legacy.constants';\nimport { ValidationError } from '@teambit/legacy.cli.error';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { hasVersionByRef } from '@teambit/component.snap-distance';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type Version from './version';\nimport { getConfig } from '@teambit/config-store';\n\nexport type Log = { date: string; username?: string; email?: string; profileImage?: string };\n\nexport type LaneProps = {\n name: string;\n scope: string;\n log: Log;\n components?: LaneComponent[];\n hash: string;\n schema?: string;\n readmeComponent?: LaneReadmeComponent;\n forkedFrom?: LaneId;\n updateDependents?: ComponentID[];\n overrideUpdateDependents?: boolean;\n};\n\nconst OLD_LANE_SCHEMA = '0.0.0';\nconst SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA = '1.0.0';\nconst CURRENT_LANE_SCHEMA = SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA;\n\nexport type LaneComponent = { id: ComponentID; head: Ref; isDeleted?: boolean };\nexport type LaneReadmeComponent = { id: ComponentID; head: Ref | null };\nexport default class Lane extends BitObject {\n name: string;\n scope: string;\n components: LaneComponent[];\n log: Log;\n schema: string;\n readmeComponent?: LaneReadmeComponent;\n forkedFrom?: LaneId;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n isNew = false; // doesn't get saved in the object. only needed for in-memory instance\n hasChanged = false; // doesn't get saved in the object. only needed for in-memory instance\n /**\n * components that are dependents of components in the lane and need to be re-snapped against the\n * lane's heads. populated by the bare-scope cascade producer (UI \"snap updates\" / `bit _snap`)\n * and by `bit _merge-lane`. these entries are part of the lane's graph (Ripple CI builds them,\n * merge engine refreshes them) but are intentionally hidden from workspace-facing flows\n * (`bit status`, `bit compile`, `bit install`, the bitmap).\n */\n updateDependents?: ComponentID[];\n private overrideUpdateDependents?: boolean;\n constructor(props: LaneProps) {\n super();\n if (!props.name) throw new TypeError('Lane constructor expects to get a name parameter');\n this.name = props.name;\n this.scope = props.scope;\n this.components = props.components || [];\n this.log = props.log || { date: Date.now().toString() };\n this._hash = props.hash;\n this.readmeComponent = props.readmeComponent;\n this.forkedFrom = props.forkedFrom;\n this.schema = props.schema || OLD_LANE_SCHEMA;\n this.updateDependents = props.updateDependents;\n this.overrideUpdateDependents = props.overrideUpdateDependents;\n }\n id(): string {\n return this.scope + LANE_REMOTE_DELIMITER + this.name;\n }\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Lane object');\n }\n return new Ref(this._hash);\n }\n changeName(name: string) {\n this.name = name;\n this.hasChanged = true;\n }\n changeScope(scope: string) {\n this.scope = scope;\n this.hasChanged = true;\n }\n refs(): Ref[] {\n return this.components.map((c) => c.head);\n }\n validateBeforePersisting(str: string) {\n logger.debug(`validating lane object: ${this.hash().toString()} ${this.id()}`);\n const lane = Lane.parse(str, this.hash().toString());\n lane.validate();\n }\n toObject() {\n const obj = pickBy(\n {\n name: this.name,\n scope: this.scope,\n components: this.components.map((component) => ({\n id: { scope: component.id.scope, name: component.id.fullName },\n head: component.head.toString(),\n ...(component.isDeleted && { isDeleted: component.isDeleted }),\n })),\n log: this.log,\n readmeComponent: this.readmeComponent && {\n id: { scope: this.readmeComponent.id.scope, name: this.readmeComponent.id.fullName },\n head: this.readmeComponent.head?.toString() ?? null,\n },\n forkedFrom: this.forkedFrom && this.forkedFrom.toObject(),\n schema: this.schema,\n updateDependents: this.updateDependents?.map((c) => c.toString()),\n overrideUpdateDependents: this.overrideUpdateDependents,\n },\n (val) => !!val\n );\n return obj;\n }\n static from(props: LaneProps): Lane {\n return new Lane(props);\n }\n static create(\n name: string,\n scope: string,\n forkedFrom?: LaneId,\n bitCloudUser?: {\n username?: string;\n email?: string;\n profileImage?: string;\n }\n ) {\n const log = {\n date: Date.now().toString(),\n username: bitCloudUser?.username || getConfig(CFG_USER_NAME_KEY),\n email: bitCloudUser?.email || getConfig(CFG_USER_EMAIL_KEY),\n profileImage: bitCloudUser?.profileImage,\n };\n const lane = new Lane({ name, scope, hash: sha1(v4()), log, forkedFrom, schema: CURRENT_LANE_SCHEMA });\n lane.isNew = true;\n lane.hasChanged = true;\n return lane;\n }\n static parse(contents: string, hash: string): Lane {\n const laneObject = JSON.parse(contents);\n return Lane.from({\n name: laneObject.name,\n scope: laneObject.scope,\n log: laneObject.log,\n components: laneObject.components.map((component) => ({\n id: ComponentID.fromObject({ scope: component.id.scope, name: component.id.name }),\n head: new Ref(component.head),\n isDeleted: component.isDeleted,\n })),\n readmeComponent: laneObject.readmeComponent && {\n id: ComponentID.fromObject({\n scope: laneObject.readmeComponent.id.scope,\n name: laneObject.readmeComponent.id.name,\n }),\n head: laneObject.readmeComponent.head && new Ref(laneObject.readmeComponent.head),\n },\n forkedFrom: laneObject.forkedFrom && LaneId.from(laneObject.forkedFrom.name, laneObject.forkedFrom.scope),\n updateDependents: laneObject.updateDependents?.map((c) => ComponentID.fromString(c)),\n overrideUpdateDependents: laneObject.overrideUpdateDependents,\n hash: laneObject.hash || hash,\n schema: laneObject.schema,\n });\n }\n toBuffer(pretty?: boolean) {\n const args = getStringifyArgs(pretty);\n const obj = this.toObject();\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n addComponent(component: LaneComponent) {\n const existsComponent = this.getComponent(component.id);\n if (existsComponent) {\n if (\n !existsComponent.head.isEqual(component.head) ||\n Boolean(existsComponent.isDeleted) !== Boolean(component.isDeleted)\n ) {\n this.hasChanged = true;\n }\n existsComponent.id = component.id;\n existsComponent.head = component.head;\n existsComponent.isDeleted = component.isDeleted;\n } else {\n logger.debug(`Lane.addComponent, adding component ${component.id.toString()} to lane ${this.id()}`);\n this.components.push(component);\n this.hasChanged = true;\n }\n }\n findUpdateDependent(componentId: ComponentID): ComponentID | undefined {\n return this.updateDependents?.find((c) => c.isEqualWithoutVersion(componentId));\n }\n getUpdateDependentAsLaneComponent(componentId: ComponentID): LaneComponent | undefined {\n const found = this.findUpdateDependent(componentId);\n if (!found?.version) return undefined;\n return { id: found.changeVersion(undefined), head: Ref.from(found.version) };\n }\n removeComponentFromUpdateDependentsIfExist(componentId: ComponentID) {\n if (!this.findUpdateDependent(componentId)) return;\n this.updateDependents = this.updateDependents?.filter((c) => !c.isEqualWithoutVersion(componentId));\n if (!this.updateDependents?.length) this.updateDependents = undefined;\n this.hasChanged = true;\n }\n addComponentToUpdateDependents(componentId: ComponentID) {\n if (!componentId.hasVersion()) {\n throw new ValidationError(`Lane.addComponentToUpdateDependents: ${componentId.toString()} is missing a version`);\n }\n this.removeComponentFromUpdateDependentsIfExist(componentId);\n (this.updateDependents ||= []).push(componentId);\n this.hasChanged = true;\n }\n removeAllUpdateDependents() {\n if (!this.updateDependents?.length) return;\n this.updateDependents = undefined;\n this.hasChanged = true;\n }\n /**\n * Signals an explicit `_snap --update-dependents` insertion. On export, the receiving scope\n * gates its \"add this new hidden entry\" branch on this flag so a stale workspace lane can't\n * resurrect entries the Cloud UI dropped. Workspace cascades — which only update existing\n * entries — deliberately do NOT set the flag. The field is also serialized by `Lane.toObject`\n * for older remotes that gate their pre-diverge-check override branch on it.\n */\n setOverrideUpdateDependents(overrideUpdateDependents: boolean) {\n this.overrideUpdateDependents = overrideUpdateDependents;\n this.hasChanged = true;\n }\n\n shouldOverrideUpdateDependents(): boolean {\n return Boolean(this.overrideUpdateDependents);\n }\n\n removeComponent(id: ComponentID): boolean {\n const existsComponent = this.getComponent(id);\n if (!existsComponent) return false;\n this.components = this.components.filter((c) => !c.id.isEqualWithoutVersion(id));\n this.hasChanged = true;\n return true;\n }\n getComponent(id: ComponentID): LaneComponent | undefined {\n return this.components.find((c) => c.id.isEqualWithoutVersion(id));\n }\n getComponentHead(bitId: ComponentID): Ref | null {\n const found = this.components.find((c) => c.id.isEqual(bitId));\n if (found) return found.head;\n return null;\n }\n setLaneComponents(laneComponents: LaneComponent[]) {\n // this gets called when adding lane-components from other lanes/remotes, so it's better to\n // clone the objects to not change the original data.\n this.components = laneComponents.map((c) => ({\n id: c.id.clone(),\n head: c.head.clone(),\n ...(c.isDeleted && { isDeleted: c.isDeleted }),\n }));\n this.hasChanged = true;\n }\n setReadmeComponent(id?: ComponentID) {\n const previousReadme = this.readmeComponent;\n if (!id) {\n this.readmeComponent = undefined;\n if (previousReadme) this.hasChanged = true;\n return;\n }\n const readmeComponent = this.getComponent(id);\n if (!readmeComponent) {\n this.readmeComponent = { id, head: null };\n } else {\n this.readmeComponent = readmeComponent;\n }\n if (\n !previousReadme ||\n !previousReadme.id.isEqual(id) ||\n previousReadme.head?.toString() !== this.readmeComponent.head?.toString()\n ) {\n this.hasChanged = true;\n }\n }\n\n async isFullyMerged(scope: Scope): Promise<boolean> {\n const { unmerged } = await this.getMergedAndUnmergedIds(scope);\n return unmerged.length === 0;\n }\n async getMergedAndUnmergedIds(scope: Scope): Promise<{ merged: ComponentID[]; unmerged: ComponentID[] }> {\n const merged: ComponentID[] = [];\n const unmerged: ComponentID[] = [];\n await Promise.all(\n this.components.map(async (component) => {\n const modelComponent = await scope.getModelComponentIfExist(component.id);\n if (!modelComponent) {\n unmerged.push(component.id);\n return;\n }\n const startTraverseFrom = modelComponent.getHead() || null; // it's important to have it as null and not as undefined, see hasVersionByRef\n const headExist = await hasVersionByRef(modelComponent, component.head, scope.objects, startTraverseFrom);\n if (headExist) merged.push(component.id);\n else unmerged.push(component.id);\n })\n );\n return { merged, unmerged };\n }\n /**\n * @deprecated use toComponentIds instead\n */\n toBitIds(): ComponentIdList {\n return this.toComponentIds();\n }\n toComponentIds(): ComponentIdList {\n return ComponentIdList.fromArray(this.components.map((c) => c.id.changeVersion(c.head.toString())));\n }\n toComponentIdsIncludeUpdateDependents(): ComponentIdList {\n return ComponentIdList.fromArray(this.toComponentIds().concat(this.updateDependents || []));\n }\n toLaneId() {\n return new LaneId({ scope: this.scope, name: this.name });\n }\n collectObjectsById(repo: Repository): Promise<Array<{ id: ComponentID; objects: BitObject[] }>> {\n return Promise.all(\n this.components.map(async (component) => {\n const headVersion = (await component.head.load(repo)) as Version;\n const objects = [headVersion, ...headVersion.collect(repo)];\n return { id: component.id, objects };\n })\n );\n }\n includeDeletedData(): boolean {\n return gte(this.schema, SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA);\n }\n setSchemaToSupportDeletedData() {\n this.schema = SCHEMA_INCLUDING_DELETED_COMPONENTS_DATA;\n this.hasChanged = true;\n }\n setSchemaToNotSupportDeletedData() {\n this.schema = OLD_LANE_SCHEMA;\n this.hasChanged = true;\n }\n getCompHeadIncludeUpdateDependents(componentId: ComponentID): Ref | undefined {\n const comp = this.getComponent(componentId);\n if (comp) return comp.head;\n return this.getUpdateDependentAsLaneComponent(componentId)?.head;\n }\n validate() {\n const message = `unable to save Lane object \"${this.id()}\"`;\n const bitIds = this.toComponentIds();\n this.components.forEach((component) => {\n if (bitIds.filterWithoutVersion(component.id).length > 1) {\n throw new ValidationError(`${message}, the following component is duplicated \"${component.id.fullName}\"`);\n }\n if (!isSnap(component.head.hash)) {\n throw new ValidationError(\n `${message}, lane component ${component.id.toStringWithoutVersion()} head should be a hash, got ${\n component.head.hash\n }`\n );\n }\n });\n if (this.name === DEFAULT_LANE) {\n throw new BitError(`${message}, this name is reserved as the default lane`);\n }\n if (this.name === PREVIOUS_DEFAULT_LANE) {\n throw new BitError(`${message}, this name is reserved as the old default lane`);\n }\n }\n isEqual(lane: Lane): boolean {\n if (this.id() !== lane.id()) return false;\n // include isDeleted in equality so a soft-delete flip with the same head still counts as a\n // state change — `Lane.isEqual` is used by importers to decide whether to write a\n // LaneHistory entry.\n const normalize = (l: Lane) =>\n l.components\n .map((c) => ({\n id: c.id.toStringWithoutVersion(),\n head: c.head.toString(),\n isDeleted: Boolean(c.isDeleted),\n }))\n .sort((a, b) =>\n `${a.id}@${a.head}:${a.isDeleted ? 1 : 0}`.localeCompare(`${b.id}@${b.head}:${b.isDeleted ? 1 : 0}`)\n );\n const thisUpdDeps = (this.updateDependents || []).map((c) => c.toString()).sort();\n const otherUpdDeps = (lane.updateDependents || []).map((c) => c.toString()).sort();\n return isEqual(normalize(this), normalize(lane)) && isEqual(thisUpdDeps, otherUpdDeps);\n }\n clone() {\n return new Lane({\n ...this,\n hash: this._hash,\n overrideUpdateDependents: this.overrideUpdateDependents,\n components: cloneDeep(this.components),\n updateDependents: this.updateDependents ? cloneDeep(this.updateDependents) : undefined,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -443,7 +443,9 @@ class Component extends _objects().BitObject {
|
|
|
443
443
|
}
|
|
444
444
|
setLaneHeadLocal(lane) {
|
|
445
445
|
if (lane) {
|
|
446
|
-
|
|
446
|
+
// include lane.updateDependents — hidden cascade entries need a lane-local head so the
|
|
447
|
+
// export-pending detector picks them up after a workspace cascade snap.
|
|
448
|
+
this.laneHeadLocal = lane.getCompHeadIncludeUpdateDependents(this.toComponentId()) || null;
|
|
447
449
|
}
|
|
448
450
|
}
|
|
449
451
|
|
|
@@ -738,10 +740,22 @@ class Component extends _objects().BitObject {
|
|
|
738
740
|
if (parent && !parent.isEqual(versionToAddRef)) {
|
|
739
741
|
version.addAsOnlyParent(parent);
|
|
740
742
|
}
|
|
741
|
-
|
|
743
|
+
// When the caller didn't explicitly opt in or out, preserve the existing entry's bucket so
|
|
744
|
+
// a merge-from-main producing a new snap for a hidden updateDependent keeps it hidden
|
|
745
|
+
// rather than promoting it into workspace-tracked state.
|
|
746
|
+
const existingHidden = lane.findUpdateDependent(currentBitId);
|
|
747
|
+
const existingVisible = lane.getComponent(currentBitId);
|
|
748
|
+
const shouldBeHidden = addToUpdateDependentsInLane ?? (Boolean(existingHidden) && !existingVisible);
|
|
749
|
+
if (shouldBeHidden) {
|
|
750
|
+
if (existingVisible) lane.removeComponent(currentBitId);
|
|
742
751
|
lane.addComponentToUpdateDependents(currentBitId.changeVersion(versionToAddRef.toString()));
|
|
743
|
-
|
|
752
|
+
// Only brand-new hidden insertions raise the wire flag — that's the `_snap --update-dependents`
|
|
753
|
+
// path adding a component that wasn't already on the lane. Cascades update an existing
|
|
754
|
+
// hidden entry (wasAlreadyHidden=true) and must NOT raise the flag, otherwise origin would
|
|
755
|
+
// re-add entries the Cloud UI explicitly dropped.
|
|
756
|
+
if (!existingHidden) lane.setOverrideUpdateDependents(true);
|
|
744
757
|
} else {
|
|
758
|
+
if (existingHidden) lane.removeComponentFromUpdateDependentsIfExist(currentBitId);
|
|
745
759
|
lane.addComponent({
|
|
746
760
|
id: currentBitId,
|
|
747
761
|
head: versionToAddRef,
|