friendica-addons/advancedcontentfilter/vendor/fxp/composer-asset-plugin/Converter/NpmPackageConverter.php

95 lines
3.1 KiB
PHP

<?php
/*
* This file is part of the Fxp Composer Asset Plugin package.
*
* (c) François Pluchino <francois.pluchino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Fxp\Composer\AssetPlugin\Converter;
/**
* Converter for NPM package to composer package.
*
* @author François Pluchino <francois.pluchino@gmail.com>
*/
class NpmPackageConverter extends AbstractPackageConverter
{
/**
* {@inheritdoc}
*/
protected function getMapKeys()
{
$assetType = $this->assetType;
return array(
'name' => array('name', function ($value) use ($assetType) {
return $assetType->formatComposerName(NpmPackageUtil::convertName($value));
}),
'type' => array('type', function () use ($assetType) {
return $assetType->getComposerType();
}),
'version' => array('version', function ($value) use ($assetType) {
return $assetType->getVersionConverter()->convertVersion($value);
}),
'version_normalized' => 'version_normalized',
'description' => 'description',
'keywords' => 'keywords',
'homepage' => 'homepage',
'license' => 'license',
'time' => 'time',
'author' => array('authors', function ($value) {
return NpmPackageUtil::convertAuthor($value);
}),
'contributors' => array('authors', function ($value, $prevValue) {
return NpmPackageUtil::convertContributors($value, $prevValue);
}),
'bin' => array('bin', function ($value) {
return (array) $value;
}),
'dist' => array('dist', function ($value) {
return NpmPackageUtil::convertDist($value);
}),
);
}
/**
* {@inheritdoc}
*/
protected function getMapExtras()
{
return array(
'bugs' => 'npm-asset-bugs',
'files' => 'npm-asset-files',
'main' => 'npm-asset-main',
'man' => 'npm-asset-man',
'directories' => 'npm-asset-directories',
'repository' => 'npm-asset-repository',
'scripts' => 'npm-asset-scripts',
'config' => 'npm-asset-config',
'bundledDependencies' => 'npm-asset-bundled-dependencies',
'optionalDependencies' => 'npm-asset-optional-dependencies',
'engines' => 'npm-asset-engines',
'engineStrict' => 'npm-asset-engine-strict',
'os' => 'npm-asset-os',
'cpu' => 'npm-asset-cpu',
'preferGlobal' => 'npm-asset-prefer-global',
'private' => 'npm-asset-private',
'publishConfig' => 'npm-asset-publish-config',
);
}
/**
* {@inheritdoc}
*/
protected function convertDependency($dependency, $version, array &$vcsRepos, array $composer)
{
$dependency = NpmPackageUtil::convertName($dependency);
return parent::convertDependency($dependency, $version, $vcsRepos, $composer);
}
}