mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
dea9730503
Two Factor Authentication for Staff GitOrigin-RevId: 7028e93cb4a4cd88c138a52b0528817056b930d9
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
const path = require('path')
|
|
|
|
const BASE_PATH = 'frontend/js/'
|
|
|
|
function getRelativePath(importPath, filePath) {
|
|
// Ignore existing relative paths
|
|
if (importPath.startsWith('.')) {
|
|
return importPath
|
|
}
|
|
// Ignore npm deps (should be absolute)
|
|
if (
|
|
importPath.startsWith('crypto-js') ||
|
|
importPath.startsWith('moment') ||
|
|
importPath.startsWith('algoliasearch') ||
|
|
importPath.startsWith('qrcode')
|
|
) {
|
|
return importPath
|
|
}
|
|
// Ignore aliased paths (handled specially by webpack)
|
|
if (
|
|
importPath.startsWith('libs/') ||
|
|
importPath.startsWith('ace/') ||
|
|
importPath.startsWith('fineuploader')
|
|
) {
|
|
return importPath
|
|
}
|
|
|
|
const relativePath = path.relative(filePath, `${BASE_PATH}/${importPath}/`)
|
|
// Strip leading dots if importing at same level, because path.relative
|
|
// likes to use ../my-file.js instead of ./my-file.js
|
|
if (/^\.{2}\/\w/.test(relativePath)) {
|
|
return relativePath.substring(1)
|
|
} else {
|
|
return relativePath.substring(3)
|
|
}
|
|
}
|
|
|
|
export default function(file, api) {
|
|
const j = api.jscodeshift
|
|
const filePath = file.path
|
|
|
|
return j(file.source)
|
|
.find(j.CallExpression, {
|
|
callee: { name: 'define' }
|
|
})
|
|
.replaceWith(node => {
|
|
const defineArgs = node.get('arguments', 0)
|
|
|
|
const deps = defineArgs.get('elements')
|
|
|
|
// Ignore files with no deps
|
|
if (!deps.value) {
|
|
return node.value
|
|
}
|
|
|
|
const elems = deps.map(e => {
|
|
return j.literal(getRelativePath(e.node.value, filePath))
|
|
})
|
|
const newDeps = j.arrayExpression(elems)
|
|
|
|
const callee = node.get('callee').value
|
|
const cb = node.get('arguments', 1).value
|
|
return j.callExpression(callee, [newDeps, cb])
|
|
})
|
|
.toSource()
|
|
}
|