@ibgib/vcs-gib 0.0.18 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  2. package/dist/AUTO-GENERATED-version.mjs +1 -1
  3. package/dist/bootstrap/node-bootstrap.d.mts.map +1 -1
  4. package/dist/bootstrap/node-bootstrap.mjs +2 -2
  5. package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
  6. package/dist/cli/commands/branch-cmd.d.mts.map +1 -1
  7. package/dist/cli/commands/branch-cmd.mjs.map +1 -1
  8. package/dist/cli/commands/merge-cmd.d.mts.map +1 -1
  9. package/dist/cli/commands/merge-cmd.mjs +1 -1
  10. package/dist/cli/commands/merge-cmd.mjs.map +1 -1
  11. package/dist/engine/item/item-helper.d.mts +1 -0
  12. package/dist/engine/item/item-helper.d.mts.map +1 -1
  13. package/dist/engine/item/item-helper.mjs +13 -3
  14. package/dist/engine/item/item-helper.mjs.map +1 -1
  15. package/dist/engine/item/item-types.d.mts +1 -0
  16. package/dist/engine/item/item-types.d.mts.map +1 -1
  17. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts +12 -2
  18. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts.map +1 -1
  19. package/dist/engine/merge/b2tfs-3way-merge-strategy.mjs +384 -236
  20. package/dist/engine/merge/b2tfs-3way-merge-strategy.mjs.map +1 -1
  21. package/dist/engine/merge/b2tfs-3way-merge-types.d.mts +41 -0
  22. package/dist/engine/merge/b2tfs-3way-merge-types.d.mts.map +1 -0
  23. package/dist/engine/merge/b2tfs-3way-merge-types.mjs +2 -0
  24. package/dist/engine/merge/b2tfs-3way-merge-types.mjs.map +1 -0
  25. package/package.json +5 -5
  26. package/src/AUTO-GENERATED-version.mts +1 -1
  27. package/src/bootstrap/node-bootstrap.mts +4 -3
  28. package/src/cli/commands/branch-checkout-cmd.respec.log +111 -0
  29. package/src/cli/commands/branch-cmd.mts +2 -4
  30. package/src/cli/commands/merge-cmd.mts +2 -6
  31. package/src/engine/item/item-helper.mts +15 -9
  32. package/src/engine/item/item-types.mts +2 -1
  33. package/src/engine/merge/b2tfs-3way-merge-strategy.mts +388 -261
  34. package/src/engine/merge/b2tfs-3way-merge-strategy.respec.log +39 -0
  35. package/src/engine/merge/{b2tfs-merge-strategy.respec.mts → b2tfs-3way-merge-strategy.respec.mts} +16 -13
  36. package/src/engine/merge/b2tfs-3way-merge-types.mts +42 -0
  37. package/tsconfig.json +3 -2
  38. package/tsconfig.test.json +10 -0
  39. package/tsconfig.test.tsbuildinfo +1 -0
  40. package/tsconfig.tsbuildinfo +1 -1
  41. package/dist/assumptions.respec.d.mts +0 -2
  42. package/dist/assumptions.respec.d.mts.map +0 -1
  43. package/dist/assumptions.respec.mjs +0 -41
  44. package/dist/assumptions.respec.mjs.map +0 -1
  45. package/dist/bootstrap/node-bootstrap.respec.d.mts +0 -7
  46. package/dist/bootstrap/node-bootstrap.respec.d.mts.map +0 -1
  47. package/dist/bootstrap/node-bootstrap.respec.mjs +0 -28
  48. package/dist/bootstrap/node-bootstrap.respec.mjs.map +0 -1
  49. package/dist/cli/cli-arg-parser.respec.d.mts +0 -7
  50. package/dist/cli/cli-arg-parser.respec.d.mts.map +0 -1
  51. package/dist/cli/cli-arg-parser.respec.mjs +0 -35
  52. package/dist/cli/cli-arg-parser.respec.mjs.map +0 -1
  53. package/dist/cli/cli-e2e.respec.d.mts +0 -8
  54. package/dist/cli/cli-e2e.respec.d.mts.map +0 -1
  55. package/dist/cli/cli-e2e.respec.mjs +0 -263
  56. package/dist/cli/cli-e2e.respec.mjs.map +0 -1
  57. package/dist/cli/commands/branch-checkout-cmd.respec.d.mts +0 -7
  58. package/dist/cli/commands/branch-checkout-cmd.respec.d.mts.map +0 -1
  59. package/dist/cli/commands/branch-checkout-cmd.respec.mjs +0 -452
  60. package/dist/cli/commands/branch-checkout-cmd.respec.mjs.map +0 -1
  61. package/dist/cli/commands/commit-log-cmd.respec.d.mts +0 -7
  62. package/dist/cli/commands/commit-log-cmd.respec.d.mts.map +0 -1
  63. package/dist/cli/commands/commit-log-cmd.respec.mjs +0 -251
  64. package/dist/cli/commands/commit-log-cmd.respec.mjs.map +0 -1
  65. package/dist/cli/commands/init-cmd.respec.d.mts +0 -7
  66. package/dist/cli/commands/init-cmd.respec.d.mts.map +0 -1
  67. package/dist/cli/commands/init-cmd.respec.mjs +0 -40
  68. package/dist/cli/commands/init-cmd.respec.mjs.map +0 -1
  69. package/dist/cli/commands/reset-restore-cmd.respec.d.mts +0 -7
  70. package/dist/cli/commands/reset-restore-cmd.respec.d.mts.map +0 -1
  71. package/dist/cli/commands/reset-restore-cmd.respec.mjs +0 -185
  72. package/dist/cli/commands/reset-restore-cmd.respec.mjs.map +0 -1
  73. package/dist/cli/commands/status-add-cmd.respec.d.mts +0 -7
  74. package/dist/cli/commands/status-add-cmd.respec.d.mts.map +0 -1
  75. package/dist/cli/commands/status-add-cmd.respec.mjs +0 -239
  76. package/dist/cli/commands/status-add-cmd.respec.mjs.map +0 -1
  77. package/dist/engine/branch/branch-space.respec.d.mts +0 -8
  78. package/dist/engine/branch/branch-space.respec.d.mts.map +0 -1
  79. package/dist/engine/branch/branch-space.respec.mjs +0 -143
  80. package/dist/engine/branch/branch-space.respec.mjs.map +0 -1
  81. package/dist/engine/diff/line-diff-helper.respec.d.mts +0 -7
  82. package/dist/engine/diff/line-diff-helper.respec.d.mts.map +0 -1
  83. package/dist/engine/diff/line-diff-helper.respec.mjs +0 -66
  84. package/dist/engine/diff/line-diff-helper.respec.mjs.map +0 -1
  85. package/dist/engine/filter/glob-helper.respec.d.mts +0 -7
  86. package/dist/engine/filter/glob-helper.respec.d.mts.map +0 -1
  87. package/dist/engine/filter/glob-helper.respec.mjs +0 -78
  88. package/dist/engine/filter/glob-helper.respec.mjs.map +0 -1
  89. package/dist/engine/item/item.respec.d.mts +0 -7
  90. package/dist/engine/item/item.respec.d.mts.map +0 -1
  91. package/dist/engine/item/item.respec.mjs +0 -75
  92. package/dist/engine/item/item.respec.mjs.map +0 -1
  93. package/dist/engine/merge/b2tfs-merge-strategy.respec.d.mts +0 -7
  94. package/dist/engine/merge/b2tfs-merge-strategy.respec.d.mts.map +0 -1
  95. package/dist/engine/merge/b2tfs-merge-strategy.respec.mjs +0 -335
  96. package/dist/engine/merge/b2tfs-merge-strategy.respec.mjs.map +0 -1
  97. package/dist/vcs-gib.respec.d.mts +0 -8
  98. package/dist/vcs-gib.respec.d.mts.map +0 -1
  99. package/dist/vcs-gib.respec.mjs +0 -82
  100. package/dist/vcs-gib.respec.mjs.map +0 -1
@@ -1,75 +0,0 @@
1
- /**
2
- * @module item.respec.node
3
- *
4
- * Unit tests for createB2tFSItemIbGib and evolveB2tFSItemIbGib timeline transforms.
5
- */
6
- import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
7
- import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
- import { getGibInfo } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
9
- import { createB2tFSItemIbGib, evolveB2tFSItemIbGib } from './item-helper.mjs';
10
- const lc = `[apps/vcs-gib/src/engine/item/item.respec.node.mts]`;
11
- await respecfully(lc, `B2tFS Item Timeline Transforms`, async () => {
12
- await respecfully(lc, `createB2tFSItemIbGib`, async () => {
13
- await ifWe(lc, `creates brand-new file item with TJP and DNA`, async () => {
14
- const res = await createB2tFSItemIbGib({
15
- fsType: 'file',
16
- name: 'test.txt',
17
- data: {
18
- fileHash: 'hash_abc_123',
19
- },
20
- });
21
- const item = res.newIbGib;
22
- iReckon(lc, item).isGonnaBeTruthy();
23
- iReckon(lc, item.data?.name).willEqual('test.txt');
24
- iReckon(lc, item.data?.fileHash).willEqual('hash_abc_123');
25
- iReckon(lc, item.rel8ns?.ancestor).isGonnaBeTruthy();
26
- iReckon(lc, item.rel8ns?.tjp).isGonnaBeTruthy();
27
- const gibInfo = getGibInfo({ gib: item.gib });
28
- iReckon(lc, gibInfo.tjpGib).isGonnaBeTruthy();
29
- iReckon(lc, gibInfo.punctiliarHash).isGonnaBeTruthy();
30
- });
31
- await ifWe(lc, `creates brand-new folder item`, async () => {
32
- const res = await createB2tFSItemIbGib({
33
- fsType: 'folder',
34
- name: 'src',
35
- });
36
- const item = res.newIbGib;
37
- iReckon(lc, item).isGonnaBeTruthy();
38
- iReckon(lc, item.data?.fsType).willEqual('folder');
39
- iReckon(lc, item.data?.name).willEqual('src');
40
- });
41
- });
42
- await respecfully(lc, `evolveB2tFSItemIbGib`, async () => {
43
- await ifWe(lc, `evolves existing item via mut8/rel8, generating two-part timeline gib and rel8ns.past`, async () => {
44
- const createRes = await createB2tFSItemIbGib({
45
- fsType: 'file',
46
- name: 'config.json',
47
- data: {
48
- fileHash: 'hash_v1',
49
- },
50
- });
51
- const initialItem = createRes.newIbGib;
52
- const initialAddr = getIbGibAddr({ ibGib: initialItem });
53
- const initialGibInfo = getGibInfo({ gib: initialItem.gib });
54
- // Evolve item with updated fileHash
55
- const evolveRes = await evolveB2tFSItemIbGib({
56
- existingItem: initialItem,
57
- dataToUpdate: {
58
- fileHash: 'hash_v2',
59
- },
60
- });
61
- const evolvedItem = evolveRes.newIbGib;
62
- const evolvedAddr = getIbGibAddr({ ibGib: evolvedItem });
63
- const evolvedGibInfo = getGibInfo({ gib: evolvedItem.gib });
64
- iReckon(lc, evolvedItem.data?.fileHash).willEqual('hash_v2');
65
- iReckon(lc, evolvedItem.rel8ns?.past).includes(initialAddr);
66
- iReckon(lc, evolvedItem.rel8ns?.ancestor).isGonnaBeTruthy();
67
- iReckon(lc, evolvedItem.rel8ns?.tjp).willEqual(initialItem.rel8ns?.tjp);
68
- // Verify two-part composite timeline gib address
69
- iReckon(lc, evolvedGibInfo.tjpGib).willEqual(initialGibInfo.tjpGib);
70
- iReckon(lc, evolvedGibInfo.punctiliarHash).isGonnaBeTruthy();
71
- iReckon(lc, evolvedGibInfo.punctiliarHash !== initialGibInfo.punctiliarHash).isGonnaBeTrue();
72
- });
73
- });
74
- });
75
- //# sourceMappingURL=item.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"item.respec.mjs","sourceRoot":"","sources":["../../../src/engine/item/item.respec.mts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @module b2tfs-merge-strategy.respec.node
3
- *
4
- * In-memory respec unit tests for B2tFSItem3WayMergeStrategy.
5
- */
6
- export {};
7
- //# sourceMappingURL=b2tfs-merge-strategy.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"b2tfs-merge-strategy.respec.d.mts","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-merge-strategy.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,335 +0,0 @@
1
- /**
2
- * @module b2tfs-merge-strategy.respec.node
3
- *
4
- * In-memory respec unit tests for B2tFSItem3WayMergeStrategy.
5
- */
6
- import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
7
- import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
- import { getGib } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
9
- import { hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
- import { InnerSpace_V1 } from '@ibgib/core-gib/dist/witness/space/inner-space/inner-space-v1.mjs';
11
- import { DEFAULT_INNER_SPACE_DATA_V1 } from '@ibgib/core-gib/dist/witness/space/inner-space/inner-space-types.mjs';
12
- import { persistTransformResult, registerNewIbGib, getFromSpace, putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
13
- import { graftTimelines } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-helpers.mjs';
14
- import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
15
- import { GraftPreference } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-types.mjs';
16
- import { getBinIb } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
17
- import { createB2tFSItemIbGib, evolveB2tFSItemIbGib } from '../item/item-helper.mjs';
18
- import { BINARY_REL8N_NAME, B2TFS_CHILD_ITEM_REL8N_NAME } from '../item/item-types.mjs';
19
- import { B2tFS3WayGraftStrategy, B2tFSItem3WayMergeStrategy } from './b2tfs-3way-merge-strategy.mjs';
20
- const lc = `[apps/vcs-gib/src/engine/merge/b2tfs-merge-strategy.respec.node.mts]`;
21
- function binDataToText(data) {
22
- if (!data) {
23
- return '';
24
- }
25
- if (typeof data === 'string') {
26
- return data;
27
- }
28
- if (typeof data.text === 'string') {
29
- return data.text;
30
- }
31
- if (typeof data.data === 'string') {
32
- return data.data;
33
- }
34
- if (data instanceof Uint8Array || Buffer.isBuffer(data)) {
35
- return new TextDecoder('utf8').decode(data);
36
- }
37
- if (typeof data === 'object') {
38
- const vals = Object.values(data);
39
- const bytes = new Uint8Array(vals);
40
- return new TextDecoder('utf8').decode(bytes);
41
- }
42
- return String(data);
43
- }
44
- async function createFileWithContent({ name, content, space, }) {
45
- const textStr = typeof content === 'string' ? content : new TextDecoder('utf8').decode(content);
46
- const dataBuffer = typeof content === 'string' ? Buffer.from(content, 'utf8') : content;
47
- const fileHash = await hash({ s: textStr });
48
- const fileExt = name.includes('.') ? name.split('.').pop() || 'txt' : 'txt';
49
- const binIb = getBinIb({
50
- binHash: fileHash,
51
- binExt: fileExt,
52
- binEncoding: 'utf8',
53
- });
54
- const binIbGib = {
55
- ib: binIb,
56
- data: dataBuffer,
57
- };
58
- binIbGib.gib = await getGib({ ibGib: binIbGib, hasTjp: false });
59
- const binAddr = getIbGibAddr({ ibGib: binIbGib });
60
- await putInSpace({ ibGib: binIbGib, space });
61
- await registerNewIbGib({ ibGib: binIbGib, space });
62
- const itemRes = await createB2tFSItemIbGib({
63
- fsType: 'file',
64
- name,
65
- rel8ns: {
66
- [BINARY_REL8N_NAME]: [binAddr],
67
- },
68
- });
69
- await persistTransformResult({ resTransform: itemRes, space });
70
- await registerNewIbGib({ ibGib: itemRes.newIbGib, space });
71
- return itemRes.newIbGib;
72
- }
73
- async function evolveFileContent({ existingItem, newContent, space, }) {
74
- const textStr = typeof newContent === 'string' ? newContent : new TextDecoder('utf8').decode(newContent);
75
- const dataBuffer = typeof newContent === 'string' ? Buffer.from(newContent, 'utf8') : newContent;
76
- const fileHash = await hash({ s: textStr });
77
- const fileExt = existingItem.data?.fileExt || (existingItem.data?.name?.includes('.') ? existingItem.data.name.split('.').pop() || 'txt' : 'txt');
78
- const binIb = getBinIb({
79
- binHash: fileHash,
80
- binExt: fileExt,
81
- binEncoding: 'utf8',
82
- });
83
- const binIbGib = {
84
- ib: binIb,
85
- data: dataBuffer,
86
- };
87
- binIbGib.gib = await getGib({ ibGib: binIbGib, hasTjp: false });
88
- const binAddr = getIbGibAddr({ ibGib: binIbGib });
89
- await putInSpace({ ibGib: binIbGib, space });
90
- await registerNewIbGib({ ibGib: binIbGib, space });
91
- const evolveRes = await evolveB2tFSItemIbGib({
92
- existingItem,
93
- rel8nsToUpdate: {
94
- [BINARY_REL8N_NAME]: [binAddr],
95
- },
96
- });
97
- await persistTransformResult({ resTransform: evolveRes, space });
98
- await registerNewIbGib({ ibGib: evolveRes.newIbGib, space });
99
- return evolveRes.newIbGib;
100
- }
101
- async function createFolderItem({ name, childAddrs, space, }) {
102
- const res = await createB2tFSItemIbGib({
103
- fsType: 'folder',
104
- name,
105
- rel8ns: {
106
- [B2TFS_CHILD_ITEM_REL8N_NAME]: childAddrs,
107
- },
108
- });
109
- await persistTransformResult({ resTransform: res, space });
110
- await registerNewIbGib({ ibGib: res.newIbGib, space });
111
- return res.newIbGib;
112
- }
113
- async function evolveFolderItem({ existingItem, childAddrs, space, }) {
114
- const res = await evolveB2tFSItemIbGib({
115
- existingItem,
116
- rel8nsToUpdate: {
117
- [B2TFS_CHILD_ITEM_REL8N_NAME]: childAddrs,
118
- },
119
- rel8nsToRemove: {
120
- [B2TFS_CHILD_ITEM_REL8N_NAME]: existingItem.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [],
121
- },
122
- });
123
- await persistTransformResult({ resTransform: res, space });
124
- await registerNewIbGib({ ibGib: res.newIbGib, space });
125
- return res.newIbGib;
126
- }
127
- await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () => {
128
- await ifWe(lc, `performs non-conflicting line merges across two branch timelines`, async () => {
129
- const space = new InnerSpace_V1({
130
- ...DEFAULT_INNER_SPACE_DATA_V1,
131
- name: 'test_space_1',
132
- uuid: 'test_space_uuid_1',
133
- });
134
- await space.initialized;
135
- const initialText = "line 1\nline 2\nline 3";
136
- const lcaFile = await createFileWithContent({ name: 'app.ts', content: initialText, space });
137
- const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
138
- const lcaFolder = await createFolderItem({ name: 'src', childAddrs: [lcaAddr], space });
139
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
140
- // Base branch modifies line 1
141
- const baseText = "line 1 modified by base\nline 2\nline 3";
142
- const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseText, space });
143
- const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
144
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
145
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
146
- // Orphan branch modifies line 3
147
- const orphanText = "line 1\nline 2\nline 3 modified by orphan";
148
- const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanText, space });
149
- const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
150
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
151
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
152
- const timelineA = [lcaFolderAddr, baseFolderAddr];
153
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
154
- const graftResult = await graftTimelines({
155
- timelineAddrsA: timelineA,
156
- timelineAddrsB: timelineB,
157
- latestCommonFrameAddr: lcaFolderAddr,
158
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
159
- ibGibReadCache: {},
160
- space,
161
- strategies: [new B2tFSItem3WayMergeStrategy()],
162
- });
163
- iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
164
- const tipGet = await getFromSpace({ space, addrs: [getIbGibAddr({ ibGib: graftResult.newGraftTip })] });
165
- const mergedFolder = tipGet.ibGibs[0];
166
- const mergedChildAddr = mergedFolder.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME]?.at(-1);
167
- iReckon(lc, mergedChildAddr).isGonnaBeTruthy();
168
- const fileGet = await getFromSpace({ space, addrs: [mergedChildAddr] });
169
- const mergedFile = fileGet.ibGibs[0];
170
- const binAddr = mergedFile.rel8ns?.[BINARY_REL8N_NAME]?.at(-1);
171
- iReckon(lc, binAddr).isGonnaBeTruthy();
172
- const binGet = await getFromSpace({ space, addrs: [binAddr] });
173
- const binIbGib = binGet.ibGibs[0];
174
- const text = binDataToText(binIbGib.data);
175
- iReckon(lc, text).includes('line 1 modified by base');
176
- iReckon(lc, text).includes('line 2');
177
- iReckon(lc, text).includes('line 3 modified by orphan');
178
- });
179
- await ifWe(lc, `inserts Git conflict markers on conflicting text line merges`, async () => {
180
- const space = new InnerSpace_V1({
181
- ...DEFAULT_INNER_SPACE_DATA_V1,
182
- name: 'test_space_2',
183
- uuid: 'test_space_uuid_2',
184
- });
185
- await space.initialized;
186
- const initialText = "line 1\nline 2\nline 3";
187
- const lcaFile = await createFileWithContent({ name: 'index.ts', content: initialText, space });
188
- const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
189
- const lcaFolder = await createFolderItem({ name: 'src', childAddrs: [lcaAddr], space });
190
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
191
- // Base modifies line 2
192
- const baseText = "line 1\nline 2 base edit\nline 3";
193
- const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseText, space });
194
- const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
195
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
196
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
197
- // Orphan modifies line 2 differently
198
- const orphanText = "line 1\nline 2 orphan edit\nline 3";
199
- const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanText, space });
200
- const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
201
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
202
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
203
- const timelineA = [lcaFolderAddr, baseFolderAddr];
204
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
205
- const graftResult = await graftTimelines({
206
- timelineAddrsA: timelineA,
207
- timelineAddrsB: timelineB,
208
- latestCommonFrameAddr: lcaFolderAddr,
209
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
210
- ibGibReadCache: {},
211
- space,
212
- strategies: [new B2tFSItem3WayMergeStrategy()],
213
- });
214
- const tipGet = await getFromSpace({ space, addrs: [getIbGibAddr({ ibGib: graftResult.newGraftTip })] });
215
- const mergedFolder = tipGet.ibGibs[0];
216
- const mergedChildAddr = mergedFolder.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME]?.at(-1);
217
- const fileGet = await getFromSpace({ space, addrs: [mergedChildAddr] });
218
- const mergedFile = fileGet.ibGibs[0];
219
- const binAddr = mergedFile.rel8ns?.[BINARY_REL8N_NAME]?.at(-1);
220
- const binGet = await getFromSpace({ space, addrs: [binAddr] });
221
- const binIbGib = binGet.ibGibs[0];
222
- const text = binDataToText(binIbGib.data);
223
- iReckon(lc, text).includes('<<<<<<< HEAD');
224
- iReckon(lc, text).includes('line 2 base edit');
225
- iReckon(lc, text).includes('=======');
226
- iReckon(lc, text).includes('line 2 orphan edit');
227
- iReckon(lc, text).includes('>>>>>>>');
228
- });
229
- await ifWe(lc, `skips line diff merging for non-text binary files`, async () => {
230
- const space = new InnerSpace_V1({
231
- ...DEFAULT_INNER_SPACE_DATA_V1,
232
- name: 'test_space_3',
233
- uuid: 'test_space_uuid_3',
234
- });
235
- await space.initialized;
236
- const lcaBinData = new Uint8Array([0x00, 0x01, 0x02, 0x03]);
237
- const lcaFile = await createFileWithContent({ name: 'image.png', content: lcaBinData, space });
238
- const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
239
- const lcaFolder = await createFolderItem({ name: 'assets', childAddrs: [lcaAddr], space });
240
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
241
- const baseBinData = new Uint8Array([0x00, 0x01, 0x02, 0x04]);
242
- const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseBinData, space });
243
- const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
244
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
245
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
246
- const orphanBinData = new Uint8Array([0x00, 0x01, 0x02, 0x05]);
247
- const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanBinData, space });
248
- const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
249
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
250
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
251
- const timelineA = [lcaFolderAddr, baseFolderAddr];
252
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
253
- const graftResult = await graftTimelines({
254
- timelineAddrsA: timelineA,
255
- timelineAddrsB: timelineB,
256
- latestCommonFrameAddr: lcaFolderAddr,
257
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
258
- ibGibReadCache: {},
259
- space,
260
- strategies: [new B2tFS3WayGraftStrategy()],
261
- });
262
- iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
263
- });
264
- await ifWe(lc, `respects GraftPreference.receiver by using timelineB (receiver) as baseTip`, async () => {
265
- const space = new InnerSpace_V1({
266
- ...DEFAULT_INNER_SPACE_DATA_V1,
267
- name: 'test_space_4',
268
- uuid: 'test_space_uuid_4',
269
- });
270
- await space.initialized;
271
- const initialText = "base content";
272
- const lcaFile = await createFileWithContent({ name: 'file.txt', content: initialText, space });
273
- const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
274
- const lcaFolder = await createFolderItem({ name: 'dir', childAddrs: [lcaAddr], space });
275
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
276
- const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: "base edit", space });
277
- const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
278
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
279
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
280
- const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: "orphan edit", space });
281
- const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
282
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
283
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
284
- const timelineA_sender = [lcaFolderAddr, baseFolderAddr];
285
- const timelineB_receiver = [lcaFolderAddr, orphanFolderAddr];
286
- const graftResult = await graftTimelines({
287
- timelineAddrsA: timelineA_sender,
288
- timelineAddrsB: timelineB_receiver,
289
- latestCommonFrameAddr: lcaFolderAddr,
290
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
291
- ibGibReadCache: {},
292
- space,
293
- graftPreference: GraftPreference.receiver,
294
- strategies: [new B2tFS3WayGraftStrategy()],
295
- });
296
- iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
297
- iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(orphanFolderAddr);
298
- });
299
- await ifWe(lc, `respects GraftPreference.sender by using timelineA (sender) as baseTip`, async () => {
300
- const space = new InnerSpace_V1({
301
- ...DEFAULT_INNER_SPACE_DATA_V1,
302
- name: 'test_space_5',
303
- uuid: 'test_space_uuid_5',
304
- });
305
- await space.initialized;
306
- const initialText = "base content";
307
- const lcaFile = await createFileWithContent({ name: 'file.txt', content: initialText, space });
308
- const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
309
- const lcaFolder = await createFolderItem({ name: 'dir', childAddrs: [lcaAddr], space });
310
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
311
- const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: "sender edit", space });
312
- const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
313
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
314
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
315
- const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: "receiver edit", space });
316
- const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
317
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
318
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
319
- const timelineA_sender = [lcaFolderAddr, baseFolderAddr];
320
- const timelineB_receiver = [lcaFolderAddr, orphanFolderAddr];
321
- const graftResult = await graftTimelines({
322
- timelineAddrsA: timelineA_sender,
323
- timelineAddrsB: timelineB_receiver,
324
- latestCommonFrameAddr: lcaFolderAddr,
325
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
326
- ibGibReadCache: {},
327
- space,
328
- graftPreference: GraftPreference.sender,
329
- strategies: [new B2tFS3WayGraftStrategy()],
330
- });
331
- iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
332
- iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(baseFolderAddr);
333
- });
334
- });
335
- //# sourceMappingURL=b2tfs-merge-strategy.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"b2tfs-merge-strategy.respec.mjs","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-merge-strategy.respec.mts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * @module vcs-gib.respec.node
3
- *
4
- * Full Engine Cycle Integration Tests for @ibgib/vcs-gib.
5
- * Tests Metaspace bootstrap, canonical ib atoms, item creation, branch spaces, and index tracking.
6
- */
7
- export {};
8
- //# sourceMappingURL=vcs-gib.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vcs-gib.respec.d.mts","sourceRoot":"","sources":["../src/vcs-gib.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,82 +0,0 @@
1
- /**
2
- * @module vcs-gib.respec.node
3
- *
4
- * Full Engine Cycle Integration Tests for @ibgib/vcs-gib.
5
- * Tests Metaspace bootstrap, canonical ib atoms, item creation, branch spaces, and index tracking.
6
- */
7
- import path from 'node:path';
8
- import fs from 'node:fs/promises';
9
- import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
10
- import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
11
- import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
12
- import { bootstrapVcsMetaspace } from './bootstrap/node-bootstrap.mjs';
13
- import { getB2tFSItemIb } from './engine/item/item-atom-helper.mjs';
14
- import { createB2tFSBranchIbGib, getB2tFSBranchSpaceName } from './engine/branch/branch-helper.mjs';
15
- import { createB2tFSIndexIbGib, getSpaceQualifiedIbGibAddr, parseSpaceQualifiedIbGibAddr } from './engine/index/index-helper.mjs';
16
- const lc = `[apps/vcs-gib/src/vcs-gib.respec.node.mts]`;
17
- await respecfully(lc, `vcs-gib Full Engine Cycle`, async () => {
18
- await respecfully(lc, `Canonical ib Atoms`, async () => {
19
- await ifWe(lc, `formats canonical space-delimited ib atom strings`, async () => {
20
- const ib = getB2tFSItemIb('file', 'index.mts', 'hash123');
21
- iReckon(lc, ib).includes('b2tfs_item file index.mts v1 hash123');
22
- });
23
- });
24
- await respecfully(lc, `Space-Qualified Addresses`, async () => {
25
- await ifWe(lc, `formats and parses space-qualified addresses`, async () => {
26
- const sq = getSpaceQualifiedIbGibAddr('space_a', 'item^gib123');
27
- iReckon(lc, sq).willEqual('v:1^spaceId:space_a^item^gib123');
28
- const parsed = parseSpaceQualifiedIbGibAddr(sq);
29
- iReckon(lc, parsed?.spaceId).willEqual('space_a');
30
- iReckon(lc, parsed?.ibGibAddr).willEqual('item^gib123');
31
- });
32
- });
33
- await respecfully(lc, `Branch Spaces & Index Tracking`, async () => {
34
- await ifWe(lc, `initializes metaspace, creates branch, and registers index`, async () => {
35
- const testDir = path.join(process.cwd(), '.test_cycle_repo');
36
- try {
37
- const { metaspace, localSpace } = await bootstrapVcsMetaspace({
38
- repoPath: testDir,
39
- vcsFolderName: '.vcsgib_cycle_test',
40
- defaultSpaceName: 'test_space',
41
- });
42
- // Create root folder item
43
- const itemRes = await Factory_V1.firstGen({
44
- parentIbGib: ROOT,
45
- ib: getB2tFSItemIb('folder', 'root', 'root_hash'),
46
- data: {
47
- name: 'root',
48
- nameHash: 'root_hash',
49
- fsType: 'folder',
50
- diffTransactionId: 'tx_123',
51
- }
52
- });
53
- const rootItem = itemRes.newIbGib;
54
- // Create Branch IbGib
55
- const branchName = 'main';
56
- const branchSpaceName = getB2tFSBranchSpaceName(branchName);
57
- iReckon(lc, branchSpaceName).willEqual('b2s_main');
58
- const branchIbGib = await createB2tFSBranchIbGib({
59
- branchName,
60
- rootItem,
61
- space: localSpace,
62
- metaspace,
63
- });
64
- iReckon(lc, branchIbGib.data?.name).willEqual('main');
65
- // Create Index IbGib
66
- const indexIbGib = await createB2tFSIndexIbGib({
67
- spaceId: 'local_space_uuid',
68
- activeSpaceId: 'local_space_uuid',
69
- space: localSpace,
70
- metaspace,
71
- });
72
- iReckon(lc, indexIbGib.data?.mySpaceId).willEqual('local_space_uuid');
73
- iReckon(lc, indexIbGib.data?.staged_item).willEqual([]);
74
- iReckon(lc, indexIbGib.rel8ns?.staged_item).isGonnaBeFalsy();
75
- }
76
- finally {
77
- await fs.rm(testDir, { recursive: true, force: true });
78
- }
79
- });
80
- });
81
- });
82
- //# sourceMappingURL=vcs-gib.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vcs-gib.respec.mjs","sourceRoot":"","sources":["../src/vcs-gib.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EACH,WAAW,EAAE,IAAI,EAAE,OAAO,EAC7B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAGlI,MAAM,EAAE,GAAG,4CAA4C,CAAC;AAExD,MAAM,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAE1D,MAAM,WAAW,CAAC,EAAE,EAAE,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,CAAC,EAAE,EAAE,mDAAmD,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAC1D,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,CAAC,EAAE,EAAE,8CAA8C,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,GAAG,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAChE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,4BAA4B,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,EAAE,EAAE,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,CAAC,EAAE,EAAE,4DAA4D,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAAC;oBAC1D,QAAQ,EAAE,OAAO;oBACjB,aAAa,EAAE,oBAAoB;oBACnC,gBAAgB,EAAE,YAAY;iBACjC,CAAC,CAAC;gBAEH,0BAA0B;gBAC1B,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;oBACtC,WAAW,EAAE,IAAI;oBACjB,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;oBACjD,IAAI,EAAE;wBACF,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,WAAW;wBACrB,MAAM,EAAE,QAAQ;wBAChB,iBAAiB,EAAE,QAAQ;qBAC9B;iBACJ,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA6B,CAAC;gBAEvD,sBAAsB;gBACtB,MAAM,UAAU,GAAG,MAAM,CAAC;gBAC1B,MAAM,eAAe,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAEnD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;oBAC7C,UAAU;oBACV,QAAQ;oBACR,KAAK,EAAE,UAAU;oBACjB,SAAS;iBACZ,CAAC,CAAC;gBACH,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAEtD,qBAAqB;gBACrB,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC;oBAC3C,OAAO,EAAE,kBAAkB;oBAC3B,aAAa,EAAE,kBAAkB;oBACjC,KAAK,EAAE,UAAU;oBACjB,SAAS;iBACZ,CAAC,CAAC;gBACH,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;gBACtE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACxD,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}