Compiles TypeScript into JavaScript.
@link http://www.typescriptlang.org/ @author Jarrod Nettles <jarrod.nettles@icloud.com>
Expanded class hierarchy of TypeScriptFilter
class TypeScriptFilter extends BaseNodeFilter {
private $tscBin;
private $nodeBin;
public function __construct($tscBin = '/usr/bin/tsc', $nodeBin = null) {
$this->tscBin = $tscBin;
$this->nodeBin = $nodeBin;
}
public function filterLoad(AssetInterface $asset) {
$pb = $this
->createProcessBuilder($this->nodeBin ? array(
$this->nodeBin,
$this->tscBin,
) : array(
$this->tscBin,
));
$templateName = basename($asset
->getSourcePath());
$inputDirPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . uniqid('input_dir');
$inputPath = $inputDirPath . DIRECTORY_SEPARATOR . $templateName . '.ts';
$outputPath = tempnam(sys_get_temp_dir(), 'output');
mkdir($inputDirPath);
file_put_contents($inputPath, $asset
->getContent());
$pb
->add($inputPath)
->add('--out')
->add($outputPath);
$proc = $pb
->getProcess();
$code = $proc
->run();
unlink($inputPath);
rmdir($inputDirPath);
if (0 !== $code) {
if (file_exists($outputPath)) {
unlink($outputPath);
}
throw FilterException::fromProcess($proc)
->setInput($asset
->getContent());
}
if (!file_exists($outputPath)) {
throw new \RuntimeException('Error creating output file.');
}
$compiledJs = file_get_contents($outputPath);
unlink($outputPath);
$asset
->setContent($compiledJs);
}
public function filterDump(AssetInterface $asset) {
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BaseNodeFilter:: |
private | property | ||
BaseNodeFilter:: |
public | function | ||
BaseNodeFilter:: |
protected | function |
Creates a new process builder. Overrides BaseProcessFilter:: |
|
BaseNodeFilter:: |
public | function | ||
BaseNodeFilter:: |
public | function | ||
BaseProcessFilter:: |
private | property | ||
BaseProcessFilter:: |
protected | function | ||
BaseProcessFilter:: |
public | function | Set the process timeout. | |
TypeScriptFilter:: |
private | property | ||
TypeScriptFilter:: |
private | property | ||
TypeScriptFilter:: |
public | function |
Filters an asset just before it's dumped. Overrides FilterInterface:: |
|
TypeScriptFilter:: |
public | function |
Filters an asset after it has been loaded. Overrides FilterInterface:: |
|
TypeScriptFilter:: |
public | function |