Best JavaScript code snippet using playwright-internal
typescript-compiler.js
Source:typescript-compiler.js
...234 // Define files since if it's not defined235 // validation throws an exception.236 const files = tsconfig.files || tsFiles;237 tsconfig.files = files;238 validateTsConfig(tsconfig);239 } catch(err) {240 throw new Error(`Format of the tsconfig is invalid: ${err}`);241 }242 const exclude = tsconfig.exclude || [];243 try {244 const regExp = getExcludeRegExp(exclude);245 tsconfig.exclude = regExp && new RegExp(regExp);246 } catch(err) {247 throw new Error(`Format of an exclude path is invalid: ${err}`);248 }249 return tsconfig;250 }251 _filterByDefault(inputFiles) {252 inputFiles = inputFiles.filter(inputFile => {...
index.js
Source:index.js
1'use strict';2import assert from "assert";3import ts from "typescript";4import _ from "underscore";5import {6 getDefaultCompilerOptions,7 convertCompilerOptionsOrThrow,8 validateTsConfig,9 presetCompilerOptions,10} from "./options";11import CompileService, { createCSResult } from "./compile-service";12import ServiceHost from "./compile-service-host";13import sourceHost from "./files-source-host";14import { CompileCache, FileHashCache } from "./cache";15import logger from "./logger";16import { deepHash } from "./utils";17import { getExcludeRegExp } from "./ts-utils";18import { RefsChangeType, evalRefsChangeMap } from './refs';19let compileCache, fileHashCache;20export function setCacheDir(cacheDir) {21 if (compileCache && compileCache.cacheDir === cacheDir) {22 return;23 }24 compileCache = new CompileCache(cacheDir);25 fileHashCache = new FileHashCache(cacheDir);26}27function getConvertedDefault(arch) {28 return convertCompilerOptionsOrThrow(29 getDefaultCompilerOptions(arch));30}31function isES6Target(target) {32 return /es6/i.test(target) || /es2015/i.test(target);33}34function evalCompilerOptions(arch, opt) {35 const defOpt = getDefaultCompilerOptions(arch);36 const resOpt = opt || defOpt;37 _.defaults(resOpt, defOpt);38 // Add target to the lib since39 // if target: "es6" and lib: ["es5"],40 // it won't compile properly.41 if (resOpt.target) {42 resOpt.lib.push(resOpt.target);43 }44 resOpt.lib = _.union(resOpt.lib, defOpt.lib);45 // Impose use strict for ES6 target.46 if (opt && opt.noImplicitUseStrict !== undefined) {47 if (isES6Target(resOpt.target)) {48 resOpt.noImplicitUseStrict = false;49 }50 }51 return resOpt;52}53function lazyInit() {54 if (! compileCache) {55 setCacheDir();56 }57}58// A map of TypeScript Language Services59// per each Meteor architecture.60const serviceMap = {};61function getCompileService(arch) {62 if (! arch) arch = "global";63 if (serviceMap[arch]) return serviceMap[arch];64 const serviceHost = new ServiceHost(fileHashCache);65 const service = new CompileService(serviceHost);66 serviceMap[arch] = service;67 return service;68}69/**70 * Class that represents an incremental TypeScript build (compilation).71 * For the typical usage in a Meteor compiler plugin,72 * see a TypeScript compiler that based on this NPM:73 * https://github.com/barbatus/typescript-compiler/blob/master/typescript-compiler.js#L5874 *75 * @param filePaths Paths of the files to compile.76 * @param getFileContent Method that takes a file path77 * and returns that file's content. To be used to pass file contents78 * from a Meteor compiler plugin to the TypeScript compiler.79 * @param options Object with the options of the TypeSctipt build.80 * Available options:81 * - compilerOptions: TypeScript compiler options82 * - arch: Meteor file architecture83 * - useCache: whether to use cache 84 */85export class TSBuild {86 constructor(filePaths, getFileContent, options = {}) {87 logger.debug("new build");88 const compilerOptions = evalCompilerOptions(89 options.arch, options.compilerOptions);90 let resOptions = { ...options, compilerOptions };91 resOptions = validateAndConvertOptions(resOptions);92 resOptions.compilerOptions = presetCompilerOptions(93 resOptions.compilerOptions);94 this.options = resOptions;95 lazyInit();96 sourceHost.setSource(getFileContent);97 const pset = logger.newProfiler("set files");98 const compileService = getCompileService(resOptions.arch);99 const serviceHost = compileService.getHost();100 serviceHost.setFiles(filePaths, resOptions);101 pset.end();102 const prefs = logger.newProfiler("refs eval");103 this.refsChangeMap = evalRefsChangeMap(filePaths,104 (filePath) => serviceHost.isFileChanged(filePath),105 (filePath) => {106 const csResult = compileCache.getResult(filePath,107 this.getFileOptions(filePath));108 return csResult ? csResult.dependencies : null;109 }, resOptions.evalDepth || 1);110 prefs.end();111 }112 getFileOptions(filePath) {113 // Omit arch to avoid re-compiling same files aimed for diff arch.114 // Prepare file options which besides general ones115 // should contain a module name.116 const options = _.omit(this.options, "arch", "useCache", "evalDepth");117 const module = options.compilerOptions.module;118 const moduleName = module === "none" ? null :119 ts.removeFileExtension(filePath);120 return { options, moduleName };121 }122 emit(filePath) {123 logger.debug("emit file %s", filePath);124 const options = this.options;125 const compileService = getCompileService(options.arch);126 const serviceHost = compileService.getHost();127 if (!serviceHost.hasFile(filePath)) {128 throw new Error(`File ${filePath} not found`);129 }130 const csOptions = this.getFileOptions(filePath);131 function compile() {132 const pcomp = logger.newProfiler(`compile ${filePath}`);133 const result = compileService.compile(filePath, csOptions.moduleName);134 pcomp.end();135 return result;136 }137 const useCache = options.useCache;138 if (useCache === false) {139 return compile();140 }141 const isTypingsChanged = serviceHost.isTypingsChanged();142 const pget = logger.newProfiler("compileCache get");143 const result = compileCache.get(filePath, csOptions, (cacheResult) => {144 if (!cacheResult) {145 logger.debug("cache miss: %s", filePath);146 return compile();147 }148 const refsChange = this.refsChangeMap[filePath];149 // Referenced files have changed, which may need recompilation in some cases.150 // See https://github.com/Urigo/angular2-meteor/issues/102#issuecomment-191411701151 if (refsChange === RefsChangeType.FILES) {152 logger.debug("recompile: %s", filePath);153 return compile();154 }155 // Diagnostics re-evaluation.156 // First case: file is not changed but contains unresolved modules157 // error from previous build (some node modules might have installed).158 // Second case: dependency modules or typings have changed.159 const csResult = createCSResult(filePath, cacheResult);160 const tsDiag = csResult.diagnostics;161 const unresolved = tsDiag.hasUnresolvedModules();162 if (unresolved || refsChange !== RefsChangeType.NONE || isTypingsChanged) {163 logger.debug("diagnostics re-evaluation: %s", filePath);164 const pdiag = logger.newProfiler("diags update");165 csResult.upDiagnostics(166 compileService.getDiagnostics(filePath));167 pdiag.end();168 return csResult;169 }170 // Cached result is up to date, no action required.171 logger.debug("file from cached: %s", filePath);172 return null;173 });174 pget.end();175 return result;176 }177}178export function compile(fileContent, options = {}) {179 if (typeof fileContent !== "string") {180 throw new Error("fileContent should be a string");181 }182 let optPath = options.filePath;183 if (!optPath) {184 optPath = deepHash(fileContent, options);185 const tsx = options.compilerOptions && options.compilerOptions.jsx;186 optPath += tsx ? ".tsx" : ".ts";187 }188 const getFileContent = (filePath) => {189 if (filePath === optPath) {190 return fileContent;191 }192 };193 const newBuild = new TSBuild([optPath], getFileContent, options);194 return newBuild.emit(optPath);195};196const validOptions = {197 "compilerOptions": "Object",198 // Next three to be used mainly199 // in the compile method above.200 "filePath": "String",201 "typings": "Array",202 "arch": "String",203 "useCache": "Boolean",204 "evalDepth": "Number",205};206const validOptionsMsg =207 "Valid options are compilerOptions, filePath, and typings.";208function checkType(option, optionName) {209 if (!option) return true;210 return option.constructor.name === validOptions[optionName];211}212export function validateAndConvertOptions(options) {213 if (!options) return null;214 // Validate top level options.215 for (const option in options) {216 if (options.hasOwnProperty(option)) {217 if (validOptions[option] === undefined) {218 throw new Error(`Unknown option: ${option}.\n${validOptionsMsg}`);219 }220 if (! checkType(options[option], option)) {221 throw new Error(`${option} should be of type ${validOptions[option]}`);222 }223 }224 }225 const resOptions = _.clone(options);226 // Validate and convert compilerOptions.227 if (options.compilerOptions) {228 resOptions.compilerOptions = convertCompilerOptionsOrThrow(229 options.compilerOptions);230 }231 return resOptions;232}233export function getDefaultOptions(arch) {234 return {235 compilerOptions: getDefaultCompilerOptions(arch),236 };237}238exports.validateTsConfig = validateTsConfig;...
options.spec.js
Source:options.spec.js
...63 "Valid options are compilerOptions, filePath, and typings."));64 });65 it("should validate tsconfig", function() {66 var test = function() {67 meteorTS.validateTsConfig({68 include: "foo"69 });70 };71 expect(test).toThrow();72 });73 it("should have isExternal to be true if ES6 modules are used and " +74 "false in case of internal modules", function() {75 var result = meteorTS.compile(testCodeLine, getOptions());76 expect(result.isExternal).toEqual(true);77 var codeLine = "module foo { export var fooVar = \'fooVar\'}";78 var result = meteorTS.compile(codeLine, getOptions());79 expect(result.isExternal).toEqual(false);80 });81 it("should compile React if jsx set", function() {...
options.js
Source:options.js
...67 }68 return result.options;69}70exports.convertCompilerOptionsOrThrow = convertCompilerOptionsOrThrow;71function validateTsConfig(configJson) {72 var result = ts.parseJsonConfigFileContent(configJson, ts.sys, "");73 if (result.errors && result.errors.length) {74 throw new Error(result.errors[0].messageText);75 }76}...
Using AI Code Generation
1const { validateTsConfig } = require('@playwright/test/lib/utils/validateTsConfig');2const path = require('path');3const tsConfigPath = path.resolve(__dirname, './tsconfig.json');4validateTsConfig(tsConfigPath);5const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');6const path = require('path');7const tsConfigPath = path.resolve(__dirname, './tsconfig.json');8validateTsConfig(tsConfigPath);
Using AI Code Generation
1const { validateTsConfig } = require('playwright-core/lib/utils/utils');2const path = require('path');3validateTsConfig(path.join(__dirname, 'tsconfig.json'));4const { validateTsConfig } = require('playwright-core/lib/utils/utils');5const path = require('path');6validateTsConfig(path.join(__dirname, 'tsconfig.json'));7const { validateTsConfig } = require('playwright-core/lib/utils/utils');8const path = require('path');9validateTsConfig(path.join(__dirname, 'tsconfig.json'));10const { validateTsConfig } = require('playwright-core/lib/utils/utils');11const path = require('path');12validateTsConfig(path.join(__dirname, 'tsconfig.json'));13const { validateTsConfig } = require('playwright-core/lib/utils/utils');14const path = require('path');15validateTsConfig(path.join(__dirname, 'tsconfig.json'));16const { validateTsConfig } = require('playwright-core/lib/utils/utils');17const path = require('path');18validateTsConfig(path.join(__dirname, 'tsconfig.json'));19const { validateTsConfig } = require('playwright-core/lib/utils/utils');20const path = require('path');21validateTsConfig(path.join(__dirname, 'tsconfig.json'));22const { validateTsConfig } = require('playwright-core/lib/utils/utils');23const path = require('path');24validateTsConfig(path.join(__dirname, 'tsconfig.json'));25const { validateTsConfig } = require('playwright-core/lib/utils/utils');26const path = require('path');27validateTsConfig(path.join(__dirname, 'tsconfig.json'));28const { validateTsConfig } = require('playwright-core/lib/utils/utils');29const path = require('path');
Using AI Code Generation
1const { validateTsConfig } = require('playwright/lib/server/validateTsConfig');2const { createRequire } = require('module');3const require = createRequire(import.meta.url);4const tsConfig = require('./tsconfig.json');5const errors = validateTsConfig(tsConfig);6if (errors.length > 0) {7 console.log('TS config is not valid!');8 errors.forEach(e => console.log(e));9 process.exit(1);10}11{12 "compilerOptions": {13 "paths": {14 }15 },16}
Using AI Code Generation
1const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');2validateTsConfig('./tsconfig.json', 'tsconfig.json');3const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');4validateTsConfig('./tsconfig.json', 'tsconfig.json');5const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');6validateTsConfig('./tsconfig.json', 'tsconfig.json');7const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');8validateTsConfig('./tsconfig.json', 'tsconfig.json');9const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');10validateTsConfig('./tsconfig.json', 'tsconfig.json');11const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');12validateTsConfig('./tsconfig.json', 'tsconfig.json');13const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');14validateTsConfig('./tsconfig.json', 'tsconfig.json');15const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');16validateTsConfig('./tsconfig.json', 'tsconfig.json');17const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');18validateTsConfig('./tsconfig.json', 'tsconfig.json');19const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');20validateTsConfig('./tsconfig.json', 'tsconfig.json');21const { validateTsConfig } = require('playwright-core/lib/utils/validateTsConfig');22validateTsConfig('./tsconfig.json', 'tsconfig.json');
Using AI Code Generation
1const { WebKit } = require('playwright');2const webkit = new WebKit();3const webkitServer = webkit._browserServer;4const webkitInternal = webkitServer._browser;5const tsConfig = { ... };6const result = await webkitInternal.validateTsConfig(tsConfig);7console.log(result);8const { validateTsConfig } = require('playwright/lib/cli/cli');9const { WebKit } = require('playwright');10const webkit = new WebKit();11const webkitServer = webkit._browserServer;12const webkitInternal = webkitServer._browser;13const tsConfig = { ... };14const result = await validateTsConfig(tsConfig);15console.log(result);16const { validateTsConfig } = require('playwright/lib/runner/cli');17const { WebKit } = require('playwright');18const webkit = new WebKit();19const webkitServer = webkit._browserServer;20const webkitInternal = webkitServer._browser;21const tsConfig = { ... };22const result = await validateTsConfig(tsConfig);23console.log(result);24const { validateTsConfig } = require('playwright/lib/test/cli');25const { WebKit } = require('playwright');26const webkit = new WebKit();27const webkitServer = webkit._browserServer;28const webkitInternal = webkitServer._browser;29const tsConfig = { ... };30const result = await validateTsConfig(tsConfig);31console.log(result);32const { validateTsConfig } = require('playwright/lib/lab/cli');33const { WebKit } = require('playwright');34const webkit = new WebKit();35const webkitServer = webkit._browserServer;36const webkitInternal = webkitServer._browser;37const tsConfig = { ... };38const result = await validateTsConfig(tsConfig);39console.log(result);40const { validateTsConfig } = require('playwright/lib/inspector/cli');41const { WebKit } =
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!