Skip to content

Commit 765f607

Browse files
committed
docs: generate diffs
1 parent 5f104ad commit 765f607

19 files changed

+1511
-1
lines changed

build/diff.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// Generates diff per lib file.
2+
3+
import { createPatch } from "diff";
4+
import { mkdir, readFile, rm, writeFile } from "fs/promises";
5+
import path from "path";
6+
import prettier from "prettier";
7+
import { generate } from "./logic/generate";
8+
import { getLibFiles } from "./logic/getLibFiles";
9+
import { projectDir } from "./logic/projectDir";
10+
11+
const docsDir = path.join(projectDir, "docs");
12+
const docsDiffDir = path.join(docsDir, "diff");
13+
14+
async function main() {
15+
await rm(docsDiffDir, {
16+
force: true,
17+
recursive: true,
18+
});
19+
await mkdir(docsDiffDir, {
20+
recursive: true,
21+
});
22+
23+
const { tsLibDir, libFiles } = await getLibFiles();
24+
const hasDiffFiles: string[] = [];
25+
for (const libFile of libFiles) {
26+
const betterLib = generate(tsLibDir, libFile, false);
27+
if (betterLib === undefined) {
28+
continue;
29+
}
30+
31+
const diffFile = path.join(docsDiffDir, libFile + ".md");
32+
33+
const originalLib = await readFile(path.join(tsLibDir, libFile), "utf8");
34+
const formattedOriginalLib = prettier.format(originalLib, {
35+
parser: "typescript",
36+
});
37+
const formattedBetterLib = prettier.format(betterLib, {
38+
parser: "typescript",
39+
});
40+
if (formattedOriginalLib === formattedBetterLib) {
41+
continue;
42+
}
43+
44+
const diffPatch = createPatch(
45+
libFile,
46+
formattedOriginalLib,
47+
formattedBetterLib
48+
);
49+
50+
const md = `# ${libFile} Diffs
51+
52+
\`\`\`diff
53+
${diffPatch}
54+
\`\`\`
55+
`;
56+
57+
await writeFile(diffFile, md);
58+
console.log(libFile);
59+
hasDiffFiles.push(libFile);
60+
}
61+
const diffDoc = `
62+
# Diffs
63+
64+
The following files are improved in better-typescript-lib:
65+
66+
${hasDiffFiles
67+
.map((libFile) => `- [${libFile}](./diff/${libFile}.md)`)
68+
.join("\n")}
69+
`;
70+
await writeFile(path.join(docsDir, "diff.md"), diffDoc);
71+
}
72+
73+
main().catch((err) => {
74+
console.error(err);
75+
process.exit(1);
76+
});

docs/diff.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
# Diffs
3+
4+
- [es2015.collection.d.ts](es2015.collection.d.ts.md)
5+
- [es2015.core.d.ts](es2015.core.d.ts.md)
6+
- [es2015.generator.d.ts](es2015.generator.d.ts.md)
7+
- [es2015.iterable.d.ts](es2015.iterable.d.ts.md)
8+
- [es2015.promise.d.ts](es2015.promise.d.ts.md)
9+
- [es2015.proxy.d.ts](es2015.proxy.d.ts.md)
10+
- [es2015.reflect.d.ts](es2015.reflect.d.ts.md)
11+
- [es2017.object.d.ts](es2017.object.d.ts.md)
12+
- [es2018.asyncgenerator.d.ts](es2018.asyncgenerator.d.ts.md)
13+
- [es2018.asynciterable.d.ts](es2018.asynciterable.d.ts.md)
14+
- [es2019.object.d.ts](es2019.object.d.ts.md)
15+
- [es2021.promise.d.ts](es2021.promise.d.ts.md)
16+
- [es2021.string.d.ts](es2021.string.d.ts.md)
17+
- [es2022.object.d.ts](es2022.object.d.ts.md)
18+
- [es5.d.ts](es5.d.ts.md)

docs/diff/es2015.collection.d.ts.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# es2015.collection.d.ts Diffs
2+
3+
```diff
4+
Index: es2015.collection.d.ts
5+
===================================================================
6+
--- es2015.collection.d.ts
7+
+++ es2015.collection.d.ts
8+
@@ -1,28 +1,28 @@
9+
interface Map<K, V> {
10+
clear(): void;
11+
delete(key: K): boolean;
12+
- forEach(
13+
- callbackfn: (value: V, key: K, map: Map<K, V>) => void,
14+
- thisArg?: any
15+
+ forEach<This>(
16+
+ callbackfn: (this: This, value: V, key: K, map: Map<K, V>) => void,
17+
+ thisArg?: This
18+
): void;
19+
get(key: K): V | undefined;
20+
has(key: K): boolean;
21+
set(key: K, value: V): this;
22+
readonly size: number;
23+
}
24+
25+
+declare var Map: MapConstructor;
26+
+
27+
interface MapConstructor {
28+
- new (): Map<any, any>;
29+
new <K, V>(entries?: readonly (readonly [K, V])[] | null): Map<K, V>;
30+
- readonly prototype: Map<any, any>;
31+
+ readonly prototype: Map<unknown, unknown>;
32+
}
33+
-declare var Map: MapConstructor;
34+
35+
interface ReadonlyMap<K, V> {
36+
- forEach(
37+
- callbackfn: (value: V, key: K, map: ReadonlyMap<K, V>) => void,
38+
- thisArg?: any
39+
+ forEach<This>(
40+
+ callbackfn: (this: This, value: V, key: K, map: ReadonlyMap<K, V>) => void,
41+
+ thisArg?: This
42+
): void;
43+
get(key: K): V | undefined;
44+
has(key: K): boolean;
45+
readonly size: number;
46+
@@ -33,39 +33,39 @@
47+
get(key: K): V | undefined;
48+
has(key: K): boolean;
49+
set(key: K, value: V): this;
50+
}
51+
+declare var WeakMap: WeakMapConstructor;
52+
53+
interface WeakMapConstructor {
54+
- new <K extends object = object, V = any>(
55+
+ new <K extends object = object, V = unknown>(
56+
entries?: readonly [K, V][] | null
57+
): WeakMap<K, V>;
58+
- readonly prototype: WeakMap<object, any>;
59+
+ readonly prototype: WeakMap<object, unknown>;
60+
}
61+
-declare var WeakMap: WeakMapConstructor;
62+
63+
interface Set<T> {
64+
add(value: T): this;
65+
clear(): void;
66+
delete(value: T): boolean;
67+
- forEach(
68+
- callbackfn: (value: T, value2: T, set: Set<T>) => void,
69+
- thisArg?: any
70+
+ forEach<This>(
71+
+ callbackfn: (this: This, value: T, value2: T, set: Set<T>) => void,
72+
+ thisArg?: This
73+
): void;
74+
has(value: T): boolean;
75+
readonly size: number;
76+
}
77+
+declare var Set: SetConstructor;
78+
79+
interface SetConstructor {
80+
- new <T = any>(values?: readonly T[] | null): Set<T>;
81+
- readonly prototype: Set<any>;
82+
+ new <T>(values?: readonly T[] | null): Set<T>;
83+
+ readonly prototype: Set<unknown>;
84+
}
85+
-declare var Set: SetConstructor;
86+
87+
interface ReadonlySet<T> {
88+
- forEach(
89+
- callbackfn: (value: T, value2: T, set: ReadonlySet<T>) => void,
90+
- thisArg?: any
91+
+ forEach<This>(
92+
+ callbackfn: (this: This, value: T, value2: T, set: ReadonlySet<T>) => void,
93+
+ thisArg?: This
94+
): void;
95+
has(value: T): boolean;
96+
readonly size: number;
97+
}
98+
99+
```

0 commit comments

Comments
 (0)