Skip to content

Add more comments #1993

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
61d9bfe
refactor: optimize file system operations by removing async/await for…
Bashamega Apr 23, 2025
7b92b7d
chore: better naming
Bashamega Apr 23, 2025
746f705
feat: extract summary from MDN comments for better documentation
Bashamega Apr 23, 2025
9521a10
generate
Bashamega Apr 23, 2025
a995e00
remove comments
Bashamega Apr 23, 2025
ca08f27
Remove hashing
Bashamega Apr 23, 2025
7f82e1f
regenerate
Bashamega Apr 23, 2025
9afe136
-
Bashamega Apr 23, 2025
a2b7a93
feat: comments for iterator
Bashamega Apr 24, 2025
d6d08f7
Merge branch 'microsoft:main' into descriptions
Bashamega Apr 24, 2025
d65d812
generate
Bashamega Apr 24, 2025
04ba40c
-
Bashamega Apr 24, 2025
7da9e85
-
Bashamega Apr 24, 2025
576b872
-
Bashamega Apr 24, 2025
16ef393
-
Bashamega Apr 24, 2025
5110391
-
Bashamega Apr 24, 2025
63c359d
generate
Bashamega Apr 24, 2025
7a40173
clean
Bashamega Apr 24, 2025
fdddfa6
remove await
Bashamega Apr 25, 2025
968a4e4
simplify
Bashamega Apr 25, 2025
0123276
refactor: extract title generation logic into a separate function
Bashamega Apr 25, 2025
e146dfe
refactor: remove descriptions parameter from emitFlavor and emitWebId…
Bashamega Apr 27, 2025
d97bcb7
-
Bashamega Apr 27, 2025
de83ebc
Merge branch 'microsoft:main' into descriptions
Bashamega Apr 27, 2025
7386df6
generate
Bashamega Apr 27, 2025
619d3c2
merge branches
Bashamega Apr 28, 2025
7d3c431
refactor: optimize file processing in generateDescriptions function u…
Bashamega Apr 28, 2025
3c7d15a
Merge branches
Bashamega Apr 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
768 changes: 640 additions & 128 deletions baselines/audioworklet.generated.d.ts

Large diffs are not rendered by default.

21,562 changes: 17,961 additions & 3,601 deletions baselines/dom.generated.d.ts

Large diffs are not rendered by default.

390 changes: 325 additions & 65 deletions baselines/dom.iterable.generated.d.ts

Large diffs are not rendered by default.

6,454 changes: 5,375 additions & 1,079 deletions baselines/serviceworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/serviceworker.iterable.generated.d.ts

Large diffs are not rendered by default.

6,128 changes: 5,104 additions & 1,024 deletions baselines/sharedworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/sharedworker.iterable.generated.d.ts

Large diffs are not rendered by default.

768 changes: 640 additions & 128 deletions baselines/ts5.5/audioworklet.generated.d.ts

Large diffs are not rendered by default.

21,562 changes: 17,961 additions & 3,601 deletions baselines/ts5.5/dom.generated.d.ts

Large diffs are not rendered by default.

390 changes: 325 additions & 65 deletions baselines/ts5.5/dom.iterable.generated.d.ts

Large diffs are not rendered by default.

6,454 changes: 5,375 additions & 1,079 deletions baselines/ts5.5/serviceworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.5/serviceworker.iterable.generated.d.ts

Large diffs are not rendered by default.

6,128 changes: 5,104 additions & 1,024 deletions baselines/ts5.5/sharedworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.5/sharedworker.iterable.generated.d.ts

Large diffs are not rendered by default.

7,278 changes: 6,061 additions & 1,217 deletions baselines/ts5.5/webworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.5/webworker.iterable.generated.d.ts

Large diffs are not rendered by default.

768 changes: 640 additions & 128 deletions baselines/ts5.6/audioworklet.generated.d.ts

Large diffs are not rendered by default.

21,562 changes: 17,961 additions & 3,601 deletions baselines/ts5.6/dom.generated.d.ts

Large diffs are not rendered by default.

390 changes: 325 additions & 65 deletions baselines/ts5.6/dom.iterable.generated.d.ts

Large diffs are not rendered by default.

6,454 changes: 5,375 additions & 1,079 deletions baselines/ts5.6/serviceworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.6/serviceworker.iterable.generated.d.ts

Large diffs are not rendered by default.

6,128 changes: 5,104 additions & 1,024 deletions baselines/ts5.6/sharedworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.6/sharedworker.iterable.generated.d.ts

Large diffs are not rendered by default.

7,278 changes: 6,061 additions & 1,217 deletions baselines/ts5.6/webworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/ts5.6/webworker.iterable.generated.d.ts

Large diffs are not rendered by default.

7,278 changes: 6,061 additions & 1,217 deletions baselines/webworker.generated.d.ts

Large diffs are not rendered by default.

354 changes: 295 additions & 59 deletions baselines/webworker.iterable.generated.d.ts

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { getInterfaceElementMergeData } from "./build/webref/elements.js";
import { getInterfaceToEventMap } from "./build/webref/events.js";
import { getWebidls } from "./build/webref/idl.js";
import jsonc from "jsonc-parser";
import { generateDescription } from "./build/mdn-comments.js";
import { generateDescriptions } from "./build/mdn-comments.js";

function mergeNamesakes(filtered: Browser.WebIdl) {
const targets = [
Expand Down Expand Up @@ -95,7 +95,7 @@ async function emitDom() {
const addedItems = await readInputJSON("addedTypes.jsonc");
const comments = await readInputJSON("comments.json");
const deprecatedInfo = await readInputJSON("deprecatedMessage.json");
const documentationFromMDN = await generateDescription();
const documentationFromMDN = generateDescriptions();
const removedItems = await readInputJSON("removedTypes.jsonc");

async function readInputJSON(filename: string) {
Expand Down
6 changes: 5 additions & 1 deletion src/build/emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
arrayBufferViewTypes,
} from "./helpers.js";
import { collectLegacyNamespaceTypes } from "./legacy-namespace.js";
import { extractSummaryFromFile } from "./mdn-comments.js";

/// Decide which members of a function to emit
enum EmitScope {
Expand Down Expand Up @@ -906,7 +907,10 @@ export function emitWebIdl(
comments.push("Available only in secure contexts.");
}
if (entity.mdnUrl) {
if (comments.length > 0) comments.push("");
if (comments.length == 0) {
comments.push(extractSummaryFromFile(entity.mdnUrl));
}
comments.push("");
comments.push(`[MDN Reference](${entity.mdnUrl})`);
}

Expand Down
45 changes: 32 additions & 13 deletions src/build/mdn-comments.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import fs from "fs/promises";
import fs from "fs";
import { basename } from "path";

const basePath = new URL(
Expand Down Expand Up @@ -50,11 +50,9 @@ function extractSummary(markdown: string): string {
return normalizedText.split(" ")[0] || ""; // Fallback: first word if no sentence found
}

async function getDirectories(dirPath: URL): Promise<URL[]> {
function getDirectories(dirPath: URL): URL[] {
try {
const entries = await fs.readdir(dirPath, {
withFileTypes: true,
});
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
return entries
.filter((entry) => entry.isDirectory())
.map((entry) => new URL(entry.name + "/", dirPath));
Expand All @@ -64,16 +62,14 @@ async function getDirectories(dirPath: URL): Promise<URL[]> {
}
}

async function getIndexMdContents(
folders: URL[],
): Promise<{ [key: string]: string }> {
function getIndexMdContents(folders: URL[]): { [key: string]: string } {
const results: { [key: string]: string } = {};

for (const folder of folders) {
const indexPath = new URL("index.md", folder);

try {
const content = await fs.readFile(indexPath, "utf-8");
const content = fs.readFileSync(indexPath, "utf-8");

// Improved title extraction
const titleMatch = content.match(/title:\s*["']?([^"'\n]+)["']?/);
Expand All @@ -92,21 +88,44 @@ async function getIndexMdContents(
return results;
}

export async function generateDescription(): Promise<Record<string, string>> {
const stats = await fs.stat(basePath);
export function generateDescriptions(): Record<string, string> {
const stats = fs.statSync(basePath);
if (!stats.isDirectory()) {
throw new Error(
"MDN submodule does not exist; try running `git submodule update --init`",
);
}

try {
const folders = await getDirectories(basePath);
const folders = getDirectories(basePath);
if (folders.length > 0) {
return await getIndexMdContents(folders);
return getIndexMdContents(folders);
}
} catch (error) {
console.error("Error generating API descriptions:", error);
}

return {};
}

export function extractSummaryFromFile(url: string): string {
const relativePath = url
.replace("https://developer.mozilla.org/docs/", "")
.toLowerCase();

const filePath = new URL(
`../../inputfiles/mdn/files/en-us/${relativePath}/index.md`,
import.meta.url,
);

try {
const content = fs.readFileSync(filePath, "utf-8");
return extractSummary(content);
} catch (error) {
console.error(
`Failed to read or extract summary from: ${filePath.href}`,
error,
);
return "";
}
}
Loading