Skip to content
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

Convert BCD to TypeScript #16593

Merged
merged 79 commits into from
Jun 14, 2022
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
e2ffbc6
Fold external.d.ts into dev.d.ts
queengooborg Jun 6, 2022
a1cea11
Load dev.d.ts and types.d.ts in all ts-node calls
queengooborg Jun 6, 2022
b4c9182
Install @types/yargs
queengooborg Jun 6, 2022
c04d916
Further declare es-main module
queengooborg Jun 6, 2022
69e190a
Remove include and add exclude
queengooborg Jun 7, 2022
5bdc6a2
Rename all files from .js to .ts
queengooborg Jun 7, 2022
1da748e
Make index loading asynchronous
queengooborg Jun 7, 2022
3820ee8
Convert index to TypeScript
queengooborg Jun 7, 2022
6e68285
TS compiler: ignore .test.ts
queengooborg Jun 7, 2022
a92c7ae
Fix script run
queengooborg Jun 7, 2022
efc32ea
Update Mocha to use TypeScript compiler
queengooborg Jun 7, 2022
d4994a9
Install @types/mocha
queengooborg Jun 7, 2022
512d47b
Revert removal of ".js" in imports
queengooborg Jun 7, 2022
ad35bc8
Update internal TypeScript definitons
queengooborg Jun 7, 2022
a511579
Move auto-generated typedef to types/ folder
queengooborg Jun 7, 2022
248d882
Convert scripts/fix/ to TypeScript
queengooborg Jun 7, 2022
816643e
Update package.json
queengooborg Jun 7, 2022
4fd3771
Install TypeScript ESLint parser
queengooborg Jun 7, 2022
3fe48f0
Fix ESLint issues
queengooborg Jun 7, 2022
4f8ee92
Convert scripts/fix/property-order
queengooborg Jun 7, 2022
220e339
Extend ESLint configuration
queengooborg Jun 7, 2022
a933897
Convert scripts/lib/
queengooborg Jun 7, 2022
fefedf5
Turn off "no-explicit-any"
queengooborg Jun 7, 2022
967919b
Remove unused script
queengooborg Jun 7, 2022
d85d29c
let -> const
queengooborg Jun 7, 2022
4e499ac
Make CompatData type's properties all optional for internal testing
queengooborg Jun 7, 2022
8118876
Ensure index.ts outputs a type
queengooborg Jun 7, 2022
6a9282b
Fix index import
queengooborg Jun 7, 2022
1e169ae
Convert scripts/migrations/
queengooborg Jun 7, 2022
a1a9e83
Revert "Make CompatData type's properties all optional for internal t…
queengooborg Jun 7, 2022
9c457fd
Update type checks
queengooborg Jun 7, 2022
6b0d767
Convert type generator to TypeScript
queengooborg Jun 7, 2022
c37ce37
Fix TypeScript issues with migration script
queengooborg Jun 7, 2022
70b1ac6
Mark browser.upstream as BrowserName
queengooborg Jun 7, 2022
22d8114
Improve typedefs for scripts/fix/
queengooborg Jun 7, 2022
fa63663
Install @types/deep-diff
queengooborg Jun 8, 2022
47c9f85
Convert remaining scripts
queengooborg Jun 8, 2022
60a4871
Merge branch 'main' into typescript/convert
queengooborg Jun 8, 2022
ea66b97
Merge branch 'main' into typescript/convert
queengooborg Jun 8, 2022
2ac0878
Convert linters
queengooborg Jun 8, 2022
272c016
Fix ESLint issues
queengooborg Jun 8, 2022
f5b48f7
Update types and JSDoc definitions
queengooborg Jun 8, 2022
31dcc35
Merge remote-tracking branch 'upstream/main' into typescript/convert
queengooborg Jun 8, 2022
f46cbd7
Merge branch 'main' into typescript/convert
queengooborg Jun 8, 2022
4da386f
Ensure generate-types doesn't depend on its own output
queengooborg Jun 8, 2022
d771be3
Fix traverse script
queengooborg Jun 8, 2022
a101027
Fix key types
queengooborg Jun 8, 2022
320a6e7
Partially fix test-consistency
queengooborg Jun 8, 2022
1ac01bf
Merge branch 'main' into typescript/convert
queengooborg Jun 8, 2022
e3adc08
Fix test-consistency
queengooborg Jun 8, 2022
533cd76
Merge branch 'main' into typescript/convert
queengooborg Jun 8, 2022
e658870
Define module @desertnet/html-parser
queengooborg Jun 8, 2022
583ef63
Fix up the linters
queengooborg Jun 8, 2022
764f7ad
Allow importing JSON
queengooborg Jun 8, 2022
2a8e2f2
Explicitly declare any
queengooborg Jun 8, 2022
332cf7c
Declare better-ajv-errors module
queengooborg Jun 8, 2022
8c49486
Fix test-versions
queengooborg Jun 8, 2022
9e6da1c
Remove unused imports
queengooborg Jun 8, 2022
443ceaf
Fix config
queengooborg Jun 9, 2022
0dffcac
Fix remaining issue
queengooborg Jun 9, 2022
824e147
Tweak type generation
queengooborg Jun 9, 2022
a54b867
Apply suggested changes
queengooborg Jun 9, 2022
7b71cd2
Merge branch 'main' into typescript/convert
queengooborg Jun 9, 2022
b0e972e
Merge branch 'main' into typescript/convert
queengooborg Jun 9, 2022
064c37b
Merge branch 'main' into typescript/convert
queengooborg Jun 10, 2022
9d2db09
Apply suggested changes
queengooborg Jun 10, 2022
ac746f7
Merge branch 'main' into typescript/convert
queengooborg Jun 10, 2022
b2981d1
Apply suggested changes
queengooborg Jun 11, 2022
97c2d9c
Merge branch 'main' into typescript/convert
queengooborg Jun 11, 2022
72d2810
Merge branch 'main' into typescript/convert
queengooborg Jun 12, 2022
6de8c31
Merge branch 'main' into typescript/convert
queengooborg Jun 12, 2022
2103f5d
Merge branch 'main' into typescript/convert
queengooborg Jun 12, 2022
eada124
Fix linting issues
queengooborg Jun 12, 2022
df98371
Fix typescript issues
queengooborg Jun 12, 2022
def7be6
Update unittest
queengooborg Jun 12, 2022
d563890
Remove unused imports
queengooborg Jun 12, 2022
9ea40e8
Merge branch 'main' into typescript/convert
queengooborg Jun 14, 2022
773c83f
Fix TypeScript issues
queengooborg Jun 14, 2022
6247d74
Fix formatting
queengooborg Jun 14, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .c8rc.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"**/.nyc_output/**",
"**/coverage/**",
"**/node_modules/**",
"**/**.test.js"
"**/**.test.ts"
]
}
13 changes: 9 additions & 4 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,23 @@
"jest": true,
"node": true
},
"plugins": ["prettier"],
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"plugins": ["@typescript-eslint", "prettier"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@babel/eslint-parser",
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"rules": {
"prettier/prettier": "error"
"prettier/prettier": "error",
"@typescript-eslint/no-explicit-any": "off"
}
}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ yarn.lock
.nyc_output/
coverage.lcov
coverage/
types.d.ts
types/types.d.ts
4 changes: 4 additions & 0 deletions .mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"loader": "ts-node/esm",
"extensions": ["ts", "tsx"]
}
5 changes: 0 additions & 5 deletions external.d.ts

This file was deleted.

17 changes: 10 additions & 7 deletions index.js → index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
/* This file is a part of @mdn/browser-compat-data
* See LICENSE file for more information. */

import fs from 'node:fs';
import { CompatData } from './types/types.js';

import fs from 'node:fs/promises';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

Expand All @@ -17,19 +19,20 @@ const dirname = fileURLToPath(new URL('.', import.meta.url));
* @param {string[]} dirs The directories to load
* @returns {object} All of the browser compatibility data
*/
function load(...dirs) {
let result = {};
async function load(...dirs: string[]) {
const result = {};

for (const dir of dirs) {
const paths = new fdir()
.withBasePath()
.filter((fp) => fp.endsWith('.json'))
.crawl(path.join(dirname, dir))
.sync();
.sync() as string[];

for (const fp of paths) {
try {
extend(result, JSON.parse(fs.readFileSync(fp)));
const contents = await fs.readFile(fp);
extend(result, JSON.parse(contents.toString('utf8')));
} catch (e) {
// Skip invalid JSON. Tests will flag the problem separately.
continue;
Expand All @@ -40,7 +43,7 @@ function load(...dirs) {
return result;
}

export default load(
export default (await load(
'api',
'browsers',
'css',
Expand All @@ -51,4 +54,4 @@ export default load(
'svg',
'webdriver',
'webextensions',
);
)) as CompatData;