mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									277d255fc3
								
							
						
					
					
						commit
						9dd982c508
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -12,7 +12,6 @@ yarn.lock
 | 
			
		||||
/node6
 | 
			
		||||
/src/generated/*
 | 
			
		||||
lib/
 | 
			
		||||
/types/*
 | 
			
		||||
jest-report.json
 | 
			
		||||
drivers/
 | 
			
		||||
/docs/api.json
 | 
			
		||||
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										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
									
								
							
							
						
						
									
										101
									
								
								types/trace.d.ts
									
									
									
									
										vendored
									
									
										Normal 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
									
								
							
							
						
						
									
										7866
									
								
								types/types.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -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));
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user