diff --git a/adev/shared-docs/pipeline/api-gen/extraction/test/BUILD.bazel b/adev/shared-docs/pipeline/api-gen/extraction/test/BUILD.bazel
index 98168bfa6bf..1b73461e562 100644
--- a/adev/shared-docs/pipeline/api-gen/extraction/test/BUILD.bazel
+++ b/adev/shared-docs/pipeline/api-gen/extraction/test/BUILD.bazel
@@ -16,6 +16,7 @@ extract_api_to_json(
module_name = "@angular/core",
output_name = "api.json",
private_modules = [""],
+ repo = "angular/angular",
)
extract_api_to_json(
@@ -34,6 +35,7 @@ extract_api_to_json(
module_name = "@angular/core",
output_name = "extra_api.json",
private_modules = [""],
+ repo = "angular/angular",
)
filegroup(
diff --git a/adev/shared-docs/pipeline/api-gen/manifest/test/BUILD.bazel b/adev/shared-docs/pipeline/api-gen/manifest/test/BUILD.bazel
index a46ca77d2aa..f14ac680a0a 100644
--- a/adev/shared-docs/pipeline/api-gen/manifest/test/BUILD.bazel
+++ b/adev/shared-docs/pipeline/api-gen/manifest/test/BUILD.bazel
@@ -1,5 +1,5 @@
-load("//adev/shared-docs/pipeline/api-gen/manifest:generate_api_manifest.bzl", "generate_api_manifest")
load("//adev/shared-docs/pipeline/api-gen/extraction:extract_api_to_json.bzl", "extract_api_to_json")
+load("//adev/shared-docs/pipeline/api-gen/manifest:generate_api_manifest.bzl", "generate_api_manifest")
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
generate_api_manifest(
@@ -17,6 +17,7 @@ extract_api_to_json(
module_name = "@angular/router",
output_name = "api.json",
private_modules = [""],
+ repo = "angular/angular",
)
ts_library(
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/entities/renderables.ts b/adev/shared-docs/pipeline/api-gen/rendering/entities/renderables.ts
index f3a30b3d513..5774b16fbcd 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/entities/renderables.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/entities/renderables.ts
@@ -33,6 +33,7 @@ export interface JsDocTagRenderable extends JsDocTagEntry {
/** A documentation entry augmented with transformed content for rendering. */
export interface DocEntryRenderable extends DocEntry {
+ repo: string;
moduleName: string;
htmlDescription: string;
shortHtmlDescription: string;
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/entities/traits.ts b/adev/shared-docs/pipeline/api-gen/rendering/entities/traits.ts
index 636f38b5efc..c3319d1c1bf 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/entities/traits.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/entities/traits.ts
@@ -71,6 +71,11 @@ export interface HasModuleName {
moduleName: string;
}
+/** A doc entry that has an associated github repo. */
+export interface HasRepo {
+ repo: string;
+}
+
/** A doc entry that has ToC transformed for rendering. */
export interface HasRenderableToc {
beforeCodeGroups: string;
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/index.ts b/adev/shared-docs/pipeline/api-gen/rendering/index.ts
index 901ea065164..e69fb262197 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/index.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/index.ts
@@ -19,6 +19,7 @@ import {setCurrentSymbol, setSymbols} from './symbol-context';
/** The JSON data file format for extracted API reference info. */
interface EntryCollection {
+ repo: string;
moduleName: string;
moduleLabel?: string;
normalizedModuleName: string;
@@ -44,6 +45,7 @@ function parseEntryData(srcs: string[]): EntryCollection[] {
const command = fileContentJson as CliCommand;
return [
{
+ repo: 'anglar/cli',
moduleName: 'unknown',
normalizedModuleName: 'unknown',
entries: [fileContentJson as DocEntry],
@@ -51,6 +53,7 @@ function parseEntryData(srcs: string[]): EntryCollection[] {
},
...command.subcommands!.map((subCommand) => {
return {
+ repo: 'angular/cli',
moduleName: 'unknown',
normalizedModuleName: 'unknown',
entries: [{...subCommand, parentCommand: command} as any],
@@ -61,6 +64,7 @@ function parseEntryData(srcs: string[]): EntryCollection[] {
}
return {
+ repo: 'unknown',
moduleName: 'unknown',
normalizedModuleName: 'unknown',
entries: [fileContentJson as DocEntry], // TODO: fix the typing cli entries aren't DocEntry
@@ -122,7 +126,7 @@ async function main() {
const renderableEntries = extractedEntries.map((entry) => {
setCurrentSymbol(entry.name);
- return getRenderable(entry, collection.moduleName);
+ return getRenderable(entry, collection.moduleName, collection.repo);
});
const htmlOutputs = renderableEntries.map(renderEntry);
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/processing.ts b/adev/shared-docs/pipeline/api-gen/rendering/processing.ts
index 548d4787a3d..e10c64eee6b 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/processing.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/processing.ts
@@ -8,6 +8,7 @@
import {DocEntry} from './entities';
+import {CliCommand} from './cli-entities';
import {
isClassEntry,
isCliEntry,
@@ -21,9 +22,9 @@ import {
} from './entities/categorization';
import {CliCommandRenderable, DocEntryRenderable} from './entities/renderables';
import {getClassRenderable} from './transforms/class-transforms';
-import {getDecoratorRenderable} from './transforms/decorator-transforms';
import {getCliRenderable} from './transforms/cli-transforms';
import {getConstantRenderable} from './transforms/constant-transforms';
+import {getDecoratorRenderable} from './transforms/decorator-transforms';
import {getEnumRenderable} from './transforms/enum-transforms';
import {getFunctionRenderable} from './transforms/function-transforms';
import {getInitializerApiFunctionRenderable} from './transforms/initializer-api-functions-transform';
@@ -36,47 +37,48 @@ import {
setEntryFlags,
} from './transforms/jsdoc-transforms';
import {addModuleName} from './transforms/module-name';
+import {addRepo} from './transforms/repo';
import {getTypeAliasRenderable} from './transforms/type-alias-transforms';
-import {CliCommand} from './cli-entities';
export function getRenderable(
entry: DocEntry | CliCommand,
moduleName: string,
+ repo: string,
): DocEntryRenderable | CliCommandRenderable {
if (isCliEntry(entry)) {
return getCliRenderable(entry);
}
if (isClassEntry(entry)) {
- return getClassRenderable(entry, moduleName);
+ return getClassRenderable(entry, moduleName, repo);
}
if (isDecoratorEntry(entry)) {
- return getDecoratorRenderable(entry, moduleName);
+ return getDecoratorRenderable(entry, moduleName, repo);
}
if (isConstantEntry(entry)) {
- return getConstantRenderable(entry, moduleName);
+ return getConstantRenderable(entry, moduleName, repo);
}
if (isEnumEntry(entry)) {
- return getEnumRenderable(entry, moduleName);
+ return getEnumRenderable(entry, moduleName, repo);
}
if (isInterfaceEntry(entry)) {
- return getInterfaceRenderable(entry, moduleName);
+ return getInterfaceRenderable(entry, moduleName, repo);
}
if (isFunctionEntry(entry)) {
- return getFunctionRenderable(entry, moduleName);
+ return getFunctionRenderable(entry, moduleName, repo);
}
if (isTypeAliasEntry(entry)) {
- return getTypeAliasRenderable(entry, moduleName);
+ return getTypeAliasRenderable(entry, moduleName, repo);
}
if (isInitializerApiFunctionEntry(entry)) {
- return getInitializerApiFunctionRenderable(entry, moduleName);
+ return getInitializerApiFunctionRenderable(entry, moduleName, repo);
}
// Fallback to an uncategorized renderable.
return setEntryFlags(
addHtmlAdditionalLinks(
addHtmlDescription(
- addHtmlUsageNotes(addHtmlJsDocTagComments(addModuleName(entry, moduleName))),
+ addHtmlUsageNotes(addHtmlJsDocTagComments(addRepo(addModuleName(entry, moduleName), repo))),
),
),
);
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/class-member.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/class-member.tsx
index 8d34f3b330a..11483a1cc37 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/templates/class-member.tsx
+++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/class-member.tsx
@@ -20,11 +20,11 @@ import {
REFERENCE_MEMBER_CARD_HEADER,
REFERENCE_MEMBER_CARD_ITEM,
} from '../styling/css-classes';
+import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
import {ClassMethodInfo} from './class-method-info';
+import {CodeSymbol} from './code-symbols';
import {DeprecatedLabel} from './deprecated-label';
import {RawHtml} from './raw-html';
-import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
-import {CodeSymbol} from './code-symbols';
export function ClassMember(props: {member: MemberEntryRenderable}) {
const member = props.member;
@@ -32,7 +32,7 @@ export function ClassMember(props: {member: MemberEntryRenderable}) {
const renderMethod = (method: MethodEntryRenderable) => {
const signature = method.signatures.length ? method.signatures : [method.implementation];
return signature.map((sig) => {
- const renderableMember = getFunctionMetadataRenderable(sig);
+ const renderableMember = getFunctionMetadataRenderable(sig, method.moduleName, method.repo);
return ;
});
};
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/class-reference.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/class-reference.tsx
index 78c50bdafe0..eeab10f2b0d 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/templates/class-reference.tsx
+++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/class-reference.tsx
@@ -7,25 +7,25 @@
*/
import {Fragment, h} from 'preact';
+import {PipeEntry} from '../entities';
import {
ClassEntryRenderable,
DecoratorEntryRenderable,
PipeEntryRenderable,
} from '../entities/renderables';
-import {ClassMemberList} from './class-member-list';
-import {HeaderApi} from './header-api';
+import {codeToHtml} from '../shiki/shiki';
import {
API_REFERENCE_CONTAINER,
REFERENCE_MEMBERS,
SECTION_CONTAINER,
} from '../styling/css-classes';
-import {SectionDescription} from './section-description';
-import {SectionUsageNotes} from './section-usage-notes';
-import {SectionApi} from './section-api';
-import {SectionHeading} from './section-heading';
-import {PipeEntry} from '../entities';
-import {codeToHtml} from '../shiki/shiki';
+import {ClassMemberList} from './class-member-list';
+import {HeaderApi} from './header-api';
import {RawHtml} from './raw-html';
+import {SectionApi} from './section-api';
+import {SectionDescription} from './section-description';
+import {SectionHeading} from './section-heading';
+import {SectionUsageNotes} from './section-usage-notes';
/** Component to render a class API reference document. */
export function ClassReference(
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/function-reference.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/function-reference.tsx
index ac9536744fc..ddd182b1d9d 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/templates/function-reference.tsx
+++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/function-reference.tsx
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
-import {h, Fragment} from 'preact';
+import {Fragment, h} from 'preact';
import {
FunctionEntryRenderable,
FunctionSignatureMetadataRenderable,
@@ -18,15 +18,15 @@ import {
REFERENCE_MEMBER_CARD_BODY,
REFERENCE_MEMBER_CARD_HEADER,
} from '../styling/css-classes';
+import {printInitializerFunctionSignatureLine} from '../transforms/code-transforms';
+import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
import {ClassMethodInfo} from './class-method-info';
+import {CodeSymbol} from './code-symbols';
import {HeaderApi} from './header-api';
+import {HighlightTypeScript} from './highlight-ts';
import {SectionApi} from './section-api';
import {SectionDescription} from './section-description';
import {SectionUsageNotes} from './section-usage-notes';
-import {HighlightTypeScript} from './highlight-ts';
-import {printInitializerFunctionSignatureLine} from '../transforms/code-transforms';
-import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
-import {CodeSymbol} from './code-symbols';
export const signatureCard = (
name: string,
@@ -75,7 +75,7 @@ export function FunctionReference(entry: FunctionEntryRenderable) {
{entry.signatures.map((s, i) =>
signatureCard(
s.name,
- getFunctionMetadataRenderable(s, entry.moduleName),
+ getFunctionMetadataRenderable(s, entry.moduleName, entry.repo),
{
id: `${s.name}_${i}`,
},
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/header-api.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/header-api.tsx
index df491442bb2..da2de4ae9c0 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/templates/header-api.tsx
+++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/header-api.tsx
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
-import {h, Fragment} from 'preact';
+import {Fragment, h} from 'preact';
import {EntryType, isDocEntryWithSourceInfo, PipeEntry} from '../entities';
import {DocEntryRenderable, PipeEntryRenderable} from '../entities/renderables';
import {
@@ -153,6 +153,7 @@ function sourceUrlForEntry(entry: DocEntryRenderable): string | null {
// We don't know the source path in external repos link the CLI
return null;
} else {
- return `https://github.com/angular/angular/blob/main${entry.source.filePath}#L${entry.source.startLine}-L${entry.source.endLine}`;
+ const filePath = entry.source.filePath.replace(/^\//, '');
+ return `https://github.com/${entry.repo}/blob/main/${filePath}#L${entry.source.startLine}-L${entry.source.endLine}`;
}
}
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/initializer-api-function.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/initializer-api-function.tsx
index bf4ac4e5320..4d38268eaee 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/templates/initializer-api-function.tsx
+++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/initializer-api-function.tsx
@@ -8,12 +8,12 @@
import {h, JSX} from 'preact';
import {InitializerApiFunctionRenderable} from '../entities/renderables';
-import {HeaderApi} from './header-api';
-import {SectionApi} from './section-api';
-import {SectionUsageNotes} from './section-usage-notes';
import {API_REFERENCE_CONTAINER, REFERENCE_MEMBERS} from '../styling/css-classes';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
import {signatureCard} from './function-reference';
+import {HeaderApi} from './header-api';
+import {SectionApi} from './section-api';
+import {SectionUsageNotes} from './section-usage-notes';
/** Component to render a constant API reference document. */
export function InitializerApiFunction(entry: InitializerApiFunctionRenderable) {
@@ -42,7 +42,7 @@ export function InitializerApiFunction(entry: InitializerApiFunctionRenderable)
{entry.callFunction.signatures.map((s, i) =>
signatureCard(
s.name,
- getFunctionMetadataRenderable(s, entry.moduleName),
+ getFunctionMetadataRenderable(s, entry.moduleName, entry.repo),
{
id: `${s.name}_${i}`,
},
@@ -56,7 +56,7 @@ export function InitializerApiFunction(entry: InitializerApiFunctionRenderable)
...subFunction.signatures.map((s, i) =>
signatureCard(
`${entry.name}.${s.name}`,
- getFunctionMetadataRenderable(s, entry.moduleName),
+ getFunctionMetadataRenderable(s, entry.moduleName, entry.repo),
{
id: `${entry.name}_${s.name}_${i}`,
},
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/test/cli.spec.ts b/adev/shared-docs/pipeline/api-gen/rendering/test/cli.spec.ts
index 90695f0c1f5..ef743748410 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/test/cli.spec.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/test/cli.spec.ts
@@ -9,10 +9,10 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
import {JSDOM} from 'jsdom';
-import {renderEntry} from '../rendering';
-import {getRenderable} from '../processing';
-import {initHighlighter} from '../shiki/shiki';
import {configureMarkedGlobally} from '../marked/configuration';
+import {getRenderable} from '../processing';
+import {renderEntry} from '../rendering';
+import {initHighlighter} from '../shiki/shiki';
describe('CLI docs to html', () => {
let fragment: DocumentFragment;
@@ -27,7 +27,7 @@ describe('CLI docs to html', () => {
});
entryJson = JSON.parse(entryContent) as any;
- const renderableJson = getRenderable(entryJson, '');
+ const renderableJson = getRenderable(entryJson, '', 'angular/cli');
fragment = JSDOM.fragment(await renderEntry(renderableJson));
});
@@ -35,7 +35,7 @@ describe('CLI docs to html', () => {
const generateComponentSubcommand = entryJson.subcommands.find(
(subcommand: any) => subcommand.name === 'component',
);
- const renderableJson = getRenderable(generateComponentSubcommand, '');
+ const renderableJson = getRenderable(generateComponentSubcommand, '', 'angular/cli');
fragment = JSDOM.fragment(await renderEntry(renderableJson));
const cliTocs = fragment.querySelectorAll('.docs-reference-cli-toc')!;
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/test/marked.spec.ts b/adev/shared-docs/pipeline/api-gen/rendering/test/marked.spec.ts
index 85011204105..31ed4c4c722 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/test/marked.spec.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/test/marked.spec.ts
@@ -9,10 +9,10 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
import {JSDOM} from 'jsdom';
-import {renderEntry} from '../rendering';
-import {getRenderable} from '../processing';
-import {initHighlighter} from '../shiki/shiki';
import {configureMarkedGlobally} from '../marked/configuration';
+import {getRenderable} from '../processing';
+import {renderEntry} from '../rendering';
+import {initHighlighter} from '../shiki/shiki';
import {setSymbols} from '../symbol-context';
// Note: The tests will probably break if the schema of the api extraction changes.
@@ -44,7 +44,7 @@ describe('markdown to html', () => {
]);
setSymbols(symbols);
for (const entry of entryJson.entries) {
- const renderableJson = getRenderable(entry, '@angular/fakeentry');
+ const renderableJson = getRenderable(entry, '@angular/fakeentry', 'angular/angular');
const fragment = JSDOM.fragment(await renderEntry(renderableJson));
entries.set(entry['name'], fragment);
entries2.set(entry['name'], await renderEntry(renderableJson));
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.ts b/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.ts
index 7ae196eda71..cbc9f2e6cb5 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.ts
@@ -8,10 +8,10 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
-import {getRenderable} from '../processing';
import {DocEntryRenderable} from '../entities/renderables';
-import {initHighlighter} from '../shiki/shiki';
import {configureMarkedGlobally} from '../marked/configuration';
+import {getRenderable} from '../processing';
+import {initHighlighter} from '../shiki/shiki';
import {setSymbols} from '../symbol-context';
// Note: The tests will probably break if the schema of the api extraction changes.
@@ -43,7 +43,11 @@ describe('renderable', () => {
setSymbols(symbols);
for (const entry of entryJson.entries) {
- const renderableJson = getRenderable(entry, '@angular/fakeentry') as DocEntryRenderable;
+ const renderableJson = getRenderable(
+ entry,
+ '@angular/fakeentry',
+ 'angular/angular',
+ ) as DocEntryRenderable;
entries.set(entry['name'], renderableJson);
}
});
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/class-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/class-transforms.ts
index ad47fea317e..c83cd27218f 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/class-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/class-transforms.ts
@@ -18,18 +18,22 @@ import {
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed class entry, get the fully renderable class entry. */
export function getClassRenderable(
classEntry: ClassEntry,
moduleName: string,
+ repo: string,
): ClassEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addRenderableMembers(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(classEntry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(classEntry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/constant-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/constant-transforms.ts
index 30ff8116606..51094f15b9b 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/constant-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/constant-transforms.ts
@@ -17,17 +17,21 @@ import {
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed constant entry, get the fully renderable constant entry. */
export function getConstantRenderable(
classEntry: ConstantEntry,
moduleName: string,
+ repo: string,
): ConstantEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(classEntry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(classEntry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/decorator-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/decorator-transforms.ts
index cfda1fa686a..7d88cba974b 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/decorator-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/decorator-transforms.ts
@@ -18,18 +18,22 @@ import {
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed class entry, get the fully renderable class entry. */
export function getDecoratorRenderable(
classEntry: DecoratorEntry,
moduleName: string,
+ repo: string,
): DecoratorEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addRenderableMembers(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(classEntry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(classEntry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/enum-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/enum-transforms.ts
index a4afcebac7f..cc07ee11c05 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/enum-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/enum-transforms.ts
@@ -18,15 +18,22 @@ import {
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed enum entry, get the fully renderable enum entry. */
-export function getEnumRenderable(classEntry: EnumEntry, moduleName: string): EnumEntryRenderable {
+export function getEnumRenderable(
+ classEntry: EnumEntry,
+ moduleName: string,
+ repo: string,
+): EnumEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addRenderableMembers(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(classEntry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(classEntry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/function-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/function-transforms.ts
index 1c8dd1bbc9c..9daa94a0584 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/function-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/function-transforms.ts
@@ -21,18 +21,22 @@ import {
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
import {addRenderableFunctionParams} from './params-transforms';
+import {addRepo} from './repo';
/** Given an unprocessed function entry, get the fully renderable function entry. */
export function getFunctionRenderable(
entry: FunctionEntry,
moduleName: string,
+ repo: string,
): FunctionEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
setEntryFlags(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(entry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(entry, moduleName), repo)),
+ ),
),
),
),
@@ -42,13 +46,16 @@ export function getFunctionRenderable(
export function getFunctionMetadataRenderable(
entry: FunctionSignatureMetadata,
- moduleName: string = '',
+ moduleName: string,
+ repo: string,
): FunctionSignatureMetadataRenderable {
return addHtmlAdditionalLinks(
addRenderableFunctionParams(
addHtmlUsageNotes(
setEntryFlags(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(entry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(entry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/initializer-api-functions-transform.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/initializer-api-functions-transform.ts
index 5f1c16bf2ea..336583880ce 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/initializer-api-functions-transform.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/initializer-api-functions-transform.ts
@@ -19,16 +19,20 @@ import {
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
export function getInitializerApiFunctionRenderable(
entry: InitializerApiFunctionEntry,
moduleName: string,
+ repo: string,
): InitializerApiFunctionRenderable {
return setEntryFlags(
addRenderableCodeToc(
addHtmlJsDocTagComments(
addHtmlUsageNotes(
- addHtmlDescription(addHtmlAdditionalLinks(addModuleName(entry, moduleName))),
+ addHtmlDescription(
+ addHtmlAdditionalLinks(addRepo(addModuleName(entry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/interface-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/interface-transforms.ts
index e70d1bde6f7..2145f8ee8ab 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/interface-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/interface-transforms.ts
@@ -18,18 +18,22 @@ import {
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed interface entry, get the fully renderable interface entry. */
export function getInterfaceRenderable(
entry: InterfaceEntry,
moduleName: string,
+ repo: string,
): InterfaceEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addRenderableMembers(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(entry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(entry, moduleName), repo)),
+ ),
),
),
),
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/member-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/member-transforms.ts
index 360f5a8f30d..70599bfefac 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/member-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/member-transforms.ts
@@ -9,7 +9,7 @@
import {MemberEntry, MemberTags, MemberType} from '../entities';
import {isHiddenEntry} from '../entities/categorization';
-import {HasMembers, HasModuleName, HasRenderableMembers} from '../entities/traits';
+import {HasMembers, HasModuleName, HasRenderableMembers, HasRepo} from '../entities/traits';
import {
addHtmlDescription,
@@ -18,6 +18,7 @@ import {
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
const lifecycleMethods = [
'ngAfterContentChecked',
@@ -63,7 +64,7 @@ export function mergeGettersAndSetters(members: MemberEntry[]): MemberEntry[] {
);
}
-export function addRenderableMembers(
+export function addRenderableMembers(
entry: T,
): T & HasRenderableMembers {
const members = entry.members
@@ -71,7 +72,9 @@ export function addRenderableMembers(
.map((member) =>
setEntryFlags(
addHtmlDescription(
- addHtmlUsageNotes(addHtmlJsDocTagComments(addModuleName(member, entry.moduleName))),
+ addHtmlUsageNotes(
+ addHtmlJsDocTagComments(addRepo(addModuleName(member, entry.moduleName), entry.repo)),
+ ),
),
),
);
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/repo.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/repo.ts
new file mode 100644
index 00000000000..9d5bbd0b51f
--- /dev/null
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/repo.ts
@@ -0,0 +1,16 @@
+/*!
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import {HasRepo} from '../entities/traits';
+
+export function addRepo(entry: T, repo: string): T & HasRepo {
+ return {
+ ...entry,
+ repo,
+ };
+}
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/transforms/type-alias-transforms.ts b/adev/shared-docs/pipeline/api-gen/rendering/transforms/type-alias-transforms.ts
index 1dee0a2dc36..e87fb8e4d5d 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/transforms/type-alias-transforms.ts
+++ b/adev/shared-docs/pipeline/api-gen/rendering/transforms/type-alias-transforms.ts
@@ -17,17 +17,21 @@ import {
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
+import {addRepo} from './repo';
/** Given an unprocessed type alias entry, get the fully renderable type alias entry. */
export function getTypeAliasRenderable(
typeAliasEntry: TypeAliasEntry,
moduleName: string,
+ repo: string,
): TypeAliasEntryRenderable {
return setEntryFlags(
addRenderableCodeToc(
addHtmlAdditionalLinks(
addHtmlUsageNotes(
- addHtmlJsDocTagComments(addHtmlDescription(addModuleName(typeAliasEntry, moduleName))),
+ addHtmlJsDocTagComments(
+ addHtmlDescription(addRepo(addModuleName(typeAliasEntry, moduleName), repo)),
+ ),
),
),
),