#!/usr/bin/env node
const { includeTypes } = require('./utils')
const shell = require('shelljs')
const { join } = require('path')
shell.set('-v') // verbose
shell.set('-e') // any error is fatal
// 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 = join('node_modules', '@types', folder)
shell.cp('-R', source, 'types')
})
// fix paths to Chai, jQuery and other types to be relative
shell.sed(
'-i',
'',
'',
join('types', 'chai-jquery', 'index.d.ts')
)
shell.sed(
'-i',
'',
'',
join('types', 'chai-jquery', 'index.d.ts')
)
shell.sed(
'-i',
'',
'',
join('types', 'sinon-chai', 'index.d.ts')
)
shell.sed(
'-i',
'',
'',
join('types', 'sinon-chai', 'index.d.ts')
)
// also use relative import for sinon-chai
shell.sed(
'-i',
'from \'sinon\';',
'from \'../sinon\';',
join('types', 'sinon-chai', 'index.d.ts')
)