Skip to content

Commit 634aafb

Browse files
committed
refactor: reorganize equality checks to avoid unnecessary params
1 parent ce29471 commit 634aafb

File tree

1 file changed

+41
-47
lines changed

1 file changed

+41
-47
lines changed

core/indexing/docs/DocsService.ts

Lines changed: 41 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -65,53 +65,63 @@ export type AddParams = {
6565
favicon?: string;
6666
};
6767

68-
const markFailedInGlobalContext = (
69-
siteIndexingConfig: SiteIndexingConfig,
70-
continueConfig: ContinueConfig,
71-
) => {
68+
const markFailedInGlobalContext = (siteIndexingConfig: SiteIndexingConfig) => {
7269
const globalContext = new GlobalContext();
7370
const failedDocs = globalContext.get("failedDocs") ?? [];
7471
const newFailedDocs = failedDocs.filter(
75-
(d) => !docConfigsAreEqual(siteIndexingConfig, d, continueConfig),
72+
(d) => !docConfigsAreEqual(siteIndexingConfig, d),
7673
);
7774
newFailedDocs.push(siteIndexingConfig);
7875
globalContext.update("failedDocs", newFailedDocs);
7976
};
8077

8178
const removeFromFailedGlobalContext = (
8279
siteIndexingConfig: SiteIndexingConfig,
83-
continueConfig: ContinueConfig,
8480
) => {
8581
const globalContext = new GlobalContext();
8682
const failedDocs = globalContext.get("failedDocs") ?? [];
8783
const newFailedDocs = failedDocs.filter(
88-
(d) => !docConfigsAreEqual(siteIndexingConfig, d, continueConfig),
84+
(d) => !docConfigsAreEqual(siteIndexingConfig, d),
8985
);
9086
globalContext.update("failedDocs", newFailedDocs);
9187
};
9288

93-
const hasIndexingFailed = (
94-
siteIndexingConfig: SiteIndexingConfig,
95-
continueConfig: ContinueConfig,
96-
) => {
89+
const hasIndexingFailed = (siteIndexingConfig: SiteIndexingConfig) => {
9790
const globalContext = new GlobalContext();
9891
const failedDocs = globalContext.get("failedDocs") ?? [];
99-
return failedDocs.find((d) =>
100-
docConfigsAreEqual(siteIndexingConfig, d, continueConfig),
101-
);
92+
return failedDocs.find((d) => docConfigsAreEqual(siteIndexingConfig, d));
10293
};
10394

95+
export function embedModelsAreEqual(
96+
llm1: ILLM | null | undefined,
97+
llm2: ILLM | null | undefined,
98+
): boolean {
99+
return (
100+
llm1?.underlyingProviderName === llm2?.underlyingProviderName &&
101+
llm1?.title === llm2?.title &&
102+
llm1?.maxEmbeddingChunkSize === llm2?.maxEmbeddingChunkSize
103+
);
104+
}
105+
104106
const docConfigsAreEqual = (
105107
siteConfig1: SiteIndexingConfig,
106108
siteConfig2: SiteIndexingConfig,
107-
contConfig: ContinueConfig,
108109
) => {
109-
return siteIndexingConfigsAreEqual(
110-
siteConfig1,
111-
siteConfig2,
112-
// These are equal because this function only checks the doc configs for changes
113-
contConfig,
114-
contConfig,
110+
return (
111+
siteConfig1.faviconUrl === siteConfig2.faviconUrl &&
112+
siteConfig1.title === siteConfig2.title &&
113+
docConfigsAreEqualExceptTitleAndFavicon(siteConfig1, siteConfig2)
114+
);
115+
};
116+
117+
const docConfigsAreEqualExceptTitleAndFavicon = (
118+
siteConfig1: SiteIndexingConfig,
119+
siteConfig2: SiteIndexingConfig,
120+
) => {
121+
return (
122+
siteConfig1.startUrl === siteConfig2.startUrl &&
123+
siteConfig1.maxDepth === siteConfig2.maxDepth &&
124+
siteConfig1.useLocalCrawling === siteConfig2.useLocalCrawling
115125
);
116126
};
117127

@@ -122,13 +132,10 @@ const siteIndexingConfigsAreEqual = (
122132
contConfig2: ContinueConfig,
123133
) => {
124134
return (
125-
siteConfig1.faviconUrl === siteConfig2.faviconUrl &&
126-
siteConfig1.title === siteConfig2.title &&
127-
siteIndexingConfigsAreEqualExceptTitleAndFavicon(
128-
siteConfig1,
129-
siteConfig2,
130-
contConfig1,
131-
contConfig2,
135+
docConfigsAreEqual(siteConfig1, siteConfig2) &&
136+
embedModelsAreEqual(
137+
contConfig1?.selectedModelByRole.embed,
138+
contConfig2.selectedModelByRole.embed,
132139
)
133140
);
134141
};
@@ -140,9 +147,7 @@ const siteIndexingConfigsAreEqualExceptTitleAndFavicon = (
140147
contConfig2: ContinueConfig,
141148
) => {
142149
return (
143-
siteConfig1.startUrl === siteConfig2.startUrl &&
144-
siteConfig1.maxDepth === siteConfig2.maxDepth &&
145-
siteConfig1.useLocalCrawling === siteConfig2.useLocalCrawling &&
150+
docConfigsAreEqualExceptTitleAndFavicon(siteConfig1, siteConfig2) &&
146151
embedModelsAreEqual(
147152
contConfig1?.selectedModelByRole.embed,
148153
contConfig2.selectedModelByRole.embed,
@@ -538,7 +543,7 @@ export default class DocsService {
538543

539544
// If not force-reindexing and has failed with same config, don't reattempt
540545
if (!forceReindex) {
541-
if (hasIndexingFailed(siteIndexingConfig, this.config)) {
546+
if (hasIndexingFailed(siteIndexingConfig)) {
542547
console.log(
543548
`Not reattempting to index ${siteIndexingConfig.startUrl}, has already failed with same config`,
544549
);
@@ -721,7 +726,7 @@ export default class DocsService {
721726
});
722727

723728
// void this.ide.showToast("info", `Failed to index ${startUrl}`);
724-
markFailedInGlobalContext(siteIndexingConfig, this.config);
729+
markFailedInGlobalContext(siteIndexingConfig);
725730
return;
726731
}
727732

@@ -779,7 +784,7 @@ export default class DocsService {
779784
void this.ide.showToast("info", `Successfully indexed ${startUrl}`);
780785
}
781786

782-
removeFromFailedGlobalContext(siteIndexingConfig, this.config);
787+
removeFromFailedGlobalContext(siteIndexingConfig);
783788
} catch (e) {
784789
console.error(
785790
`Error indexing docs at: ${siteIndexingConfig.startUrl}`,
@@ -800,7 +805,7 @@ export default class DocsService {
800805
status: "failed",
801806
progress: 1,
802807
});
803-
markFailedInGlobalContext(siteIndexingConfig, this.config);
808+
markFailedInGlobalContext(siteIndexingConfig);
804809
} finally {
805810
this.docsIndexingQueue.delete(startUrl);
806811
}
@@ -1303,7 +1308,7 @@ export default class DocsService {
13031308
// Handles the case where a user has manually added the doc to config.json
13041309
// so it already exists in the file
13051310
const doesEquivalentDocExist = this.config.docs?.some((doc) =>
1306-
docConfigsAreEqual(doc, siteIndexingConfig, this.config),
1311+
docConfigsAreEqual(doc, siteIndexingConfig),
13071312
);
13081313

13091314
if (!doesEquivalentDocExist) {
@@ -1406,14 +1411,3 @@ export default class DocsService {
14061411
this.statuses.delete(startUrl);
14071412
}
14081413
}
1409-
1410-
export function embedModelsAreEqual(
1411-
llm1: ILLM | null | undefined,
1412-
llm2: ILLM | null | undefined,
1413-
): boolean {
1414-
return (
1415-
llm1?.underlyingProviderName === llm2?.underlyingProviderName &&
1416-
llm1?.title === llm2?.title &&
1417-
llm1?.maxEmbeddingChunkSize === llm2?.maxEmbeddingChunkSize
1418-
);
1419-
}

0 commit comments

Comments
 (0)