@ibgib/vcs-gib 0.0.32 → 0.0.34

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 (133) hide show
  1. package/README.md +14 -7
  2. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  3. package/dist/AUTO-GENERATED-version.mjs +1 -1
  4. package/dist/bootstrap/node-bootstrap.d.mts.map +1 -1
  5. package/dist/bootstrap/node-bootstrap.mjs +6 -20
  6. package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
  7. package/dist/cli/commands/{add-cmd.d.mts → cli-add-cmd.d.mts} +1 -1
  8. package/dist/cli/commands/cli-add-cmd.d.mts.map +1 -0
  9. package/dist/cli/commands/cli-add-cmd.mjs +45 -0
  10. package/dist/cli/commands/cli-add-cmd.mjs.map +1 -0
  11. package/dist/cli/commands/{branch-cmd.d.mts → cli-branch-cmd.d.mts} +1 -1
  12. package/dist/cli/commands/cli-branch-cmd.d.mts.map +1 -0
  13. package/dist/cli/commands/cli-branch-cmd.mjs +59 -0
  14. package/dist/cli/commands/cli-branch-cmd.mjs.map +1 -0
  15. package/dist/cli/commands/{checkout-cmd.d.mts → cli-checkout-cmd.d.mts} +4 -3
  16. package/dist/cli/commands/cli-checkout-cmd.d.mts.map +1 -0
  17. package/dist/cli/commands/cli-checkout-cmd.mjs +50 -0
  18. package/dist/cli/commands/cli-checkout-cmd.mjs.map +1 -0
  19. package/dist/cli/commands/{commit-cmd.d.mts → cli-commit-cmd.d.mts} +1 -1
  20. package/dist/cli/commands/cli-commit-cmd.d.mts.map +1 -0
  21. package/dist/cli/commands/cli-commit-cmd.mjs +52 -0
  22. package/dist/cli/commands/cli-commit-cmd.mjs.map +1 -0
  23. package/dist/cli/commands/{generate-comment-cmd.d.mts → cli-generate-comment-cmd.d.mts} +1 -1
  24. package/dist/cli/commands/cli-generate-comment-cmd.d.mts.map +1 -0
  25. package/dist/cli/commands/{generate-comment-cmd.mjs → cli-generate-comment-cmd.mjs} +8 -6
  26. package/dist/cli/commands/cli-generate-comment-cmd.mjs.map +1 -0
  27. package/dist/cli/commands/{init-cmd.d.mts → cli-init-cmd.d.mts} +1 -1
  28. package/dist/cli/commands/cli-init-cmd.d.mts.map +1 -0
  29. package/dist/cli/commands/cli-init-cmd.mjs +47 -0
  30. package/dist/cli/commands/cli-init-cmd.mjs.map +1 -0
  31. package/dist/cli/commands/{log-cmd.d.mts → cli-log-cmd.d.mts} +1 -1
  32. package/dist/cli/commands/cli-log-cmd.d.mts.map +1 -0
  33. package/dist/cli/commands/{log-cmd.mjs → cli-log-cmd.mjs} +14 -44
  34. package/dist/cli/commands/cli-log-cmd.mjs.map +1 -0
  35. package/dist/cli/commands/{merge-cmd.d.mts → cli-merge-cmd.d.mts} +1 -1
  36. package/dist/cli/commands/cli-merge-cmd.d.mts.map +1 -0
  37. package/dist/cli/commands/cli-merge-cmd.mjs +66 -0
  38. package/dist/cli/commands/cli-merge-cmd.mjs.map +1 -0
  39. package/dist/cli/commands/{reset-cmd.d.mts → cli-reset-cmd.d.mts} +1 -1
  40. package/dist/cli/commands/cli-reset-cmd.d.mts.map +1 -0
  41. package/dist/cli/commands/cli-reset-cmd.mjs +63 -0
  42. package/dist/cli/commands/cli-reset-cmd.mjs.map +1 -0
  43. package/dist/cli/commands/{restore-cmd.d.mts → cli-restore-cmd.d.mts} +1 -1
  44. package/dist/cli/commands/cli-restore-cmd.d.mts.map +1 -0
  45. package/dist/cli/commands/cli-restore-cmd.mjs +55 -0
  46. package/dist/cli/commands/cli-restore-cmd.mjs.map +1 -0
  47. package/dist/cli/commands/{status-cmd.d.mts → cli-status-cmd.d.mts} +1 -1
  48. package/dist/cli/commands/cli-status-cmd.d.mts.map +1 -0
  49. package/dist/cli/commands/{status-cmd.mjs → cli-status-cmd.mjs} +4 -41
  50. package/dist/cli/commands/cli-status-cmd.mjs.map +1 -0
  51. package/dist/cli/vcs-cli-main.d.mts.map +1 -1
  52. package/dist/cli/vcs-cli-main.mjs +18 -15
  53. package/dist/cli/vcs-cli-main.mjs.map +1 -1
  54. package/dist/cli/vcs-projection-helper.mjs +7 -7
  55. package/dist/cli/vcs-projection-helper.mjs.map +1 -1
  56. package/dist/cli/vcs-repo-helper.d.mts +19 -0
  57. package/dist/cli/vcs-repo-helper.d.mts.map +1 -0
  58. package/dist/cli/vcs-repo-helper.mjs +84 -0
  59. package/dist/cli/vcs-repo-helper.mjs.map +1 -0
  60. package/dist/test/test-helpers.d.mts +9 -0
  61. package/dist/test/test-helpers.d.mts.map +1 -1
  62. package/dist/test/test-helpers.mjs +35 -0
  63. package/dist/test/test-helpers.mjs.map +1 -1
  64. package/package.json +6 -6
  65. package/src/AUTO-GENERATED-version.mts +1 -1
  66. package/src/bootstrap/node-bootstrap.mts +6 -20
  67. package/src/bootstrap/node-bootstrap.respec.mts +2 -2
  68. package/src/cli/cli-arg-parser.respec.mts +2 -2
  69. package/src/cli/cli-e2e.respec.mts +15 -14
  70. package/src/cli/commands/branch-checkout-cmd.respec.mts +28 -14
  71. package/src/cli/commands/cli-add-cmd.mts +65 -0
  72. package/src/cli/commands/cli-branch-cmd.mts +87 -0
  73. package/src/cli/commands/cli-checkout-cmd.mts +72 -0
  74. package/src/cli/commands/cli-commit-cmd.mts +77 -0
  75. package/src/cli/commands/{generate-comment-cmd.mts → cli-generate-comment-cmd.mts} +8 -6
  76. package/src/cli/commands/cli-init-cmd.mts +78 -0
  77. package/src/cli/commands/{log-cmd.mts → cli-log-cmd.mts} +14 -47
  78. package/src/cli/commands/cli-merge-cmd.mts +99 -0
  79. package/src/cli/commands/cli-reset-cmd.mts +94 -0
  80. package/src/cli/commands/cli-restore-cmd.mts +87 -0
  81. package/src/cli/commands/{status-cmd.mts → cli-status-cmd.mts} +3 -45
  82. package/src/cli/commands/commit-log-cmd.respec.mts +84 -34
  83. package/src/cli/commands/init-cmd.respec.mts +3 -3
  84. package/src/cli/commands/reset-restore-cmd.respec.mts +9 -9
  85. package/src/cli/commands/status-add-cmd.respec.mts +13 -9
  86. package/src/cli/vcs-cli-main.mts +18 -15
  87. package/src/cli/vcs-projection-helper.mts +8 -8
  88. package/src/cli/vcs-repo-helper.mts +113 -0
  89. package/src/engine/branch/branch-space.respec.mts +22 -20
  90. package/src/engine/merge/b2tfs-sync-comments.respec.mts +10 -10
  91. package/src/test/test-helpers.mts +49 -1
  92. package/src/vcs-gib.respec.mts +21 -15
  93. package/tsconfig.test.tsbuildinfo +1 -1
  94. package/tsconfig.tsbuildinfo +1 -1
  95. package/vcs-gib_test_output.md +77 -0
  96. package/dist/cli/commands/add-cmd.d.mts.map +0 -1
  97. package/dist/cli/commands/add-cmd.mjs +0 -93
  98. package/dist/cli/commands/add-cmd.mjs.map +0 -1
  99. package/dist/cli/commands/branch-cmd.d.mts.map +0 -1
  100. package/dist/cli/commands/branch-cmd.mjs +0 -107
  101. package/dist/cli/commands/branch-cmd.mjs.map +0 -1
  102. package/dist/cli/commands/checkout-cmd.d.mts.map +0 -1
  103. package/dist/cli/commands/checkout-cmd.mjs +0 -95
  104. package/dist/cli/commands/checkout-cmd.mjs.map +0 -1
  105. package/dist/cli/commands/commit-cmd.d.mts.map +0 -1
  106. package/dist/cli/commands/commit-cmd.mjs +0 -99
  107. package/dist/cli/commands/commit-cmd.mjs.map +0 -1
  108. package/dist/cli/commands/generate-comment-cmd.d.mts.map +0 -1
  109. package/dist/cli/commands/generate-comment-cmd.mjs.map +0 -1
  110. package/dist/cli/commands/init-cmd.d.mts.map +0 -1
  111. package/dist/cli/commands/init-cmd.mjs +0 -69
  112. package/dist/cli/commands/init-cmd.mjs.map +0 -1
  113. package/dist/cli/commands/log-cmd.d.mts.map +0 -1
  114. package/dist/cli/commands/log-cmd.mjs.map +0 -1
  115. package/dist/cli/commands/merge-cmd.d.mts.map +0 -1
  116. package/dist/cli/commands/merge-cmd.mjs +0 -106
  117. package/dist/cli/commands/merge-cmd.mjs.map +0 -1
  118. package/dist/cli/commands/reset-cmd.d.mts.map +0 -1
  119. package/dist/cli/commands/reset-cmd.mjs +0 -91
  120. package/dist/cli/commands/reset-cmd.mjs.map +0 -1
  121. package/dist/cli/commands/restore-cmd.d.mts.map +0 -1
  122. package/dist/cli/commands/restore-cmd.mjs +0 -97
  123. package/dist/cli/commands/restore-cmd.mjs.map +0 -1
  124. package/dist/cli/commands/status-cmd.d.mts.map +0 -1
  125. package/dist/cli/commands/status-cmd.mjs.map +0 -1
  126. package/src/cli/commands/add-cmd.mts +0 -120
  127. package/src/cli/commands/branch-cmd.mts +0 -142
  128. package/src/cli/commands/checkout-cmd.mts +0 -123
  129. package/src/cli/commands/commit-cmd.mts +0 -130
  130. package/src/cli/commands/init-cmd.mts +0 -99
  131. package/src/cli/commands/merge-cmd.mts +0 -143
  132. package/src/cli/commands/reset-cmd.mts +0 -126
  133. package/src/cli/commands/restore-cmd.mts +0 -135
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-repo-helper.d.mts","sourceRoot":"","sources":["../../src/cli/vcs-repo-helper.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,aAAa,EAAmC,MAAM,6CAA6C,CAAC;AAY7G,MAAM,WAAW,qBAAqB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,EACpC,SAAyB,EACzB,aAAyB,EACzB,UAAU,GACb,GAAE,qBAA0B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAyE/D"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @module vcs-repo-helper
3
+ *
4
+ * Helper to bootstrap Node environment and open a VcsRepository session.
5
+ */
6
+ import path from 'node:path';
7
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
8
+ import { VcsRepository } from '@ibgib/core-gib/dist/vcs/vcs-repository.mjs';
9
+ import { resolveContextualBranchName } from '@ibgib/core-gib/dist/vcs/branch/branch-helper.mjs';
10
+ import { getB2tFSIndexIbGib } from '@ibgib/core-gib/dist/vcs/index/index-helper.mjs';
11
+ import { getOrCreateBranchSpace } from '@ibgib/core-gib/dist/vcs/branch/branch-helper.mjs';
12
+ import { getOrCreateWorkspaceProjectionSpace } from '@ibgib/node-gib/dist/vcs/workspace-space-helper.mjs';
13
+ import { GLOBAL_LOG_A_LOT } from '../vcs-gib-constants.mjs';
14
+ import { bootstrapVcsMetaspace } from '../bootstrap/node-bootstrap.mjs';
15
+ import { B2TFS_BRANCH_DEFAULT_NAME } from '@ibgib/core-gib/dist/vcs/branch/branch-constants.mjs';
16
+ const logalot = GLOBAL_LOG_A_LOT;
17
+ export async function openVcsRepository({ targetDir = process.cwd(), vcsFolderName = '.vcsgib', branchName, } = {}) {
18
+ const lc = `[${openVcsRepository.name}]`;
19
+ try {
20
+ if (logalot) {
21
+ console.log(`${lc} starting... (I: 4a621eb5576a3064f85177c6de80a826)`);
22
+ }
23
+ const absTargetDir = path.resolve(targetDir);
24
+ // 1. Locate repository root and bootstrap Node localSpace
25
+ const { metaspace, localSpace, vcsPath, repoRoot } = await bootstrapVcsMetaspace({
26
+ repoPath: absTargetDir,
27
+ vcsFolderName,
28
+ });
29
+ // 2. Fetch authoritative in-band index from localSpace
30
+ const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, metaspace });
31
+ if (!indexIbGib) {
32
+ throw new Error(`Not an ibgib repository (index not found in ${vcsPath})`);
33
+ }
34
+ // 3. Determine active branch and worktree directory
35
+ const activeBranchName = branchName || resolveContextualBranchName({
36
+ targetDir: absTargetDir,
37
+ repoRoot,
38
+ indexIbGib,
39
+ });
40
+ const activeWorktreeDir = activeBranchName === B2TFS_BRANCH_DEFAULT_NAME
41
+ ? repoRoot
42
+ : path.join(repoRoot, 'b', activeBranchName);
43
+ // 4. Resolve branch space & create Node workspace projection space
44
+ const { space: activeSpace } = await getOrCreateBranchSpace({
45
+ metaspace,
46
+ branchName: activeBranchName,
47
+ });
48
+ const { space: workspaceSpace } = await getOrCreateWorkspaceProjectionSpace({
49
+ metaspace,
50
+ workspaceRoot: activeWorktreeDir,
51
+ vcsFolderName,
52
+ backingSpace: activeSpace,
53
+ });
54
+ const fnGetWorkspaceProjectionSpace = async ({ worktreeDir, backingSpace, }) => {
55
+ const { space } = await getOrCreateWorkspaceProjectionSpace({
56
+ metaspace,
57
+ workspaceRoot: worktreeDir,
58
+ vcsFolderName,
59
+ backingSpace,
60
+ });
61
+ return space;
62
+ };
63
+ // 5. Construct domain facade
64
+ const repo = new VcsRepository({
65
+ metaspace,
66
+ localSpace,
67
+ workspaceSpace,
68
+ fnGetWorkspaceProjectionSpace,
69
+ repoRoot,
70
+ vcsFolderName,
71
+ });
72
+ return { repo, repoRoot, activeWorktreeDir, vcsPath };
73
+ }
74
+ catch (error) {
75
+ console.error(`${lc} ${extractErrorMsg(error)}`);
76
+ throw error;
77
+ }
78
+ finally {
79
+ if (logalot) {
80
+ console.log(`${lc} complete.`);
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=vcs-repo-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-repo-helper.mjs","sourceRoot":"","sources":["../../src/cli/vcs-repo-helper.mts"],"names":[],"mappings":"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"}
@@ -48,4 +48,13 @@ export declare function logAddr(label: string, addr: IbGibAddr | undefined): voi
48
48
  * Logs a set of addrs with short formatting.
49
49
  */
50
50
  export declare function logAddrs(label: string, addrs: IbGibAddr[] | undefined): void;
51
+ /**
52
+ * Recursively logs the b2tfs item hierarchy from a rootItemAddr within a space.
53
+ */
54
+ export declare function logTreeHierarchy({ label, rootItemAddr, space, metaspace, }: {
55
+ label: string;
56
+ rootItemAddr?: string;
57
+ space: any;
58
+ metaspace?: any;
59
+ }): Promise<void>;
51
60
  //# sourceMappingURL=test-helpers.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.mts","sourceRoot":"","sources":["../../src/test/test-helpers.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAgCjF;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EACjC,KAAK,EACL,WAAW,EACX,KAAK,GACR,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxD,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,KAAK,GACR,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAExE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAE5E"}
1
+ {"version":3,"file":"test-helpers.d.mts","sourceRoot":"","sources":["../../src/test/test-helpers.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAA+B,MAAM,8CAA8C,CAAC;AAiC9G;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EACjC,KAAK,EACL,WAAW,EACX,KAAK,GACR,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxD,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,KAAK,GACR,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAExE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAE5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACnC,KAAK,EACL,YAAY,EACZ,KAAK,EACL,SAAS,GACZ,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,GAAG,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB"}
@@ -15,6 +15,8 @@
15
15
  */
16
16
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
17
17
  import { getLatestAddrs } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
18
+ import { B2TFS_CHILD_ITEM_REL8N_NAME } from '@ibgib/core-gib/dist/vcs/item/item-types.mjs';
19
+ import { getIbGibFromSpace } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
18
20
  // ─────────────────────────────────────────────────────────────────────────────
19
21
  // Internal helpers
20
22
  // ─────────────────────────────────────────────────────────────────────────────
@@ -132,4 +134,37 @@ export function logAddr(label, addr) {
132
134
  export function logAddrs(label, addrs) {
133
135
  console.log(`[ADDRS][${label}]: ${shortAddrs(addrs)}`);
134
136
  }
137
+ /**
138
+ * Recursively logs the b2tfs item hierarchy from a rootItemAddr within a space.
139
+ */
140
+ export async function logTreeHierarchy({ label, rootItemAddr, space, metaspace, }) {
141
+ const lc = `[TRACE_B2TFS][${label}]`;
142
+ const spaceName = space?.data?.name || space?.data?.spaceSubPath || space?.ib || 'unknown';
143
+ console.log(`${lc} === Hierarchy for root: ${shortAddr(rootItemAddr)} in space: ${spaceName} ===`);
144
+ if (!rootItemAddr) {
145
+ console.log(`${lc} rootItemAddr is falsy`);
146
+ return;
147
+ }
148
+ async function walk(addr, depth, currentPath) {
149
+ const indent = ' '.repeat(depth);
150
+ const item = await getIbGibFromSpace({ addr, space, metaspace });
151
+ if (!item) {
152
+ console.log(`${lc}${indent} ❌ MISSING item at ${shortAddr(addr)} (path: ${currentPath})`);
153
+ return;
154
+ }
155
+ const name = item.data?.name || '(root)';
156
+ const fsType = item.data?.fsType || 'unknown';
157
+ const comments = item.rel8ns?.comment || [];
158
+ const children = item.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
159
+ console.log(`${lc}${indent} 📁 ${name} (${fsType}) addr: ${shortAddr(addr)} comments: ${comments.length} children: ${children.length}`);
160
+ for (const cAddr of comments) {
161
+ const comment = await getIbGibFromSpace({ addr: cAddr, space, metaspace });
162
+ console.log(`${lc}${indent} 💬 comment: "${comment?.data?.text?.slice(0, 50)}"`);
163
+ }
164
+ for (const childAddr of children) {
165
+ await walk(childAddr, depth + 1, currentPath ? `${currentPath}/${name}` : name);
166
+ }
167
+ }
168
+ await walk(rootItemAddr, 1, '');
169
+ }
135
170
  //# sourceMappingURL=test-helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.mjs","sourceRoot":"","sources":["../../src/test/test-helpers.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-helpers.mjs","sourceRoot":"","sources":["../../src/test/test-helpers.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibgib/vcs-gib",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -19,10 +19,10 @@
19
19
  "prepare:publish": "npm version patch && node ../../build/dist/concrete-build/build-vcs-gib.mjs --prod && npm run pack"
20
20
  },
21
21
  "dependencies": {
22
- "@ibgib/helper-gib": "^0.0.37",
23
- "@ibgib/ts-gib": "^0.5.34",
24
- "@ibgib/encrypt-gib": "^0.3.1",
25
- "@ibgib/core-gib": "^0.1.78",
26
- "@ibgib/node-gib": "^0.0.23"
22
+ "@ibgib/helper-gib": "^0.0.39",
23
+ "@ibgib/ts-gib": "^0.5.36",
24
+ "@ibgib/encrypt-gib": "^0.3.3",
25
+ "@ibgib/core-gib": "^0.1.80",
26
+ "@ibgib/node-gib": "^0.0.25"
27
27
  }
28
28
  }
@@ -2,4 +2,4 @@
2
2
  * @module AUTO-GENERATED-version
3
3
  * Auto-generated version constant. Do NOT edit directly.
4
4
  */
5
- export const AUTO_GENERATED_VERSION = '0.0.32';
5
+ export const AUTO_GENERATED_VERSION = '0.0.34';
@@ -56,7 +56,7 @@ export async function bootstrapVcsMetaspace(
56
56
  ): Promise<BootstrapVcsMetaspaceResult> {
57
57
  const lc = `${lcFile}[${bootstrapVcsMetaspace.name}]`;
58
58
  try {
59
- if (logalot) { console.log(`${lc} starting... (I: 9f8a0b1c2d3e4f5a6b7c8d9e0f1a2b3c)`); }
59
+ if (logalot) { console.log(`${lc} starting... (I: genuuid)`); }
60
60
 
61
61
  GraftStrategyService.instance.registerStrategy(new B2tFS3WayGraftStrategy());
62
62
 
@@ -102,20 +102,7 @@ export async function bootstrapVcsMetaspace(
102
102
  const safeRepoDir = path.basename(repoRoot).replace(/[^a-zA-Z0-9_\-]/g, '_');
103
103
  const defaultSpaceName = opts.defaultSpaceName || `vcs_${safeRepoDir}`;
104
104
 
105
- if (logalot) { console.log(`${lc} initializing vcsMetaspace at vcsPath: ${vcsPath}, repoRoot: ${repoRoot} (I: 4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d)`); }
106
-
107
- // Read localSpaceId from index projection if repository has been initialized
108
- let localSpaceId: string | undefined;
109
- try {
110
- const projFile = path.join(vcsPath, 'vcs_index_projection.json');
111
- const projRaw = await fs.readFile(projFile, 'utf8');
112
- const projData = JSON.parse(projRaw);
113
- if (projData && projData.spaceId) {
114
- localSpaceId = projData.spaceId;
115
- }
116
- } catch {
117
- // Projection file missing before init
118
- }
105
+ if (logalot) { console.log(`${lc} initializing vcsMetaspace at vcsPath: ${vcsPath}, repoRoot: ${repoRoot} (I: genuuid)`); }
119
106
 
120
107
  // Instantiate Metaspace_Nodespace
121
108
  const metaspace = new Metaspace_Nodespace(undefined);
@@ -157,7 +144,7 @@ export async function bootstrapVcsMetaspace(
157
144
  if (logalot) { console.log(`${lc} [Alert] ${title}: ${msg} (I: 7e6f5d4c3b2a1f0e9d8c7b6a5f4e3d2c)`); }
158
145
  },
159
146
  getFnPrompt: () => async ({ title, msg }) => {
160
- if (logalot) { console.log(`${lc} [Prompt] ${title}: ${msg} (I: 2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e)`); }
147
+ if (logalot) { console.log(`${lc} [Prompt] ${title}: ${msg} (I: genuuid)`); }
161
148
  return defaultSpaceName;
162
149
  },
163
150
  getFnPromptPassword: () => async (title, msg) => {
@@ -171,7 +158,6 @@ export async function bootstrapVcsMetaspace(
171
158
  }
172
159
 
173
160
  const localSpace = await metaspace.getLocalUserSpace({
174
- localSpaceId,
175
161
  lock: false,
176
162
  });
177
163
 
@@ -187,7 +173,7 @@ export async function bootstrapVcsMetaspace(
187
173
 
188
174
  if (logalot) {
189
175
  const spaceName = localSpace.data?.name || localSpace.ib;
190
- console.log(`${lc} Metaspace ready. LocalSpace name/ib: ${spaceName} (I: 1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f)`);
176
+ console.log(`${lc} Metaspace ready. LocalSpace name/ib: ${spaceName} (I: genuuid)`);
191
177
  }
192
178
 
193
179
  return {
@@ -197,9 +183,9 @@ export async function bootstrapVcsMetaspace(
197
183
  repoRoot,
198
184
  };
199
185
  } catch (error: any) {
200
- console.error(`${lc} ${error?.message || error} (E: 8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d)`);
186
+ console.error(`${lc} ${error?.message || error} (E: genuuid)`);
201
187
  throw error;
202
188
  } finally {
203
- if (logalot) { console.log(`${lc} complete. (I: 3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a)`); }
189
+ if (logalot) { console.log(`${lc} complete. (I: genuuid)`); }
204
190
  }
205
191
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module node-bootstrap.respec
3
- *
3
+ *
4
4
  * Unit tests for rapid Node Metaspace bootstrap helper.
5
5
  */
6
6
 
@@ -13,7 +13,7 @@ import {
13
13
 
14
14
  import { bootstrapVcsMetaspace } from './node-bootstrap.mjs';
15
15
 
16
- const lc = `[apps/vcs-gib/src/bootstrap/node-bootstrap.respec.node.mts]`;
16
+ const lc = `[apps/vcs-gib/src/bootstrap/node-bootstrap.respec.mts]`;
17
17
 
18
18
  await respecfully(lc, `Node Metaspace Bootstrap`, async () => {
19
19
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module cli-arg-parser.respec
3
- *
3
+ *
4
4
  * Unit tests for zero-dependency vcs CLI argument parser.
5
5
  */
6
6
 
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  import { parseVcsArgs } from './cli-arg-parser.mjs';
12
12
 
13
- const lc = `[apps/vcs-gib/src/cli/cli-arg-parser.respec.node.mts]`;
13
+ const lc = `[apps/vcs-gib/src/cli/cli-arg-parser.respec.mts]`;
14
14
 
15
15
  await respecfully(lc, `Zero-Dependency CLI Argument Parser`, async () => {
16
16
 
@@ -2,6 +2,7 @@
2
2
  * @module cli-e2e.respec
3
3
  *
4
4
  * End-to-End CLI Integration Spec for @ibgib/vcs-gib.
5
+ *
5
6
  * Executes full lifecycle: vcs init -> vcs status -> vcs add -> vcs commit -> vcs log -> vcs branch -> vcs checkout.
6
7
  */
7
8
 
@@ -9,21 +10,21 @@ import path from 'node:path';
9
10
  import fs from 'node:fs/promises';
10
11
 
11
12
  import {
12
- respecfully, ifWe, ifWeMight, iReckon
13
+ respecfully, ifWe, ifWeMight, iReckon, // don't remove ifWe/ifWeMight even if unused
13
14
  } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
14
15
 
15
16
  import { main } from './vcs-cli-main.mjs';
16
- import { executeInitCmd } from './commands/init-cmd.mjs';
17
- import { executeStatusCmd } from './commands/status-cmd.mjs';
18
- import { executeAddCmd } from './commands/add-cmd.mjs';
19
- import { executeCommitCmd } from './commands/commit-cmd.mjs';
20
- import { executeLogCmd } from './commands/log-cmd.mjs';
21
- import { executeBranchCmd } from './commands/branch-cmd.mjs';
22
- import { executeCheckoutCmd } from './commands/checkout-cmd.mjs';
17
+ import { executeInitCmd } from './commands/cli-init-cmd.mjs';
18
+ import { executeStatusCmd } from './commands/cli-status-cmd.mjs';
19
+ import { executeAddCmd } from './commands/cli-add-cmd.mjs';
20
+ import { executeCommitCmd } from './commands/cli-commit-cmd.mjs';
21
+ import { executeLogCmd } from './commands/cli-log-cmd.mjs';
22
+ import { executeBranchCmd } from './commands/cli-branch-cmd.mjs';
23
+ import { executeCheckoutCmd } from './commands/cli-checkout-cmd.mjs';
23
24
  import { bootstrapVcsMetaspace } from '../bootstrap/node-bootstrap.mjs';
24
- import { readVcsIndexProjectionFromDisk } from './vcs-projection-helper.mjs';
25
+ import { getB2tFSIndexIbGib } from '@ibgib/core-gib/dist/vcs/index/index-helper.mjs';
25
26
 
26
- const lc = `[apps/vcs-gib/src/cli/cli-e2e.respec.node.mts]`;
27
+ const lc = `[apps/vcs-gib/src/cli/cli-e2e.respec.mts]`;
27
28
 
28
29
  await respecfully(lc, `Full E2E CLI Integration Spec`, async () => {
29
30
 
@@ -107,11 +108,11 @@ await respecfully(lc, `Full E2E CLI Integration Spec`, async () => {
107
108
 
108
109
  iReckon(lc, addRes.stagedCount >= 2).isGonnaBeTrue();
109
110
 
110
- const { localSpace: e2eSpaceAdd, vcsPath: e2eVcsPathAdd } = await bootstrapVcsMetaspace({
111
+ const { localSpace: e2eSpaceAdd, metaspace: e2eMetaspaceAdd } = await bootstrapVcsMetaspace({
111
112
  repoPath: testDir,
112
113
  vcsFolderName,
113
114
  });
114
- const e2eIndexAdd = await readVcsIndexProjectionFromDisk({ space: e2eSpaceAdd, vcsPath: e2eVcsPathAdd });
115
+ const e2eIndexAdd = await getB2tFSIndexIbGib({ space: e2eSpaceAdd, metaspace: e2eMetaspaceAdd });
115
116
  iReckon(lc, Boolean(e2eIndexAdd?.data?.staged_item && e2eIndexAdd.data.staged_item.length >= 2)).isGonnaBeTrue();
116
117
  iReckon(lc, e2eIndexAdd?.rel8ns?.staged_item).isGonnaBeFalsy();
117
118
 
@@ -130,11 +131,11 @@ await respecfully(lc, `Full E2E CLI Integration Spec`, async () => {
130
131
  quiet: true,
131
132
  });
132
133
 
133
- const { localSpace: e2eSpaceCommit, vcsPath: e2eVcsPathCommit } = await bootstrapVcsMetaspace({
134
+ const { localSpace: e2eSpaceCommit, metaspace: e2eMetaspaceCommit } = await bootstrapVcsMetaspace({
134
135
  repoPath: testDir,
135
136
  vcsFolderName,
136
137
  });
137
- const e2eIndexCommit = await readVcsIndexProjectionFromDisk({ space: e2eSpaceCommit, vcsPath: e2eVcsPathCommit });
138
+ const e2eIndexCommit = await getB2tFSIndexIbGib({ space: e2eSpaceCommit, metaspace: e2eMetaspaceCommit });
138
139
  iReckon(lc, e2eIndexCommit?.data?.staged_item).willEqual([]);
139
140
  iReckon(lc, e2eIndexCommit?.rel8ns?.staged_item).isGonnaBeFalsy();
140
141
 
@@ -8,21 +8,22 @@ import path from 'node:path';
8
8
  import fs from 'node:fs/promises';
9
9
 
10
10
  import {
11
- respecfully, ifWe, iReckon,
12
- ifWeMight
11
+ respecfully, ifWe, iReckon, ifWeMight, // don't remove ifWe/ifWeMight even if unused
13
12
  } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
14
13
 
15
- import { executeInitCmd } from './init-cmd.mjs';
16
- import { executeAddCmd } from './add-cmd.mjs';
17
- import { executeCommitCmd } from './commit-cmd.mjs';
18
- import { executeBranchCmd } from './branch-cmd.mjs';
19
- import { executeCheckoutCmd } from './checkout-cmd.mjs';
20
- import { executeMergeCmd } from './merge-cmd.mjs';
21
- import { executeStatusCmd } from './status-cmd.mjs';
22
- import { executeLogCmd } from './log-cmd.mjs';
14
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
15
+
16
+ import { executeInitCmd } from './cli-init-cmd.mjs';
17
+ import { executeAddCmd } from './cli-add-cmd.mjs';
18
+ import { executeCommitCmd } from './cli-commit-cmd.mjs';
19
+ import { executeBranchCmd } from './cli-branch-cmd.mjs';
20
+ import { executeCheckoutCmd } from './cli-checkout-cmd.mjs';
21
+ import { executeMergeCmd } from './cli-merge-cmd.mjs';
22
+ import { executeStatusCmd } from './cli-status-cmd.mjs';
23
+ import { executeLogCmd } from './cli-log-cmd.mjs';
23
24
  import { logCheckpoint } from '../../test/test-helpers.mjs';
24
25
 
25
- const lc = `[apps/vcs-gib/src/cli/commands/branch-checkout-cmd.respec.node.mts]`;
26
+ const lc = `[apps/vcs-gib/src/cli/commands/branch-checkout-cmd.respec.mts]`;
26
27
 
27
28
  await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async () => {
28
29
 
@@ -61,6 +62,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
61
62
  });
62
63
 
63
64
  // Create feature branch
65
+ debugger; // walk through branch exec
64
66
  const createRes = await executeBranchCmd({
65
67
  branchName: 'feature-auth',
66
68
  targetDir: testDir,
@@ -77,6 +79,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
77
79
  vcsFolderName,
78
80
  quiet: true,
79
81
  });
82
+ console.dir(listRes)
80
83
 
81
84
  iReckon(lc, listRes.branches.length).willEqual(2);
82
85
  const featureBranch = listRes.branches.find(b => b.name === 'feature-auth');
@@ -147,6 +150,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
147
150
  quiet: true,
148
151
  });
149
152
 
153
+ debugger; // 3
150
154
  // Checkout feature-ui
151
155
  const checkoutRes = await executeCheckoutCmd({
152
156
  branchName: 'feature-ui',
@@ -166,6 +170,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
166
170
  const fileContent = await fs.readFile(projectedFile, 'utf8');
167
171
  iReckon(lc, fileContent).willEqual('console.log("Main");');
168
172
 
173
+ debugger; // 4
169
174
  // Verify active branch in status
170
175
  const statusRes = await executeStatusCmd({
171
176
  targetDir: testDir,
@@ -174,6 +179,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
174
179
  });
175
180
  iReckon(lc, statusRes.branchName).willEqual('feature-ui');
176
181
 
182
+ debugger; // 5
177
183
  // Verify branch list displays ALL branches while on feature-ui
178
184
  const branchListOnFeature = await executeBranchCmd({
179
185
  targetDir: testDir,
@@ -184,6 +190,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
184
190
  iReckon(lc, branchListOnFeature.branches.map(b => b.name)).includes('main');
185
191
  iReckon(lc, branchListOnFeature.branches.map(b => b.name)).includes('feature-ui');
186
192
 
193
+ debugger; // 6
187
194
  // Make a commit on feature-ui branch
188
195
  await fs.writeFile(path.join(expectedWorktree, 'ui.ts'), 'export const ui = 1;', 'utf8');
189
196
  await executeAddCmd({
@@ -192,6 +199,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
192
199
  vcsFolderName,
193
200
  quiet: true,
194
201
  });
202
+ debugger; // 7
195
203
  await executeCommitCmd({
196
204
  message: 'Add ui.ts on feature-ui',
197
205
  targetDir: expectedWorktree,
@@ -199,6 +207,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
199
207
  quiet: true,
200
208
  });
201
209
 
210
+ debugger; // 8
202
211
  // Verify branch list after commit on feature-ui still displays ALL branches
203
212
  const branchListAfterCommit = await executeBranchCmd({
204
213
  targetDir: expectedWorktree,
@@ -207,6 +216,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
207
216
  });
208
217
  iReckon(lc, branchListAfterCommit.branches.length).willEqual(2);
209
218
 
219
+ debugger; // 9
210
220
  // Switch back to main
211
221
  const switchBackRes = await executeCheckoutCmd({
212
222
  branchName: 'main',
@@ -217,6 +227,8 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
217
227
  iReckon(lc, switchBackRes.currentBranch).willEqual('main');
218
228
  iReckon(lc, switchBackRes.worktreePath).willEqual(testDir);
219
229
 
230
+ debugger; // 10
231
+
220
232
  // Verify branch list displays ALL branches while on main after feature-ui commit
221
233
  const branchListOnMain = await executeBranchCmd({
222
234
  targetDir: testDir,
@@ -235,6 +247,8 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
235
247
  quiet: true,
236
248
  });
237
249
  iReckon(lc, switchAgainRes.currentBranch).willEqual('feature-ui');
250
+ } catch (error) {
251
+ iReckon(lc, true).asTo(extractErrorMsg(error)).isGonnaBeFalse();
238
252
  } finally {
239
253
  await fs.rm(testDir, { recursive: true, force: true });
240
254
  }
@@ -274,7 +288,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
274
288
  });
275
289
  } catch (err: any) {
276
290
  err2 = true;
277
- iReckon(lc, err.message).includes("does not exist");
291
+ iReckon(lc, err.message).includes("not found");
278
292
  }
279
293
  iReckon(lc, err2).isGonnaBeTrue();
280
294
  } finally {
@@ -376,7 +390,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
376
390
  });
377
391
  } catch (err: any) {
378
392
  uncommittedErr = true;
379
- iReckon(lc, err.message).includes("not found in active branch snapshot");
393
+ iReckon(lc, err.message).includes("not found in active branch");
380
394
  }
381
395
  iReckon(lc, uncommittedErr).isGonnaBeTrue();
382
396
 
@@ -541,7 +555,7 @@ await respecfully(lc, `vcs branch, checkout, and merge Command Handlers`, async
541
555
  const featureLogRes = await executeLogCmd({ targetDir: featureWorktree!, vcsFolderName, quiet: true });
542
556
  iReckon(lc, featureLogRes.branchName).willEqual('feature-calc');
543
557
  const featureMessages = featureLogRes.commits.map(c => c.message);
544
- iReckon(lc, featureMessages.some(m => m.includes('Add calc on feature-calc'))).isGonnaBeTrue();
558
+ iReckon(lc, featureMessages.some(m => m.includes('Add calc on feature-calc'))).asTo('featureMessages has Add calc on feature-calc').isGonnaBeTrue();
545
559
 
546
560
  // Query status from inside featureWorktree
547
561
  const featureStatusRes = await executeStatusCmd({ targetDir: featureWorktree!, vcsFolderName, quiet: true });
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @module add-cmd
3
+ *
4
+ * CLI command handler for `vcs add <path...>`.
5
+ * Bootstraps workspace projection space and delegates to executeVcsAdd.
6
+ */
7
+
8
+ import path from 'node:path';
9
+
10
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
11
+ import { openVcsRepository } from '../vcs-repo-helper.mjs';
12
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
13
+
14
+ const lcFile = `[add-cmd]`;
15
+ const logalot = GLOBAL_LOG_A_LOT;
16
+
17
+ export interface AddCmdOpts {
18
+ paths?: string[];
19
+ targetDir?: string;
20
+ vcsFolderName?: string;
21
+ all?: boolean;
22
+ quiet?: boolean;
23
+ }
24
+
25
+ export interface AddCmdResult {
26
+ stagedPaths: string[];
27
+ stagedCount: number;
28
+ }
29
+
30
+ export async function executeAddCmd({
31
+ paths = [],
32
+ targetDir = process.cwd(),
33
+ vcsFolderName = '.vcsgib',
34
+ all = false,
35
+ quiet = false,
36
+ }: AddCmdOpts = {}): Promise<AddCmdResult> {
37
+ const lc = `${lcFile}[${executeAddCmd.name}]`;
38
+ try {
39
+ if (logalot) { console.log(`${lc} starting... (I: genuuid)`); }
40
+
41
+ const absTargetDir = path.resolve(targetDir);
42
+ const { repo } = await openVcsRepository({ targetDir: absTargetDir, vcsFolderName });
43
+
44
+ const addRes = await repo.add(paths, {
45
+ all,
46
+ targetDir: absTargetDir,
47
+ });
48
+
49
+ if (!quiet) {
50
+ for (const stagedPath of addRes.stagedPaths) {
51
+ console.log(`staged: ${stagedPath}`);
52
+ }
53
+ }
54
+
55
+ return {
56
+ stagedPaths: addRes.stagedPaths,
57
+ stagedCount: addRes.stagedCount,
58
+ };
59
+ } catch (error) {
60
+ console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
61
+ throw error;
62
+ } finally {
63
+ if (logalot) { console.log(`${lc} complete. (I: genuuid)`); }
64
+ }
65
+ }