mirror of
https://github.com/cypress-io/cypress.git
synced 2026-02-22 06:59:30 -06:00
Added TypeScript type checker + Fixed type errors. (#5780)
* Added type_check.js
* Now checks cli, too.
* Ignored a line that should fail.
* Removed cli shims and post-install.
* Updated @types/chai to fix type error.
* Fixed keyboard type errors.
* Updated typescript to 3.7.2 to fix window.Node error in dom/document.
* Removed tsconfig errors that caused type errors in reporter and runner.
* Ignored error test by dtslint. Becaust it's done by type_check.js
* Added npm command.
* Added it to CI.
* Added skipLibCheck option.
* Removed checking chai folder existence.
copy of chai is unnecessary.
* Added 'ignore-progress' option for CI.
* Show success message when type check is finished successfully.
* Use ignore-progress option on CI.
* Moved type definitions from devDependencies to dependencies.
* Fixed new type errors after rebase.
* Updated type errors.
* Removed cli. Because its types are checked by dtslint.
* type_check -> type-check for consistency.
* Updated json-schema.
* Updated blob-util.
* Fix wrong command in CI.
* Revert "Updated blob-util."
This reverts commit e46549af54.
Because it's a breaking change.
* Remove copies of @types if exists.
* Fix stream buffer type error.
* Fix type errors in ui-components.
* Fix type failure.
* Fix lint error.
* Fix type errors
* Regenerate yarn.lock
* Fix type error.
* Fix type failures.
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
This commit is contained in:
@@ -1,64 +1,28 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('../lib/fs')
|
||||
const path = require('path')
|
||||
|
||||
const { includeTypes } = require('./utils')
|
||||
const shell = require('shelljs')
|
||||
const { join } = require('path')
|
||||
const resolvePkg = require('resolve-pkg')
|
||||
/**
|
||||
* https://github.com/cypress-io/cypress/pull/5780
|
||||
* Folder names in "node_modules/@types" that were copied to cli/types to generate index.d.ts.
|
||||
* They cause type errors in type checker. So, they should be removed.
|
||||
*/
|
||||
const includeTypes = [
|
||||
'blob-util',
|
||||
'bluebird',
|
||||
'lodash',
|
||||
'mocha',
|
||||
'minimatch',
|
||||
'sinon',
|
||||
'sinon-chai',
|
||||
'chai',
|
||||
'chai-jquery',
|
||||
'jquery',
|
||||
]
|
||||
|
||||
shell.set('-v') // verbose
|
||||
shell.set('-e') // any error is fatal
|
||||
includeTypes.forEach((t) => {
|
||||
const dir = path.join(__dirname, '../types', t)
|
||||
|
||||
// We include the TypeScript definitions for the bundled 3rd party tools
|
||||
// thus we need to copy them from "dev" dependencies into our types folder
|
||||
// and we need to sometimes tweak these types files to use relative paths
|
||||
// This ensures that globals like Cypress.$, Cypress._ etc are property typed
|
||||
// yet we do not install "@types/.." packages with "npm install cypress"
|
||||
// because they can conflict with user's own libraries
|
||||
|
||||
includeTypes.forEach((folder) => {
|
||||
const source = resolvePkg(`@types/${folder}`, { cwd: join(__dirname, '..', '..') })
|
||||
|
||||
shell.cp('-R', source, 'types')
|
||||
if (fs.existsSync(dir)) {
|
||||
fs.removeSync(dir)
|
||||
}
|
||||
})
|
||||
|
||||
// jQuery v3.3.x includes "dist" folder that just references back to itself
|
||||
// causing dtslint to think there are double definitions. Remove that folder.
|
||||
const typesJqueryDistFolder = join('types', 'jquery', 'dist')
|
||||
|
||||
shell.rm('-rf', typesJqueryDistFolder)
|
||||
|
||||
// fix paths to Chai, jQuery and other types to be relative
|
||||
shell.sed(
|
||||
'-i',
|
||||
'<reference types="chai" />',
|
||||
'<reference path="../chai/index.d.ts" />',
|
||||
join('types', 'chai-jquery', 'index.d.ts'),
|
||||
)
|
||||
|
||||
shell.sed(
|
||||
'-i',
|
||||
'<reference types="jquery" />',
|
||||
'<reference path="../jquery/index.d.ts" />',
|
||||
join('types', 'chai-jquery', 'index.d.ts'),
|
||||
)
|
||||
|
||||
const sinonChaiFilename = join('types', 'sinon-chai', 'index.d.ts')
|
||||
|
||||
shell.sed(
|
||||
'-i',
|
||||
'<reference types="chai" />',
|
||||
'<reference path="../chai/index.d.ts" />',
|
||||
sinonChaiFilename,
|
||||
)
|
||||
|
||||
// also use relative import via path for sinon-chai
|
||||
// there is reference comment line we need to fix to be relative
|
||||
shell.sed(
|
||||
'-i',
|
||||
'<reference types="sinon" />',
|
||||
'<reference path="../sinon/index.d.ts" />',
|
||||
sinonChaiFilename,
|
||||
)
|
||||
|
||||
// and an import sinon line to be changed to relative path
|
||||
shell.sed('-i', 'from \'sinon\';', 'from \'../sinon\';', sinonChaiFilename)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const { includeTypes } = require('./utils')
|
||||
const { join } = require('path')
|
||||
const shell = require('shelljs')
|
||||
|
||||
shell.set('-v') // verbose
|
||||
@@ -15,12 +13,6 @@ shell.cp('NPM_README.md', 'build/README.md')
|
||||
shell.cp('.release.json', 'build/.release.json')
|
||||
// copies our typescript definitions
|
||||
shell.cp('-R', 'types/*.ts', 'build/types/')
|
||||
// copies 3rd party typescript definitions
|
||||
includeTypes.forEach((folder) => {
|
||||
const source = join('types', folder)
|
||||
|
||||
shell.cp('-R', source, 'build/types')
|
||||
})
|
||||
|
||||
shell.exec('babel lib -d build/lib')
|
||||
shell.exec('babel index.js -o build/index.js')
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
/**
|
||||
* Folder names in "node_modules/@types" that we should include
|
||||
* when we bundle Cypress NPM package. These folder have ".d.ts"
|
||||
* definition files that we will need to include with our NPM package.
|
||||
*/
|
||||
const includeTypes = [
|
||||
'blob-util',
|
||||
'bluebird',
|
||||
'lodash',
|
||||
'mocha',
|
||||
'minimatch',
|
||||
'sinon',
|
||||
'sinon-chai',
|
||||
'chai',
|
||||
'chai-jquery',
|
||||
'jquery',
|
||||
]
|
||||
|
||||
module.exports = { includeTypes }
|
||||
Reference in New Issue
Block a user