Spaces:
Sleeping
Sleeping
| let parts = [process.platform, process.arch]; | |
| if (process.platform === 'linux') { | |
| const { MUSL, familySync } = require('detect-libc'); | |
| const family = familySync(); | |
| if (family === MUSL) { | |
| parts.push('musl'); | |
| } else if (process.arch === 'arm') { | |
| parts.push('gnueabihf'); | |
| } else { | |
| parts.push('gnu'); | |
| } | |
| } else if (process.platform === 'win32') { | |
| parts.push('msvc'); | |
| } | |
| let native; | |
| try { | |
| native = require(`lightningcss-${parts.join('-')}`); | |
| } catch (err) { | |
| native = require(`../lightningcss.${parts.join('-')}.node`); | |
| } | |
| module.exports.transform = wrap(native.transform); | |
| module.exports.transformStyleAttribute = wrap(native.transformStyleAttribute); | |
| module.exports.bundle = wrap(native.bundle); | |
| module.exports.bundleAsync = wrap(native.bundleAsync); | |
| module.exports.browserslistToTargets = require('./browserslistToTargets'); | |
| module.exports.composeVisitors = require('./composeVisitors'); | |
| module.exports.Features = require('./flags').Features; | |
| function wrap(call) { | |
| return (options) => { | |
| if (typeof options.visitor === 'function') { | |
| let deps = []; | |
| options.visitor = options.visitor({ | |
| addDependency(dep) { | |
| deps.push(dep); | |
| } | |
| }); | |
| let result = call(options); | |
| if (result instanceof Promise) { | |
| result = result.then(res => { | |
| if (deps.length) { | |
| res.dependencies ??= []; | |
| res.dependencies.push(...deps); | |
| } | |
| return res; | |
| }); | |
| } else if (deps.length) { | |
| result.dependencies ??= []; | |
| result.dependencies.push(...deps); | |
| } | |
| return result; | |
| } else { | |
| return call(options); | |
| } | |
| }; | |
| } | |