jumbo-cli 3.17.0 → 3.19.0

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 (129) hide show
  1. package/dist/application/context/relations/get/GetRelationsRequest.d.ts +10 -2
  2. package/dist/application/context/relations/get/GetRelationsRequest.d.ts.map +1 -1
  3. package/dist/application/context/relations/get/IRelationViewReader.d.ts +4 -6
  4. package/dist/application/context/relations/get/IRelationViewReader.d.ts.map +1 -1
  5. package/dist/application/context/relations/get/LocalGetRelationsGateway.d.ts +1 -0
  6. package/dist/application/context/relations/get/LocalGetRelationsGateway.d.ts.map +1 -1
  7. package/dist/application/context/relations/get/LocalGetRelationsGateway.js +30 -0
  8. package/dist/application/context/relations/get/LocalGetRelationsGateway.js.map +1 -1
  9. package/dist/application/context/relations/get/RelationDirection.d.ts +2 -0
  10. package/dist/application/context/relations/get/RelationDirection.d.ts.map +1 -0
  11. package/dist/application/context/relations/get/RelationDirection.js +2 -0
  12. package/dist/application/context/relations/get/RelationDirection.js.map +1 -0
  13. package/dist/application/context/relations/get/RelationListFilter.d.ts +15 -0
  14. package/dist/application/context/relations/get/RelationListFilter.d.ts.map +1 -0
  15. package/dist/application/context/relations/get/RelationListFilter.js +2 -0
  16. package/dist/application/context/relations/get/RelationListFilter.js.map +1 -0
  17. package/dist/application/context/relations/get/RelationNodeReference.d.ts +6 -0
  18. package/dist/application/context/relations/get/RelationNodeReference.d.ts.map +1 -0
  19. package/dist/application/context/relations/get/RelationNodeReference.js +2 -0
  20. package/dist/application/context/relations/get/RelationNodeReference.js.map +1 -0
  21. package/dist/application/context/relations/get/RelationStatusFilter.d.ts +2 -0
  22. package/dist/application/context/relations/get/RelationStatusFilter.d.ts.map +1 -0
  23. package/dist/application/context/relations/get/RelationStatusFilter.js +2 -0
  24. package/dist/application/context/relations/get/RelationStatusFilter.js.map +1 -0
  25. package/dist/application/context/relations/path/FindRelationPathController.d.ts +9 -0
  26. package/dist/application/context/relations/path/FindRelationPathController.d.ts.map +1 -0
  27. package/dist/application/context/relations/path/FindRelationPathController.js +9 -0
  28. package/dist/application/context/relations/path/FindRelationPathController.js.map +1 -0
  29. package/dist/application/context/relations/path/FindRelationPathRequest.d.ts +16 -0
  30. package/dist/application/context/relations/path/FindRelationPathRequest.d.ts.map +1 -0
  31. package/dist/application/context/relations/path/FindRelationPathRequest.js +2 -0
  32. package/dist/application/context/relations/path/FindRelationPathRequest.js.map +1 -0
  33. package/dist/application/context/relations/path/IFindRelationPathGateway.d.ts +6 -0
  34. package/dist/application/context/relations/path/IFindRelationPathGateway.d.ts.map +1 -0
  35. package/dist/application/context/relations/path/IFindRelationPathGateway.js +2 -0
  36. package/dist/application/context/relations/path/IFindRelationPathGateway.js.map +1 -0
  37. package/dist/application/context/relations/path/LocalFindRelationPathGateway.d.ts +14 -0
  38. package/dist/application/context/relations/path/LocalFindRelationPathGateway.d.ts.map +1 -0
  39. package/dist/application/context/relations/path/LocalFindRelationPathGateway.js +21 -0
  40. package/dist/application/context/relations/path/LocalFindRelationPathGateway.js.map +1 -0
  41. package/dist/application/context/relations/path/RelationPathQueryMetadata.d.ts +12 -0
  42. package/dist/application/context/relations/path/RelationPathQueryMetadata.d.ts.map +1 -0
  43. package/dist/application/context/relations/path/RelationPathQueryMetadata.js +2 -0
  44. package/dist/application/context/relations/path/RelationPathQueryMetadata.js.map +1 -0
  45. package/dist/application/context/relations/path/RelationPathResult.d.ts +13 -0
  46. package/dist/application/context/relations/path/RelationPathResult.d.ts.map +1 -0
  47. package/dist/application/context/relations/path/RelationPathResult.js +2 -0
  48. package/dist/application/context/relations/path/RelationPathResult.js.map +1 -0
  49. package/dist/application/context/relations/path/RelationShortestPathFinder.d.ts +16 -0
  50. package/dist/application/context/relations/path/RelationShortestPathFinder.d.ts.map +1 -0
  51. package/dist/application/context/relations/path/RelationShortestPathFinder.js +104 -0
  52. package/dist/application/context/relations/path/RelationShortestPathFinder.js.map +1 -0
  53. package/dist/application/context/relations/traverse/ITraverseRelationsGateway.d.ts +6 -0
  54. package/dist/application/context/relations/traverse/ITraverseRelationsGateway.d.ts.map +1 -0
  55. package/dist/application/context/relations/traverse/ITraverseRelationsGateway.js +2 -0
  56. package/dist/application/context/relations/traverse/ITraverseRelationsGateway.js.map +1 -0
  57. package/dist/application/context/relations/traverse/LocalTraverseRelationsGateway.d.ts +18 -0
  58. package/dist/application/context/relations/traverse/LocalTraverseRelationsGateway.d.ts.map +1 -0
  59. package/dist/application/context/relations/traverse/LocalTraverseRelationsGateway.js +85 -0
  60. package/dist/application/context/relations/traverse/LocalTraverseRelationsGateway.js.map +1 -0
  61. package/dist/application/context/relations/traverse/RelationNodeReferenceResolver.d.ts +9 -0
  62. package/dist/application/context/relations/traverse/RelationNodeReferenceResolver.d.ts.map +1 -0
  63. package/dist/application/context/relations/traverse/RelationNodeReferenceResolver.js +29 -0
  64. package/dist/application/context/relations/traverse/RelationNodeReferenceResolver.js.map +1 -0
  65. package/dist/application/context/relations/traverse/RelationTraversalNode.d.ts +5 -0
  66. package/dist/application/context/relations/traverse/RelationTraversalNode.d.ts.map +1 -0
  67. package/dist/application/context/relations/traverse/RelationTraversalNode.js +2 -0
  68. package/dist/application/context/relations/traverse/RelationTraversalNode.js.map +1 -0
  69. package/dist/application/context/relations/traverse/RelationTraversalPolicy.d.ts +10 -0
  70. package/dist/application/context/relations/traverse/RelationTraversalPolicy.d.ts.map +1 -0
  71. package/dist/application/context/relations/traverse/RelationTraversalPolicy.js +31 -0
  72. package/dist/application/context/relations/traverse/RelationTraversalPolicy.js.map +1 -0
  73. package/dist/application/context/relations/traverse/RelationTraversalQuery.d.ts +12 -0
  74. package/dist/application/context/relations/traverse/RelationTraversalQuery.d.ts.map +1 -0
  75. package/dist/application/context/relations/traverse/RelationTraversalQuery.js +2 -0
  76. package/dist/application/context/relations/traverse/RelationTraversalQuery.js.map +1 -0
  77. package/dist/application/context/relations/traverse/RelationTraversalQueryNormalizer.d.ts +17 -0
  78. package/dist/application/context/relations/traverse/RelationTraversalQueryNormalizer.d.ts.map +1 -0
  79. package/dist/application/context/relations/traverse/RelationTraversalQueryNormalizer.js +34 -0
  80. package/dist/application/context/relations/traverse/RelationTraversalQueryNormalizer.js.map +1 -0
  81. package/dist/application/context/relations/traverse/RelationTraversalResult.d.ts +13 -0
  82. package/dist/application/context/relations/traverse/RelationTraversalResult.d.ts.map +1 -0
  83. package/dist/application/context/relations/traverse/RelationTraversalResult.js +2 -0
  84. package/dist/application/context/relations/traverse/RelationTraversalResult.js.map +1 -0
  85. package/dist/application/context/relations/traverse/TraverseRelationsController.d.ts +9 -0
  86. package/dist/application/context/relations/traverse/TraverseRelationsController.d.ts.map +1 -0
  87. package/dist/application/context/relations/traverse/TraverseRelationsController.js +9 -0
  88. package/dist/application/context/relations/traverse/TraverseRelationsController.js.map +1 -0
  89. package/dist/application/context/relations/traverse/TraverseRelationsRequest.d.ts +15 -0
  90. package/dist/application/context/relations/traverse/TraverseRelationsRequest.d.ts.map +1 -0
  91. package/dist/application/context/relations/traverse/TraverseRelationsRequest.js +2 -0
  92. package/dist/application/context/relations/traverse/TraverseRelationsRequest.js.map +1 -0
  93. package/dist/application/host/IApplicationContainer.d.ts +4 -0
  94. package/dist/application/host/IApplicationContainer.d.ts.map +1 -1
  95. package/dist/infrastructure/context/relations/get/SqliteRelationViewReader.d.ts +7 -1
  96. package/dist/infrastructure/context/relations/get/SqliteRelationViewReader.d.ts.map +1 -1
  97. package/dist/infrastructure/context/relations/get/SqliteRelationViewReader.js +75 -12
  98. package/dist/infrastructure/context/relations/get/SqliteRelationViewReader.js.map +1 -1
  99. package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
  100. package/dist/infrastructure/host/HostBuilder.js +18 -0
  101. package/dist/infrastructure/host/HostBuilder.js.map +1 -1
  102. package/dist/presentation/cli/commands/registry/generated-commands.d.ts.map +1 -1
  103. package/dist/presentation/cli/commands/registry/generated-commands.js +12 -0
  104. package/dist/presentation/cli/commands/registry/generated-commands.js.map +1 -1
  105. package/dist/presentation/cli/commands/relations/list/RelationListOutputBuilder.d.ts +2 -5
  106. package/dist/presentation/cli/commands/relations/list/RelationListOutputBuilder.d.ts.map +1 -1
  107. package/dist/presentation/cli/commands/relations/list/RelationListOutputBuilder.js +15 -1
  108. package/dist/presentation/cli/commands/relations/list/RelationListOutputBuilder.js.map +1 -1
  109. package/dist/presentation/cli/commands/relations/list/relations.list.d.ts +4 -0
  110. package/dist/presentation/cli/commands/relations/list/relations.list.d.ts.map +1 -1
  111. package/dist/presentation/cli/commands/relations/list/relations.list.js +35 -12
  112. package/dist/presentation/cli/commands/relations/list/relations.list.js.map +1 -1
  113. package/dist/presentation/cli/commands/relations/path/RelationPathOutputBuilder.d.ts +12 -0
  114. package/dist/presentation/cli/commands/relations/path/RelationPathOutputBuilder.d.ts.map +1 -0
  115. package/dist/presentation/cli/commands/relations/path/RelationPathOutputBuilder.js +96 -0
  116. package/dist/presentation/cli/commands/relations/path/RelationPathOutputBuilder.js.map +1 -0
  117. package/dist/presentation/cli/commands/relations/path/relations.path.d.ts +16 -0
  118. package/dist/presentation/cli/commands/relations/path/relations.path.d.ts.map +1 -0
  119. package/dist/presentation/cli/commands/relations/path/relations.path.js +101 -0
  120. package/dist/presentation/cli/commands/relations/path/relations.path.js.map +1 -0
  121. package/dist/presentation/cli/commands/relations/traverse/RelationTraverseOutputBuilder.d.ts +13 -0
  122. package/dist/presentation/cli/commands/relations/traverse/RelationTraverseOutputBuilder.d.ts.map +1 -0
  123. package/dist/presentation/cli/commands/relations/traverse/RelationTraverseOutputBuilder.js +95 -0
  124. package/dist/presentation/cli/commands/relations/traverse/RelationTraverseOutputBuilder.js.map +1 -0
  125. package/dist/presentation/cli/commands/relations/traverse/relations.traverse.d.ts +15 -0
  126. package/dist/presentation/cli/commands/relations/traverse/relations.traverse.d.ts.map +1 -0
  127. package/dist/presentation/cli/commands/relations/traverse/relations.traverse.js +66 -0
  128. package/dist/presentation/cli/commands/relations/traverse/relations.traverse.js.map +1 -0
  129. package/package.json +1 -1
@@ -1,7 +1,15 @@
1
- import { EntityTypeValue } from "../../../../domain/relations/Constants.js";
1
+ import { EntityTypeValue, RelationStrengthValue } from "../../../../domain/relations/Constants.js";
2
+ import { RelationDirection } from "./RelationDirection.js";
3
+ import { RelationStatusFilter } from "./RelationStatusFilter.js";
4
+ import { RelationNodeReference } from "./RelationNodeReference.js";
2
5
  export interface GetRelationsRequest {
6
+ readonly entity?: RelationNodeReference;
3
7
  readonly entityType?: EntityTypeValue;
4
8
  readonly entityId?: string;
5
- readonly status: "active" | "deactivated" | "removed" | "all";
9
+ readonly direction?: RelationDirection;
10
+ readonly relationType?: string;
11
+ readonly relatedEntityType?: EntityTypeValue;
12
+ readonly strength?: RelationStrengthValue;
13
+ readonly status: RelationStatusFilter;
6
14
  }
7
15
  //# sourceMappingURL=GetRelationsRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GetRelationsRequest.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/GetRelationsRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC;CAC/D"}
1
+ {"version":3,"file":"GetRelationsRequest.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/GetRelationsRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC"}
@@ -2,13 +2,9 @@
2
2
  * Port interface for listing relations from the projection store.
3
3
  * Used by ListRelationsQueryHandler to retrieve relation list with optional filtering.
4
4
  */
5
- import { RelationView } from "../RelationView.js";
6
5
  import { EntityTypeValue } from "../../../../domain/relations/Constants.js";
7
- export interface RelationListFilter {
8
- entityType?: EntityTypeValue;
9
- entityId?: string;
10
- status?: "active" | "deactivated" | "removed" | "all";
11
- }
6
+ import { RelationView } from "../RelationView.js";
7
+ import { RelationListFilter } from "./RelationListFilter.js";
12
8
  export interface IRelationViewReader {
13
9
  /**
14
10
  * Retrieves all relations, optionally filtered by entity or status.
@@ -16,5 +12,7 @@ export interface IRelationViewReader {
16
12
  * @returns Array of relation views ordered by creation date
17
13
  */
18
14
  findAll(filter?: RelationListFilter): Promise<RelationView[]>;
15
+ /** Returns the distinct projection endpoint types associated with an entity ID. */
16
+ findEndpointTypes(entityId: string): Promise<EntityTypeValue[]>;
19
17
  }
20
18
  //# sourceMappingURL=IRelationViewReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IRelationViewReader.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/IRelationViewReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC/D"}
1
+ {"version":3,"file":"IRelationViewReader.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/IRelationViewReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE9D,mFAAmF;IACnF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACjE"}
@@ -6,5 +6,6 @@ export declare class LocalGetRelationsGateway implements IGetRelationsGateway {
6
6
  private readonly relationViewReader;
7
7
  constructor(relationViewReader: IRelationViewReader);
8
8
  getRelations(request: GetRelationsRequest): Promise<GetRelationsResponse>;
9
+ private validate;
9
10
  }
10
11
  //# sourceMappingURL=LocalGetRelationsGateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalGetRelationsGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/LocalGetRelationsGateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,wBAAyB,YAAW,oBAAoB;IAEjE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,mBAAmB;IAGpD,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAQhF"}
1
+ {"version":3,"file":"LocalGetRelationsGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/LocalGetRelationsGateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qBAAa,wBAAyB,YAAW,oBAAoB;IAEjE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,mBAAmB;IAGpD,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoB/E,OAAO,CAAC,QAAQ;CAoBjB"}
@@ -1,14 +1,44 @@
1
+ import { EntityType, RelationStrength } from "../../../../domain/relations/Constants.js";
1
2
  export class LocalGetRelationsGateway {
2
3
  constructor(relationViewReader) {
3
4
  this.relationViewReader = relationViewReader;
4
5
  }
5
6
  async getRelations(request) {
7
+ this.validate(request);
8
+ const entity = request.entity ?? (request.entityType && request.entityId
9
+ ? { entityType: request.entityType, entityId: request.entityId }
10
+ : undefined);
6
11
  const relations = await this.relationViewReader.findAll({
12
+ entity,
7
13
  entityType: request.entityType,
8
14
  entityId: request.entityId,
15
+ direction: request.direction,
16
+ relationType: request.relationType,
17
+ relatedEntityType: request.relatedEntityType,
18
+ strength: request.strength,
9
19
  status: request.status,
10
20
  });
11
21
  return { relations };
12
22
  }
23
+ validate(request) {
24
+ if (request.direction && !["in", "out", "both"].includes(request.direction)) {
25
+ throw new Error("Direction must be one of: in, out, both.");
26
+ }
27
+ if (!["active", "deactivated", "removed", "all"].includes(request.status)) {
28
+ throw new Error("Status must be one of: active, deactivated, removed, all.");
29
+ }
30
+ if (request.entityType && !Object.values(EntityType).includes(request.entityType)) {
31
+ throw new Error(`Entity type must be one of: ${Object.values(EntityType).join(", ")}.`);
32
+ }
33
+ if (request.entity && !Object.values(EntityType).includes(request.entity.entityType)) {
34
+ throw new Error(`Entity type must be one of: ${Object.values(EntityType).join(", ")}.`);
35
+ }
36
+ if (request.relatedEntityType && !Object.values(EntityType).includes(request.relatedEntityType)) {
37
+ throw new Error(`Related entity type must be one of: ${Object.values(EntityType).join(", ")}.`);
38
+ }
39
+ if (request.strength && !Object.values(RelationStrength).includes(request.strength)) {
40
+ throw new Error("Strength must be one of: strong, medium, weak.");
41
+ }
42
+ }
13
43
  }
14
44
  //# sourceMappingURL=LocalGetRelationsGateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalGetRelationsGateway.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/LocalGetRelationsGateway.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,wBAAwB;IACnC,YACmB,kBAAuC;QAAvC,uBAAkB,GAAlB,kBAAkB,CAAqB;IACvD,CAAC;IAEJ,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACtD,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"LocalGetRelationsGateway.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/LocalGetRelationsGateway.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAEzF,MAAM,OAAO,wBAAwB;IACnC,YACmB,kBAAuC;QAAvC,uBAAkB,GAAlB,kBAAkB,CAAqB;IACvD,CAAC;IAEJ,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAC/B,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ;YACpC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;YAChE,CAAC,CAAC,SAAS,CACd,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACtD,MAAM;YACN,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAEO,QAAQ,CAAC,OAA4B;QAC3C,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChG,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export type RelationDirection = "in" | "out" | "both";
2
+ //# sourceMappingURL=RelationDirection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationDirection.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationDirection.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationDirection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationDirection.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationDirection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { EntityTypeValue, RelationStrengthValue } from "../../../../domain/relations/Constants.js";
2
+ import { RelationDirection } from "./RelationDirection.js";
3
+ import { RelationStatusFilter } from "./RelationStatusFilter.js";
4
+ import { RelationNodeReference } from "./RelationNodeReference.js";
5
+ export interface RelationListFilter {
6
+ readonly entity?: RelationNodeReference;
7
+ readonly entityType?: EntityTypeValue;
8
+ readonly entityId?: string;
9
+ readonly direction?: RelationDirection;
10
+ readonly relationType?: string;
11
+ readonly relatedEntityType?: EntityTypeValue;
12
+ readonly strength?: RelationStrengthValue;
13
+ readonly status?: RelationStatusFilter;
14
+ }
15
+ //# sourceMappingURL=RelationListFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationListFilter.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationListFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationListFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationListFilter.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationListFilter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { EntityTypeValue } from "../../../../domain/relations/Constants.js";
2
+ export interface RelationNodeReference {
3
+ readonly entityType: EntityTypeValue;
4
+ readonly entityId: string;
5
+ }
6
+ //# sourceMappingURL=RelationNodeReference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationNodeReference.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationNodeReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationNodeReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationNodeReference.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationNodeReference.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type RelationStatusFilter = "active" | "deactivated" | "removed" | "all";
2
+ //# sourceMappingURL=RelationStatusFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationStatusFilter.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationStatusFilter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationStatusFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationStatusFilter.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/get/RelationStatusFilter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { FindRelationPathRequest } from "./FindRelationPathRequest.js";
2
+ import { IFindRelationPathGateway } from "./IFindRelationPathGateway.js";
3
+ import { RelationPathResult } from "./RelationPathResult.js";
4
+ export declare class FindRelationPathController {
5
+ private readonly gateway;
6
+ constructor(gateway: IFindRelationPathGateway);
7
+ handle(request: FindRelationPathRequest): Promise<RelationPathResult>;
8
+ }
9
+ //# sourceMappingURL=FindRelationPathController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindRelationPathController.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/FindRelationPathController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,wBAAwB;IAExD,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAG5E"}
@@ -0,0 +1,9 @@
1
+ export class FindRelationPathController {
2
+ constructor(gateway) {
3
+ this.gateway = gateway;
4
+ }
5
+ async handle(request) {
6
+ return this.gateway.findPath(request);
7
+ }
8
+ }
9
+ //# sourceMappingURL=FindRelationPathController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindRelationPathController.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/FindRelationPathController.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,0BAA0B;IACrC,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;IAAG,CAAC;IAElE,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { EntityTypeValue, RelationStrengthValue } from "../../../../domain/relations/Constants.js";
2
+ import { RelationDirection } from "../get/RelationDirection.js";
3
+ import { RelationStatusFilter } from "../get/RelationStatusFilter.js";
4
+ export interface FindRelationPathRequest {
5
+ readonly fromEntityId: string;
6
+ readonly fromEntityType?: EntityTypeValue;
7
+ readonly toEntityId: string;
8
+ readonly toEntityType?: EntityTypeValue;
9
+ readonly maxDepth?: number;
10
+ readonly direction?: RelationDirection;
11
+ readonly relationType?: string;
12
+ readonly relatedEntityType?: EntityTypeValue;
13
+ readonly strength?: RelationStrengthValue;
14
+ readonly status?: RelationStatusFilter;
15
+ }
16
+ //# sourceMappingURL=FindRelationPathRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindRelationPathRequest.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/FindRelationPathRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FindRelationPathRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindRelationPathRequest.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/FindRelationPathRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { FindRelationPathRequest } from "./FindRelationPathRequest.js";
2
+ import { RelationPathResult } from "./RelationPathResult.js";
3
+ export interface IFindRelationPathGateway {
4
+ findPath(request: FindRelationPathRequest): Promise<RelationPathResult>;
5
+ }
6
+ //# sourceMappingURL=IFindRelationPathGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFindRelationPathGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/IFindRelationPathGateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IFindRelationPathGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFindRelationPathGateway.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/IFindRelationPathGateway.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { RelationNodeReferenceResolver } from "../traverse/RelationNodeReferenceResolver.js";
2
+ import { RelationTraversalQueryNormalizer } from "../traverse/RelationTraversalQueryNormalizer.js";
3
+ import { FindRelationPathRequest } from "./FindRelationPathRequest.js";
4
+ import { IFindRelationPathGateway } from "./IFindRelationPathGateway.js";
5
+ import { RelationPathResult } from "./RelationPathResult.js";
6
+ import { RelationShortestPathFinder } from "./RelationShortestPathFinder.js";
7
+ export declare class LocalFindRelationPathGateway implements IFindRelationPathGateway {
8
+ private readonly nodeResolver;
9
+ private readonly queryNormalizer;
10
+ private readonly shortestPathFinder;
11
+ constructor(nodeResolver: RelationNodeReferenceResolver, queryNormalizer: RelationTraversalQueryNormalizer, shortestPathFinder: RelationShortestPathFinder);
12
+ findPath(request: FindRelationPathRequest): Promise<RelationPathResult>;
13
+ }
14
+ //# sourceMappingURL=LocalFindRelationPathGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFindRelationPathGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/LocalFindRelationPathGateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,qBAAa,4BAA6B,YAAW,wBAAwB;IAEzE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAFlB,YAAY,EAAE,6BAA6B,EAC3C,eAAe,EAAE,gCAAgC,EACjD,kBAAkB,EAAE,0BAA0B;IAG3D,QAAQ,CACZ,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;CA2B/B"}
@@ -0,0 +1,21 @@
1
+ export class LocalFindRelationPathGateway {
2
+ constructor(nodeResolver, queryNormalizer, shortestPathFinder) {
3
+ this.nodeResolver = nodeResolver;
4
+ this.queryNormalizer = queryNormalizer;
5
+ this.shortestPathFinder = shortestPathFinder;
6
+ }
7
+ async findPath(request) {
8
+ const query = this.queryNormalizer.normalize({
9
+ depth: request.maxDepth,
10
+ direction: request.direction,
11
+ relationType: request.relationType,
12
+ relatedEntityType: request.relatedEntityType,
13
+ strength: request.strength,
14
+ status: request.status,
15
+ }, 5);
16
+ const from = await this.nodeResolver.resolve(request.fromEntityId, request.fromEntityType, "--from-type", "From entity");
17
+ const to = await this.nodeResolver.resolve(request.toEntityId, request.toEntityType, "--to-type", "To entity");
18
+ return this.shortestPathFinder.find(from, to, query);
19
+ }
20
+ }
21
+ //# sourceMappingURL=LocalFindRelationPathGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFindRelationPathGateway.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/LocalFindRelationPathGateway.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,4BAA4B;IACvC,YACmB,YAA2C,EAC3C,eAAiD,EACjD,kBAA8C;QAF9C,iBAAY,GAAZ,YAAY,CAA+B;QAC3C,oBAAe,GAAf,eAAe,CAAkC;QACjD,uBAAkB,GAAlB,kBAAkB,CAA4B;IAC9D,CAAC;IAEJ,KAAK,CAAC,QAAQ,CACZ,OAAgC;QAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAC1C;YACE,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EACD,CAAC,CACF,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC1C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,cAAc,EACtB,aAAa,EACb,aAAa,CACd,CAAC;QACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CACxC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,EACpB,WAAW,EACX,WAAW,CACZ,CAAC;QAEF,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { EntityTypeValue, RelationStrengthValue } from "../../../../domain/relations/Constants.js";
2
+ import { RelationDirection } from "../get/RelationDirection.js";
3
+ import { RelationStatusFilter } from "../get/RelationStatusFilter.js";
4
+ export interface RelationPathQueryMetadata {
5
+ readonly maxDepth: number;
6
+ readonly direction: RelationDirection;
7
+ readonly relationType?: string;
8
+ readonly entityType?: EntityTypeValue;
9
+ readonly strength?: RelationStrengthValue;
10
+ readonly status: RelationStatusFilter;
11
+ }
12
+ //# sourceMappingURL=RelationPathQueryMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationPathQueryMetadata.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationPathQueryMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationPathQueryMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationPathQueryMetadata.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationPathQueryMetadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { RelationView } from "../RelationView.js";
2
+ import { RelationNodeReference } from "../get/RelationNodeReference.js";
3
+ import { RelationPathQueryMetadata } from "./RelationPathQueryMetadata.js";
4
+ export interface RelationPathResult {
5
+ readonly found: boolean;
6
+ readonly from: RelationNodeReference;
7
+ readonly to: RelationNodeReference;
8
+ readonly hopCount: number;
9
+ readonly nodes: RelationNodeReference[];
10
+ readonly edges: RelationView[];
11
+ readonly query: RelationPathQueryMetadata;
12
+ }
13
+ //# sourceMappingURL=RelationPathResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationPathResult.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationPathResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationPathResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationPathResult.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationPathResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { IRelationViewReader } from "../get/IRelationViewReader.js";
2
+ import { RelationNodeReference } from "../get/RelationNodeReference.js";
3
+ import { RelationTraversalPolicy } from "../traverse/RelationTraversalPolicy.js";
4
+ import { RelationTraversalQuery } from "../traverse/RelationTraversalQuery.js";
5
+ import { RelationPathResult } from "./RelationPathResult.js";
6
+ export declare class RelationShortestPathFinder {
7
+ private readonly relationViewReader;
8
+ private readonly traversalPolicy;
9
+ constructor(relationViewReader: IRelationViewReader, traversalPolicy?: RelationTraversalPolicy);
10
+ find(from: RelationNodeReference, to: RelationNodeReference, query: RelationTraversalQuery): Promise<RelationPathResult>;
11
+ private stableTransitions;
12
+ private reconstruct;
13
+ private foundResult;
14
+ private toQueryMetadata;
15
+ }
16
+ //# sourceMappingURL=RelationShortestPathFinder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationShortestPathFinder.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationShortestPathFinder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAY7D,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,kBAAkB,EAAE,mBAAmB,EACvC,eAAe,0BAAgC;IAG5D,IAAI,CACR,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,qBAAqB,EACzB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAiE9B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,eAAe;CAYxB"}
@@ -0,0 +1,104 @@
1
+ import { RelationTraversalPolicy } from "../traverse/RelationTraversalPolicy.js";
2
+ export class RelationShortestPathFinder {
3
+ constructor(relationViewReader, traversalPolicy = new RelationTraversalPolicy()) {
4
+ this.relationViewReader = relationViewReader;
5
+ this.traversalPolicy = traversalPolicy;
6
+ }
7
+ async find(from, to, query) {
8
+ const queryMetadata = this.toQueryMetadata(query);
9
+ if (this.traversalPolicy.nodeKey(from) === this.traversalPolicy.nodeKey(to)) {
10
+ return this.foundResult(from, to, [from], [], queryMetadata);
11
+ }
12
+ const visited = new Set([this.traversalPolicy.nodeKey(from)]);
13
+ const predecessors = new Map();
14
+ let frontier = [from];
15
+ for (let depth = 1; depth <= query.depth && frontier.length > 0; depth++) {
16
+ const next = new Map();
17
+ const stableFrontier = [...frontier].sort((left, right) => this.traversalPolicy.compareNodes(left, right));
18
+ for (const current of stableFrontier) {
19
+ const adjacent = await this.relationViewReader.findAll({
20
+ entity: current,
21
+ direction: query.direction,
22
+ relationType: query.relationType,
23
+ relatedEntityType: query.relatedEntityType,
24
+ strength: query.strength,
25
+ status: query.status,
26
+ });
27
+ const transitions = this.stableTransitions(current, adjacent, query);
28
+ for (const transition of transitions) {
29
+ const key = this.traversalPolicy.nodeKey(transition.node);
30
+ if (visited.has(key))
31
+ continue;
32
+ visited.add(key);
33
+ predecessors.set(key, { previous: current, edge: transition.edge });
34
+ if (key === this.traversalPolicy.nodeKey(to)) {
35
+ const path = this.reconstruct(from, to, predecessors);
36
+ return this.foundResult(from, to, path.nodes, path.edges, queryMetadata);
37
+ }
38
+ next.set(key, transition.node);
39
+ }
40
+ }
41
+ frontier = [...next.values()];
42
+ }
43
+ return {
44
+ found: false,
45
+ from,
46
+ to,
47
+ hopCount: 0,
48
+ nodes: [],
49
+ edges: [],
50
+ query: queryMetadata,
51
+ };
52
+ }
53
+ stableTransitions(current, adjacent, query) {
54
+ return adjacent
55
+ .map((edge) => {
56
+ const node = this.traversalPolicy.relatedNode(current, edge, query.direction);
57
+ return node ? { node, edge } : undefined;
58
+ })
59
+ .filter((transition) => transition !== undefined)
60
+ .sort((left, right) => this.traversalPolicy.compareNodes(left.node, right.node) ||
61
+ this.traversalPolicy.compareEdges(left.edge, right.edge));
62
+ }
63
+ reconstruct(from, to, predecessors) {
64
+ const reversedNodes = [to];
65
+ const reversedEdges = [];
66
+ let cursor = to;
67
+ while (this.traversalPolicy.nodeKey(cursor) !==
68
+ this.traversalPolicy.nodeKey(from)) {
69
+ const predecessor = predecessors.get(this.traversalPolicy.nodeKey(cursor));
70
+ if (!predecessor) {
71
+ throw new Error("Relation path reconstruction encountered an incomplete predecessor chain.");
72
+ }
73
+ reversedEdges.push(predecessor.edge);
74
+ reversedNodes.push(predecessor.previous);
75
+ cursor = predecessor.previous;
76
+ }
77
+ return {
78
+ nodes: reversedNodes.reverse(),
79
+ edges: reversedEdges.reverse(),
80
+ };
81
+ }
82
+ foundResult(from, to, nodes, edges, query) {
83
+ return {
84
+ found: true,
85
+ from,
86
+ to,
87
+ hopCount: edges.length,
88
+ nodes,
89
+ edges,
90
+ query,
91
+ };
92
+ }
93
+ toQueryMetadata(query) {
94
+ return {
95
+ maxDepth: query.depth,
96
+ direction: query.direction,
97
+ relationType: query.relationType,
98
+ entityType: query.relatedEntityType,
99
+ strength: query.strength,
100
+ status: query.status,
101
+ };
102
+ }
103
+ }
104
+ //# sourceMappingURL=RelationShortestPathFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationShortestPathFinder.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/path/RelationShortestPathFinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { RelationTraversalResult } from "./RelationTraversalResult.js";
2
+ import { TraverseRelationsRequest } from "./TraverseRelationsRequest.js";
3
+ export interface ITraverseRelationsGateway {
4
+ traverse(request: TraverseRelationsRequest): Promise<RelationTraversalResult>;
5
+ }
6
+ //# sourceMappingURL=ITraverseRelationsGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITraverseRelationsGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/traverse/ITraverseRelationsGateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ITraverseRelationsGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITraverseRelationsGateway.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/traverse/ITraverseRelationsGateway.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { IRelationViewReader } from "../get/IRelationViewReader.js";
2
+ import { ITraverseRelationsGateway } from "./ITraverseRelationsGateway.js";
3
+ import { RelationNodeReferenceResolver } from "./RelationNodeReferenceResolver.js";
4
+ import { RelationTraversalPolicy } from "./RelationTraversalPolicy.js";
5
+ import { RelationTraversalQueryNormalizer } from "./RelationTraversalQueryNormalizer.js";
6
+ import { RelationTraversalResult } from "./RelationTraversalResult.js";
7
+ import { TraverseRelationsRequest } from "./TraverseRelationsRequest.js";
8
+ export declare class LocalTraverseRelationsGateway implements ITraverseRelationsGateway {
9
+ private readonly relationViewReader;
10
+ private readonly nodeResolver;
11
+ private readonly queryNormalizer;
12
+ private readonly traversalPolicy;
13
+ constructor(relationViewReader: IRelationViewReader, nodeResolver?: RelationNodeReferenceResolver, queryNormalizer?: RelationTraversalQueryNormalizer, traversalPolicy?: RelationTraversalPolicy);
14
+ traverse(request: TraverseRelationsRequest): Promise<RelationTraversalResult>;
15
+ private normalize;
16
+ private resolveRoot;
17
+ }
18
+ //# sourceMappingURL=LocalTraverseRelationsGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalTraverseRelationsGateway.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/traverse/LocalTraverseRelationsGateway.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAQzE,qBAAa,6BAA8B,YAAW,yBAAyB;IAE3E,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAHf,kBAAkB,EAAE,mBAAmB,EACvC,YAAY,gCAAwD,EACpE,eAAe,mCAAyC,EACxD,eAAe,0BAAgC;IAG5D,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2EnF,OAAO,CAAC,SAAS;YAkBH,WAAW;CAM1B"}