@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.
Files changed (151) 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.mjs +1 -1
  4. package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
  5. package/dist/cli/commands/add-cmd.d.mts +2 -3
  6. package/dist/cli/commands/add-cmd.d.mts.map +1 -1
  7. package/dist/cli/commands/add-cmd.mjs +30 -283
  8. package/dist/cli/commands/add-cmd.mjs.map +1 -1
  9. package/dist/cli/commands/branch-cmd.d.mts +8 -8
  10. package/dist/cli/commands/branch-cmd.d.mts.map +1 -1
  11. package/dist/cli/commands/branch-cmd.mjs +45 -176
  12. package/dist/cli/commands/branch-cmd.mjs.map +1 -1
  13. package/dist/cli/commands/checkout-cmd.d.mts +2 -4
  14. package/dist/cli/commands/checkout-cmd.d.mts.map +1 -1
  15. package/dist/cli/commands/checkout-cmd.mjs +31 -110
  16. package/dist/cli/commands/checkout-cmd.mjs.map +1 -1
  17. package/dist/cli/commands/commit-cmd.d.mts +7 -8
  18. package/dist/cli/commands/commit-cmd.d.mts.map +1 -1
  19. package/dist/cli/commands/commit-cmd.mjs +40 -390
  20. package/dist/cli/commands/commit-cmd.mjs.map +1 -1
  21. package/dist/cli/commands/generate-comment-cmd.d.mts.map +1 -1
  22. package/dist/cli/commands/generate-comment-cmd.mjs +5 -2
  23. package/dist/cli/commands/generate-comment-cmd.mjs.map +1 -1
  24. package/dist/cli/commands/init-cmd.d.mts +2 -2
  25. package/dist/cli/commands/init-cmd.d.mts.map +1 -1
  26. package/dist/cli/commands/init-cmd.mjs +20 -70
  27. package/dist/cli/commands/init-cmd.mjs.map +1 -1
  28. package/dist/cli/commands/log-cmd.d.mts +2 -3
  29. package/dist/cli/commands/log-cmd.d.mts.map +1 -1
  30. package/dist/cli/commands/log-cmd.mjs +42 -271
  31. package/dist/cli/commands/log-cmd.mjs.map +1 -1
  32. package/dist/cli/commands/merge-cmd.d.mts +3 -17
  33. package/dist/cli/commands/merge-cmd.d.mts.map +1 -1
  34. package/dist/cli/commands/merge-cmd.mjs +32 -218
  35. package/dist/cli/commands/merge-cmd.mjs.map +1 -1
  36. package/dist/cli/commands/reset-cmd.d.mts +1 -1
  37. package/dist/cli/commands/reset-cmd.d.mts.map +1 -1
  38. package/dist/cli/commands/reset-cmd.mjs +17 -19
  39. package/dist/cli/commands/reset-cmd.mjs.map +1 -1
  40. package/dist/cli/commands/restore-cmd.d.mts +8 -7
  41. package/dist/cli/commands/restore-cmd.d.mts.map +1 -1
  42. package/dist/cli/commands/restore-cmd.mjs +44 -62
  43. package/dist/cli/commands/restore-cmd.mjs.map +1 -1
  44. package/dist/cli/commands/status-cmd.d.mts +2 -2
  45. package/dist/cli/commands/status-cmd.d.mts.map +1 -1
  46. package/dist/cli/commands/status-cmd.mjs +63 -62
  47. package/dist/cli/commands/status-cmd.mjs.map +1 -1
  48. package/dist/cli/vcs-projection-helper.d.mts +23 -0
  49. package/dist/cli/vcs-projection-helper.d.mts.map +1 -0
  50. package/dist/cli/vcs-projection-helper.mjs +91 -0
  51. package/dist/cli/vcs-projection-helper.mjs.map +1 -0
  52. package/dist/test/test-helpers.d.mts +2 -2
  53. package/dist/test/test-helpers.d.mts.map +1 -1
  54. package/package.json +3 -3
  55. package/src/AUTO-GENERATED-version.mts +1 -1
  56. package/src/bootstrap/node-bootstrap.mts +1 -1
  57. package/src/cli/cli-e2e.respec.mts +4 -4
  58. package/src/cli/commands/add-cmd.mts +32 -347
  59. package/src/cli/commands/branch-cmd.mts +56 -225
  60. package/src/cli/commands/checkout-cmd.mts +34 -138
  61. package/src/cli/commands/commit-cmd.mts +46 -473
  62. package/src/cli/commands/commit-log-cmd.respec.mts +11 -7
  63. package/src/cli/commands/generate-comment-cmd.mts +6 -2
  64. package/src/cli/commands/init-cmd.mts +20 -73
  65. package/src/cli/commands/log-cmd.mts +41 -331
  66. package/src/cli/commands/merge-cmd.mts +32 -252
  67. package/src/cli/commands/reset-cmd.mts +17 -19
  68. package/src/cli/commands/restore-cmd.mts +52 -72
  69. package/src/cli/commands/status-add-cmd.respec.mts +3 -3
  70. package/src/cli/commands/status-cmd.mts +68 -63
  71. package/src/cli/vcs-projection-helper.mts +112 -0
  72. package/src/engine/branch/branch-space.respec.mts +5 -5
  73. package/src/engine/merge/b2tfs-sync-comments.respec.mts +4 -4
  74. package/src/test/test-helpers.mts +2 -2
  75. package/src/vcs-gib.respec.mts +11 -8
  76. package/tsconfig.test.tsbuildinfo +1 -1
  77. package/tsconfig.tsbuildinfo +1 -1
  78. package/dist/engine/branch/branch-graph-helper.d.mts +0 -28
  79. package/dist/engine/branch/branch-graph-helper.d.mts.map +0 -1
  80. package/dist/engine/branch/branch-graph-helper.mjs +0 -81
  81. package/dist/engine/branch/branch-graph-helper.mjs.map +0 -1
  82. package/dist/engine/branch/branch-helper.d.mts +0 -40
  83. package/dist/engine/branch/branch-helper.d.mts.map +0 -1
  84. package/dist/engine/branch/branch-helper.mjs +0 -78
  85. package/dist/engine/branch/branch-helper.mjs.map +0 -1
  86. package/dist/engine/branch/branch-space-helper.d.mts +0 -23
  87. package/dist/engine/branch/branch-space-helper.d.mts.map +0 -1
  88. package/dist/engine/branch/branch-space-helper.mjs +0 -78
  89. package/dist/engine/branch/branch-space-helper.mjs.map +0 -1
  90. package/dist/engine/branch/branch-types.d.mts +0 -26
  91. package/dist/engine/branch/branch-types.d.mts.map +0 -1
  92. package/dist/engine/branch/branch-types.mjs +0 -7
  93. package/dist/engine/branch/branch-types.mjs.map +0 -1
  94. package/dist/engine/diff/line-diff-helper.d.mts +0 -76
  95. package/dist/engine/diff/line-diff-helper.d.mts.map +0 -1
  96. package/dist/engine/diff/line-diff-helper.mjs +0 -144
  97. package/dist/engine/diff/line-diff-helper.mjs.map +0 -1
  98. package/dist/engine/filter/glob-helper.d.mts +0 -51
  99. package/dist/engine/filter/glob-helper.d.mts.map +0 -1
  100. package/dist/engine/filter/glob-helper.mjs +0 -132
  101. package/dist/engine/filter/glob-helper.mjs.map +0 -1
  102. package/dist/engine/index/index-helper.d.mts +0 -113
  103. package/dist/engine/index/index-helper.d.mts.map +0 -1
  104. package/dist/engine/index/index-helper.mjs +0 -533
  105. package/dist/engine/index/index-helper.mjs.map +0 -1
  106. package/dist/engine/index/index-types.d.mts +0 -63
  107. package/dist/engine/index/index-types.d.mts.map +0 -1
  108. package/dist/engine/index/index-types.mjs +0 -7
  109. package/dist/engine/index/index-types.mjs.map +0 -1
  110. package/dist/engine/item/item-atom-helper.d.mts +0 -20
  111. package/dist/engine/item/item-atom-helper.d.mts.map +0 -1
  112. package/dist/engine/item/item-atom-helper.mjs +0 -30
  113. package/dist/engine/item/item-atom-helper.mjs.map +0 -1
  114. package/dist/engine/item/item-helper.d.mts +0 -94
  115. package/dist/engine/item/item-helper.d.mts.map +0 -1
  116. package/dist/engine/item/item-helper.mjs +0 -424
  117. package/dist/engine/item/item-helper.mjs.map +0 -1
  118. package/dist/engine/item/item-types.d.mts +0 -128
  119. package/dist/engine/item/item-types.d.mts.map +0 -1
  120. package/dist/engine/item/item-types.mjs +0 -16
  121. package/dist/engine/item/item-types.mjs.map +0 -1
  122. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts +0 -74
  123. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts.map +0 -1
  124. package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs +0 -570
  125. package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs.map +0 -1
  126. package/dist/engine/merge/b2tfs-3way-graft-types.d.mts +0 -34
  127. package/dist/engine/merge/b2tfs-3way-graft-types.d.mts.map +0 -1
  128. package/dist/engine/merge/b2tfs-3way-graft-types.mjs +0 -2
  129. package/dist/engine/merge/b2tfs-3way-graft-types.mjs.map +0 -1
  130. package/dist/engine/status/status-helper.d.mts +0 -90
  131. package/dist/engine/status/status-helper.d.mts.map +0 -1
  132. package/dist/engine/status/status-helper.mjs +0 -286
  133. package/dist/engine/status/status-helper.mjs.map +0 -1
  134. package/src/engine/branch/branch-graph-helper.mts +0 -117
  135. package/src/engine/branch/branch-helper.mts +0 -112
  136. package/src/engine/branch/branch-space-helper.mts +0 -110
  137. package/src/engine/branch/branch-types.mts +0 -29
  138. package/src/engine/diff/line-diff-helper.mts +0 -210
  139. package/src/engine/diff/line-diff-helper.respec.mts +0 -84
  140. package/src/engine/filter/glob-helper.mts +0 -165
  141. package/src/engine/filter/glob-helper.respec.mts +0 -94
  142. package/src/engine/index/index-helper.mts +0 -705
  143. package/src/engine/index/index-types.mts +0 -66
  144. package/src/engine/item/item-atom-helper.mts +0 -30
  145. package/src/engine/item/item-helper.mts +0 -544
  146. package/src/engine/item/item-types.mts +0 -137
  147. package/src/engine/item/item.respec.mts +0 -92
  148. package/src/engine/merge/b2tfs-3way-graft-strategy.mts +0 -630
  149. package/src/engine/merge/b2tfs-3way-graft-strategy.respec.mts +0 -346
  150. package/src/engine/merge/b2tfs-3way-graft-types.mts +0 -34
  151. package/src/engine/status/status-helper.mts +0 -383
@@ -1,30 +0,0 @@
1
- /**
2
- * @module item-atom-helper
3
- *
4
- * Helper functions enforcing canonical space-delimited `ib` atom formulas.
5
- *
6
- * Formula: `[atom] [fsType] [saferName] [saferNameVersion] [nameHash]`
7
- * Example: `b2tfs_item file index_mts v1 a745323851634de188beaebdcb85cbb9`
8
- */
9
- export const B2TFS_ITEM_ATOM = 'b2tfs_item';
10
- export const B2TFS_ITEM_SAFER_NAME_VERSION_V1 = 'v1';
11
- export function getB2tFSItemSaferName(rawName) {
12
- if (!rawName) {
13
- return 'unnamed';
14
- }
15
- // Clean to alphanumeric and underscores/dashes/dots
16
- const safe = rawName.replace(/[^a-zA-Z0-9_\-\.]/g, '_');
17
- return safe.slice(0, 32);
18
- }
19
- /**
20
- * Returns canonical `ib` metadata string for a B2tFS item.
21
- *
22
- * @param fsType 'file' or 'folder'
23
- * @param name raw file/folder name
24
- * @param nameHash SHA-256 hash of name
25
- */
26
- export function getB2tFSItemIb(fsType, name, nameHash) {
27
- const saferName = getB2tFSItemSaferName(name);
28
- return `${B2TFS_ITEM_ATOM} ${fsType} ${saferName} ${B2TFS_ITEM_SAFER_NAME_VERSION_V1} ${nameHash}`;
29
- }
30
- //# sourceMappingURL=item-atom-helper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"item-atom-helper.mjs","sourceRoot":"","sources":["../../../src/engine/item/item-atom-helper.mts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAErD,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IACnC,oDAAoD;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,EAAE,IAAY,EAAE,QAAgB;IACpF,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,GAAG,eAAe,IAAI,MAAM,IAAI,SAAS,IAAI,gCAAgC,IAAI,QAAQ,EAAE,CAAC;AACvG,CAAC"}
@@ -1,94 +0,0 @@
1
- /**
2
- * @module item-helper
3
- *
4
- * B2tFS Item Helper functions: graph diff generation, filesystem projection materialization,
5
- * and two-pass transform application.
6
- */
7
- import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
8
- import { TransformResult, IbGibAddr } from '@ibgib/ts-gib/dist/types.mjs';
9
- import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
10
- import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
11
- import { B2tFSItemIbGib_V1, B2tFSItemData_V1, B2tFSItemRel8ns_V1, B2tFSItemDiffInfo } from './item-types.mjs';
12
- export declare function isB2tFSItemIbGib(x: any): x is B2tFSItemIbGib_V1;
13
- export interface CreateB2tFSItemIbGibOpts {
14
- fsType: 'file' | 'folder';
15
- name: string;
16
- data?: Partial<B2tFSItemData_V1>;
17
- rel8ns?: Partial<B2tFSItemRel8ns_V1>;
18
- }
19
- export interface EvolveB2tFSItemIbGibOpts {
20
- existingItem: B2tFSItemIbGib_V1;
21
- dataToUpdate?: Partial<B2tFSItemData_V1>;
22
- rel8nsToUpdate?: Partial<B2tFSItemRel8ns_V1>;
23
- rel8nsToRemove?: Partial<B2tFSItemRel8ns_V1>;
24
- }
25
- /**
26
- * Creates a brand-new B2tFSItemIbGib_V1 node using Factory_V1.firstGen with TJP, DNA, and nCounter.
27
- * Used ONLY for brand-new files or folders.
28
- */
29
- export declare function createB2tFSItemIbGib({ fsType, name, data, rel8ns, }: CreateB2tFSItemIbGibOpts): Promise<TransformResult<IbGib_V1>>;
30
- /**
31
- * Evolves an existing B2tFSItemIbGib_V1 node using mut8 (for data/hash updates)
32
- * and rel8 (for binary/child link updates) with DNA, nCounter, and timeline tracking.
33
- * Populates rel8ns.past and rel8ns.ancestor, preserving the item's TJP to generate
34
- * composite two-part timeline gib addresses (<tjpGib>^<punctiliarGib>).
35
- */
36
- export declare function evolveB2tFSItemIbGib({ existingItem, dataToUpdate, rel8nsToUpdate, rel8nsToRemove, }: EvolveB2tFSItemIbGibOpts): Promise<TransformResult<IbGib_V1>>;
37
- /**
38
- * Retrieves an ibgib node by address, searching space first, then falling back to metaspace spaces if available.
39
- */
40
- export declare function getIbGibWithMetaspaceFallback({ addr, space, metaspace, }: {
41
- addr: string;
42
- space: IbGibSpaceAny;
43
- metaspace?: MetaspaceService;
44
- }): Promise<any>;
45
- /**
46
- * Projects a B2tFS item graph back onto the physical filesystem directory.
47
- */
48
- export declare function writeB2tFSItemToFS({ item, destPath, space, metaspace, }: {
49
- item: B2tFSItemIbGib_V1;
50
- destPath: string;
51
- space: IbGibSpaceAny;
52
- metaspace: MetaspaceService;
53
- }): Promise<void>;
54
- /**
55
- * Executes two-pass application of diff transform results:
56
- * 1. Persists all child and parent transform results to space.
57
- * 2. Registers new IbGib pointers with metaspace to advance timeline tips.
58
- */
59
- export declare function applyB2tFSItemDiff({ diff, space, metaspace, }: {
60
- diff: B2tFSItemDiffInfo;
61
- space: IbGibSpaceAny;
62
- metaspace: MetaspaceService;
63
- }): Promise<void>;
64
- export interface ReifyB2tFSHierarchyOpts {
65
- /** Root B2tFS item (folder or file). Either rootItem or rootItemAddr required. */
66
- rootItem?: B2tFSItemIbGib_V1;
67
- /** Address of root B2tFS item. Either rootItem or rootItemAddr required. */
68
- rootItemAddr?: IbGibAddr;
69
- /** Space containing the branch items and updated timeline tips. */
70
- space: IbGibSpaceAny;
71
- /** Metaspace service instance for lookups and registrations. */
72
- metaspace: MetaspaceService;
73
- }
74
- export interface ReifyB2tFSHierarchyResult {
75
- /** The reified root B2tFS item (evolved if any descendants changed, or unchanged if no descendants changed). */
76
- reifiedRootItem: B2tFSItemIbGib_V1;
77
- /** True if one or more folder/file nodes in the hierarchy evolved to new tips. */
78
- hasChanges: boolean;
79
- /** Map of old address -> new address for every node that evolved in this reification run. */
80
- reifiedAddrsMap: {
81
- [oldAddr: string]: string;
82
- };
83
- /** All newly evolved and persisted intermediate/root folder items created during reification. */
84
- evolvedItems: B2tFSItemIbGib_V1[];
85
- }
86
- /**
87
- * Reifies a B2tFS filesystem item hierarchy (folders and files) bottom-up.
88
- *
89
- * Traverses `b2tfs_child` relationship edges. If any child timeline advanced
90
- * in `space` (e.g. during a 3-way merge or parallel commit), the parent folders
91
- * are evolved in-place using `rel8` with the updated child tip addresses.
92
- */
93
- export declare function reifyB2tFSHierarchy({ rootItem, rootItemAddr, space, metaspace, }: ReifyB2tFSHierarchyOpts): Promise<ReifyB2tFSHierarchyResult>;
94
- //# sourceMappingURL=item-helper.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"item-helper.d.mts","sourceRoot":"","sources":["../../../src/engine/item/item-helper.mts"],"names":[],"mappings":"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"}
@@ -1,424 +0,0 @@
1
- /**
2
- * @module item-helper
3
- *
4
- * B2tFS Item Helper functions: graph diff generation, filesystem projection materialization,
5
- * and two-pass transform application.
6
- */
7
- import fs from 'node:fs/promises';
8
- import path from 'node:path';
9
- import crypto from 'node:crypto';
10
- import { extractErrorMsg, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
11
- import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
12
- import { mut8 } from '@ibgib/ts-gib/dist/V1/transforms/mut8.mjs';
13
- import { rel8 } from '@ibgib/ts-gib/dist/V1/transforms/rel8.mjs';
14
- import { isIbGib } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
15
- import { persistTransformResult, getFromSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
16
- import { reifyDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
17
- import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
18
- import { parseSpaceQualifiedIbGibAddr } from '../index/index-helper.mjs';
19
- import { B2TFS_ITEM_ATOM, getB2tFSItemIb } from './item-atom-helper.mjs';
20
- import { B2TFS_CHILD_ITEM_REL8N_NAME, BINARY_REL8N_NAME } from './item-types.mjs';
21
- const logalot = GLOBAL_LOG_A_LOT;
22
- const lcFile = `[item-helper]`;
23
- export function isB2tFSItemIbGib(x) {
24
- if (!x) {
25
- return false;
26
- }
27
- if (!isIbGib(x)) {
28
- return false;
29
- }
30
- return x.ib.startsWith(B2TFS_ITEM_ATOM) || x.data?.classname === 'B2tFSItemIbGib_V1';
31
- }
32
- /**
33
- * Creates a brand-new B2tFSItemIbGib_V1 node using Factory_V1.firstGen with TJP, DNA, and nCounter.
34
- * Used ONLY for brand-new files or folders.
35
- */
36
- export async function createB2tFSItemIbGib({ fsType, name, data, rel8ns, }) {
37
- const lc = `${lcFile}[${createB2tFSItemIbGib.name}]`;
38
- try {
39
- if (logalot) {
40
- console.log(`${lc} starting... (I: 8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d)`);
41
- }
42
- if (!fsType || !name) {
43
- throw new Error(`fsType and name are required (E: 9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e)`);
44
- }
45
- const nameHash = data?.nameHash || crypto.createHash('sha256').update(name).digest('hex');
46
- const uuid = data?.uuid || (await getUUID());
47
- const diffTransactionId = data?.diffTransactionId || (await getUUID());
48
- let fileNameSansExt;
49
- let fileExt;
50
- if (fsType === 'file') {
51
- fileNameSansExt = path.parse(name).name;
52
- fileExt = path.parse(name).ext.replace(/^\./, '');
53
- }
54
- const itemData = {
55
- name,
56
- nameHash,
57
- fsType,
58
- diffTransactionId,
59
- uuid,
60
- classname: 'B2tFSItemIbGib_V1',
61
- ...(fsType === 'file' ? { fileNameSansExt, fileExt } : {}),
62
- ...data,
63
- };
64
- const ib = getB2tFSItemIb(fsType, name, nameHash);
65
- const res = await Factory_V1.firstGen({
66
- parentIbGib: Factory_V1.primitive({ ib: B2TFS_ITEM_ATOM }),
67
- ib,
68
- data: itemData,
69
- rel8ns: rel8ns,
70
- tjp: { timestamp: true, uuid: true },
71
- dna: true,
72
- nCounter: true,
73
- });
74
- if (logalot) {
75
- console.log(`${lc} Created new B2tFSItemIbGib: ${res.newIbGib.ib}^${res.newIbGib.gib} (I: 0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f)`);
76
- }
77
- return res;
78
- }
79
- catch (error) {
80
- console.error(`${lc} ${extractErrorMsg(error)} (E: 1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a)`);
81
- throw error;
82
- }
83
- finally {
84
- if (logalot) {
85
- console.log(`${lc} complete. (I: 2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b)`);
86
- }
87
- }
88
- }
89
- /**
90
- * Evolves an existing B2tFSItemIbGib_V1 node using mut8 (for data/hash updates)
91
- * and rel8 (for binary/child link updates) with DNA, nCounter, and timeline tracking.
92
- * Populates rel8ns.past and rel8ns.ancestor, preserving the item's TJP to generate
93
- * composite two-part timeline gib addresses (<tjpGib>^<punctiliarGib>).
94
- */
95
- export async function evolveB2tFSItemIbGib({ existingItem, dataToUpdate, rel8nsToUpdate, rel8nsToRemove, }) {
96
- const lc = `${lcFile}[${evolveB2tFSItemIbGib.name}]`;
97
- try {
98
- if (logalot) {
99
- console.log(`${lc} starting... (I: 3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c)`);
100
- }
101
- if (!existingItem || !existingItem.ib || !existingItem.gib) {
102
- throw new Error(`existingItem with valid ib and gib is required (E: 4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d)`);
103
- }
104
- let currentItem = existingItem;
105
- const dnas = [];
106
- const intermediateIbGibs = [];
107
- // Ensure rel8ns.ancestor is populated if missing
108
- if (!currentItem.rel8ns?.ancestor || currentItem.rel8ns.ancestor.length === 0) {
109
- currentItem = {
110
- ...currentItem,
111
- rel8ns: {
112
- ...(currentItem.rel8ns || {}),
113
- ancestor: [`${B2TFS_ITEM_ATOM}^gib`],
114
- },
115
- };
116
- }
117
- const hasDataChanges = dataToUpdate && Object.keys(dataToUpdate).length > 0;
118
- const hasRel8nsChanges = (rel8nsToUpdate && Object.keys(rel8nsToUpdate).length > 0) ||
119
- (rel8nsToRemove && Object.keys(rel8nsToRemove).length > 0);
120
- // If neither data nor rel8ns explicitly specified, update diffTransactionId to evolve timeline
121
- const patchData = {
122
- ...(dataToUpdate || {}),
123
- diffTransactionId: dataToUpdate?.diffTransactionId || (await getUUID()),
124
- };
125
- // Pass 1: mut8 for data/hash updates
126
- const resMut8 = await mut8({
127
- src: currentItem,
128
- dataToAddOrPatch: patchData,
129
- dna: true,
130
- nCounter: patchData.n ? false : true, // if we manually set data.n, turn nCounter off
131
- });
132
- currentItem = resMut8.newIbGib;
133
- if (resMut8.dnas) {
134
- dnas.push(...resMut8.dnas);
135
- }
136
- // Pass 2: rel8 for binary/child link updates if rel8ns specified
137
- if (hasRel8nsChanges) {
138
- intermediateIbGibs.push(currentItem);
139
- const resRel8 = await rel8({
140
- src: currentItem,
141
- rel8nsToAddByAddr: rel8nsToUpdate,
142
- rel8nsToRemoveByAddr: rel8nsToRemove,
143
- dna: true,
144
- nCounter: true,
145
- });
146
- currentItem = resRel8.newIbGib;
147
- if (resRel8.dnas) {
148
- dnas.push(...resRel8.dnas);
149
- }
150
- }
151
- // Verify rel8ns.ancestor exists on evolved item
152
- if (!currentItem.rel8ns?.ancestor || currentItem.rel8ns.ancestor.length === 0) {
153
- currentItem.rel8ns = {
154
- ...(currentItem.rel8ns || {}),
155
- ancestor: [`${B2TFS_ITEM_ATOM}^gib`],
156
- };
157
- }
158
- if (logalot) {
159
- console.log(`${lc} Evolved B2tFSItemIbGib: ${currentItem.ib}^${currentItem.gib} (I: 5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e)`);
160
- }
161
- return {
162
- newIbGib: currentItem,
163
- intermediateIbGibs: intermediateIbGibs.length > 0 ? intermediateIbGibs : undefined,
164
- dnas: dnas.length > 0 ? dnas : undefined,
165
- };
166
- }
167
- catch (error) {
168
- console.error(`${lc} ${extractErrorMsg(error)} (E: 6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f)`);
169
- throw error;
170
- }
171
- finally {
172
- if (logalot) {
173
- console.log(`${lc} complete. (I: 7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a)`);
174
- }
175
- }
176
- }
177
- function getSpacesArray(metaAny) {
178
- if (!metaAny || !metaAny.spaces) {
179
- return [];
180
- }
181
- if (metaAny.spaces instanceof Map) {
182
- return Array.from(metaAny.spaces.values());
183
- }
184
- if (Array.isArray(metaAny.spaces)) {
185
- return metaAny.spaces;
186
- }
187
- if (typeof metaAny.spaces === 'object') {
188
- return Object.values(metaAny.spaces);
189
- }
190
- return [];
191
- }
192
- async function fetchFromSpaceSilently(spaceToQuery, addrToGet) {
193
- try {
194
- const resGet = await getFromSpace({ space: spaceToQuery, addrs: [addrToGet] });
195
- if (resGet) {
196
- const found = resGet.ibGibs?.find(x => !!x) || resGet.rawResultIbGib?.ibGibs?.find((x) => !!x);
197
- if (found) {
198
- return found;
199
- }
200
- }
201
- }
202
- catch {
203
- // Suppress missing address error
204
- }
205
- return undefined;
206
- }
207
- /**
208
- * Retrieves an ibgib node by address, searching space first, then falling back to metaspace spaces if available.
209
- */
210
- export async function getIbGibWithMetaspaceFallback({ addr, space, metaspace, }) {
211
- const parsedSq = parseSpaceQualifiedIbGibAddr(addr);
212
- const targetAddr = parsedSq ? parsedSq.ibGibAddr : addr;
213
- if (parsedSq && metaspace) {
214
- try {
215
- const spaceList = (await metaspace.getLocalUserSpaces({ lock: false })) || [];
216
- let targetSpace = spaceList.find(s => s?.data?.uuid === parsedSq.spaceId ||
217
- s?.data?.spaceId === parsedSq.spaceId ||
218
- s?.data?.name === parsedSq.spaceId ||
219
- s?.ib === parsedSq.spaceId ||
220
- s?.data?.spaceSubPath === parsedSq.spaceId);
221
- if (!targetSpace) {
222
- try {
223
- targetSpace = await metaspace.getLocalUserSpace({ localSpaceId: parsedSq.spaceId, lock: false });
224
- }
225
- catch {
226
- // Suppress lookup error
227
- }
228
- }
229
- if (targetSpace) {
230
- const found = await fetchFromSpaceSilently(targetSpace, targetAddr);
231
- if (found) {
232
- return found;
233
- }
234
- }
235
- }
236
- catch {
237
- // Suppress space lookup errors
238
- }
239
- }
240
- const primaryFound = await fetchFromSpaceSilently(space, targetAddr);
241
- if (primaryFound) {
242
- return primaryFound;
243
- }
244
- if (metaspace) {
245
- let spaceList = [];
246
- try {
247
- spaceList = (await metaspace.getLocalUserSpaces({ lock: false })) || [];
248
- }
249
- catch {
250
- // Ignore bootstrap lookup error
251
- }
252
- const metaAny = metaspace;
253
- // Try zero space if distinct
254
- if (metaspace.zeroSpace && metaspace.zeroSpace !== space) {
255
- const zeroFound = await fetchFromSpaceSilently(metaspace.zeroSpace, targetAddr);
256
- if (zeroFound) {
257
- return zeroFound;
258
- }
259
- }
260
- if (metaAny.activeSpace && metaAny.activeSpace !== space && metaAny.activeSpace !== metaspace.zeroSpace) {
261
- const activeFound = await fetchFromSpaceSilently(metaAny.activeSpace, targetAddr);
262
- if (activeFound) {
263
- return activeFound;
264
- }
265
- }
266
- for (const s of spaceList) {
267
- if (s && s !== space && s !== metaAny.activeSpace && s !== metaspace.zeroSpace) {
268
- const sFound = await fetchFromSpaceSilently(s, targetAddr);
269
- if (sFound) {
270
- return sFound;
271
- }
272
- }
273
- }
274
- }
275
- return undefined;
276
- }
277
- /**
278
- * Projects a B2tFS item graph back onto the physical filesystem directory.
279
- */
280
- export async function writeB2tFSItemToFS({ item, destPath, space, metaspace, }) {
281
- const lc = `${lcFile}[${writeB2tFSItemToFS.name}]`;
282
- try {
283
- if (logalot) {
284
- console.log(`${lc} starting... (I: 7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d)`);
285
- }
286
- if (!item || !item.data) {
287
- throw new Error(`Invalid B2tFS item provided (E: 32a09c81b29e4d5867198204b12541a5)`);
288
- }
289
- const { fsType, name } = item.data;
290
- const targetPath = path.join(destPath, name);
291
- if (fsType === 'folder') {
292
- await fs.mkdir(targetPath, { recursive: true });
293
- const childAddrs = item.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
294
- for (const childAddr of childAddrs) {
295
- const childItem = await getIbGibWithMetaspaceFallback({
296
- addr: childAddr,
297
- space,
298
- metaspace,
299
- });
300
- if (childItem) {
301
- await writeB2tFSItemToFS({
302
- item: childItem,
303
- destPath: targetPath,
304
- space,
305
- metaspace,
306
- });
307
- }
308
- }
309
- }
310
- else if (fsType === 'file') {
311
- await fs.mkdir(path.dirname(targetPath), { recursive: true });
312
- const binAddrs = item.rel8ns?.[BINARY_REL8N_NAME] || [];
313
- const latestBinAddr = binAddrs.at(-1);
314
- if (latestBinAddr) {
315
- const binIbGib = await getIbGibWithMetaspaceFallback({
316
- addr: latestBinAddr,
317
- space,
318
- metaspace,
319
- });
320
- if (binIbGib && binIbGib.data) {
321
- let fileData;
322
- if (typeof binIbGib.data === 'string') {
323
- fileData = Buffer.from(binIbGib.data, 'base64');
324
- }
325
- else if (binIbGib.data instanceof Uint8Array || Buffer.isBuffer(binIbGib.data)) {
326
- fileData = binIbGib.data;
327
- }
328
- else if (typeof binIbGib.data === 'object') {
329
- const vals = Object.values(binIbGib.data);
330
- fileData = new Uint8Array(vals);
331
- }
332
- else {
333
- fileData = new Uint8Array(0);
334
- }
335
- await fs.writeFile(targetPath, fileData);
336
- }
337
- }
338
- }
339
- }
340
- catch (error) {
341
- console.error(`${lc} ${extractErrorMsg(error)} (E: 8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d)`);
342
- throw error;
343
- }
344
- finally {
345
- if (logalot) {
346
- console.log(`${lc} complete. (I: 9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e)`);
347
- }
348
- }
349
- }
350
- /**
351
- * Executes two-pass application of diff transform results:
352
- * 1. Persists all child and parent transform results to space.
353
- * 2. Registers new IbGib pointers with metaspace to advance timeline tips.
354
- */
355
- export async function applyB2tFSItemDiff({ diff, space, metaspace, }) {
356
- const lc = `${lcFile}[${applyB2tFSItemDiff.name}]`;
357
- try {
358
- if (logalot) {
359
- console.log(`${lc} starting... (I: 0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d)`);
360
- }
361
- if (diff.childDiffs && diff.childDiffs.length > 0) {
362
- for (const childDiff of diff.childDiffs) {
363
- await applyB2tFSItemDiff({ diff: childDiff, space, metaspace });
364
- }
365
- }
366
- const results = diff.transformResults || [];
367
- for (const tr of results) {
368
- await persistTransformResult({ resTransform: tr, space });
369
- }
370
- for (const tr of results) {
371
- if (tr.newIbGib) {
372
- await metaspace.registerNewIbGib({ ibGib: tr.newIbGib });
373
- }
374
- }
375
- }
376
- catch (error) {
377
- console.error(`${lc} ${extractErrorMsg(error)} (E: 1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e)`);
378
- throw error;
379
- }
380
- finally {
381
- if (logalot) {
382
- console.log(`${lc} complete. (I: 2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f)`);
383
- }
384
- }
385
- }
386
- /**
387
- * Reifies a B2tFS filesystem item hierarchy (folders and files) bottom-up.
388
- *
389
- * Traverses `b2tfs_child` relationship edges. If any child timeline advanced
390
- * in `space` (e.g. during a 3-way merge or parallel commit), the parent folders
391
- * are evolved in-place using `rel8` with the updated child tip addresses.
392
- */
393
- export async function reifyB2tFSHierarchy({ rootItem, rootItemAddr, space, metaspace, }) {
394
- const lc = `${lcFile}[${reifyB2tFSHierarchy.name}]`;
395
- try {
396
- if (logalot) {
397
- console.log(`${lc} starting... (I: 3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a)`);
398
- }
399
- const res = await reifyDependencyGraph({
400
- ibGib: rootItem,
401
- ibGibAddr: rootItemAddr,
402
- onlyRel8nNames: [B2TFS_CHILD_ITEM_REL8N_NAME],
403
- space,
404
- metaspace,
405
- });
406
- return {
407
- reifiedRootItem: res.reifiedIbGib,
408
- hasChanges: res.hasChanges,
409
- reifiedAddrsMap: res.reifiedAddrsMap,
410
- evolvedItems: res.evolvedIbGibs,
411
- };
412
- }
413
- catch (error) {
414
- console.error(`${lc} ${extractErrorMsg(error)} (E: 4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b)`);
415
- throw error;
416
- }
417
- finally {
418
- if (logalot) {
419
- console.log(`${lc} complete. (I: 5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c)`);
420
- }
421
- }
422
- }
423
- // #endregion reifyB2tFSHierarchy
424
- //# sourceMappingURL=item-helper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"item-helper.mjs","sourceRoot":"","sources":["../../../src/engine/item/item-helper.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AAKjE,OAAO,EAAE,OAAO,EAAE,MAAM,oDAAoD,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAEH,2BAA2B,EAAE,iBAAiB,EACjD,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAO,GAAG,gBAAgB,CAAC;AACjC,MAAM,MAAM,GAAG,eAAe,CAAC;AAE/B,MAAM,UAAU,gBAAgB,CAAC,CAAM;IACnC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAClC,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,mBAAmB,CAAC;AACzF,CAAC;AAgBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACvC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,GACiB;IACvB,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,oBAAoB,CAAC,IAAI,GAAG,CAAC;IACrD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;QAEvE,IAAI,eAAmC,CAAC;QACxC,IAAI,OAA2B,CAAC;QAChC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,QAAQ,GAAqB;YAC/B,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,iBAAiB;YACjB,IAAI;YACJ,SAAS,EAAE,mBAAmB;YAC9B,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,IAAI;SACV,CAAC;QAEF,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;YAClC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;YAC1D,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAa;YACrB,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACpC,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gCAAgC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,wCAAwC,CAAC,CAAC;QAClI,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACvC,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACS;IACvB,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,oBAAoB,CAAC,IAAI,GAAG,CAAC;IACrD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,WAAW,GAAsB,YAAY,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,CAAC;QAC5B,MAAM,kBAAkB,GAAe,EAAE,CAAC;QAE1C,iDAAiD;QACjD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,WAAW,GAAG;gBACV,GAAG,WAAW;gBACd,MAAM,EAAE;oBACJ,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC7B,QAAQ,EAAE,CAAC,GAAG,eAAe,MAAM,CAAC;iBACvC;aACJ,CAAC;QACN,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/E,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/D,+FAA+F;QAC/F,MAAM,SAAS,GAA8B;YACzC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACvB,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC;SAC1E,CAAC;QAEF,qCAAqC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YACvB,GAAG,EAAE,WAAW;YAChB,gBAAgB,EAAE,SAAS;YAC3B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,+CAA+C;SACxF,CAAC,CAAC;QAEH,WAAW,GAAG,OAAO,CAAC,QAA6B,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAEjD,iEAAiE;QACjE,IAAI,gBAAgB,EAAE,CAAC;YACnB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;gBACvB,GAAG,EAAE,WAAW;gBAChB,iBAAiB,EAAE,cAAqB;gBACxC,oBAAoB,EAAE,cAAqB;gBAC3C,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,WAAW,GAAG,OAAO,CAAC,QAA6B,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QACrD,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,WAAW,CAAC,MAAM,GAAG;gBACjB,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC7B,QAAQ,EAAE,CAAC,GAAG,eAAe,MAAM,CAAC;aACvC,CAAC;QACN,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,4BAA4B,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,wCAAwC,CAAC,CAAC;QAC5H,CAAC;QAED,OAAO;YACH,QAAQ,EAAE,WAAW;YACrB,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;YAClF,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAC3C,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC;AAGD,SAAS,cAAc,CAAC,OAAY;IAChC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,YAA2B,EAAE,SAAiB;IAChF,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAK,MAAM,CAAC,cAAsB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7G,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,iCAAiC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,EAChD,IAAI,EACJ,KAAK,EACL,SAAS,GAKZ;IACG,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAExD,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO;gBAClC,CAAC,EAAE,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,OAAO;gBACrC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO;gBAClC,CAAC,EAAE,EAAE,KAAK,QAAQ,CAAC,OAAO;gBAC1B,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,QAAQ,CAAC,OAAO,CAC7C,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,IAAI,CAAC;oBACD,WAAW,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrG,CAAC;gBAAC,MAAM,CAAC;oBACL,wBAAwB;gBAC5B,CAAC;YACL,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACpE,IAAI,KAAK,EAAE,CAAC;oBACR,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,+BAA+B;QACnC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,SAAS,GAAoB,EAAE,CAAC;QACpC,IAAI,CAAC;YACD,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACL,gCAAgC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,SAAgB,CAAC;QAEjC,6BAA6B;QAC7B,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChF,IAAI,SAAS,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACtG,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAClF,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,WAAW,CAAC;YACvB,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC7E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAC3D,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,CAAC;gBAClB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,SAAS,GAMZ;IACG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC;IACnD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;YAEpE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC;oBAClD,IAAI,EAAE,SAAS;oBACf,KAAK;oBACL,SAAS;iBACZ,CAAsB,CAAC;gBAExB,IAAI,SAAS,EAAE,CAAC;oBACZ,MAAM,kBAAkB,CAAC;wBACrB,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,UAAU;wBACpB,KAAK;wBACL,SAAS;qBACZ,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAAC;oBACjD,IAAI,EAAE,aAAa;oBACnB,KAAK;oBACL,SAAS;iBACZ,CAAC,CAAC;gBAEH,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,QAAoB,CAAC;oBACzB,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACpD,CAAC;yBAAM,IAAI,QAAQ,CAAC,IAAI,YAAY,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/E,QAAQ,GAAG,QAAQ,CAAC,IAAkB,CAAC;oBAC3C,CAAC;yBAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC;wBACpD,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACJ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;oBACjC,CAAC;oBAED,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACrC,IAAI,EACJ,KAAK,EACL,SAAS,GAKZ;IACG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC;IACnD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACvB,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACvB,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC;AA0BD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EACtC,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,SAAS,GACa;IACtB,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC;IACpD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC;YACnC,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,YAAY;YACvB,cAAc,EAAE,CAAC,2BAA2B,CAAC;YAC7C,KAAK;YACL,SAAS;SACZ,CAAC,CAAC;QAEH,OAAO;YACH,eAAe,EAAE,GAAG,CAAC,YAAiC;YACtD,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,YAAY,EAAE,GAAG,CAAC,aAAoC;SACzD,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC;AAED,iCAAiC"}