chore: commit generated types to the repository (#4826)

Also check them during `npm run lint` and regenerate during `npm run watch`.
This commit is contained in:
Dmitry Gozman 2020-12-26 13:52:05 -08:00 committed by GitHub
parent 277d255fc3
commit 9dd982c508
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 24827 additions and 10 deletions

1
.gitignore vendored
View File

@ -12,7 +12,6 @@ yarn.lock
/node6
/src/generated/*
lib/
/types/*
jest-report.json
drivers/
/docs/api.json

View File

@ -19,13 +19,12 @@
"tsc-installer": "tsc -p ./src/install/tsconfig.json",
"doc": "node utils/doclint/cli.js",
"test-infra": "folio utils/doclint/check_public_api/test/test.js && folio utils/doclint/preprocessor/test.js",
"lint": "npm run eslint && npm run tsc && npm run doc && npm run check-deps && npm run generate-channels && npm run test-types && npm run test-infra",
"lint": "npm run eslint && npm run tsc && npm run doc && npm run check-deps && npm run generate-channels && node utils/generate_types/ --check-clean && npm run test-types && npm run test-infra",
"clean": "rimraf lib && rimraf types",
"prepare": "node install-from-github.js",
"build": "node utils/runWebpack.js --mode='development' && tsc -p . && npm run generate-types && npm run generate-api-json",
"build": "node utils/runWebpack.js --mode='development' && tsc -p . && npm run generate-api-json",
"watch": "node utils/watch.js",
"test-types": "npm run generate-types && npx -p typescript@3.7.5 tsc -p utils/generate_types/test/tsconfig.json && npm run typecheck-tests",
"generate-types": "node utils/generate_types/",
"test-types": "node utils/generate_types/ && npx -p typescript@3.7.5 tsc -p utils/generate_types/test/tsconfig.json && npm run typecheck-tests",
"generate-channels": "node utils/generate_channels.js",
"generate-api-json": "node utils/doclint/generateApiJson.js > docs/api.json",
"typecheck-tests": "tsc -p ./test/",

16834
types/protocol.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

101
types/trace.d.ts vendored Normal file
View File

@ -0,0 +1,101 @@
/**
* Copyright (c) Microsoft Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export type ContextCreatedTraceEvent = {
type: 'context-created',
browserName: string,
contextId: string,
deviceScaleFactor: number,
isMobile: boolean,
viewportSize?: { width: number, height: number },
};
export type ContextDestroyedTraceEvent = {
type: 'context-destroyed',
contextId: string,
};
export type NetworkResourceTraceEvent = {
type: 'resource',
contextId: string,
pageId: string,
frameId: string,
url: string,
contentType: string,
responseHeaders: { name: string, value: string }[],
sha1: string,
};
export type PageCreatedTraceEvent = {
type: 'page-created',
contextId: string,
pageId: string,
};
export type PageDestroyedTraceEvent = {
type: 'page-destroyed',
contextId: string,
pageId: string,
};
export type PageVideoTraceEvent = {
type: 'page-video',
contextId: string,
pageId: string,
fileName: string,
};
export type ActionTraceEvent = {
type: 'action',
contextId: string,
action: string,
pageId?: string,
selector?: string,
label?: string,
value?: string,
startTime?: number,
endTime?: number,
logs?: string[],
snapshot?: {
sha1: string,
duration: number,
},
stack?: string,
error?: string,
};
export type TraceEvent =
ContextCreatedTraceEvent |
ContextDestroyedTraceEvent |
PageCreatedTraceEvent |
PageDestroyedTraceEvent |
PageVideoTraceEvent |
NetworkResourceTraceEvent |
ActionTraceEvent;
export type FrameSnapshot = {
frameId: string,
url: string,
html: string,
resourceOverrides: { url: string, sha1: string }[],
};
export type PageSnapshot = {
viewportSize?: { width: number, height: number },
// First frame is the main frame.
frames: FrameSnapshot[],
};

7866
types/types.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -99,7 +99,7 @@ function checkSources(sources) {
parent = parent.parent;
className = path.basename(parent.fileName, '.js');
}
if (className && !excludeClasses.has(className) && !fileName.endsWith('/protocol.ts')) {
if (className && !excludeClasses.has(className) && !fileName.endsWith('/protocol.ts') && !fileName.endsWith('/protocol.d.ts') && !fileName.endsWith('/types.d.ts')) {
excludeClasses.add(className);
classes.push(serializeClass(className, symbol, node));
inheritance.set(className, parentClasses(node));

View File

@ -27,12 +27,14 @@ const objectDefinitions = [];
const handledMethods = new Set();
/** @type {Documentation} */
let documentation;
let hadChanges = false;
(async function() {
const typesDir = path.join(PROJECT_DIR, 'types');
if (!fs.existsSync(typesDir))
fs.mkdirSync(typesDir)
fs.writeFileSync(path.join(typesDir, 'protocol.d.ts'), fs.readFileSync(path.join(PROJECT_DIR, 'src', 'server', 'chromium', 'protocol.ts')), 'utf8');
fs.writeFileSync(path.join(typesDir, 'trace.d.ts'), fs.readFileSync(path.join(PROJECT_DIR, 'src', 'trace', 'traceTypes.ts')), 'utf8');
writeFile(path.join(typesDir, 'protocol.d.ts'), fs.readFileSync(path.join(PROJECT_DIR, 'src', 'server', 'chromium', 'protocol.ts'), 'utf8'));
writeFile(path.join(typesDir, 'trace.d.ts'), fs.readFileSync(path.join(PROJECT_DIR, 'src', 'trace', 'traceTypes.ts'), 'utf8'));
const browser = await chromium.launch();
const page = await browser.newPage();
const api = await Source.readFile(path.join(PROJECT_DIR, 'docs', 'api.md'));
@ -75,12 +77,22 @@ ${generateDevicesTypes()}
`;
for (const [key, value] of Object.entries(exported))
output = output.replace(new RegExp('\\b' + key + '\\b', 'g'), value);
fs.writeFileSync(path.join(typesDir, 'types.d.ts'), output, 'utf8');
writeFile(path.join(typesDir, 'types.d.ts'), output);
process.exit(hadChanges && process.argv.includes('--check-clean') ? 1 : 0);
})().catch(e => {
console.error(e);
process.exit(1);
});
function writeFile(filePath, content) {
const existing = fs.readFileSync(filePath, 'utf8');
if (existing === content)
return;
hadChanges = true;
console.error(`Writing //${path.relative(PROJECT_DIR, filePath)}`);
fs.writeFileSync(filePath, content, 'utf8');
}
/**
* @param {string} overriddes
*/

View File

@ -25,7 +25,13 @@ const spawns = [
process.on('exit', () => spawns.forEach(s => s.kill()));
runOnChanges(['src/protocol/protocol.yml'], 'utils/generate_channels.js');
runOnChanges(['docs/api.md', 'utils/generate_types/overrides.d.ts', 'utils/generate_types/exported.json'], 'utils/generate_types/index.js');
runOnChanges([
'docs/api.md',
'utils/generate_types/overrides.d.ts',
'utils/generate_types/exported.json',
'src/server/chromium/protocol.ts',
'src/trace/traceTypes.ts',
], 'utils/generate_types/index.js');
/**
* @param {string[][]} paths