@ibgib/vcs-gib 0.0.30 → 0.0.32
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/AUTO-GENERATED-version.d.mts +1 -1
- package/dist/AUTO-GENERATED-version.mjs +1 -1
- package/dist/bootstrap/node-bootstrap.mjs +1 -1
- package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
- package/dist/cli/commands/add-cmd.d.mts +2 -3
- package/dist/cli/commands/add-cmd.d.mts.map +1 -1
- package/dist/cli/commands/add-cmd.mjs +30 -283
- package/dist/cli/commands/add-cmd.mjs.map +1 -1
- package/dist/cli/commands/branch-cmd.d.mts +8 -8
- package/dist/cli/commands/branch-cmd.d.mts.map +1 -1
- package/dist/cli/commands/branch-cmd.mjs +45 -176
- package/dist/cli/commands/branch-cmd.mjs.map +1 -1
- package/dist/cli/commands/checkout-cmd.d.mts +2 -4
- package/dist/cli/commands/checkout-cmd.d.mts.map +1 -1
- package/dist/cli/commands/checkout-cmd.mjs +31 -110
- package/dist/cli/commands/checkout-cmd.mjs.map +1 -1
- package/dist/cli/commands/commit-cmd.d.mts +7 -8
- package/dist/cli/commands/commit-cmd.d.mts.map +1 -1
- package/dist/cli/commands/commit-cmd.mjs +40 -390
- package/dist/cli/commands/commit-cmd.mjs.map +1 -1
- package/dist/cli/commands/generate-comment-cmd.d.mts.map +1 -1
- package/dist/cli/commands/generate-comment-cmd.mjs +5 -2
- package/dist/cli/commands/generate-comment-cmd.mjs.map +1 -1
- package/dist/cli/commands/init-cmd.d.mts +2 -2
- package/dist/cli/commands/init-cmd.d.mts.map +1 -1
- package/dist/cli/commands/init-cmd.mjs +20 -70
- package/dist/cli/commands/init-cmd.mjs.map +1 -1
- package/dist/cli/commands/log-cmd.d.mts +2 -3
- package/dist/cli/commands/log-cmd.d.mts.map +1 -1
- package/dist/cli/commands/log-cmd.mjs +42 -271
- package/dist/cli/commands/log-cmd.mjs.map +1 -1
- package/dist/cli/commands/merge-cmd.d.mts +3 -17
- package/dist/cli/commands/merge-cmd.d.mts.map +1 -1
- package/dist/cli/commands/merge-cmd.mjs +32 -218
- package/dist/cli/commands/merge-cmd.mjs.map +1 -1
- package/dist/cli/commands/reset-cmd.d.mts +1 -1
- package/dist/cli/commands/reset-cmd.d.mts.map +1 -1
- package/dist/cli/commands/reset-cmd.mjs +17 -19
- package/dist/cli/commands/reset-cmd.mjs.map +1 -1
- package/dist/cli/commands/restore-cmd.d.mts +8 -7
- package/dist/cli/commands/restore-cmd.d.mts.map +1 -1
- package/dist/cli/commands/restore-cmd.mjs +44 -62
- package/dist/cli/commands/restore-cmd.mjs.map +1 -1
- package/dist/cli/commands/status-cmd.d.mts +2 -2
- package/dist/cli/commands/status-cmd.d.mts.map +1 -1
- package/dist/cli/commands/status-cmd.mjs +63 -62
- package/dist/cli/commands/status-cmd.mjs.map +1 -1
- package/dist/cli/vcs-projection-helper.d.mts +23 -0
- package/dist/cli/vcs-projection-helper.d.mts.map +1 -0
- package/dist/cli/vcs-projection-helper.mjs +91 -0
- package/dist/cli/vcs-projection-helper.mjs.map +1 -0
- package/dist/test/test-helpers.d.mts +2 -2
- package/dist/test/test-helpers.d.mts.map +1 -1
- package/package.json +3 -3
- package/src/AUTO-GENERATED-version.mts +1 -1
- package/src/bootstrap/node-bootstrap.mts +1 -1
- package/src/cli/cli-e2e.respec.mts +4 -4
- package/src/cli/commands/add-cmd.mts +32 -347
- package/src/cli/commands/branch-cmd.mts +56 -225
- package/src/cli/commands/checkout-cmd.mts +34 -138
- package/src/cli/commands/commit-cmd.mts +46 -473
- package/src/cli/commands/commit-log-cmd.respec.mts +11 -7
- package/src/cli/commands/generate-comment-cmd.mts +6 -2
- package/src/cli/commands/init-cmd.mts +20 -73
- package/src/cli/commands/log-cmd.mts +41 -331
- package/src/cli/commands/merge-cmd.mts +32 -252
- package/src/cli/commands/reset-cmd.mts +17 -19
- package/src/cli/commands/restore-cmd.mts +52 -72
- package/src/cli/commands/status-add-cmd.respec.mts +3 -3
- package/src/cli/commands/status-cmd.mts +68 -63
- package/src/cli/vcs-projection-helper.mts +112 -0
- package/src/engine/branch/branch-space.respec.mts +5 -5
- package/src/engine/merge/b2tfs-sync-comments.respec.mts +4 -4
- package/src/test/test-helpers.mts +2 -2
- package/src/vcs-gib.respec.mts +11 -8
- package/tsconfig.test.tsbuildinfo +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/engine/branch/branch-graph-helper.d.mts +0 -28
- package/dist/engine/branch/branch-graph-helper.d.mts.map +0 -1
- package/dist/engine/branch/branch-graph-helper.mjs +0 -81
- package/dist/engine/branch/branch-graph-helper.mjs.map +0 -1
- package/dist/engine/branch/branch-helper.d.mts +0 -40
- package/dist/engine/branch/branch-helper.d.mts.map +0 -1
- package/dist/engine/branch/branch-helper.mjs +0 -78
- package/dist/engine/branch/branch-helper.mjs.map +0 -1
- package/dist/engine/branch/branch-space-helper.d.mts +0 -23
- package/dist/engine/branch/branch-space-helper.d.mts.map +0 -1
- package/dist/engine/branch/branch-space-helper.mjs +0 -78
- package/dist/engine/branch/branch-space-helper.mjs.map +0 -1
- package/dist/engine/branch/branch-types.d.mts +0 -26
- package/dist/engine/branch/branch-types.d.mts.map +0 -1
- package/dist/engine/branch/branch-types.mjs +0 -7
- package/dist/engine/branch/branch-types.mjs.map +0 -1
- package/dist/engine/diff/line-diff-helper.d.mts +0 -76
- package/dist/engine/diff/line-diff-helper.d.mts.map +0 -1
- package/dist/engine/diff/line-diff-helper.mjs +0 -144
- package/dist/engine/diff/line-diff-helper.mjs.map +0 -1
- package/dist/engine/filter/glob-helper.d.mts +0 -51
- package/dist/engine/filter/glob-helper.d.mts.map +0 -1
- package/dist/engine/filter/glob-helper.mjs +0 -132
- package/dist/engine/filter/glob-helper.mjs.map +0 -1
- package/dist/engine/index/index-helper.d.mts +0 -113
- package/dist/engine/index/index-helper.d.mts.map +0 -1
- package/dist/engine/index/index-helper.mjs +0 -533
- package/dist/engine/index/index-helper.mjs.map +0 -1
- package/dist/engine/index/index-types.d.mts +0 -63
- package/dist/engine/index/index-types.d.mts.map +0 -1
- package/dist/engine/index/index-types.mjs +0 -7
- package/dist/engine/index/index-types.mjs.map +0 -1
- package/dist/engine/item/item-atom-helper.d.mts +0 -20
- package/dist/engine/item/item-atom-helper.d.mts.map +0 -1
- package/dist/engine/item/item-atom-helper.mjs +0 -30
- package/dist/engine/item/item-atom-helper.mjs.map +0 -1
- package/dist/engine/item/item-helper.d.mts +0 -94
- package/dist/engine/item/item-helper.d.mts.map +0 -1
- package/dist/engine/item/item-helper.mjs +0 -424
- package/dist/engine/item/item-helper.mjs.map +0 -1
- package/dist/engine/item/item-types.d.mts +0 -128
- package/dist/engine/item/item-types.d.mts.map +0 -1
- package/dist/engine/item/item-types.mjs +0 -16
- package/dist/engine/item/item-types.mjs.map +0 -1
- package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts +0 -74
- package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts.map +0 -1
- package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs +0 -570
- package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs.map +0 -1
- package/dist/engine/merge/b2tfs-3way-graft-types.d.mts +0 -34
- package/dist/engine/merge/b2tfs-3way-graft-types.d.mts.map +0 -1
- package/dist/engine/merge/b2tfs-3way-graft-types.mjs +0 -2
- package/dist/engine/merge/b2tfs-3way-graft-types.mjs.map +0 -1
- package/dist/engine/status/status-helper.d.mts +0 -90
- package/dist/engine/status/status-helper.d.mts.map +0 -1
- package/dist/engine/status/status-helper.mjs +0 -286
- package/dist/engine/status/status-helper.mjs.map +0 -1
- package/src/engine/branch/branch-graph-helper.mts +0 -117
- package/src/engine/branch/branch-helper.mts +0 -112
- package/src/engine/branch/branch-space-helper.mts +0 -110
- package/src/engine/branch/branch-types.mts +0 -29
- package/src/engine/diff/line-diff-helper.mts +0 -210
- package/src/engine/diff/line-diff-helper.respec.mts +0 -84
- package/src/engine/filter/glob-helper.mts +0 -165
- package/src/engine/filter/glob-helper.respec.mts +0 -94
- package/src/engine/index/index-helper.mts +0 -705
- package/src/engine/index/index-types.mts +0 -66
- package/src/engine/item/item-atom-helper.mts +0 -30
- package/src/engine/item/item-helper.mts +0 -544
- package/src/engine/item/item-types.mts +0 -137
- package/src/engine/item/item.respec.mts +0 -92
- package/src/engine/merge/b2tfs-3way-graft-strategy.mts +0 -630
- package/src/engine/merge/b2tfs-3way-graft-strategy.respec.mts +0 -346
- package/src/engine/merge/b2tfs-3way-graft-types.mts +0 -34
- package/src/engine/status/status-helper.mts +0 -383
|
@@ -1,570 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module b2tfs-3way-graft-strategy
|
|
3
|
-
*
|
|
4
|
-
* ============================================================================
|
|
5
|
-
* ⚠️ CRITICAL GRAFT STRATEGY GUIDANCE WARNING ⚠️
|
|
6
|
-
* BEFORE MAKING ANY CHANGES TO THIS FILE, YOU MUST CONSULT AND CAREFULLY READ:
|
|
7
|
-
* libs/core-gib/src/sync/GRAFT_STRATEGY_GUIDANCE.md
|
|
8
|
-
*
|
|
9
|
-
* Graft strategies must strictly fulfill the `GraftTimelinesResult` contract,
|
|
10
|
-
* ensure timeline `n` monotonicity (using Math.max over base/orphan branch frames),
|
|
11
|
-
* and include ALL newly referenced ancillary dependency nodes (comments, binary
|
|
12
|
-
* stones, DNAs) in `ancillaryIbGibsCreated` so that the destination branch
|
|
13
|
-
* space is completely self-contained.
|
|
14
|
-
* ============================================================================
|
|
15
|
-
*
|
|
16
|
-
* 3-way text line diff graft strategy for B2tFS file item timelines.
|
|
17
|
-
* Reconciles diverging file content via 3-way line diff (LCA, Base, Orphan)
|
|
18
|
-
* and inserts Git conflict markers when line edits collide.
|
|
19
|
-
*
|
|
20
|
-
* Non-text binaries and non-file items return early / false in `canGraft` and
|
|
21
|
-
* fall through to `DefaultDnaReplayGraftStrategy`.
|
|
22
|
-
* Folder hierarchies are re-synchronized post-merge via `reifyB2tFSHierarchy`.
|
|
23
|
-
*/
|
|
24
|
-
import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
25
|
-
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
26
|
-
import { getGib, isDna } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
|
|
27
|
-
import { rel8 } from '@ibgib/ts-gib/dist/V1/transforms/rel8.mjs';
|
|
28
|
-
import { GraftMergeStrategyBase_V1 } from '@ibgib/core-gib/dist/sync/graft-info/graft-merge-strategy-base-v1.mjs';
|
|
29
|
-
import { getFromSpace, persistTransformResult, registerNewIbGib, putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
|
|
30
|
-
import { getBinIb, getIbGibsFromCache_fallbackToSpaces, splitPerTjpAndOrDna, getTimelinesGroupedByTjp } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
|
|
31
|
-
import { getDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
|
|
32
|
-
import { createGraftInfo } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-helpers.mjs';
|
|
33
|
-
import { GRAFT_INFO_REL8N_NAME } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-constants.mjs';
|
|
34
|
-
import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
|
|
35
|
-
import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
|
|
36
|
-
import { isBinaryBuffer, decodeToLines, computeLineLcsDiff } from '../diff/line-diff-helper.mjs';
|
|
37
|
-
import { BINARY_REL8N_NAME, B2tFSType } from '../item/item-types.mjs';
|
|
38
|
-
import { evolveB2tFSItemIbGib, isB2tFSItemIbGib } from '../item/item-helper.mjs';
|
|
39
|
-
const lcFile = `[b2tfs-3way-graft-strategy]`;
|
|
40
|
-
const logalot = GLOBAL_LOG_A_LOT;
|
|
41
|
-
const mergeDiag = `[MERGE DIAGNOSTIC]`;
|
|
42
|
-
/**
|
|
43
|
-
* Performs 3-way line diff merging across LCA, Base, and Orphan text lines.
|
|
44
|
-
* Inserts Git conflict markers (`<<<<<<< HEAD`, `=======`, `>>>>>>>`) when overlapping
|
|
45
|
-
* line changes conflict.
|
|
46
|
-
*/
|
|
47
|
-
export function perform3WayTextLineMerge({ textLCA, textBase, textOrphan, }) {
|
|
48
|
-
if (textBase === textOrphan) {
|
|
49
|
-
return { mergedText: textBase, hasConflict: false };
|
|
50
|
-
}
|
|
51
|
-
if (textBase === textLCA) {
|
|
52
|
-
return { mergedText: textOrphan, hasConflict: false };
|
|
53
|
-
}
|
|
54
|
-
if (textOrphan === textLCA) {
|
|
55
|
-
return { mergedText: textBase, hasConflict: false };
|
|
56
|
-
}
|
|
57
|
-
const linesLCA = textLCA.split(/\r?\n/);
|
|
58
|
-
const linesBase = textBase.split(/\r?\n/);
|
|
59
|
-
const linesOrphan = textOrphan.split(/\r?\n/);
|
|
60
|
-
const chunksBase = computeLineLcsDiff(linesLCA, linesBase);
|
|
61
|
-
const chunksOrphan = computeLineLcsDiff(linesLCA, linesOrphan);
|
|
62
|
-
if (chunksBase.length === 0) {
|
|
63
|
-
return { mergedText: textOrphan, hasConflict: false };
|
|
64
|
-
}
|
|
65
|
-
if (chunksOrphan.length === 0) {
|
|
66
|
-
return { mergedText: textBase, hasConflict: false };
|
|
67
|
-
}
|
|
68
|
-
let hasConflict = false;
|
|
69
|
-
const outputLines = [];
|
|
70
|
-
let lcaIdx = 0;
|
|
71
|
-
let baseChunkIdx = 0;
|
|
72
|
-
let orphanChunkIdx = 0;
|
|
73
|
-
while (lcaIdx < linesLCA.length || baseChunkIdx < chunksBase.length || orphanChunkIdx < chunksOrphan.length) {
|
|
74
|
-
const nextBaseChunk = chunksBase[baseChunkIdx];
|
|
75
|
-
const nextOrphanChunk = chunksOrphan[orphanChunkIdx];
|
|
76
|
-
const baseAtLca = nextBaseChunk && nextBaseChunk.old_i === lcaIdx;
|
|
77
|
-
const orphanAtLca = nextOrphanChunk && nextOrphanChunk.old_i === lcaIdx;
|
|
78
|
-
if (baseAtLca && orphanAtLca) {
|
|
79
|
-
const bLines = nextBaseChunk.newLines;
|
|
80
|
-
const oLines = nextOrphanChunk.newLines;
|
|
81
|
-
const bOldLen = nextBaseChunk.oldLines.length;
|
|
82
|
-
const oOldLen = nextOrphanChunk.oldLines.length;
|
|
83
|
-
if (bLines.join('\n') === oLines.join('\n') && bOldLen === oOldLen) {
|
|
84
|
-
outputLines.push(...bLines);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
hasConflict = true;
|
|
88
|
-
outputLines.push('<<<<<<< HEAD');
|
|
89
|
-
outputLines.push(...bLines);
|
|
90
|
-
outputLines.push('=======');
|
|
91
|
-
outputLines.push(...oLines);
|
|
92
|
-
outputLines.push('>>>>>>>');
|
|
93
|
-
}
|
|
94
|
-
const consumedLca = Math.max(bOldLen, oOldLen, 1);
|
|
95
|
-
lcaIdx += consumedLca;
|
|
96
|
-
baseChunkIdx++;
|
|
97
|
-
orphanChunkIdx++;
|
|
98
|
-
}
|
|
99
|
-
else if (baseAtLca) {
|
|
100
|
-
outputLines.push(...nextBaseChunk.newLines);
|
|
101
|
-
const consumedLca = Math.max(nextBaseChunk.oldLines.length, 1);
|
|
102
|
-
lcaIdx += consumedLca;
|
|
103
|
-
baseChunkIdx++;
|
|
104
|
-
}
|
|
105
|
-
else if (orphanAtLca) {
|
|
106
|
-
outputLines.push(...nextOrphanChunk.newLines);
|
|
107
|
-
const consumedLca = Math.max(nextOrphanChunk.oldLines.length, 1);
|
|
108
|
-
lcaIdx += consumedLca;
|
|
109
|
-
orphanChunkIdx++;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
if (lcaIdx < linesLCA.length) {
|
|
113
|
-
outputLines.push(linesLCA[lcaIdx]);
|
|
114
|
-
lcaIdx++;
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
if (nextBaseChunk && baseChunkIdx < chunksBase.length) {
|
|
118
|
-
outputLines.push(...nextBaseChunk.newLines);
|
|
119
|
-
baseChunkIdx++;
|
|
120
|
-
}
|
|
121
|
-
if (nextOrphanChunk && orphanChunkIdx < chunksOrphan.length) {
|
|
122
|
-
outputLines.push(...nextOrphanChunk.newLines);
|
|
123
|
-
orphanChunkIdx++;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
mergedText: outputLines.join('\n'),
|
|
130
|
-
hasConflict,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* 3-way text line diff graft strategy for B2tFS file item timelines.
|
|
135
|
-
*
|
|
136
|
-
* ⚠️ **IMPORTANT**: Before making ANY changes to this class or its methods, consult:
|
|
137
|
-
* `libs/core-gib/src/sync/GRAFT_STRATEGY_GUIDANCE.md`.
|
|
138
|
-
*/
|
|
139
|
-
export class B2tFS3WayGraftStrategy extends GraftMergeStrategyBase_V1 {
|
|
140
|
-
strategyId = 'B2tFS3WayGraftStrategy';
|
|
141
|
-
lc = '[B2tFS3WayGraftStrategy]';
|
|
142
|
-
/**
|
|
143
|
-
* Returns true only if the graft context has two tips that are text-based file b2tfs item ibgibs.
|
|
144
|
-
*
|
|
145
|
-
* @param context info about the divergent timelines {@link GraftContext}
|
|
146
|
-
* @returns true if it's a text file item ibgib, else false
|
|
147
|
-
*/
|
|
148
|
-
async canGraft(context) {
|
|
149
|
-
const lc = `${this.lc}[${this.canGraft.name}]`;
|
|
150
|
-
try {
|
|
151
|
-
const { conflictStrategy, timelineAddrsA, timelineAddrsB, ibGibReadCache, space } = context;
|
|
152
|
-
const hasRelevantStrategy = conflictStrategy === SyncConflictStrategy.optimisticWithLCS || conflictStrategy === 'b2tfs3WayMerge';
|
|
153
|
-
if (!hasRelevantStrategy) {
|
|
154
|
-
return false;
|
|
155
|
-
}
|
|
156
|
-
const tipAddrA = timelineAddrsA.at(-1);
|
|
157
|
-
const tipAddrB = timelineAddrsB.at(-1);
|
|
158
|
-
if (!tipAddrA || !tipAddrB) {
|
|
159
|
-
if (logalot) {
|
|
160
|
-
console.log(`${lc} we don't have two tip addrs? (I: b20b6de462c35e0e74360cc8d317f126)`);
|
|
161
|
-
}
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
const [tipA, tipB] = await getIbGibsFromCache_fallbackToSpaces({
|
|
165
|
-
addrs: [tipAddrA, tipAddrB],
|
|
166
|
-
readCache_graph: ibGibReadCache,
|
|
167
|
-
space,
|
|
168
|
-
});
|
|
169
|
-
if (!tipA) {
|
|
170
|
-
throw new Error(`(UNEXPECTED) tipA falsy? (E: 752101026888140f074614e893531826)`);
|
|
171
|
-
}
|
|
172
|
-
if (!tipB) {
|
|
173
|
-
throw new Error(`(UNEXPECTED) tipB falsy? (E: d4d4a876cad8c7869830d33832bfde26)`);
|
|
174
|
-
}
|
|
175
|
-
const bothTipsAreB2tFSNodes = isB2tFSItemIbGib(tipA) && isB2tFSItemIbGib(tipB);
|
|
176
|
-
if (!bothTipsAreB2tFSNodes) {
|
|
177
|
-
if (isB2tFSItemIbGib(tipA) || isB2tFSItemIbGib(tipB)) {
|
|
178
|
-
console.error(`${lc}${mergeDiag} (UNEXPECTED)(NOT THROWN) only tipA or tipB but not both are b2tfs items? (E: cacb38796da881268898e9d1af245826)`);
|
|
179
|
-
}
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
if (tipA.data.fsType !== tipB.data.fsType) {
|
|
183
|
-
throw new Error(`(UNEXPECTED) tipA.data.fsType (${tipA.data.fsType}) !== tipB.data.fsType (${tipB.data.fsType})? (E: c01c1885ac738f679813117852c48426)`);
|
|
184
|
-
}
|
|
185
|
-
// only do files. folders and other containers fall back to DefaultDnaReplayGraftStrategy.
|
|
186
|
-
const isFile = tipA.data.fsType === B2tFSType.file;
|
|
187
|
-
if (!isFile) {
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
console.error(`${lc} ${extractErrorMsg(error)} (E: 8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e)`);
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Executes 3-way line diff text graft across LCA, Base, and Orphan file items.
|
|
199
|
-
*
|
|
200
|
-
* ⚠️ **CRITICAL CONTRACT**: Before modifying this method, review:
|
|
201
|
-
* `libs/core-gib/src/sync/GRAFT_STRATEGY_GUIDANCE.md`
|
|
202
|
-
* Ensure:
|
|
203
|
-
* 1. Monotonic `n` counter (`highestDataN = Math.max(...)`)
|
|
204
|
-
* 2. Full dependency graph inclusion in `ancillaryIbGibsCreated` (comments, bin stones, DNAs)
|
|
205
|
-
* 3. Self-contained destination branch space
|
|
206
|
-
*/
|
|
207
|
-
async graft(context) {
|
|
208
|
-
const lc = `${lcFile}[${this.strategyId}][${this.graft.name}]`;
|
|
209
|
-
try {
|
|
210
|
-
if (logalot) {
|
|
211
|
-
console.log(`${lc} starting 3-way B2tFS snapshot graft... (I: 91a82b3c4d5e6f7a8b9c0d1e2f3a4b5c)`);
|
|
212
|
-
}
|
|
213
|
-
const { conflictStrategy, timelineAddrsA, timelineAddrsB, latestCommonFrameAddr, ibGibReadCache, space, graftPreference, } = context;
|
|
214
|
-
// 1. Fetch branch slices since LCA (timeline A = Sender, timeline B = Receiver)
|
|
215
|
-
const indexLCA_A = timelineAddrsA.lastIndexOf(latestCommonFrameAddr);
|
|
216
|
-
const addrsA_sinceLCA = timelineAddrsA.slice(indexLCA_A + 1);
|
|
217
|
-
const branchA_sender_sinceLCA = await getIbGibsFromCache_fallbackToSpaces({
|
|
218
|
-
readCache_graph: ibGibReadCache,
|
|
219
|
-
addrs: addrsA_sinceLCA,
|
|
220
|
-
space,
|
|
221
|
-
});
|
|
222
|
-
const tipA_sender = branchA_sender_sinceLCA.at(-1);
|
|
223
|
-
const indexLCA_B = timelineAddrsB.lastIndexOf(latestCommonFrameAddr);
|
|
224
|
-
const addrsB_sinceLCA = timelineAddrsB.slice(indexLCA_B + 1);
|
|
225
|
-
const branchB_receiver_sinceLCA = await getIbGibsFromCache_fallbackToSpaces({
|
|
226
|
-
readCache_graph: ibGibReadCache,
|
|
227
|
-
addrs: addrsB_sinceLCA,
|
|
228
|
-
space,
|
|
229
|
-
});
|
|
230
|
-
const tipB_receiver = branchB_receiver_sinceLCA.at(-1);
|
|
231
|
-
// 2. Base & Orphan resolution via DRY helper
|
|
232
|
-
const { baseTip, baseBranch, orphanTip, orphanBranch, } = this.resolveBaseAndOrphan({
|
|
233
|
-
graftPreference,
|
|
234
|
-
tipA_sender,
|
|
235
|
-
branchA_sender_sinceLCA,
|
|
236
|
-
tipB_receiver,
|
|
237
|
-
branchB_receiver_sinceLCA,
|
|
238
|
-
});
|
|
239
|
-
const baseTipAddr = getIbGibAddr({ ibGib: baseTip });
|
|
240
|
-
const baseBranchAddrs = baseBranch.map(x => getIbGibAddr({ ibGib: x }));
|
|
241
|
-
const orphanTipAddr = getIbGibAddr({ ibGib: orphanTip });
|
|
242
|
-
const orphanBranchAddrs = orphanBranch.map(x => getIbGibAddr({ ibGib: x }));
|
|
243
|
-
if (logalot) {
|
|
244
|
-
console.log(`${lc} baseBranchAddrs:\n${baseBranchAddrs.join('\n')} (I: 2cad420d7bc822f798b8a8785f1f8c26)`);
|
|
245
|
-
console.log(`${lc} orphanBranchAddrs:\n${orphanBranchAddrs.join('\n')} (I: cc86489d6737e2aced42b585cba13526)`);
|
|
246
|
-
}
|
|
247
|
-
// 3. Perform 3-way filesystem tree merge across lcaItem, baseItem, orphanItem
|
|
248
|
-
const lcaNode = await this.fetchIbGib({ addr: latestCommonFrameAddr, space, readCache_graph: ibGibReadCache });
|
|
249
|
-
if (!lcaNode) {
|
|
250
|
-
throw new Error(`(UNEXPECTED) lcaNode falsy? (E: a8b2d80dc4f8ba1448fa280d89dfb626)`);
|
|
251
|
-
}
|
|
252
|
-
const lcaItem = await this.resolveRootItemNode({ nodeOrAddr: lcaNode, space, readCache_graph: ibGibReadCache });
|
|
253
|
-
if (!lcaItem) {
|
|
254
|
-
throw new Error(`(UNEXPECTED) lcaItem falsy? (E: 0944f88dde58cbabf82342b814955826)`);
|
|
255
|
-
}
|
|
256
|
-
const baseItem = await this.resolveRootItemNode({ nodeOrAddr: baseTip, space, readCache_graph: ibGibReadCache });
|
|
257
|
-
if (!baseItem) {
|
|
258
|
-
throw new Error(`(UNEXPECTED) baseItem falsy? (E: fac3087884cbebc7083e580514002826)`);
|
|
259
|
-
}
|
|
260
|
-
const orphanItem = await this.resolveRootItemNode({ nodeOrAddr: orphanTip, space, readCache_graph: ibGibReadCache });
|
|
261
|
-
if (!orphanItem) {
|
|
262
|
-
throw new Error(`(UNEXPECTED) orphanItem falsy? (E: 8e7e383753a8814f283280ee82156826)`);
|
|
263
|
-
}
|
|
264
|
-
if (lcaItem.data.fsType !== baseItem.data.fsType) {
|
|
265
|
-
throw new Error(`(UNEXPECTED) lcaItem.data.fsType !== baseItem.data.fsType? (E: 794608f3e678a399ed670388629a6826)`);
|
|
266
|
-
}
|
|
267
|
-
if (lcaItem.data.fsType !== orphanItem.data.fsType) {
|
|
268
|
-
throw new Error(`(UNEXPECTED) lcaItem.data.fsType !== orphanItem.data.fsType? (E: 2813981c8c422b41f85a02fd8aa88226)`);
|
|
269
|
-
}
|
|
270
|
-
const fsType = lcaItem.data.fsType;
|
|
271
|
-
if (fsType === B2tFSType.folder) {
|
|
272
|
-
throw new Error(`(UNEXPECTED) fsType === B2tFSType.folder? Folders fall back to DefaultDnaReplayGraftStrategy and reification. (E: b282b8f77b18575378edb902bd80a826)`);
|
|
273
|
-
}
|
|
274
|
-
if (fsType !== B2tFSType.file) {
|
|
275
|
-
throw new Error(`(UNEXPECTED) fsType (${fsType}) is not a file? (E: 272418fe2067ea3e16dac028e86d1a26)`);
|
|
276
|
-
}
|
|
277
|
-
const lcaPayload = await this.getFilePayloadBuffer({ fileItem: lcaItem, space, readCache_graph: ibGibReadCache });
|
|
278
|
-
const basePayload = await this.getFilePayloadBuffer({ fileItem: baseItem, space, readCache_graph: ibGibReadCache });
|
|
279
|
-
const orphanPayload = await this.getFilePayloadBuffer({ fileItem: orphanItem, space, readCache_graph: ibGibReadCache });
|
|
280
|
-
const isBaseBin = basePayload ? isBinaryBuffer(basePayload.buffer) : false;
|
|
281
|
-
const isOrphanBin = orphanPayload ? isBinaryBuffer(orphanPayload.buffer) : false;
|
|
282
|
-
const isLcaBin = lcaPayload ? isBinaryBuffer(lcaPayload.buffer) : false;
|
|
283
|
-
if (isBaseBin || isOrphanBin || isLcaBin) {
|
|
284
|
-
if (logalot) {
|
|
285
|
-
console.log(`${lc} Non-text binary file detected (${baseItem.data?.name}). Skipping 3-way line diff and falling through. (I: 4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b)`);
|
|
286
|
-
}
|
|
287
|
-
return undefined;
|
|
288
|
-
}
|
|
289
|
-
if (!lcaPayload) {
|
|
290
|
-
throw new Error(`(UNEXPECTED) lcaPayload falsy? (E: 0b82892204482f5538a430b8915b7826)`);
|
|
291
|
-
}
|
|
292
|
-
if (!basePayload) {
|
|
293
|
-
throw new Error(`(UNEXPECTED) basePayload falsy? (E: af1f68a020280b3a5d6ed4a812acd426)`);
|
|
294
|
-
}
|
|
295
|
-
if (!orphanPayload) {
|
|
296
|
-
throw new Error(`(UNEXPECTED) orphanPayload falsy? (E: 6a521b684763862c3a2e0ca315d62826)`);
|
|
297
|
-
}
|
|
298
|
-
const textLCA = decodeToLines(lcaPayload.buffer).join('\n');
|
|
299
|
-
const textBase = decodeToLines(basePayload.buffer).join('\n');
|
|
300
|
-
const textOrphan = decodeToLines(orphanPayload.buffer).join('\n');
|
|
301
|
-
if (logalot) {
|
|
302
|
-
console.log(`${lc}${mergeDiag} file: ${baseItem.data.name}`);
|
|
303
|
-
console.log(`${lc}${mergeDiag} textLCA:\n${textLCA}`);
|
|
304
|
-
console.log(`${lc}${mergeDiag} textBase:\n${textBase}`);
|
|
305
|
-
console.log(`${lc}${mergeDiag} textOrphan:\n${textOrphan}`);
|
|
306
|
-
}
|
|
307
|
-
const { mergedText } = perform3WayTextLineMerge({ textLCA, textBase, textOrphan });
|
|
308
|
-
if (logalot) {
|
|
309
|
-
console.log(`${lc}${mergeDiag} mergedText:\n${mergedText}`);
|
|
310
|
-
}
|
|
311
|
-
const dataBuffer = Buffer.from(mergedText, 'utf8');
|
|
312
|
-
const fileHash = await hash({ s: mergedText });
|
|
313
|
-
if (baseItem.data.fileExt !== orphanItem.data.fileExt) {
|
|
314
|
-
console.warn(`${lc} baseItem.data.fileExt (${baseItem.data.fileExt}) !== orphanItem.data.fileExt (${orphanItem.data.fileExt})? Using baseItem.data.fileExt for merged fileExt (W: a999b54235bb231fa49224842e212326)`);
|
|
315
|
-
}
|
|
316
|
-
const fileExt = baseItem.data.fileExt;
|
|
317
|
-
const binIb = getBinIb({
|
|
318
|
-
binHash: fileHash,
|
|
319
|
-
binExt: fileExt,
|
|
320
|
-
binEncoding: 'utf8',
|
|
321
|
-
});
|
|
322
|
-
const binIbGib = {
|
|
323
|
-
ib: binIb,
|
|
324
|
-
data: dataBuffer,
|
|
325
|
-
};
|
|
326
|
-
binIbGib.gib = await getGib({ ibGib: binIbGib, hasTjp: false });
|
|
327
|
-
const binAddr = getIbGibAddr({ ibGib: binIbGib });
|
|
328
|
-
await putInSpace({ ibGib: binIbGib, space });
|
|
329
|
-
await registerNewIbGib({ ibGib: binIbGib, space });
|
|
330
|
-
const fnGetN = (item) => {
|
|
331
|
-
if (item.data.n || item.data.n === 0) {
|
|
332
|
-
return item.data.n;
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
throw new Error(`(UNEXPECTED) item.data.n not a number? (E: 896ceae089c83ca67817fff826be5826)`);
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
const baseItemDataN = fnGetN(baseItem);
|
|
339
|
-
const orphanItemDataN = fnGetN(orphanItem);
|
|
340
|
-
const highestDataN = Math.max(baseItemDataN, orphanItemDataN);
|
|
341
|
-
const lcaCommentAddrs = lcaItem.rel8ns?.comment || [];
|
|
342
|
-
const lcaCommentAddrsSet = new Set(lcaCommentAddrs);
|
|
343
|
-
const mergedCommentAddrsSinceLCA_base = (baseItem.rel8ns?.comment || []).filter(addr => !lcaCommentAddrsSet.has(addr));
|
|
344
|
-
const mergedCommentAddrsSinceLCA_orphan = (orphanItem.rel8ns?.comment || []).filter(addr => !lcaCommentAddrsSet.has(addr));
|
|
345
|
-
const newCommentAddrs = Array.from(new Set([...mergedCommentAddrsSinceLCA_base, ...mergedCommentAddrsSinceLCA_orphan]));
|
|
346
|
-
const allMergedCommentAddrs = Array.from(new Set([...lcaCommentAddrs, ...newCommentAddrs]));
|
|
347
|
-
const commentDepIbGibs = [];
|
|
348
|
-
if (newCommentAddrs.length > 0) {
|
|
349
|
-
for (const cAddr of newCommentAddrs) {
|
|
350
|
-
const cIb = await this.fetchIbGib({ addr: cAddr, space, readCache_graph: ibGibReadCache });
|
|
351
|
-
if (!cIb) {
|
|
352
|
-
throw new Error(`(UNEXPECTED) Comment ibgib for address '${cAddr}' not found in cache or space (E: a1b2c3d4e5f67a8b9c0d1e2f3a4b5c6d)`);
|
|
353
|
-
}
|
|
354
|
-
commentDepIbGibs.push(cIb);
|
|
355
|
-
const cDepGraph = await getDependencyGraph({
|
|
356
|
-
ibGib: cIb,
|
|
357
|
-
space,
|
|
358
|
-
ibGibs: ibGibReadCache ? Object.values(ibGibReadCache) : undefined,
|
|
359
|
-
});
|
|
360
|
-
for (const depNode of Object.values(cDepGraph)) {
|
|
361
|
-
const depAddr = getIbGibAddr({ ibGib: depNode });
|
|
362
|
-
if (!commentDepIbGibs.some(x => getIbGibAddr({ ibGib: x }) === depAddr)) {
|
|
363
|
-
commentDepIbGibs.push(depNode);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
const { mapWithTjp_YesDna, mapWithoutTjps } = splitPerTjpAndOrDna({ ibGibs: commentDepIbGibs });
|
|
368
|
-
// Put DNA and non-timeline stones into space with isDna flag
|
|
369
|
-
for (const dnaOrStone of Object.values(mapWithoutTjps)) {
|
|
370
|
-
if (space) {
|
|
371
|
-
await putInSpace({ ibGib: dnaOrStone, space, isDna: isDna({ ibGib: dnaOrStone }) });
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
// Register timeline frames in order
|
|
375
|
-
const timelinesByTjp = getTimelinesGroupedByTjp({ ibGibs: Object.values(mapWithTjp_YesDna) });
|
|
376
|
-
for (const tjpAddr of Object.keys(timelinesByTjp)) {
|
|
377
|
-
const timeline = timelinesByTjp[tjpAddr];
|
|
378
|
-
for (const frame of timeline) {
|
|
379
|
-
if (space) {
|
|
380
|
-
await putInSpace({ ibGib: frame, space });
|
|
381
|
-
await registerNewIbGib({ ibGib: frame, space });
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
const evolveRes = await evolveB2tFSItemIbGib({
|
|
387
|
-
existingItem: baseItem,
|
|
388
|
-
dataToUpdate: {
|
|
389
|
-
fileHash,
|
|
390
|
-
n: highestDataN + 1,
|
|
391
|
-
},
|
|
392
|
-
rel8nsToUpdate: {
|
|
393
|
-
[BINARY_REL8N_NAME]: [binAddr],
|
|
394
|
-
...(allMergedCommentAddrs.length > 0 ? { comment: allMergedCommentAddrs } : {}),
|
|
395
|
-
},
|
|
396
|
-
});
|
|
397
|
-
if (!evolveRes.dnas) {
|
|
398
|
-
throw new Error(`(UNEXPECTED) evolveRes.dnas falsy? (E: e640e892cc76c77f98f3881301035826)`);
|
|
399
|
-
}
|
|
400
|
-
if (!evolveRes.newIbGib) {
|
|
401
|
-
throw new Error(`(UNEXPECTED) evolveRes.newIbGib falsy? (E: 9e488d07772827b66a2aff4801905426)`);
|
|
402
|
-
}
|
|
403
|
-
const newItemWithNewBinPayload = evolveRes.newIbGib;
|
|
404
|
-
const newItemAddr = getIbGibAddr({ ibGib: newItemWithNewBinPayload });
|
|
405
|
-
if (logalot) {
|
|
406
|
-
console.log(`${lc} newItemAddr: ${newItemAddr} (I: d23eef651b88be1248ee29ca179eff26)`);
|
|
407
|
-
}
|
|
408
|
-
const newGraftDnaIbGibs = [];
|
|
409
|
-
const newGraftedIntermediateIbGibs_ordered = [];
|
|
410
|
-
newGraftDnaIbGibs.push(...evolveRes.dnas);
|
|
411
|
-
if (evolveRes.intermediateIbGibs) {
|
|
412
|
-
evolveRes.intermediateIbGibs.forEach(x => newGraftedIntermediateIbGibs_ordered.push(x));
|
|
413
|
-
}
|
|
414
|
-
await persistTransformResult({ resTransform: evolveRes, space });
|
|
415
|
-
await registerNewIbGib({ ibGib: evolveRes.newIbGib, space });
|
|
416
|
-
const b2tfsAddlGraftDetails = {
|
|
417
|
-
baseTextB2tFSItemAddr: baseTipAddr,
|
|
418
|
-
baseTextBinAddr: basePayload.binIbGib ? getIbGibAddr({ ibGib: basePayload.binIbGib }) : undefined,
|
|
419
|
-
orphanTextB2tFSItemAddr: orphanTipAddr,
|
|
420
|
-
orphanTextBinAddr: orphanPayload.binIbGib ? getIbGibAddr({ ibGib: orphanPayload.binIbGib }) : undefined,
|
|
421
|
-
};
|
|
422
|
-
// 4. Attach GraftInfo frame
|
|
423
|
-
const graftInfo = await createGraftInfo({
|
|
424
|
-
conflictStrategy,
|
|
425
|
-
details: `Merged orphan tip text with the baseTip as a starting point.`,
|
|
426
|
-
addlGraftDetails: [b2tfsAddlGraftDetails],
|
|
427
|
-
latestCommonFrameAddr,
|
|
428
|
-
baseAddrsSinceLCA: baseBranchAddrs,
|
|
429
|
-
orphanAddrsSinceLCA: orphanBranchAddrs,
|
|
430
|
-
dnaAddrsApplied: [],
|
|
431
|
-
});
|
|
432
|
-
await putInSpace({ ibGib: graftInfo, space });
|
|
433
|
-
await registerNewIbGib({ ibGib: graftInfo, space });
|
|
434
|
-
const graftInfoAddr = getIbGibAddr({ ibGib: graftInfo });
|
|
435
|
-
const resRel8GraftInfo = await rel8({
|
|
436
|
-
src: newItemWithNewBinPayload,
|
|
437
|
-
rel8nsToAddByAddr: {
|
|
438
|
-
[GRAFT_INFO_REL8N_NAME]: [graftInfoAddr],
|
|
439
|
-
},
|
|
440
|
-
dna: true,
|
|
441
|
-
nCounter: true,
|
|
442
|
-
});
|
|
443
|
-
if (!resRel8GraftInfo.dnas) {
|
|
444
|
-
throw new Error(`(UNEXPECTED) resRel8GraftInfo.dnas falsy? (E: f3f4a83d3a08bd8de84250c389aed826)`);
|
|
445
|
-
}
|
|
446
|
-
const finalGraftTip = resRel8GraftInfo.newIbGib;
|
|
447
|
-
const finalGraftTipAddr = getIbGibAddr({ ibGib: finalGraftTip });
|
|
448
|
-
if (logalot) {
|
|
449
|
-
console.log(`${lc} finalGraftTipAddr: ${finalGraftTipAddr} (I: 583ac81fb0a84827b85c3076ffeeaf26)`);
|
|
450
|
-
}
|
|
451
|
-
newGraftedIntermediateIbGibs_ordered.push(newItemWithNewBinPayload);
|
|
452
|
-
for (const dna of resRel8GraftInfo.dnas) {
|
|
453
|
-
newGraftDnaIbGibs.push(dna);
|
|
454
|
-
}
|
|
455
|
-
await persistTransformResult({ resTransform: resRel8GraftInfo, space });
|
|
456
|
-
await registerNewIbGib({ ibGib: finalGraftTip, space });
|
|
457
|
-
return {
|
|
458
|
-
dnasReplayed: [],
|
|
459
|
-
dnasCreatedInGraft: newGraftDnaIbGibs,
|
|
460
|
-
intermediateIbGibsCreatedInGraft: newGraftedIntermediateIbGibs_ordered,
|
|
461
|
-
ancillaryIbGibsCreated: [binIbGib, ...commentDepIbGibs],
|
|
462
|
-
newGraftTip: finalGraftTip,
|
|
463
|
-
graftInfoCreated: graftInfo,
|
|
464
|
-
};
|
|
465
|
-
}
|
|
466
|
-
catch (error) {
|
|
467
|
-
console.error(`${lc} ${extractErrorMsg(error)} (E: 7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e)`);
|
|
468
|
-
throw error;
|
|
469
|
-
}
|
|
470
|
-
finally {
|
|
471
|
-
if (logalot) {
|
|
472
|
-
console.log(`${lc} complete. (I: 6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f)`);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
async fetchIbGib({ addr, space, readCache_graph, }) {
|
|
477
|
-
if (!addr) {
|
|
478
|
-
return undefined;
|
|
479
|
-
}
|
|
480
|
-
if (readCache_graph) {
|
|
481
|
-
if (readCache_graph[addr]) {
|
|
482
|
-
return readCache_graph[addr];
|
|
483
|
-
}
|
|
484
|
-
const gib = addr.includes('^') ? addr.substring(addr.lastIndexOf('^') + 1) : addr;
|
|
485
|
-
const matchingKey = Object.keys(readCache_graph).find(k => k === addr || (gib && k.endsWith('^' + gib)));
|
|
486
|
-
if (matchingKey) {
|
|
487
|
-
return readCache_graph[matchingKey];
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
try {
|
|
491
|
-
const res = await getFromSpace({ space, addrs: [addr] });
|
|
492
|
-
if (res) {
|
|
493
|
-
const found = res.ibGibs?.find((x) => !!x) || res.rawResultIbGib?.ibGibs?.find((x) => !!x);
|
|
494
|
-
if (found) {
|
|
495
|
-
return found;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
catch {
|
|
500
|
-
// Suppress fetch error if address not found
|
|
501
|
-
}
|
|
502
|
-
return undefined;
|
|
503
|
-
}
|
|
504
|
-
async resolveRootItemNode({ nodeOrAddr, space, readCache_graph, }) {
|
|
505
|
-
if (!nodeOrAddr) {
|
|
506
|
-
throw new Error(`(UNEXPECTED) nodeOrAddr falsy? (E: 524108327b9caa00586207ea399f7226)`);
|
|
507
|
-
}
|
|
508
|
-
let node;
|
|
509
|
-
if (typeof nodeOrAddr === 'string') {
|
|
510
|
-
node = await this.fetchIbGib({ addr: nodeOrAddr, space, readCache_graph });
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
node = nodeOrAddr;
|
|
514
|
-
}
|
|
515
|
-
if (!node) {
|
|
516
|
-
throw new Error(`(UNEXPECTED) node falsy? couldn't get node? (E: bd7d1c3b4a3881ff882746281869d826)`);
|
|
517
|
-
}
|
|
518
|
-
if (isB2tFSItemIbGib(node)) {
|
|
519
|
-
return node;
|
|
520
|
-
}
|
|
521
|
-
else {
|
|
522
|
-
throw new Error(`(UNEXPECTED) node is not a B2tFSItemIbGib_V1? (E: ddabb281ccb2fb1a181109a82046b826)`);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
async getFilePayloadBuffer({ fileItem, space, readCache_graph, }) {
|
|
526
|
-
if (!fileItem || !fileItem.rel8ns) {
|
|
527
|
-
return undefined;
|
|
528
|
-
}
|
|
529
|
-
const binAddrs = fileItem.rel8ns[BINARY_REL8N_NAME] || [];
|
|
530
|
-
const latestBinAddr = binAddrs.at(-1);
|
|
531
|
-
if (!latestBinAddr) {
|
|
532
|
-
return undefined;
|
|
533
|
-
}
|
|
534
|
-
const binIbGib = await this.fetchIbGib({ addr: latestBinAddr, space, readCache_graph });
|
|
535
|
-
if (!binIbGib) {
|
|
536
|
-
throw new Error(`(UNEXPECTED) couldn't fetch binIbGib? latestBinAddr: ${latestBinAddr}. space.ib: ${space.ib} (E: 3d1238b3a348924038a79f88264d8226)`);
|
|
537
|
-
}
|
|
538
|
-
if (binIbGib.data === undefined) {
|
|
539
|
-
return undefined;
|
|
540
|
-
}
|
|
541
|
-
let fileData;
|
|
542
|
-
const dataObj = binIbGib.data;
|
|
543
|
-
if (dataObj && typeof dataObj === 'object' && dataObj._dataType === 'Uint8Array_Base64' && typeof dataObj.value === 'string') {
|
|
544
|
-
fileData = Buffer.from(dataObj.value, 'base64');
|
|
545
|
-
}
|
|
546
|
-
else if (typeof dataObj === 'string') {
|
|
547
|
-
fileData = Buffer.from(dataObj, 'utf8');
|
|
548
|
-
}
|
|
549
|
-
else if (dataObj instanceof Uint8Array || Buffer.isBuffer(dataObj)) {
|
|
550
|
-
fileData = dataObj;
|
|
551
|
-
}
|
|
552
|
-
else if (typeof dataObj === 'object' && dataObj !== null) {
|
|
553
|
-
if (typeof dataObj.text === 'string') {
|
|
554
|
-
fileData = Buffer.from(dataObj.text, 'utf8');
|
|
555
|
-
}
|
|
556
|
-
else if (typeof dataObj.data === 'string') {
|
|
557
|
-
fileData = Buffer.from(dataObj.data, 'utf8');
|
|
558
|
-
}
|
|
559
|
-
else {
|
|
560
|
-
const vals = Object.values(dataObj);
|
|
561
|
-
fileData = new Uint8Array(vals);
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
else {
|
|
565
|
-
fileData = new Uint8Array(0);
|
|
566
|
-
}
|
|
567
|
-
return { buffer: fileData, binIbGib };
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
//# sourceMappingURL=b2tfs-3way-graft-strategy.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"b2tfs-3way-graft-strategy.mjs","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-3way-graft-strategy.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { IbGibAddr } from "@ibgib/ts-gib/dist/types.mjs";
|
|
2
|
-
import { AddlGraftDetails } from "@ibgib/core-gib/dist/sync/graft-info/graft-info-types.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* Contains references to key b2tfs item ibgibs and their corresponding binary ibgibs.
|
|
5
|
-
*/
|
|
6
|
-
export interface B2tFS3WayAddlGraftDetails extends AddlGraftDetails {
|
|
7
|
-
/**
|
|
8
|
-
* So if merging `my-feature-branch` into `main`...
|
|
9
|
-
*
|
|
10
|
-
* this is the b2tfs item that points to the binary ibgib with text of the
|
|
11
|
-
* file in `main`
|
|
12
|
-
*/
|
|
13
|
-
baseTextB2tFSItemAddr: IbGibAddr;
|
|
14
|
-
/**
|
|
15
|
-
* So if merging `my-feature-branch` into `main`...
|
|
16
|
-
*
|
|
17
|
-
* this is the binary ibgib whose text is in `main`
|
|
18
|
-
*/
|
|
19
|
-
baseTextBinAddr: IbGibAddr | undefined;
|
|
20
|
-
/**
|
|
21
|
-
* So if merging `my-feature-branch` into `main`...
|
|
22
|
-
*
|
|
23
|
-
* this is the b2tfs item that points to the binary ibgib with text of the
|
|
24
|
-
* file in `my-feature-branch`
|
|
25
|
-
*/
|
|
26
|
-
orphanTextB2tFSItemAddr: IbGibAddr;
|
|
27
|
-
/**
|
|
28
|
-
* So if merging `my-feature-branch` into `main`...
|
|
29
|
-
*
|
|
30
|
-
* this is the binary ibgib whose text is in `my-feature-branch`
|
|
31
|
-
*/
|
|
32
|
-
orphanTextBinAddr: IbGibAddr | undefined;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=b2tfs-3way-graft-types.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"b2tfs-3way-graft-types.d.mts","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-3way-graft-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAC/D;;;;;OAKG;IACH,qBAAqB,EAAE,SAAS,CAAC;IACjC;;;;OAIG;IACH,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC;;;;;OAKG;IACH,uBAAuB,EAAE,SAAS,CAAC;IACnC;;;;OAIG;IACH,iBAAiB,EAAE,SAAS,GAAG,SAAS,CAAC;CAC5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"b2tfs-3way-graft-types.mjs","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-3way-graft-types.mts"],"names":[],"mappings":""}
|