jumbo-cli 3.3.0 → 3.5.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.
- package/README.md +1 -1
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts +8 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.js +2 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.js.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts +9 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js +42 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js.map +1 -0
- package/dist/application/context/search/ISearchDocumentProjector.d.ts +10 -0
- package/dist/application/context/search/ISearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/ISearchDocumentProjector.js +2 -0
- package/dist/application/context/search/ISearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/ISearchGateway.d.ts +6 -0
- package/dist/application/context/search/ISearchGateway.d.ts.map +1 -0
- package/dist/application/context/search/ISearchGateway.js +2 -0
- package/dist/application/context/search/ISearchGateway.js.map +1 -0
- package/dist/application/context/search/ISearchIndexReader.d.ts +9 -0
- package/dist/application/context/search/ISearchIndexReader.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexReader.js +2 -0
- package/dist/application/context/search/ISearchIndexReader.js.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts +6 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.js +2 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.js.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.d.ts +6 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.js +2 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.js.map +1 -0
- package/dist/application/context/search/ISearchIndexWriter.d.ts +7 -0
- package/dist/application/context/search/ISearchIndexWriter.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexWriter.js +2 -0
- package/dist/application/context/search/ISearchIndexWriter.js.map +1 -0
- package/dist/application/context/search/ISearchProvider.d.ts +6 -0
- package/dist/application/context/search/ISearchProvider.d.ts.map +1 -0
- package/dist/application/context/search/ISearchProvider.js +2 -0
- package/dist/application/context/search/ISearchProvider.js.map +1 -0
- package/dist/application/context/search/LocalSearchGateway.d.ts +14 -0
- package/dist/application/context/search/LocalSearchGateway.d.ts.map +1 -0
- package/dist/application/context/search/LocalSearchGateway.js +40 -0
- package/dist/application/context/search/LocalSearchGateway.js.map +1 -0
- package/dist/application/context/search/SearchCategory.d.ts +10 -0
- package/dist/application/context/search/SearchCategory.d.ts.map +1 -0
- package/dist/application/context/search/SearchCategory.js +8 -0
- package/dist/application/context/search/SearchCategory.js.map +1 -0
- package/dist/application/context/search/SearchController.d.ts +9 -0
- package/dist/application/context/search/SearchController.d.ts.map +1 -0
- package/dist/application/context/search/SearchController.js +9 -0
- package/dist/application/context/search/SearchController.js.map +1 -0
- package/dist/application/context/search/SearchCriteria.d.ts +8 -0
- package/dist/application/context/search/SearchCriteria.d.ts.map +1 -0
- package/dist/application/context/search/SearchCriteria.js +2 -0
- package/dist/application/context/search/SearchCriteria.js.map +1 -0
- package/dist/application/context/search/SearchDocument.d.ts +16 -0
- package/dist/application/context/search/SearchDocument.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocument.js +2 -0
- package/dist/application/context/search/SearchDocument.js.map +1 -0
- package/dist/application/context/search/SearchDocumentChange.d.ts +10 -0
- package/dist/application/context/search/SearchDocumentChange.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentChange.js +2 -0
- package/dist/application/context/search/SearchDocumentChange.js.map +1 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts +9 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.js +17 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.js.map +1 -0
- package/dist/application/context/search/SearchDocumentSource.d.ts +5 -0
- package/dist/application/context/search/SearchDocumentSource.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentSource.js +2 -0
- package/dist/application/context/search/SearchDocumentSource.js.map +1 -0
- package/dist/application/context/search/SearchFacetValue.d.ts +2 -0
- package/dist/application/context/search/SearchFacetValue.d.ts.map +1 -0
- package/dist/application/context/search/SearchFacetValue.js +2 -0
- package/dist/application/context/search/SearchFacetValue.js.map +1 -0
- package/dist/application/context/search/SearchHit.d.ts +13 -0
- package/dist/application/context/search/SearchHit.d.ts.map +1 -0
- package/dist/application/context/search/SearchHit.js +2 -0
- package/dist/application/context/search/SearchHit.js.map +1 -0
- package/dist/application/context/search/SearchHitGroup.d.ts +7 -0
- package/dist/application/context/search/SearchHitGroup.d.ts.map +1 -0
- package/dist/application/context/search/SearchHitGroup.js +2 -0
- package/dist/application/context/search/SearchHitGroup.js.map +1 -0
- package/dist/application/context/search/SearchIndexEventHandler.d.ts +14 -0
- package/dist/application/context/search/SearchIndexEventHandler.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexEventHandler.js +24 -0
- package/dist/application/context/search/SearchIndexEventHandler.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildController.d.ts +9 -0
- package/dist/application/context/search/SearchIndexRebuildController.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildController.js +9 -0
- package/dist/application/context/search/SearchIndexRebuildController.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.d.ts +3 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.js +2 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.d.ts +9 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.js +2 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.js.map +1 -0
- package/dist/application/context/search/SearchRequest.d.ts +5 -0
- package/dist/application/context/search/SearchRequest.d.ts.map +1 -0
- package/dist/application/context/search/SearchRequest.js +2 -0
- package/dist/application/context/search/SearchRequest.js.map +1 -0
- package/dist/application/context/search/SearchResponse.d.ts +7 -0
- package/dist/application/context/search/SearchResponse.d.ts.map +1 -0
- package/dist/application/context/search/SearchResponse.js +2 -0
- package/dist/application/context/search/SearchResponse.js.map +1 -0
- package/dist/application/context/search/SearchResultLimit.d.ts +6 -0
- package/dist/application/context/search/SearchResultLimit.d.ts.map +1 -0
- package/dist/application/context/search/SearchResultLimit.js +6 -0
- package/dist/application/context/search/SearchResultLimit.js.map +1 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js +93 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js +92 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js +89 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js +71 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js +61 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts +5 -1
- package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts.map +1 -1
- package/dist/application/context/sessions/start/LocalStartSessionGateway.js +11 -2
- package/dist/application/context/sessions/start/LocalStartSessionGateway.js.map +1 -1
- package/dist/application/context/sessions/start/SessionStartResponse.d.ts +2 -0
- package/dist/application/context/sessions/start/SessionStartResponse.d.ts.map +1 -1
- package/dist/application/host/IApplicationContainer.d.ts +8 -0
- package/dist/application/host/IApplicationContainer.d.ts.map +1 -1
- package/dist/application/settings/Settings.d.ts +15 -0
- package/dist/application/settings/Settings.d.ts.map +1 -1
- package/dist/application/settings/Settings.js +4 -0
- package/dist/application/settings/Settings.js.map +1 -1
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts +18 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts.map +1 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js +28 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js.map +1 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts +10 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts.map +1 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js +9 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.d.ts +14 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.js +2 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.js.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts +10 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.js +44 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.js.map +1 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts +21 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.js +94 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.js.map +1 -0
- package/dist/infrastructure/context/search/migrations/001-create-search-index-entries.sql +26 -0
- package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
- package/dist/infrastructure/host/HostBuilder.js +23 -1
- package/dist/infrastructure/host/HostBuilder.js.map +1 -1
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts +1 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts.map +1 -1
- package/dist/infrastructure/messaging/ProjectionBusFactory.js +13 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.js.map +1 -1
- package/dist/infrastructure/persistence/migrations.config.d.ts.map +1 -1
- package/dist/infrastructure/persistence/migrations.config.js +1 -0
- package/dist/infrastructure/persistence/migrations.config.js.map +1 -1
- package/dist/infrastructure/settings/DefaultSettings.d.ts.map +1 -1
- package/dist/infrastructure/settings/DefaultSettings.js +4 -1
- package/dist/infrastructure/settings/DefaultSettings.js.map +1 -1
- package/dist/infrastructure/settings/FsSettingsInitializer.d.ts.map +1 -1
- package/dist/infrastructure/settings/FsSettingsInitializer.js +6 -0
- package/dist/infrastructure/settings/FsSettingsInitializer.js.map +1 -1
- package/dist/infrastructure/settings/FsSettingsReader.d.ts.map +1 -1
- package/dist/infrastructure/settings/FsSettingsReader.js +10 -0
- package/dist/infrastructure/settings/FsSettingsReader.js.map +1 -1
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts +20 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js +54 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts +8 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js +45 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js.map +1 -0
- package/dist/presentation/cli/commands/registry/generated-commands.d.ts.map +1 -1
- package/dist/presentation/cli/commands/registry/generated-commands.js +12 -0
- package/dist/presentation/cli/commands/registry/generated-commands.js.map +1 -1
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts +17 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts.map +1 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.js +111 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.js.map +1 -0
- package/dist/presentation/cli/commands/search/search.d.ts +12 -0
- package/dist/presentation/cli/commands/search/search.d.ts.map +1 -0
- package/dist/presentation/cli/commands/search/search.js +119 -0
- package/dist/presentation/cli/commands/search/search.js.map +1 -0
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts +2 -0
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js +9 -1
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/help/SubcommandHelpFormatter.d.ts.map +1 -1
- package/dist/presentation/cli/help/SubcommandHelpFormatter.js +3 -4
- package/dist/presentation/cli/help/SubcommandHelpFormatter.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +18 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts +11 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js +58 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts +5 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js +11 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts +17 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js +86 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts +9 -7
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js +36 -187
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js +7 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts +7 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js +25 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts +8 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js +29 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class SearchIndexEventHandler {
|
|
2
|
+
constructor(documentProjectors, reader, writer) {
|
|
3
|
+
this.documentProjectors = documentProjectors;
|
|
4
|
+
this.reader = reader;
|
|
5
|
+
this.writer = writer;
|
|
6
|
+
this.eventTypes = [...new Set(documentProjectors.flatMap((projector) => projector.eventTypes))];
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
const documentProjector = this.documentProjectors.find((candidate) => candidate.eventTypes.includes(event.type));
|
|
10
|
+
if (!documentProjector)
|
|
11
|
+
return;
|
|
12
|
+
const source = documentProjector.getSource(event);
|
|
13
|
+
const current = await this.reader.findBySource(source);
|
|
14
|
+
const change = documentProjector.project(event, current);
|
|
15
|
+
if (!change)
|
|
16
|
+
return;
|
|
17
|
+
if (change.operation === "upsert") {
|
|
18
|
+
await this.writer.upsert(change.document);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await this.writer.remove(change.source);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SearchIndexEventHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexEventHandler.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexEventHandler.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,uBAAuB;IAGlC,YACmB,kBAAuD,EACvD,MAA0B,EAC1B,MAA0B;QAF1B,uBAAkB,GAAlB,kBAAkB,CAAqC;QACvD,WAAM,GAAN,MAAM,CAAoB;QAC1B,WAAM,GAAN,MAAM,CAAoB;QAE3C,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAE/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ISearchIndexRebuildGateway } from "./ISearchIndexRebuildGateway.js";
|
|
2
|
+
import { SearchIndexRebuildRequest } from "./SearchIndexRebuildRequest.js";
|
|
3
|
+
import { SearchIndexRebuildResponse } from "./SearchIndexRebuildResponse.js";
|
|
4
|
+
export declare class SearchIndexRebuildController {
|
|
5
|
+
private readonly gateway;
|
|
6
|
+
constructor(gateway: ISearchIndexRebuildGateway);
|
|
7
|
+
handle(request: SearchIndexRebuildRequest): Promise<SearchIndexRebuildResponse>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=SearchIndexRebuildController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildController.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,qBAAa,4BAA4B;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAE1D,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAGtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildController.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildController.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,4BAA4B;IACvC,YAA6B,OAAmC;QAAnC,YAAO,GAAP,OAAO,CAA4B;IAAG,CAAC;IAEpE,KAAK,CAAC,MAAM,CAAC,OAAkC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildRequest.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildRequest.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildRequest.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SearchCategory } from "./SearchCategory.js";
|
|
2
|
+
export interface SearchIndexRebuildResponse {
|
|
3
|
+
readonly success: boolean;
|
|
4
|
+
readonly eventsInspected: number;
|
|
5
|
+
readonly documentsIndexed: number;
|
|
6
|
+
readonly removedEntries: number;
|
|
7
|
+
readonly countsByCategory: Readonly<Partial<Record<SearchCategory, number>>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=SearchIndexRebuildResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildResponse.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexRebuildResponse.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchIndexRebuildResponse.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchRequest.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchRequest.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SearchHit } from "./SearchHit.js";
|
|
2
|
+
import { SearchHitGroup } from "./SearchHitGroup.js";
|
|
3
|
+
export interface SearchResponse {
|
|
4
|
+
readonly hits: readonly SearchHit[];
|
|
5
|
+
readonly groups?: readonly SearchHitGroup[];
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=SearchResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchResponse.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchResponse.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchResponse.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchResultLimit.d.ts","sourceRoot":"","sources":["../../../../src/application/context/search/SearchResultLimit.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchResultLimit.js","sourceRoot":"","sources":["../../../../src/application/context/search/SearchResultLimit.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,GAAG;CACA,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseEvent } from "../../../../domain/BaseEvent.js";
|
|
2
|
+
import { ISearchDocumentProjector } from "../ISearchDocumentProjector.js";
|
|
3
|
+
import { SearchDocument } from "../SearchDocument.js";
|
|
4
|
+
import { SearchDocumentChange } from "../SearchDocumentChange.js";
|
|
5
|
+
import { SearchDocumentSource } from "../SearchDocumentSource.js";
|
|
6
|
+
export declare class ComponentSearchDocumentProjector implements ISearchDocumentProjector {
|
|
7
|
+
readonly eventTypes: ("ComponentAddedEvent" | "ComponentUpdatedEvent" | "ComponentDeprecatedEvent" | "ComponentRemovedEvent" | "ComponentRenamedEvent" | "ComponentUndeprecatedEvent")[];
|
|
8
|
+
getSource(event: BaseEvent): SearchDocumentSource;
|
|
9
|
+
project(event: BaseEvent, current: SearchDocument | null): SearchDocumentChange | null;
|
|
10
|
+
private fromAdded;
|
|
11
|
+
private fromMetadata;
|
|
12
|
+
private optionalString;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ComponentSearchDocumentProjector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentSearchDocumentProjector.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/ComponentSearchDocumentProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAU5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,gCAAiC,YAAW,wBAAwB;IAC/E,QAAQ,CAAC,UAAU,sKAAqC;IAExD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB;IAIjD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;IAwCtF,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ComponentEventType, ComponentStatus } from "../../../../domain/components/Constants.js";
|
|
2
|
+
import { SearchCategory } from "../SearchCategory.js";
|
|
3
|
+
export class ComponentSearchDocumentProjector {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventTypes = Object.values(ComponentEventType);
|
|
6
|
+
}
|
|
7
|
+
getSource(event) {
|
|
8
|
+
return { type: SearchCategory.COMPONENT, id: event.aggregateId };
|
|
9
|
+
}
|
|
10
|
+
project(event, current) {
|
|
11
|
+
if (event.type === ComponentEventType.REMOVED) {
|
|
12
|
+
return { operation: "remove", source: this.getSource(event) };
|
|
13
|
+
}
|
|
14
|
+
if (event.type === ComponentEventType.ADDED) {
|
|
15
|
+
return { operation: "upsert", document: this.fromAdded(event) };
|
|
16
|
+
}
|
|
17
|
+
if (!current)
|
|
18
|
+
return null;
|
|
19
|
+
const metadata = { ...current.metadata };
|
|
20
|
+
if (event.type === ComponentEventType.UPDATED) {
|
|
21
|
+
const payload = event.payload;
|
|
22
|
+
if (payload.description !== undefined)
|
|
23
|
+
metadata.description = payload.description;
|
|
24
|
+
if (payload.responsibility !== undefined)
|
|
25
|
+
metadata.responsibility = payload.responsibility;
|
|
26
|
+
if (payload.path !== undefined)
|
|
27
|
+
metadata.path = payload.path;
|
|
28
|
+
if (payload.type !== undefined)
|
|
29
|
+
metadata.type = payload.type;
|
|
30
|
+
}
|
|
31
|
+
if (event.type === ComponentEventType.RENAMED) {
|
|
32
|
+
metadata.name = event.payload.name;
|
|
33
|
+
}
|
|
34
|
+
if (event.type === ComponentEventType.DEPRECATED) {
|
|
35
|
+
const payload = event.payload;
|
|
36
|
+
metadata.status = payload.status;
|
|
37
|
+
metadata.deprecationReason = payload.reason;
|
|
38
|
+
}
|
|
39
|
+
if (event.type === ComponentEventType.UNDEPRECATED) {
|
|
40
|
+
metadata.status = ComponentStatus.ACTIVE;
|
|
41
|
+
metadata.deprecationReason = null;
|
|
42
|
+
metadata.undeprecationReason = event.payload.reason;
|
|
43
|
+
}
|
|
44
|
+
return { operation: "upsert", document: this.fromMetadata(event, current, metadata) };
|
|
45
|
+
}
|
|
46
|
+
fromAdded(event) {
|
|
47
|
+
const metadata = {
|
|
48
|
+
name: event.payload.name,
|
|
49
|
+
type: event.payload.type,
|
|
50
|
+
description: event.payload.description,
|
|
51
|
+
responsibility: event.payload.responsibility,
|
|
52
|
+
path: event.payload.path,
|
|
53
|
+
status: event.payload.status,
|
|
54
|
+
deprecationReason: null,
|
|
55
|
+
};
|
|
56
|
+
return this.fromMetadata(event, null, metadata);
|
|
57
|
+
}
|
|
58
|
+
fromMetadata(event, current, metadata) {
|
|
59
|
+
const title = String(metadata.name ?? current?.title ?? event.aggregateId);
|
|
60
|
+
const summary = this.optionalString(metadata.description);
|
|
61
|
+
const content = [
|
|
62
|
+
title,
|
|
63
|
+
metadata.type,
|
|
64
|
+
metadata.description,
|
|
65
|
+
metadata.responsibility,
|
|
66
|
+
metadata.path,
|
|
67
|
+
metadata.status,
|
|
68
|
+
metadata.deprecationReason,
|
|
69
|
+
]
|
|
70
|
+
.filter((value) => value !== null && value !== undefined && value !== "")
|
|
71
|
+
.join("\n");
|
|
72
|
+
return {
|
|
73
|
+
source: this.getSource(event),
|
|
74
|
+
category: SearchCategory.COMPONENT,
|
|
75
|
+
title,
|
|
76
|
+
summary,
|
|
77
|
+
content,
|
|
78
|
+
facets: {
|
|
79
|
+
type: metadata.type ?? null,
|
|
80
|
+
status: metadata.status ?? null,
|
|
81
|
+
path: metadata.path ?? null,
|
|
82
|
+
},
|
|
83
|
+
metadata,
|
|
84
|
+
version: event.version,
|
|
85
|
+
createdAt: current?.createdAt ?? event.timestamp,
|
|
86
|
+
updatedAt: event.timestamp,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
optionalString(value) {
|
|
90
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ComponentSearchDocumentProjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentSearchDocumentProjector.js","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/ComponentSearchDocumentProjector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseEvent } from "../../../../domain/BaseEvent.js";
|
|
2
|
+
import { ISearchDocumentProjector } from "../ISearchDocumentProjector.js";
|
|
3
|
+
import { SearchDocument } from "../SearchDocument.js";
|
|
4
|
+
import { SearchDocumentChange } from "../SearchDocumentChange.js";
|
|
5
|
+
import { SearchDocumentSource } from "../SearchDocumentSource.js";
|
|
6
|
+
export declare class DecisionSearchDocumentProjector implements ISearchDocumentProjector {
|
|
7
|
+
readonly eventTypes: ("DecisionAddedEvent" | "DecisionUpdatedEvent" | "DecisionReversedEvent" | "DecisionSupersededEvent" | "DecisionRestoredEvent")[];
|
|
8
|
+
getSource(event: BaseEvent): SearchDocumentSource;
|
|
9
|
+
project(event: BaseEvent, current: SearchDocument | null): SearchDocumentChange | null;
|
|
10
|
+
private fromAdded;
|
|
11
|
+
private fromMetadata;
|
|
12
|
+
private optionalString;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=DecisionSearchDocumentProjector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecisionSearchDocumentProjector.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/DecisionSearchDocumentProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAS5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,+BAAgC,YAAW,wBAAwB;IAC9E,QAAQ,CAAC,UAAU,oIAAoC;IAEvD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB;IAIjD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;IAoCtF,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { DecisionEventType, DecisionStatus } from "../../../../domain/decisions/Constants.js";
|
|
2
|
+
import { SearchCategory } from "../SearchCategory.js";
|
|
3
|
+
export class DecisionSearchDocumentProjector {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventTypes = Object.values(DecisionEventType);
|
|
6
|
+
}
|
|
7
|
+
getSource(event) {
|
|
8
|
+
return { type: SearchCategory.DECISION, id: event.aggregateId };
|
|
9
|
+
}
|
|
10
|
+
project(event, current) {
|
|
11
|
+
if (event.type === DecisionEventType.ADDED) {
|
|
12
|
+
return { operation: "upsert", document: this.fromAdded(event) };
|
|
13
|
+
}
|
|
14
|
+
if (!current)
|
|
15
|
+
return null;
|
|
16
|
+
const metadata = { ...current.metadata };
|
|
17
|
+
if (event.type === DecisionEventType.UPDATED) {
|
|
18
|
+
const payload = event.payload;
|
|
19
|
+
if (payload.title !== undefined)
|
|
20
|
+
metadata.title = payload.title;
|
|
21
|
+
if (payload.context !== undefined)
|
|
22
|
+
metadata.context = payload.context;
|
|
23
|
+
if (payload.rationale !== undefined)
|
|
24
|
+
metadata.rationale = payload.rationale;
|
|
25
|
+
if (payload.alternatives !== undefined)
|
|
26
|
+
metadata.alternatives = payload.alternatives;
|
|
27
|
+
if (payload.consequences !== undefined)
|
|
28
|
+
metadata.consequences = payload.consequences;
|
|
29
|
+
}
|
|
30
|
+
if (event.type === DecisionEventType.REVERSED) {
|
|
31
|
+
metadata.status = DecisionStatus.REVERSED;
|
|
32
|
+
metadata.reversalReason = event.payload.reason;
|
|
33
|
+
}
|
|
34
|
+
if (event.type === DecisionEventType.RESTORED) {
|
|
35
|
+
metadata.status = DecisionStatus.ACTIVE;
|
|
36
|
+
metadata.restorationReason = event.payload.reason;
|
|
37
|
+
}
|
|
38
|
+
if (event.type === DecisionEventType.SUPERSEDED) {
|
|
39
|
+
metadata.status = DecisionStatus.SUPERSEDED;
|
|
40
|
+
metadata.supersededBy = event.payload.supersededBy;
|
|
41
|
+
}
|
|
42
|
+
return { operation: "upsert", document: this.fromMetadata(event, current, metadata) };
|
|
43
|
+
}
|
|
44
|
+
fromAdded(event) {
|
|
45
|
+
return this.fromMetadata(event, null, {
|
|
46
|
+
title: event.payload.title,
|
|
47
|
+
context: event.payload.context,
|
|
48
|
+
rationale: event.payload.rationale,
|
|
49
|
+
alternatives: event.payload.alternatives,
|
|
50
|
+
consequences: event.payload.consequences,
|
|
51
|
+
status: DecisionStatus.ACTIVE,
|
|
52
|
+
supersededBy: null,
|
|
53
|
+
reversalReason: null,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
fromMetadata(event, current, metadata) {
|
|
57
|
+
const title = String(metadata.title ?? current?.title ?? event.aggregateId);
|
|
58
|
+
const summary = this.optionalString(metadata.context);
|
|
59
|
+
const content = [
|
|
60
|
+
title,
|
|
61
|
+
metadata.context,
|
|
62
|
+
metadata.rationale,
|
|
63
|
+
...(Array.isArray(metadata.alternatives) ? metadata.alternatives : []),
|
|
64
|
+
metadata.consequences,
|
|
65
|
+
metadata.status,
|
|
66
|
+
metadata.reversalReason,
|
|
67
|
+
metadata.restorationReason,
|
|
68
|
+
metadata.supersededBy,
|
|
69
|
+
]
|
|
70
|
+
.filter((value) => value !== null && value !== undefined && value !== "")
|
|
71
|
+
.join("\n");
|
|
72
|
+
return {
|
|
73
|
+
source: this.getSource(event),
|
|
74
|
+
category: SearchCategory.DECISION,
|
|
75
|
+
title,
|
|
76
|
+
summary,
|
|
77
|
+
content,
|
|
78
|
+
facets: {
|
|
79
|
+
status: metadata.status ?? null,
|
|
80
|
+
supersededBy: metadata.supersededBy ?? null,
|
|
81
|
+
},
|
|
82
|
+
metadata,
|
|
83
|
+
version: event.version,
|
|
84
|
+
createdAt: current?.createdAt ?? event.timestamp,
|
|
85
|
+
updatedAt: event.timestamp,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
optionalString(value) {
|
|
89
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=DecisionSearchDocumentProjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecisionSearchDocumentProjector.js","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/DecisionSearchDocumentProjector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseEvent } from "../../../../domain/BaseEvent.js";
|
|
2
|
+
import { ISearchDocumentProjector } from "../ISearchDocumentProjector.js";
|
|
3
|
+
import { SearchDocument } from "../SearchDocument.js";
|
|
4
|
+
import { SearchDocumentChange } from "../SearchDocumentChange.js";
|
|
5
|
+
import { SearchDocumentSource } from "../SearchDocumentSource.js";
|
|
6
|
+
export declare class DependencySearchDocumentProjector implements ISearchDocumentProjector {
|
|
7
|
+
readonly eventTypes: ("DependencyAddedEvent" | "DependencyUpdatedEvent" | "DependencyRemovedEvent")[];
|
|
8
|
+
getSource(event: BaseEvent): SearchDocumentSource;
|
|
9
|
+
project(event: BaseEvent, current: SearchDocument | null): SearchDocumentChange | null;
|
|
10
|
+
private fromAdded;
|
|
11
|
+
private fromMetadata;
|
|
12
|
+
private firstString;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=DependencySearchDocumentProjector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencySearchDocumentProjector.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/DependencySearchDocumentProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAO5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,iCAAkC,YAAW,wBAAwB;IAChF,QAAQ,CAAC,UAAU,mFAAsC;IAEzD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB;IAIjD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;IAqBtF,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,YAAY;IAuCpB,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { DependencyEventType, DependencyStatus } from "../../../../domain/dependencies/Constants.js";
|
|
2
|
+
import { SearchCategory } from "../SearchCategory.js";
|
|
3
|
+
export class DependencySearchDocumentProjector {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventTypes = Object.values(DependencyEventType);
|
|
6
|
+
}
|
|
7
|
+
getSource(event) {
|
|
8
|
+
return { type: SearchCategory.DEPENDENCY, id: event.aggregateId };
|
|
9
|
+
}
|
|
10
|
+
project(event, current) {
|
|
11
|
+
if (event.type === DependencyEventType.REMOVED) {
|
|
12
|
+
const removedEvent = event;
|
|
13
|
+
return { operation: "remove", source: this.getSource(removedEvent) };
|
|
14
|
+
}
|
|
15
|
+
if (event.type === DependencyEventType.ADDED) {
|
|
16
|
+
return { operation: "upsert", document: this.fromAdded(event) };
|
|
17
|
+
}
|
|
18
|
+
if (!current)
|
|
19
|
+
return null;
|
|
20
|
+
const payload = event.payload;
|
|
21
|
+
const metadata = { ...current.metadata };
|
|
22
|
+
if (payload.endpoint !== undefined)
|
|
23
|
+
metadata.endpoint = payload.endpoint;
|
|
24
|
+
if (payload.contract !== undefined)
|
|
25
|
+
metadata.contract = payload.contract;
|
|
26
|
+
if (payload.status !== undefined)
|
|
27
|
+
metadata.status = payload.status;
|
|
28
|
+
return { operation: "upsert", document: this.fromMetadata(event, current, metadata) };
|
|
29
|
+
}
|
|
30
|
+
fromAdded(event) {
|
|
31
|
+
const metadata = "name" in event.payload
|
|
32
|
+
? {
|
|
33
|
+
name: event.payload.name,
|
|
34
|
+
ecosystem: event.payload.ecosystem,
|
|
35
|
+
packageName: event.payload.packageName,
|
|
36
|
+
versionConstraint: event.payload.versionConstraint,
|
|
37
|
+
endpoint: event.payload.endpoint,
|
|
38
|
+
contract: event.payload.contract,
|
|
39
|
+
status: DependencyStatus.ACTIVE,
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
name: `${event.payload.consumerId} -> ${event.payload.providerId}`,
|
|
43
|
+
consumerId: event.payload.consumerId,
|
|
44
|
+
providerId: event.payload.providerId,
|
|
45
|
+
endpoint: event.payload.endpoint,
|
|
46
|
+
contract: event.payload.contract,
|
|
47
|
+
status: DependencyStatus.ACTIVE,
|
|
48
|
+
};
|
|
49
|
+
return this.fromMetadata(event, null, metadata);
|
|
50
|
+
}
|
|
51
|
+
fromMetadata(event, current, metadata) {
|
|
52
|
+
const title = String(metadata.name ?? metadata.packageName ?? current?.title ?? event.aggregateId);
|
|
53
|
+
const summary = this.firstString(metadata.contract, metadata.endpoint, metadata.packageName);
|
|
54
|
+
const content = [
|
|
55
|
+
title,
|
|
56
|
+
metadata.ecosystem,
|
|
57
|
+
metadata.packageName,
|
|
58
|
+
metadata.versionConstraint,
|
|
59
|
+
metadata.consumerId,
|
|
60
|
+
metadata.providerId,
|
|
61
|
+
metadata.endpoint,
|
|
62
|
+
metadata.contract,
|
|
63
|
+
metadata.status,
|
|
64
|
+
]
|
|
65
|
+
.filter((value) => value !== null && value !== undefined && value !== "")
|
|
66
|
+
.join("\n");
|
|
67
|
+
return {
|
|
68
|
+
source: this.getSource(event),
|
|
69
|
+
category: SearchCategory.DEPENDENCY,
|
|
70
|
+
title,
|
|
71
|
+
summary,
|
|
72
|
+
content,
|
|
73
|
+
facets: {
|
|
74
|
+
ecosystem: metadata.ecosystem ?? null,
|
|
75
|
+
status: metadata.status ?? null,
|
|
76
|
+
packageName: metadata.packageName ?? null,
|
|
77
|
+
},
|
|
78
|
+
metadata,
|
|
79
|
+
version: event.version,
|
|
80
|
+
createdAt: current?.createdAt ?? event.timestamp,
|
|
81
|
+
updatedAt: event.timestamp,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
firstString(...values) {
|
|
85
|
+
const match = values.find((value) => typeof value === "string" && value.length > 0);
|
|
86
|
+
return typeof match === "string" ? match : null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=DependencySearchDocumentProjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencySearchDocumentProjector.js","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/DependencySearchDocumentProjector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseEvent } from "../../../../domain/BaseEvent.js";
|
|
2
|
+
import { ISearchDocumentProjector } from "../ISearchDocumentProjector.js";
|
|
3
|
+
import { SearchDocument } from "../SearchDocument.js";
|
|
4
|
+
import { SearchDocumentChange } from "../SearchDocumentChange.js";
|
|
5
|
+
import { SearchDocumentSource } from "../SearchDocumentSource.js";
|
|
6
|
+
export declare class GuidelineSearchDocumentProjector implements ISearchDocumentProjector {
|
|
7
|
+
readonly eventTypes: ("GuidelineAddedEvent" | "GuidelineUpdatedEvent" | "GuidelineRemovedEvent")[];
|
|
8
|
+
getSource(event: BaseEvent): SearchDocumentSource;
|
|
9
|
+
project(event: BaseEvent, current: SearchDocument | null): SearchDocumentChange | null;
|
|
10
|
+
private fromAdded;
|
|
11
|
+
private fromMetadata;
|
|
12
|
+
private optionalString;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=GuidelineSearchDocumentProjector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuidelineSearchDocumentProjector.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/GuidelineSearchDocumentProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAM5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qBAAa,gCAAiC,YAAW,wBAAwB;IAC/E,QAAQ,CAAC,UAAU,gFAAqC;IAExD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB;IAIjD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;IAsBtF,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { GuidelineEventType } from "../../../../domain/guidelines/Constants.js";
|
|
2
|
+
import { SearchCategory } from "../SearchCategory.js";
|
|
3
|
+
export class GuidelineSearchDocumentProjector {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventTypes = Object.values(GuidelineEventType);
|
|
6
|
+
}
|
|
7
|
+
getSource(event) {
|
|
8
|
+
return { type: SearchCategory.GUIDELINE, id: event.aggregateId };
|
|
9
|
+
}
|
|
10
|
+
project(event, current) {
|
|
11
|
+
if (event.type === GuidelineEventType.REMOVED) {
|
|
12
|
+
return { operation: "remove", source: this.getSource(event) };
|
|
13
|
+
}
|
|
14
|
+
if (event.type === GuidelineEventType.ADDED) {
|
|
15
|
+
return { operation: "upsert", document: this.fromAdded(event) };
|
|
16
|
+
}
|
|
17
|
+
if (!current)
|
|
18
|
+
return null;
|
|
19
|
+
const payload = event.payload;
|
|
20
|
+
const metadata = { ...current.metadata };
|
|
21
|
+
if (payload.category !== undefined)
|
|
22
|
+
metadata.guidelineCategory = payload.category;
|
|
23
|
+
if (payload.title !== undefined)
|
|
24
|
+
metadata.title = payload.title;
|
|
25
|
+
if (payload.description !== undefined)
|
|
26
|
+
metadata.description = payload.description;
|
|
27
|
+
if (payload.rationale !== undefined)
|
|
28
|
+
metadata.rationale = payload.rationale;
|
|
29
|
+
if (payload.examples !== undefined)
|
|
30
|
+
metadata.examples = payload.examples;
|
|
31
|
+
return { operation: "upsert", document: this.fromMetadata(event, current, metadata) };
|
|
32
|
+
}
|
|
33
|
+
fromAdded(event) {
|
|
34
|
+
return this.fromMetadata(event, null, {
|
|
35
|
+
guidelineCategory: event.payload.category,
|
|
36
|
+
title: event.payload.title,
|
|
37
|
+
description: event.payload.description,
|
|
38
|
+
rationale: event.payload.rationale,
|
|
39
|
+
examples: event.payload.examples,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
fromMetadata(event, current, metadata) {
|
|
43
|
+
const title = String(metadata.title ?? current?.title ?? event.aggregateId);
|
|
44
|
+
const summary = this.optionalString(metadata.description);
|
|
45
|
+
const content = [
|
|
46
|
+
title,
|
|
47
|
+
metadata.guidelineCategory,
|
|
48
|
+
metadata.description,
|
|
49
|
+
metadata.rationale,
|
|
50
|
+
...(Array.isArray(metadata.examples) ? metadata.examples : []),
|
|
51
|
+
]
|
|
52
|
+
.filter((value) => value !== null && value !== undefined && value !== "")
|
|
53
|
+
.join("\n");
|
|
54
|
+
return {
|
|
55
|
+
source: this.getSource(event),
|
|
56
|
+
category: SearchCategory.GUIDELINE,
|
|
57
|
+
title,
|
|
58
|
+
summary,
|
|
59
|
+
content,
|
|
60
|
+
facets: { category: metadata.guidelineCategory ?? null },
|
|
61
|
+
metadata,
|
|
62
|
+
version: event.version,
|
|
63
|
+
createdAt: current?.createdAt ?? event.timestamp,
|
|
64
|
+
updatedAt: event.timestamp,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
optionalString(value) {
|
|
68
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=GuidelineSearchDocumentProjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuidelineSearchDocumentProjector.js","sourceRoot":"","sources":["../../../../../src/application/context/search/projectors/GuidelineSearchDocumentProjector.ts"],"names":[],"mappings":"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"}
|