From 788f5873672de590301d16be4ccb41db6be1d4c3 Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Tue, 19 Apr 2022 21:51:14 -0700 Subject: [PATCH] fix(docs-infra): avoid internal symbols from being referenced during auto-linking (#45689) This commit adds extra logic to avoid internal and privately exported symbols from being referenced during auto-linking. Currently such symbols can be used for linking, thus resulting in a non-existing link and causing the linking process to fail. PR Close #45689 --- .../post-processors/auto-link-code.js | 3 ++- .../post-processors/auto-link-code.spec.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.js b/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.js index c0a370c2940..447bcdb7337 100644 --- a/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.js +++ b/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.js @@ -126,7 +126,8 @@ module.exports = function autoLinkCode(getDocFromAlias) { var doc = docs[0]; - const isInvalidDoc = doc.docType === 'member' && !keyword.includes('.'); + const isInvalidDoc = + doc.internal || doc.privateExport || (doc.docType === 'member' && !keyword.includes('.')); if (isInvalidDoc) { return false; } diff --git a/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.spec.js b/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.spec.js index f90572265c3..0502b96a22c 100644 --- a/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.spec.js +++ b/aio/tools/transforms/angular-base-package/post-processors/auto-link-code.spec.js @@ -221,6 +221,20 @@ describe('autoLinkCode post-processor', () => { expect(doc.renderedContent).toEqual('MyClass'); }); + it('should ignore symbols marked as internal', () => { + aliasMap.addDoc({docType: 'class', id: 'MyClass', aliases: ['MyClass'], internal: true}); + const doc = {docType: 'test-doc', renderedContent: 'MyClass'}; + processor.$process([doc]); + expect(doc.renderedContent).toEqual('MyClass'); + }); + + it('should ignore symbols marked as privately exported (that start with `ɵ`)', () => { + aliasMap.addDoc({docType: 'class', id: 'MyClass', aliases: ['MyClass'], privateExport: true}); + const doc = {docType: 'test-doc', renderedContent: 'MyClass'}; + processor.$process([doc]); + expect(doc.renderedContent).toEqual('MyClass'); + }); + it('should ignore code blocks that are marked with an "ignored" language', () => { aliasMap.addDoc({docType: 'class', id: 'MyClass', aliases: ['MyClass'], path: 'a/b/myclass'}); const doc = {docType: 'test-doc', renderedContent: 'MyClass'};