diff --git a/packages/types-publisher/src/lib/module-info.ts b/packages/types-publisher/src/lib/module-info.ts index cb77cdf2..f3b9d58e 100644 --- a/packages/types-publisher/src/lib/module-info.ts +++ b/packages/types-publisher/src/lib/module-info.ts @@ -207,8 +207,10 @@ function findReferencedFiles(src: ts.SourceFile, packageName: string, subDirecto addReference({ text: ref.fileName, exact: true }); } for (const ref of src.typeReferenceDirectives) { - // only references are local - if (ref.fileName.startsWith(packageName + "/")) { + // only references are local (or "packagename/x", though in 3.7 that doesn't work in DT). + if (ref.fileName.startsWith("../" + packageName + "/")) { + addReference({ text: ref.fileName, exact: false }); + } else if (ref.fileName.startsWith(packageName + "/")) { addReference({ text: convertToRelativeReference(ref.fileName), exact: false }); } } @@ -227,7 +229,12 @@ function findReferencedFiles(src: ts.SourceFile, packageName: string, subDirecto // `path.normalize` may add windows slashes const full = normalizeSlashes(path.normalize(joinPaths(subDirectory, assertNoWindowsSlashes(src.fileName, ref.text)))); // allow files in typesVersions directories (i.e. 'ts3.1') to reference files in parent directory - if (full.startsWith("..") && (baseDirectory === "" || path.normalize(joinPaths(baseDirectory, full)).startsWith(".."))) { + if (full.startsWith("../" + packageName + "/")) { + ref.text = full.slice(4 + packageName.length); + refs.push(ref); + return; + } else if (full.startsWith("..") + && (baseDirectory === "" || path.normalize(joinPaths(baseDirectory, full)).startsWith(".."))) { throw new Error( `${src.fileName}: ` + 'Definitions must use global references to other packages, not parent ("../xxx") references.' +