Skip to content

Commit

Permalink
Rework based on PR feedback for schemas
Browse files Browse the repository at this point in the history
  • Loading branch information
jcarrus committed Sep 28, 2024
1 parent f0c242d commit 6505802
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions src/language/typescript/tsWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,26 +69,39 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, ITypeScriptWork
const models = allModels
// remove default libs
.filter((model) => !fileNameIsLib(model.uri))
// remove extra libs and previously removed libs
// Note that is is required for all model names to be unique, so
// while the logic here depends on the end user not creating extra
// libs with conflicting filenames, that is already a requirement.
// remove extra libs
.filter((model) => {
const uriAsString = model.uri.toString();
// if the extra lib was not given a name, then it gets an autogenerated name prefixed with ts:extralib-
if (uriAsString.startsWith('ts:extralib-')) {
const modelUri = model.uri.toString();
if (this._extraLibs[modelUri]) {
return false;
}
// Otherwise, the prefix will be file:/// and the name will be what the user provided to add/setExtraLibs
// Extra libs passed with no schema get a file:/// prefix from the model but not in the _extraLibs map
if (
modelUri.startsWith('file:///') &&
this._extraLibs[modelUri.replace('file:///', '')]?.version
) {
return false;
}
return true;
})
// remove previously removed libs
.filter((model) => {
const modelUri = model.uri.toString();
if (
this._removedExtraLibs.some(
(removed) =>
`file:///${removed.uri}` === uriAsString && removed.version === model.version
(removed) => removed.uri === modelUri && removed.version === model.version
)
) {
return false;
}
if (this._extraLibs[uriAsString.replace(/^file:\/\/\//, '')]?.version === model.version) {
// if the extra lib was passed with no schema, it gets a file:/// prefix from the model
if (
modelUri.startsWith('file:///') &&
this._removedExtraLibs.some(
(removed) =>
removed.uri === modelUri.replace('file:///', '') && removed.version === model.version
)
) {
return false;
}
return true;
Expand Down

0 comments on commit 6505802

Please sign in to comment.