Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/node_modules/postcss-image-inliner/ |
Upload File : |
'use strict'; const postcss = require('postcss'); const Bluebird = require('bluebird'); const debug = require('debug')('image-inliner'); const defaults = require('lodash.defaults'); const escape = require('lodash.escaperegexp'); const reduce = require('lodash.reduce'); const filesize = require('filesize'); const {getResource} = require('asset-resolver'); const {getDataUri} = require('./lib/image'); module.exports = postcss.plugin('postcss-image-inliner', opts => { opts = defaults(opts || {}, { assetPaths: [], maxFileSize: 10240, b64Svg: false, strict: false }); if (!Array.isArray(opts.assetPaths)) { opts.assetPaths = [opts.assetPaths]; } opts.assetPaths.push(process.cwd()); function assertSize(resource) { const encoding = resource.mime === 'image/svg+xml' ? 'utf-8' : 'binary'; const size = Buffer.byteLength(resource.contents, encoding); if (opts.maxFileSize && opts.maxFileSize < size) { const msg = `Too big. ${filesize(size)} exceeds the allowed ${filesize(opts.maxFileSize)}`; debug(msg); return Bluebird.reject(new Error(msg)); } return resource; } function resolveUrl(filepath) { return getResource(filepath, { base: opts.assetPaths, filter: assertSize }).catch(error => { debug(error.message, filepath, 'could not be resolved'); }); } function loop(cb) { const matcher = /url\(\s*(?:['"]*)(?!['"]*data:)(.*?)(?:['"]*)\s*\)/gm; return decl => { let match; while ((match = matcher.exec(decl.value)) !== null) { cb(decl, match[match.length - 1]); } }; } function compact(data) { return reduce(data, (acc, file, key) => { if (file && file.mime) { acc[key] = file; } return acc; }, {}); } return css => { const replacements = {}; const filter = /^(background(?:-image)?)|(content)|(cursor)/; css.walkDecls(filter, loop((decl, url) => { replacements[url] = resolveUrl(url); })); return Bluebird.props(replacements) .then(compact) .then(file => { return getDataUri(file, opts); }) .then(data => { css.walkDecls(filter, loop((decl, url) => { if (data[url]) { const regexp = new RegExp(`['"]?${escape(url)}['"]?`); decl.value = decl.value.replace(regexp, `'${data[url]}'`); debug(url, 'successfully replaced with ', data[url]); } else { debug(url, 'failed'); if (opts.strict) { throw new Error(`No file found for ${url}`); } } })); }).catch(error => { debug(error); return new Bluebird((resolve, reject) => { reject(error); }); }); }; });