Passed
Push — v1 ( 887199...d7f64b )
by Andrew
17:42 queued 08:53
created

ManifestVariable::includeFileFromManifest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
1
<?php
2
0 ignored issues
show
Coding Style introduced by
Missing file doc comment
Loading history...
3
namespace nystudio107\webperf\variables;
4
5
use nystudio107\webperf\assetbundles\webperf\WebperfAsset;
6
use nystudio107\webperf\helpers\Manifest as ManifestHelper;
7
8
use Craft;
0 ignored issues
show
Bug introduced by
The type Craft was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use craft\helpers\Template;
0 ignored issues
show
Bug introduced by
The type craft\helpers\Template was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
11
class ManifestVariable
0 ignored issues
show
Coding Style introduced by
Missing doc comment for class ManifestVariable
Loading history...
12
{
13
    // Protected Static Properties
14
    // =========================================================================
15
16
    protected static $config = [
17
        // If `devMode` is on, use webpack-dev-server to all for HMR (hot module reloading)
18
        'useDevServer' => false,
19
        // Manifest names
20
        'manifest'     => [
21
            'legacy' => 'manifest.json',
22
            'modern' => 'manifest.json',
23
        ],
24
        // Public server config
25
        'server'       => [
26
            'manifestPath' => '/',
27
            'publicPath' => '/',
28
        ],
29
        // webpack-dev-server config
30
        'devServer'    => [
31
            'manifestPath' => 'http://127.0.0.1:8080',
32
            'publicPath' => '/',
33
        ],
34
    ];
35
36
    // Public Methods
37
    // =========================================================================
38
39
    /**
40
     * ManifestVariable constructor.
41
     */
42
    public function __construct()
43
    {
44
        ManifestHelper::invalidateCaches();
45
        $bundle = new WebperfAsset();
46
        $baseAssetsUrl = Craft::$app->assetManager->getPublishedUrl(
47
            $bundle->sourcePath,
48
            true
49
        );
50
        self::$config['server']['manifestPath'] = Craft::getAlias($bundle->sourcePath);
51
        self::$config['server']['publicPath'] = $baseAssetsUrl;
52
        $useDevServer = getenv('NYS_PLUGIN_DEVSERVER');
53
        if ($useDevServer !== false) {
54
            self::$config['useDevServer'] = (bool)$useDevServer;
55
        }
56
    }
57
58
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
59
     * @param string     $moduleName
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
60
     * @param bool       $async
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
61
     * @param null|array $config
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
62
     *
63
     * @return \Twig_Markup
64
     * @throws \yii\web\NotFoundHttpException
65
     */
66
    public function includeCssModule(string $moduleName, bool $async = false, $config = null): \Twig_Markup
0 ignored issues
show
Bug introduced by
The type Twig_Markup was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
Unused Code introduced by
The parameter $config is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

66
    public function includeCssModule(string $moduleName, bool $async = false, /** @scrutinizer ignore-unused */ $config = null): \Twig_Markup

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
67
    {
68
        return Template::raw(
69
            ManifestHelper::getCssModuleTags(self::$config, $moduleName, $async)
70
        );
71
    }
72
73
    /**
74
     * Returns the CSS file in $path wrapped in <style></style> tags
75
     *
76
     * @param string $path
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
77
     *
78
     * @return \Twig_Markup
79
     */
80
    public function includeInlineCssTags(string $path): \Twig_Markup
81
    {
82
        return Template::raw(
83
            ManifestHelper::getCssInlineTags($path)
84
        );
85
    }
86
87
    /**
88
     * Returns the uglified loadCSS rel=preload Polyfill as per:
89
     * https://github.com/filamentgroup/loadCSS#how-to-use-loadcss-recommended-example
90
     *
91
     * @return \Twig_Markup
92
     */
93
    public static function includeCssRelPreloadPolyfill(): \Twig_Markup
94
    {
95
        return Template::raw(
96
            ManifestHelper::getCssRelPreloadPolyfill()
97
        );
98
    }
99
100
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
101
     * @param string     $moduleName
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
102
     * @param bool       $async
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
103
     * @param null|array $config
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
104
     *
105
     * @return null|\Twig_Markup
106
     * @throws \yii\web\NotFoundHttpException
107
     */
108
    public function includeJsModule(string $moduleName, bool $async = false, $config = null)
0 ignored issues
show
Unused Code introduced by
The parameter $config is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

108
    public function includeJsModule(string $moduleName, bool $async = false, /** @scrutinizer ignore-unused */ $config = null)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
109
    {
110
        return Template::raw(
111
            ManifestHelper::getJsModuleTags(self::$config, $moduleName, $async)
112
        );
113
    }
114
115
    /**
116
     * Return the URI to a module
117
     *
118
     * @param string $moduleName
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
119
     * @param string $type
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
120
     * @param null   $config
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $config is correct as it would always require null to be passed?
Loading history...
Coding Style introduced by
Missing parameter comment
Loading history...
121
     *
122
     * @return null|\Twig_Markup
123
     * @throws \yii\web\NotFoundHttpException
124
     */
125
    public function getModuleUri(string $moduleName, string $type = 'modern', $config = null)
0 ignored issues
show
Unused Code introduced by
The parameter $config is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

125
    public function getModuleUri(string $moduleName, string $type = 'modern', /** @scrutinizer ignore-unused */ $config = null)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
126
    {
127
        return Template::raw(
128
            ManifestHelper::getModule(self::$config, $moduleName, $type)
129
        );
130
    }
131
132
    /**
133
     * Include the Safari 10.1 nomodule fix JavaScript
134
     *
135
     * @return \Twig_Markup
136
     */
137
    public function includeSafariNomoduleFix(): \Twig_Markup
138
    {
139
        return Template::raw(
140
            ManifestHelper::getSafariNomoduleFix()
141
        );
142
    }
143
144
    /**
145
     * Returns the contents of a file from a URI path
146
     *
147
     * @param string $path
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
148
     *
149
     * @return \Twig_Markup
150
     */
151
    public function includeFile(string $path): \Twig_Markup
152
    {
153
        return Template::raw(
154
            ManifestHelper::getFile($path)
155
        );
156
    }
157
158
    /**
159
     * Returns the contents of a file from the $fileName in the manifest
160
     *
161
     * @param string $fileName
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
162
     * @param string $type
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
163
     * @param null   $config
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $config is correct as it would always require null to be passed?
Loading history...
Coding Style introduced by
Missing parameter comment
Loading history...
164
     *
165
     * @return \Twig_Markup
166
     */
167
    public function includeFileFromManifest(string $fileName, string $type = 'legacy', $config = null): \Twig_Markup
168
    {
169
        return Template::raw(
170
            ManifestHelper::getFileFromManifest($config, $fileName, $type)
0 ignored issues
show
Bug introduced by
$config of type null is incompatible with the type array expected by parameter $config of nystudio107\webperf\help...::getFileFromManifest(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

170
            ManifestHelper::getFileFromManifest(/** @scrutinizer ignore-type */ $config, $fileName, $type)
Loading history...
171
        );
172
    }
173
}
174