svgo 0.1.4 → 1.0.1d

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 69aa20fc6ef552269887d38fe4ad6cd429da359b
4
- data.tar.gz: 40edf320ee468e97411eb0745e9e7203b1ad26fc
2
+ SHA256:
3
+ metadata.gz: 014c1444c9a544946dc8d81359b240900f4b2ba49c92e853f9dce0ca001d9bb3
4
+ data.tar.gz: 9cf98a0336290ba94bbb827d9cb43a9772dffac1af93fcacb8f552af911325b8
5
5
  SHA512:
6
- metadata.gz: e4280a0c55fee05b3e1de8ae8b8eb820675229a99345d12d1fc9d869a304f9d7b2576ef454ec4af26c846f6f2aba2b20ee0716414b2ca2f760be105b8c50100d
7
- data.tar.gz: 1ad11e63e2e996fed0fd373f9a48a216a812fe4135519b3e80624e7139065a5b397463009f451be3783bf0c2411f4695b22da41f891ccc67118b4200d146d21b
6
+ metadata.gz: 044e6576e6c724c15794cd84a08b08804c0010d8a052b492f47f816a435de2ccf5de71c5cc10ece6b46fe035166eae57b5088adab04247b17d3b4d00c298f35f
7
+ data.tar.gz: 948e8fa98a3f5ce7ad85f9030a492ad6d3b340e44ea61df336f4d1aa5cedc1c76a5ff219823a832f75a5bb22d1a777e4028941adc14e1b7fbd18f78553ef9223
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_PATH: "vendor/bundle"
@@ -1,106 +1,7 @@
1
+ root: true
2
+ parserOptions:
3
+ ecmaVersion: 6
1
4
  env:
2
5
  node: true
3
- extends: 'eslint:recommended'
4
- parserOptions:
5
- ecmaVersion: 5
6
- globals:
7
- $: false
8
- jQuery: false
9
- I18n: false
10
- locale: true
11
- rules:
12
- indent:
13
- - warn
14
- - 2
15
- -
16
- SwitchCase: 1
17
- MemberExpression: 1
18
- FunctionDeclaration:
19
- body: 1
20
- parameters: 2
21
- CallExpression:
22
- arguments: 1
23
- ArrayExpression: 1
24
- ObjectExpression: 1
25
-
26
- linebreak-style:
27
- - warn
28
- - unix
29
- quotes:
30
- - warn
31
- - double
32
- -
33
- avoidEscape: true
34
- semi:
35
- - error
36
- - always
37
- camelcase:
38
- - warn
39
- -
40
- properties: never
41
- ignoreDestructuring: false
42
- brace-style:
43
- - warn
44
- - 1tbs
45
- -
46
- allowSingleLine: true
47
- comma-spacing:
48
- - warn
49
- multiline-comment-style:
50
- - warn
51
- - separate-lines
52
- spaced-comment:
53
- - warn
54
- - always
55
- -
56
- line:
57
- markers:
58
- - "="
59
- block:
60
- exceptions:
61
- - "*"
62
- balanced: true
63
- no-multiple-empty-lines:
64
- - error
65
- -
66
- max: 2
67
- maxBOF: 0
68
- maxEOF: 1
69
- unicode-bom:
70
- - error
71
- - never
72
- dot-location:
73
- - error
74
- - property
75
- dot-notation:
76
- - warn
77
- no-alert:
78
- warn
79
- no-console:
80
- warn
81
- no-eval:
82
- error
83
- valid-jsdoc:
84
- - error
85
- -
86
- prefer:
87
- arg: param
88
- argument: param
89
- return: returns
90
- preferType:
91
- object: Object
92
- array: Array
93
- list: Array
94
- hash: Object
95
- dict: Object
96
- requireReturn: false
97
- requireReturnType: true
98
- requireParamType: true
99
- requireParamDescription: true
100
- matchDescription: ".+"
101
- requireReturnDescription: true
102
- no-unused-vars:
103
- - error
104
- -
105
- vars: all
106
- argsIgnorePattern: "window|document|event|el|element|_"
6
+ extends:
7
+ - standard
@@ -1,15 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- svgo (0.1.0)
4
+ svgo (0.1.5)
5
5
  execjs (>= 2.7.0)
6
+ mini_racer (= 0.2.4)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  coderay (1.1.2)
11
12
  execjs (2.7.0)
13
+ libv8 (6.7.288.46.1-x86_64-linux)
12
14
  method_source (0.9.0)
15
+ mini_racer (0.2.4)
16
+ libv8 (>= 6.3)
13
17
  pry (0.11.3)
14
18
  coderay (~> 1.1.0)
15
19
  method_source (~> 0.9.0)
data/README.MD CHANGED
@@ -1,31 +1,20 @@
1
+ [![Gem Version](https://badge.fury.io/rb/svgo.svg)](https://badge.fury.io/rb/svgo)
2
+ [![License](https://img.shields.io/github/license/greenhost/svgo-ruby.svg)](https://github.com/greenhost/svgo-ruby/blob/master/LICENSE.txt)
3
+
1
4
  # A Ruby wrapper for Node SVGO
2
5
 
3
6
  Removes metadata and editor data elements and attributes that are redundant
4
- from SVG files. Can strip files so they are optimised for web use. Go to
7
+ from SVG files. Can strip files so they are optimised for web use. Go to
5
8
  [SVGO](https://github.com/svg/svgo) for more documentation on features.
6
9
 
7
- ## How this works
10
+ # Note to users of 1.x versions
8
11
 
9
- [`execjs`](https://github.com/rails/execjs) is used to run the Node SVGO as a
10
- library. The SVGO library returns a JavaScript Promise, which is currently not
11
- supported by `execjs` and probably never will be. `setTimeout` and sleep-like
12
- functions are also disabled in `execjs` so we can't wait for the Promise to get
13
- fulfilled. Therefore there is a small wrapper JavaScript in this repository
14
- that calls all the components that SVGO is made up of, but without the
15
- `Promise`. It also wraps up the configuration of plugins the way it is expected
16
- by SVGO's components. Lastly `require` is not supported by `execjs` so all of
17
- this is transpiled to one monolithic JavaScript file - that is completely
18
- self-contained, using [browserify](http://browserify.org/).
12
+ `execjs` is no longer used as a wrapper around JavaScript run times, instead
13
+ [`mini_racer`](https://github.com/discourse/mini_racer) is used directly. That
14
+ means one dependency is removed. `mini_racer` was already a dependency so it
15
+ should not make a difference during installation.
19
16
 
20
- __NOTE:__ `execjs` supports a variety of JavaSript runtimes, notably
21
- [`therubyracer`](https://github.com/cowboyd/therubyracer), but `therubyracer`
22
- depends on an ancient [`libv8`](https://github.com/cowboyd/libv8), which
23
- doesn't support some of the modern syntax used in SVGO. Therefore `mini_racer`
24
- (a drop in replacement for `therubyracer`) is a dependency, which uses a much
25
- more recent `libv8`.
26
17
 
27
- If you have [Node](https://nodejs.org/) installed you could also use that as a
28
- runtime.
29
18
 
30
19
  ## How to use?
31
20
 
@@ -52,7 +41,7 @@ svgo.optimize(File.read(svg_file))
52
41
 
53
42
  #### Method 2
54
43
 
55
- You can manually pass options to the class that correspond to
44
+ You can manually pass options to the class that correspond to
56
45
  [SVGO](https://github.com/svg/svgo)'s documentation.
57
46
 
58
47
  ```ruby
@@ -75,21 +64,22 @@ svgo.optimize_file(svg_file)
75
64
  # => <svg xmlns="http://www.w3.org/2000/svg" ...
76
65
  ```
77
66
 
78
- You can also choose the plugins to use, you can either pass the exact plugins you want with their configuration, or you can modify the default plugin list.
67
+ You can also choose the plugins to use, you can either pass the exact plugins
68
+ you want with their configuration, or you can modify the default plugin list.
79
69
 
80
70
  ```ruby
81
71
  require('svgo')
82
72
  svg_file = "path/to/a.svg"
83
73
  options = {
84
74
  plugins: {
85
- :addAttributesToSVGElement=>true,
86
- :addClassesToSVGElement=>true,
87
- :cleanupAttrs=>false,
88
- :cleanupEnableBackground=>true,
89
- :cleanupIDs=>false,
90
- :cleanupListOfValues=>true,
91
- :cleanupNumericValues=>true,
92
- :collapseGroups=>true,
75
+ addAttributesToSVGElement: true,
76
+ addClassesToSVGElement: true,
77
+ cleanupAttrs: false,
78
+ cleanupEnableBackground: true,
79
+ cleanupIDs: false,
80
+ cleanupListOfValues: true,
81
+ collapseGroups: true,
82
+ cleanupNumericValues: true,
93
83
  #etc..
94
84
  }
95
85
  }
@@ -98,7 +88,9 @@ svgo = SvgOptimizer.new(options)
98
88
 
99
89
  ### As a CLI tool
100
90
 
101
- Strictly speaking this mode is for testing only. But if you can't install NodeJS, and you do have a Ruby environment and you really need a CLI tool, you might be able to squeeze out some optimised files from this utility.
91
+ Strictly speaking this mode is for testing only. But if you can't install
92
+ NodeJS, and you do have a Ruby environment and you really need a CLI tool, you
93
+ might be able to squeeze out some optimised files from this utility.
102
94
 
103
95
  ``` bash
104
96
  gem install svgo-ruby
@@ -124,6 +116,40 @@ docker run -i svgo < test/fixtures/ruby.svg > test/fixtures/ruby.optim.svg
124
116
  -rw-r--r-- 1 user staff 23K Nov 5 22:12 ruby.svg
125
117
  ```
126
118
 
127
- ## Building Node SVGO from source
119
+ ## How this works
120
+
121
+ [`mini_racer`](https://github.com/discourse/mini_racer) is used to run the
122
+ Node SVGO as a library. The SVGO library returns a JavaScript Promise, which
123
+ is currently not supported by `mini_racer` and perhaps never will be.
124
+ `setTimeout` and sleep-like functions are also disabled in `mini_racer` so we
125
+ can't wait for the Promise to get fulfilled. Therefore there is a small
126
+ wrapper JavaScript in this repository
127
+ that calls all the components that SVGO is made up of, but without the
128
+ `Promise`. It also wraps up the configuration of plugins the way it is expected
129
+ by SVGO's components. Lastly `require` is not supported by `mini_racer` so all
130
+ of this is transpiled to one monolithic JavaScript file - that is completely
131
+ self-contained, using [browserify](http://browserify.org/).
132
+
133
+ ### Transpiling Node SVGO
134
+
135
+ __TL;DR:__ A transpiled version of SVGO is included in the repository, so you
136
+ don't need to transpile anything.
137
+
138
+ Because `mini_racer` supports only self-contained modules, and does not allow
139
+ `require()`, `Promise` etc.. The SGVO library is wrapped in a JavaScript that
140
+ requires all the main parts of SVGO and makes an SVGO function without
141
+ JavaScript Promises. The wrapper is then transpiled to a self-contained module
142
+ using [browserify](http://browserify.org/).
143
+
144
+ The transpile command can be found in the `Rakefile`. Assuming you have
145
+ [Node](https://nodejs.org/) and [yarn](https://yarnpkg.com/en/) installed on
146
+ your system, you can then run:
147
+
148
+ ``` bash
149
+ yarn install
150
+ rake
151
+ ```
128
152
 
129
- Because `execjs`
153
+ __Note__: if you do not have `yarn` you can run `npm install` instead, but if
154
+ you install Node modules often, you probably should do yourself a favour check
155
+ out [yarn](https://yarnpkg.com/en/).
@@ -104,9 +104,6 @@ sortAttrs:
104
104
  "sorts element attributes (disabled by default)"
105
105
  }
106
106
 
107
- options.plugins = Hash[
108
- plugins.map { |k, str| [k, !str.include?("disabled by default")]}
109
- ]
110
107
  parser = OptionParser.new do |opts|
111
108
  opts.banner = "Usage: svgo-ruby [options] [input file]"
112
109
  opts.separator ""
@@ -152,7 +149,7 @@ parser = OptionParser.new do |opts|
152
149
  options.plugins[p.to_sym] = state
153
150
  end
154
151
  end
155
- opts.on("--removeAttrs", String, %q(
152
+ opts.on("--removeAttrs [attrs]", String, %q(
156
153
  A comma separated list of Javascript compatible regular expressions.
157
154
  The format described in the plugin:
158
155
 
@@ -182,18 +179,16 @@ parser = OptionParser.new do |opts|
182
179
  https://github.com/svg/svgo/blob/master/plugins/removeAttrs.js
183
180
  ).sub(/^\n\s+/,'').gsub(/ {4}/, " " * 12)) do |plugin_args|
184
181
  patterns = plugin_args.sub(/\s*,\s*/, ",").split(",")
185
- options.plugins.removeAttrs = patterns
182
+ options.plugins[:removeAttrs] = {attrs: patterns}
186
183
  end
187
184
  end
188
185
 
189
186
  parser.parse!
190
-
191
187
  svgo = SvgOptimizer.new(options)
192
188
 
193
189
  # Read from stdin..
194
190
  unless STDIN.tty? and not STDIN.closed?
195
- input_data = ARGF.read
196
- result = svgo.optimize(input_data)
191
+ result = svgo.optimize(ARGF.read)
197
192
  else
198
193
  # See if there is an input file name
199
194
  input_file = ARGV.pop
@@ -203,7 +198,7 @@ else
203
198
  exit 2
204
199
  else
205
200
  begin
206
- data_out = svgo.optimize_file(input_file)
201
+ result = svgo.optimize_file(input_file)
207
202
  rescue => err
208
203
  puts err.message
209
204
  exit(1)
@@ -214,7 +209,7 @@ end
214
209
  unless output_file
215
210
  puts result['data']
216
211
  else
217
- File.new(output_file, 'w').write(data_out)
212
+ File.new(output_file, 'w').write(result['data'])
218
213
  end
219
214
 
220
215
 
@@ -1,11 +1,10 @@
1
- require 'execjs'
1
+ require 'mini_racer'
2
2
  require 'json'
3
3
  require 'pry'
4
4
  require 'ostruct'
5
5
 
6
6
  PLUGINS_DEFAULT = [
7
7
  :addAttributesToSVGElement,
8
- :addClassesToSVGElement,
9
8
  :cleanupAttrs,
10
9
  :cleanupEnableBackground,
11
10
  :cleanupIDs,
@@ -47,8 +46,7 @@ class SvgoOptions
47
46
  def initialize
48
47
  @options = OpenStruct.new(
49
48
  js2svg: OpenStruct.new(pretty: false),
50
- plugins: PLUGINS_DEFAULT,
51
- floatPrecision: 6,
49
+ plugins: PLUGINS_DEFAULT.map { | p | [ p, true ] }.to_h,
52
50
  multipass: false
53
51
  )
54
52
  yield @options if block_given?
@@ -57,6 +55,9 @@ class SvgoOptions
57
55
  def get_options(*args)
58
56
  options = @options.to_h
59
57
  options[:js2svg] = options[:js2svg].to_h
58
+ options[:plugins] = options[:plugins].map { | plugin, params |
59
+ {plugin => params}
60
+ }
60
61
  options
61
62
  end
62
63
 
@@ -110,6 +111,7 @@ class SvgoOptions
110
111
  end
111
112
 
112
113
  class SvgOptimizer
114
+ attr_accessor :options
113
115
  def initialize(options=SvgoOptions.new)
114
116
  yield options if block_given?
115
117
  if options.is_a? SvgoOptions
@@ -117,39 +119,27 @@ class SvgOptimizer
117
119
  else
118
120
  @options = options
119
121
  end
120
-
121
- runtime = @options.delete "runtime"
122
- unless runtime
123
- # therubyracer is a first choice for execjs but its libv8 is too
124
- # old for the svgo library and its dependencies.
125
- runtimes = [
126
- # MacOS only system component
127
- ExecJS::Runtimes::JavaScriptCore,
128
- ExecJS::Runtimes::MiniRacer,
129
- ExecJS::Runtimes::Node
130
- ]
131
- runtime = runtimes.select {|r| r.available?}.first
132
- unless runtime
133
- raise ExecJS::RuntimeUnavailable.new(
134
- "No supported runtime available please install " \
135
- "`mini_racer` or `NodeJS`."
136
- )
137
- end
138
- end
139
- ExecJS.runtime = runtime
140
122
  if not @options[:plugins]
141
123
  @options[:plugins] = PLUGINS_DEFAULT
142
124
  end
143
- if @options[:plugins].is_a? Array
144
- @options[:plugins] = @options[:plugins].map {|p| [p, true]}.to_h
125
+ if not @options[:plugins].is_a? Array
126
+ raise StandardError.new("`options.plugins` should be an Array.")
145
127
  end
128
+ @options[:plugins] = @options[:plugins].map { | p |
129
+ p.is_a?(Hash) ? p : {p => true}
130
+ }
146
131
  svgo_js = File.expand_path("../../svgo-js/svgo-built.js", __FILE__)
147
132
  svgo_module = File.open(svgo_js, "r:utf-8", &:read)
148
- @context = ExecJS.compile(svgo_module)
133
+ @context = MiniRacer::Context.new
134
+ @context.eval svgo_module
135
+ @context.call("svgo", {setup: @options})
149
136
  end
150
137
 
151
138
  def optimize(svg_data)
152
- result = @context.call("svgo", @options.to_json, svg_data.to_s);
139
+ result = @context.call("svgo", {optimize: svg_data.to_s})
140
+ if not result
141
+ raise StandardError.new("Bad response from JavaScript runtime.")
142
+ end
153
143
  if result['errors'].length > 0
154
144
  if result['errors'].length > 1
155
145
  err = %Q(Errors occurred: \n - #{result['errors'].join("\n - s")})
@@ -1,3 +1,3 @@
1
1
  module SvgoVersion
2
- VERSION = '0.1.4'
2
+ VERSION = '1.0.1d'
3
3
  end
@@ -28934,7 +28934,7 @@ Writable.prototype._destroy = function (err, cb) {
28934
28934
  cb(err);
28935
28935
  };
28936
28936
  }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
28937
- },{"./_stream_duplex":359,"./internal/streams/destroy":365,"./internal/streams/stream":366,"_process":357,"core-util-is":6,"inherits":309,"process-nextick-args":356,"safe-buffer":372,"timers":444,"util-deprecate":446}],364:[function(require,module,exports){
28937
+ },{"./_stream_duplex":359,"./internal/streams/destroy":365,"./internal/streams/stream":366,"_process":357,"core-util-is":6,"inherits":309,"process-nextick-args":356,"safe-buffer":372,"timers":445,"util-deprecate":447}],364:[function(require,module,exports){
28938
28938
  'use strict';
28939
28939
 
28940
28940
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -43669,7 +43669,133 @@ exports.fn = function(node, opts, extra) {
43669
43669
  return node;
43670
43670
  };
43671
43671
 
43672
- },{"./_collections.js":398,"css-tree":19,"css-url-regex":119,"path":355,"unquote":445}],420:[function(require,module,exports){
43672
+ },{"./_collections.js":398,"css-tree":19,"css-url-regex":119,"path":355,"unquote":446}],420:[function(require,module,exports){
43673
+ 'use strict';
43674
+
43675
+ var DEFAULT_SEPARATOR = ':';
43676
+
43677
+ exports.type = 'perItem';
43678
+
43679
+ exports.active = false;
43680
+
43681
+ exports.description = 'removes specified attributes';
43682
+
43683
+ exports.params = {
43684
+ elemSeparator: DEFAULT_SEPARATOR,
43685
+ attrs: []
43686
+ };
43687
+
43688
+ /**
43689
+ * Remove attributes
43690
+ *
43691
+ * @param elemSeparator
43692
+ * format: string
43693
+ *
43694
+ * @param attrs:
43695
+ *
43696
+ * format: [ element* : attribute* ]
43697
+ *
43698
+ * element : regexp (wrapped into ^...$), single * or omitted > all elements
43699
+ * attribute : regexp (wrapped into ^...$)
43700
+ *
43701
+ * examples:
43702
+ *
43703
+ * > basic: remove fill attribute
43704
+ * ---
43705
+ * removeAttrs:
43706
+ * attrs: 'fill'
43707
+ *
43708
+ * > remove fill attribute on path element
43709
+ * ---
43710
+ * attrs: 'path:fill'
43711
+ *
43712
+ *
43713
+ * > remove all fill and stroke attribute
43714
+ * ---
43715
+ * attrs:
43716
+ * - 'fill'
43717
+ * - 'stroke'
43718
+ *
43719
+ * [is same as]
43720
+ *
43721
+ * attrs: '(fill|stroke)'
43722
+ *
43723
+ * [is same as]
43724
+ *
43725
+ * attrs: '*:(fill|stroke)'
43726
+ *
43727
+ * [is same as]
43728
+ *
43729
+ * attrs: '.*:(fill|stroke)'
43730
+ *
43731
+ *
43732
+ * > remove all stroke related attributes
43733
+ * ----
43734
+ * attrs: 'stroke.*'
43735
+ *
43736
+ *
43737
+ * @param {Object} item current iteration item
43738
+ * @param {Object} params plugin params
43739
+ * @return {Boolean} if false, item will be filtered out
43740
+ *
43741
+ * @author Benny Schudel
43742
+ */
43743
+ exports.fn = function(item, params) {
43744
+
43745
+ // wrap into an array if params is not
43746
+ if (!Array.isArray(params.attrs)) {
43747
+ params.attrs = [params.attrs];
43748
+ }
43749
+
43750
+ if (item.isElem()) {
43751
+ var elemSeparator = typeof params.elemSeparator == 'string' ? params.elemSeparator : DEFAULT_SEPARATOR;
43752
+
43753
+ // prepare patterns
43754
+ var patterns = params.attrs.map(function(pattern) {
43755
+
43756
+ // apply to all elements if specifc element is omitted
43757
+ if (pattern.indexOf(elemSeparator) === -1) {
43758
+ pattern = ['.*', elemSeparator, pattern].join('');
43759
+ }
43760
+
43761
+ // create regexps for element and attribute name
43762
+ return pattern.split(elemSeparator)
43763
+ .map(function(value) {
43764
+
43765
+ // adjust single * to match anything
43766
+ if (value === '*') { value = '.*'; }
43767
+
43768
+ return new RegExp(['^', value, '$'].join(''), 'i');
43769
+ });
43770
+
43771
+ });
43772
+
43773
+ // loop patterns
43774
+ patterns.forEach(function(pattern) {
43775
+
43776
+ // matches element
43777
+ if (pattern[0].test(item.elem)) {
43778
+
43779
+ // loop attributes
43780
+ item.eachAttr(function(attr) {
43781
+ var name = attr.name;
43782
+
43783
+ // matches attribute name
43784
+ if (pattern[1].test(name)) {
43785
+ item.removeAttr(name);
43786
+ }
43787
+
43788
+ });
43789
+
43790
+ }
43791
+
43792
+ });
43793
+
43794
+ }
43795
+
43796
+ };
43797
+
43798
+ },{}],421:[function(require,module,exports){
43673
43799
  'use strict';
43674
43800
 
43675
43801
  exports.type = 'perItem';
@@ -43698,7 +43824,7 @@ exports.fn = function(item) {
43698
43824
 
43699
43825
  };
43700
43826
 
43701
- },{}],421:[function(require,module,exports){
43827
+ },{}],422:[function(require,module,exports){
43702
43828
  'use strict';
43703
43829
 
43704
43830
  exports.type = 'perItem';
@@ -43732,7 +43858,7 @@ exports.fn = function(item, params) {
43732
43858
 
43733
43859
  };
43734
43860
 
43735
- },{}],422:[function(require,module,exports){
43861
+ },{}],423:[function(require,module,exports){
43736
43862
  'use strict';
43737
43863
 
43738
43864
  exports.type = 'perItem';
@@ -43766,7 +43892,7 @@ exports.fn = function(item) {
43766
43892
 
43767
43893
  };
43768
43894
 
43769
- },{}],423:[function(require,module,exports){
43895
+ },{}],424:[function(require,module,exports){
43770
43896
  'use strict';
43771
43897
 
43772
43898
  exports.type = 'perItem';
@@ -43808,7 +43934,7 @@ exports.fn = function(item) {
43808
43934
 
43809
43935
  };
43810
43936
 
43811
- },{}],424:[function(require,module,exports){
43937
+ },{}],425:[function(require,module,exports){
43812
43938
  'use strict';
43813
43939
 
43814
43940
  exports.type = 'perItem';
@@ -43875,7 +44001,7 @@ exports.fn = function(item, params) {
43875
44001
 
43876
44002
  };
43877
44003
 
43878
- },{"./_collections":398}],425:[function(require,module,exports){
44004
+ },{"./_collections":398}],426:[function(require,module,exports){
43879
44005
  'use strict';
43880
44006
 
43881
44007
  exports.type = 'perItem';
@@ -43957,7 +44083,7 @@ exports.fn = function(item, params) {
43957
44083
  }
43958
44084
  };
43959
44085
 
43960
- },{}],426:[function(require,module,exports){
44086
+ },{}],427:[function(require,module,exports){
43961
44087
  'use strict';
43962
44088
 
43963
44089
  exports.type = 'perItem';
@@ -43988,7 +44114,7 @@ exports.fn = function(item) {
43988
44114
 
43989
44115
  };
43990
44116
 
43991
- },{}],427:[function(require,module,exports){
44117
+ },{}],428:[function(require,module,exports){
43992
44118
  'use strict';
43993
44119
 
43994
44120
  exports.type = 'perItemReverse';
@@ -44022,7 +44148,7 @@ exports.fn = function(item) {
44022
44148
 
44023
44149
  };
44024
44150
 
44025
- },{"./_collections":398}],428:[function(require,module,exports){
44151
+ },{"./_collections":398}],429:[function(require,module,exports){
44026
44152
  'use strict';
44027
44153
 
44028
44154
  exports.type = 'perItem';
@@ -44083,7 +44209,7 @@ exports.fn = function(item, params) {
44083
44209
 
44084
44210
  };
44085
44211
 
44086
- },{}],429:[function(require,module,exports){
44212
+ },{}],430:[function(require,module,exports){
44087
44213
  'use strict';
44088
44214
 
44089
44215
  exports.type = 'perItem';
@@ -44310,7 +44436,7 @@ exports.fn = function (item, params) {
44310
44436
 
44311
44437
  };
44312
44438
 
44313
- },{}],430:[function(require,module,exports){
44439
+ },{}],431:[function(require,module,exports){
44314
44440
  'use strict';
44315
44441
 
44316
44442
  exports.type = 'perItem';
@@ -44335,7 +44461,7 @@ exports.fn = function(item) {
44335
44461
 
44336
44462
  };
44337
44463
 
44338
- },{}],431:[function(require,module,exports){
44464
+ },{}],432:[function(require,module,exports){
44339
44465
  'use strict';
44340
44466
 
44341
44467
  exports.type = 'perItem';
@@ -44374,7 +44500,7 @@ exports.fn = function(item) {
44374
44500
 
44375
44501
  };
44376
44502
 
44377
- },{"./_collections":398}],432:[function(require,module,exports){
44503
+ },{"./_collections":398}],433:[function(require,module,exports){
44378
44504
  'use strict';
44379
44505
 
44380
44506
  exports.type = 'perItem';
@@ -44404,7 +44530,7 @@ exports.fn = function(item) {
44404
44530
 
44405
44531
  };
44406
44532
 
44407
- },{}],433:[function(require,module,exports){
44533
+ },{}],434:[function(require,module,exports){
44408
44534
  'use strict';
44409
44535
 
44410
44536
  exports.type = 'perItem';
@@ -44429,7 +44555,7 @@ exports.fn = function(item) {
44429
44555
 
44430
44556
  };
44431
44557
 
44432
- },{}],434:[function(require,module,exports){
44558
+ },{}],435:[function(require,module,exports){
44433
44559
  'use strict';
44434
44560
 
44435
44561
  exports.type = 'perItem';
@@ -44454,7 +44580,7 @@ exports.fn = function(item) {
44454
44580
 
44455
44581
  };
44456
44582
 
44457
- },{}],435:[function(require,module,exports){
44583
+ },{}],436:[function(require,module,exports){
44458
44584
  'use strict';
44459
44585
 
44460
44586
  exports.type = 'perItem';
@@ -44479,7 +44605,7 @@ exports.fn = function(item) {
44479
44605
 
44480
44606
  };
44481
44607
 
44482
- },{}],436:[function(require,module,exports){
44608
+ },{}],437:[function(require,module,exports){
44483
44609
  'use strict';
44484
44610
 
44485
44611
  exports.type = 'perItem';
@@ -44631,7 +44757,7 @@ exports.fn = function(item, params) {
44631
44757
 
44632
44758
  };
44633
44759
 
44634
- },{"./_collections":398}],437:[function(require,module,exports){
44760
+ },{"./_collections":398}],438:[function(require,module,exports){
44635
44761
  'use strict';
44636
44762
 
44637
44763
  exports.type = 'full';
@@ -44740,7 +44866,7 @@ exports.fn = function(data) {
44740
44866
 
44741
44867
  };
44742
44868
 
44743
- },{}],438:[function(require,module,exports){
44869
+ },{}],439:[function(require,module,exports){
44744
44870
  'use strict';
44745
44871
 
44746
44872
  exports.type = 'perItem';
@@ -44795,7 +44921,7 @@ function getUsefulItems(item, usefulItems) {
44795
44921
  return usefulItems;
44796
44922
  }
44797
44923
 
44798
- },{"./_collections":398}],439:[function(require,module,exports){
44924
+ },{"./_collections":398}],440:[function(require,module,exports){
44799
44925
  'use strict';
44800
44926
 
44801
44927
  exports.type = 'perItem';
@@ -44897,7 +45023,7 @@ exports.fn = function(item, params) {
44897
45023
 
44898
45024
  };
44899
45025
 
44900
- },{"./_collections":398}],440:[function(require,module,exports){
45026
+ },{"./_collections":398}],441:[function(require,module,exports){
44901
45027
  'use strict';
44902
45028
 
44903
45029
  exports.type = 'perItem';
@@ -44947,7 +45073,7 @@ exports.fn = function(item) {
44947
45073
 
44948
45074
  };
44949
45075
 
44950
- },{}],441:[function(require,module,exports){
45076
+ },{}],442:[function(require,module,exports){
44951
45077
  'use strict';
44952
45078
 
44953
45079
  exports.type = 'perItem';
@@ -44976,7 +45102,7 @@ exports.fn = function(item) {
44976
45102
  }
44977
45103
 
44978
45104
  };
44979
- },{}],442:[function(require,module,exports){
45105
+ },{}],443:[function(require,module,exports){
44980
45106
  'use strict';
44981
45107
 
44982
45108
  exports.type = 'perItem';
@@ -45002,7 +45128,7 @@ exports.fn = function(item) {
45002
45128
 
45003
45129
  };
45004
45130
 
45005
- },{}],443:[function(require,module,exports){
45131
+ },{}],444:[function(require,module,exports){
45006
45132
  'use strict';
45007
45133
 
45008
45134
  exports.type = 'perItem';
@@ -45088,7 +45214,7 @@ exports.fn = function(item, params) {
45088
45214
 
45089
45215
  };
45090
45216
 
45091
- },{}],444:[function(require,module,exports){
45217
+ },{}],445:[function(require,module,exports){
45092
45218
  (function (setImmediate,clearImmediate){
45093
45219
  var nextTick = require('process/browser.js').nextTick;
45094
45220
  var apply = Function.prototype.apply;
@@ -45167,7 +45293,7 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
45167
45293
  delete immediateIds[id];
45168
45294
  };
45169
45295
  }).call(this,require("timers").setImmediate,require("timers").clearImmediate)
45170
- },{"process/browser.js":357,"timers":444}],445:[function(require,module,exports){
45296
+ },{"process/browser.js":357,"timers":445}],446:[function(require,module,exports){
45171
45297
  var reg = /[\'\"]/
45172
45298
 
45173
45299
  module.exports = function unquote(str) {
@@ -45183,7 +45309,7 @@ module.exports = function unquote(str) {
45183
45309
  return str
45184
45310
  }
45185
45311
 
45186
- },{}],446:[function(require,module,exports){
45312
+ },{}],447:[function(require,module,exports){
45187
45313
  (function (global){
45188
45314
 
45189
45315
  /**
@@ -45254,144 +45380,216 @@ function config (name) {
45254
45380
  }
45255
45381
 
45256
45382
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
45257
- },{}],447:[function(require,module,exports){
45258
- "use strict";
45259
- var CONFIG = require("../node_modules/svgo/lib/svgo/config.js");
45260
- var SVG2JS = require("../node_modules/svgo/lib/svgo/svg2js.js");
45261
- var PLUGINS = require("../node_modules/svgo/lib/svgo/plugins.js");
45262
- var JS2SVG = require("../node_modules/svgo/lib/svgo/js2svg.js");
45263
- var pluginModules = {
45264
- addAttributesToSVGElement: require("../node_modules/svgo/plugins/addAttributesToSVGElement"),
45265
- addClassesToSVGElement: require("../node_modules/svgo/plugins/addClassesToSVGElement"),
45266
- cleanupAttrs: require("../node_modules/svgo/plugins/cleanupAttrs"),
45267
- cleanupEnableBackground: require("../node_modules/svgo/plugins/cleanupEnableBackground"),
45268
- cleanupIDs: require("../node_modules/svgo/plugins/cleanupIDs"),
45269
- cleanupListOfValues: require("../node_modules/svgo/plugins/cleanupListOfValues"),
45270
- cleanupNumericValues: require("../node_modules/svgo/plugins/cleanupNumericValues"),
45271
- collapseGroups: require("../node_modules/svgo/plugins/collapseGroups"),
45272
- convertColors: require("../node_modules/svgo/plugins/convertColors"),
45273
- convertPathData: require("../node_modules/svgo/plugins/convertPathData"),
45274
- convertShapeToPath: require("../node_modules/svgo/plugins/convertShapeToPath"),
45275
- convertStyleToAttrs: require("../node_modules/svgo/plugins/convertStyleToAttrs"),
45276
- convertTransform: require("../node_modules/svgo/plugins/convertTransform"),
45277
- inlineStyles: require("../node_modules/svgo/plugins/inlineStyles"),
45278
- mergePaths: require("../node_modules/svgo/plugins/mergePaths"),
45279
- minifyStyles: require("../node_modules/svgo/plugins/minifyStyles"),
45280
- moveElemsAttrsToGroup: require("../node_modules/svgo/plugins/moveElemsAttrsToGroup"),
45281
- moveGroupAttrsToElems: require("../node_modules/svgo/plugins/moveGroupAttrsToElems"),
45282
- prefixIds: require("../node_modules/svgo/plugins/prefixIds"),
45283
- removeComments: require("../node_modules/svgo/plugins/removeComments"),
45284
- removeDesc: require("../node_modules/svgo/plugins/removeDesc"),
45285
- removeDimensions: require("../node_modules/svgo/plugins/removeDimensions"),
45286
- removeDoctype: require("../node_modules/svgo/plugins/removeDoctype"),
45287
- removeEditorsNSData: require("../node_modules/svgo/plugins/removeEditorsNSData"),
45288
- removeElementsByAttr: require("../node_modules/svgo/plugins/removeElementsByAttr"),
45289
- removeEmptyAttrs: require("../node_modules/svgo/plugins/removeEmptyAttrs"),
45290
- removeEmptyContainers: require("../node_modules/svgo/plugins/removeEmptyContainers"),
45291
- removeEmptyText: require("../node_modules/svgo/plugins/removeEmptyText"),
45292
- removeHiddenElems: require("../node_modules/svgo/plugins/removeHiddenElems"),
45293
- removeMetadata: require("../node_modules/svgo/plugins/removeMetadata"),
45294
- removeNonInheritableGroupAttrs: require("../node_modules/svgo/plugins/removeNonInheritableGroupAttrs"),
45295
- removeRasterImages: require("../node_modules/svgo/plugins/removeRasterImages"),
45296
- removeScriptElement: require("../node_modules/svgo/plugins/removeScriptElement"),
45297
- removeStyleElement: require("../node_modules/svgo/plugins/removeStyleElement"),
45298
- removeTitle: require("../node_modules/svgo/plugins/removeTitle"),
45299
- removeUnknownsAndDefaults: require("../node_modules/svgo/plugins/removeUnknownsAndDefaults"),
45300
- removeUnusedNS: require("../node_modules/svgo/plugins/removeUnusedNS"),
45301
- removeUselessDefs: require("../node_modules/svgo/plugins/removeUselessDefs"),
45302
- removeUselessStrokeAndFill: require("../node_modules/svgo/plugins/removeUselessStrokeAndFill"),
45303
- removeViewBox: require("../node_modules/svgo/plugins/removeViewBox"),
45304
- removeXMLNS: require("../node_modules/svgo/plugins/removeXMLNS"),
45305
- removeXMLProcInst: require("../node_modules/svgo/plugins/removeXMLProcInst"),
45306
- sortAttrs: require("../node_modules/svgo/plugins/sortAttrs")
45307
- };
45308
-
45309
- function SVGO(options) {
45310
- var self = this;
45311
- var plugins = options.plugins;
45312
- options.plugins = [];
45313
-
45314
- Object.keys(plugins).forEach(function(key){
45315
- var value = plugins[key];
45316
- var plugin = {};
45317
- plugin[key] = pluginModules[key];
45318
- switch(typeof value) {
45319
- case "boolean":
45320
- if (value)
45321
- options.plugins.push(plugin);
45322
- break;
45323
- case "string":
45324
- plugin.options = value;
45325
- options.plugins.push(plugin);
45326
- break;
45383
+ },{}],448:[function(require,module,exports){
45384
+ 'use strict'
45385
+ let CONFIG = require('../node_modules/svgo/lib/svgo/config.js')
45386
+ let SVG2JS = require('../node_modules/svgo/lib/svgo/svg2js.js')
45387
+ let PLUGINS = require('../node_modules/svgo/lib/svgo/plugins.js')
45388
+ let JS2SVG = require('../node_modules/svgo/lib/svgo/js2svg.js')
45389
+ let pluginModules = {
45390
+ addAttributesToSVGElement:
45391
+ require('../node_modules/svgo/plugins/addAttributesToSVGElement'),
45392
+ addClassesToSVGElement:
45393
+ require('../node_modules/svgo/plugins/addClassesToSVGElement'),
45394
+ cleanupAttrs:
45395
+ require('../node_modules/svgo/plugins/cleanupAttrs'),
45396
+ cleanupEnableBackground:
45397
+ require('../node_modules/svgo/plugins/cleanupEnableBackground'),
45398
+ cleanupIDs:
45399
+ require('../node_modules/svgo/plugins/cleanupIDs'),
45400
+ cleanupListOfValues:
45401
+ require('../node_modules/svgo/plugins/cleanupListOfValues'),
45402
+ cleanupNumericValues:
45403
+ require('../node_modules/svgo/plugins/cleanupNumericValues'),
45404
+ collapseGroups:
45405
+ require('../node_modules/svgo/plugins/collapseGroups'),
45406
+ convertColors:
45407
+ require('../node_modules/svgo/plugins/convertColors'),
45408
+ convertPathData:
45409
+ require('../node_modules/svgo/plugins/convertPathData'),
45410
+ convertShapeToPath:
45411
+ require('../node_modules/svgo/plugins/convertShapeToPath'),
45412
+ convertStyleToAttrs:
45413
+ require('../node_modules/svgo/plugins/convertStyleToAttrs'),
45414
+ convertTransform:
45415
+ require('../node_modules/svgo/plugins/convertTransform'),
45416
+ inlineStyles:
45417
+ require('../node_modules/svgo/plugins/inlineStyles'),
45418
+ mergePaths:
45419
+ require('../node_modules/svgo/plugins/mergePaths'),
45420
+ minifyStyles:
45421
+ require('../node_modules/svgo/plugins/minifyStyles'),
45422
+ moveElemsAttrsToGroup:
45423
+ require('../node_modules/svgo/plugins/moveElemsAttrsToGroup'),
45424
+ moveGroupAttrsToElems:
45425
+ require('../node_modules/svgo/plugins/moveGroupAttrsToElems'),
45426
+ prefixIds:
45427
+ require('../node_modules/svgo/plugins/prefixIds'),
45428
+ removeComments:
45429
+ require('../node_modules/svgo/plugins/removeComments'),
45430
+ removeDesc:
45431
+ require('../node_modules/svgo/plugins/removeDesc'),
45432
+ removeDimensions:
45433
+ require('../node_modules/svgo/plugins/removeDimensions'),
45434
+ removeDoctype:
45435
+ require('../node_modules/svgo/plugins/removeDoctype'),
45436
+ removeEditorsNSData:
45437
+ require('../node_modules/svgo/plugins/removeEditorsNSData'),
45438
+ removeElementsByAttr:
45439
+ require('../node_modules/svgo/plugins/removeElementsByAttr'),
45440
+ removeEmptyAttrs:
45441
+ require('../node_modules/svgo/plugins/removeEmptyAttrs'),
45442
+ removeEmptyContainers:
45443
+ require('../node_modules/svgo/plugins/removeEmptyContainers'),
45444
+ removeEmptyText:
45445
+ require('../node_modules/svgo/plugins/removeEmptyText'),
45446
+ removeHiddenElems:
45447
+ require('../node_modules/svgo/plugins/removeHiddenElems'),
45448
+ removeMetadata:
45449
+ require('../node_modules/svgo/plugins/removeMetadata'),
45450
+ removeNonInheritableGroupAttrs:
45451
+ require('../node_modules/svgo/plugins/removeNonInheritableGroupAttrs'),
45452
+ removeRasterImages:
45453
+ require('../node_modules/svgo/plugins/removeRasterImages'),
45454
+ removeScriptElement:
45455
+ require('../node_modules/svgo/plugins/removeScriptElement'),
45456
+ removeStyleElement:
45457
+ require('../node_modules/svgo/plugins/removeStyleElement'),
45458
+ removeTitle:
45459
+ require('../node_modules/svgo/plugins/removeTitle'),
45460
+ removeUnknownsAndDefaults:
45461
+ require('../node_modules/svgo/plugins/removeUnknownsAndDefaults'),
45462
+ removeUnusedNS:
45463
+ require('../node_modules/svgo/plugins/removeUnusedNS'),
45464
+ removeUselessDefs:
45465
+ require('../node_modules/svgo/plugins/removeUselessDefs'),
45466
+ removeUselessStrokeAndFill:
45467
+ require('../node_modules/svgo/plugins/removeUselessStrokeAndFill'),
45468
+ removeViewBox:
45469
+ require('../node_modules/svgo/plugins/removeViewBox'),
45470
+ removeXMLNS:
45471
+ require('../node_modules/svgo/plugins/removeXMLNS'),
45472
+ removeXMLProcInst:
45473
+ require('../node_modules/svgo/plugins/removeXMLProcInst'),
45474
+ sortAttrs:
45475
+ require('../node_modules/svgo/plugins/sortAttrs'),
45476
+ removeAttrs:
45477
+ require('../node_modules/svgo/plugins/removeAttrs')
45478
+ }
45479
+
45480
+ function isObject (item) {
45481
+ return (item && typeof item === 'object' && !Array.isArray(item))
45482
+ }
45483
+
45484
+ function mergeDeep (target, source) {
45485
+ let output = Object.assign({}, target)
45486
+ if (isObject(target) && isObject(source)) {
45487
+ Object.keys(source).forEach(key => {
45488
+ if (isObject(source[key])) {
45489
+ if (!(key in target)) {
45490
+ Object.assign(output, { [key]: source[key] })
45491
+ } else {
45492
+ output[key] = mergeDeep(target[key], source[key])
45493
+ }
45494
+ } else {
45495
+ Object.assign(output, { [key]: source[key] })
45496
+ }
45497
+ })
45498
+ }
45499
+ return output
45500
+ }
45501
+
45502
+ function SVGO (options) {
45503
+ let self = this
45504
+ let errors = []
45505
+ let log = []
45506
+ options.full = true
45507
+ options.plugins = options.plugins.map((plugin) => {
45508
+ let name = Object.keys(plugin)[0]
45509
+ let params = plugin[name]
45510
+ if (params) {
45511
+ params = typeof params === 'object' ? params : {}
45512
+ params = mergeDeep(pluginModules[name], params)
45513
+ params.active = true
45514
+ plugin[name] = params
45515
+ return plugin
45327
45516
  }
45328
- });
45329
- var errors = [];
45330
- this.options = CONFIG(options);
45331
- this.optimize = function(svgstr) {
45332
- if (self.options.error)
45333
- errors.push("Configuration error: " + self.options.error);
45334
- var passes = self.options.multipass ? 10 : 1;
45335
- var lastSize = Number.POSITIVE_INFINITY;
45336
- var newSize = 0;
45337
- var counter = 0;
45338
- self.svgjs = undefined;
45339
- SVG2JS(svgstr, function(svgjs) {
45517
+ })
45518
+ this.options = CONFIG(options)
45519
+ this.optimize = function (svgstr) {
45520
+ if (self.options.error) {
45521
+ errors.push('Configuration error: ' + self.options.error)
45522
+ }
45523
+ let passes = self.options.multipass ? 10 : 1
45524
+ let lastSize = Number.POSITIVE_INFINITY
45525
+ let newSize = 0
45526
+ let counter = 0
45527
+ self.svgjs = undefined
45528
+ SVG2JS(svgstr, function (svgjs) {
45340
45529
  if (svgjs.error) {
45341
45530
  // If we don't have anything yet, throw an exception.
45342
- errors.push("Error before optimization: " + svgjs.error);
45531
+ errors.push('Error before optimization: ' + svgjs.error)
45343
45532
  } else {
45344
45533
  while (counter++ <= passes && newSize < lastSize) {
45345
- lastSize = newSize;
45534
+ lastSize = newSize
45346
45535
  try {
45347
- svgjs = self._optimize(svgjs, self.options.plugins);
45348
- newSize = JS2SVG(svgjs, self.options.js2svg).data.length;
45536
+ svgjs = self._optimize(svgjs, self.options.plugins)
45537
+ newSize = JS2SVG(svgjs, self.options.js2svg).data.length
45349
45538
  } catch (exc) {
45350
45539
  // Nothing to return yet..
45351
- if (counter == 1)
45352
- throw exc;
45540
+ if (counter === 1) {
45541
+ throw exc
45542
+ }
45353
45543
  // Get out of while loop, we have something to return
45354
45544
  // that is somewhat optimized, only the last iteration
45355
45545
  // failed.
45356
45546
  errors.push(
45357
- "Error occurred during optimization pass " + counter +
45358
- ", returning data from pass " + (counter - 1) +"."
45359
- );
45360
- break;
45547
+ 'Error occurred during optimization pass ' + counter +
45548
+ ', returning data from pass ' + (counter - 1) + '.'
45549
+ )
45550
+ break
45361
45551
  }
45362
45552
  }
45363
- self.svgjs = svgjs;
45553
+ self.svgjs = svgjs
45364
45554
  }
45365
- });
45366
- var xml;
45367
- if (self.svgjs !== undefined && typeof self.svgjs.content !== "undefined") {
45368
- xml = JS2SVG(self.svgjs, self.options.js2svg).data;
45555
+ })
45556
+ let xml
45557
+ if (self.svgjs !== undefined && typeof self.svgjs.content !== 'undefined') {
45558
+ xml = JS2SVG(self.svgjs, self.options.js2svg).data
45369
45559
  }
45370
45560
  return {
45371
45561
  data: xml,
45372
- errors: errors,
45562
+ errors,
45563
+ log,
45564
+ options,
45373
45565
  passes: counter
45374
- };
45375
- };
45566
+ }
45567
+ }
45376
45568
  }
45377
45569
 
45378
- SVGO.prototype._optimize = function(svgjs, plugins) {
45570
+ SVGO.prototype._optimize = (svgjs, plugins) => {
45379
45571
  // Optimization round..
45380
- svgjs = PLUGINS(svgjs, {}, plugins);
45572
+ svgjs = PLUGINS(svgjs, {}, plugins)
45381
45573
  if (svgjs.error) {
45382
- // If we don"t have anything yet, throw an exception.
45383
- throw "Error during optimization: " + svgjs.error;
45574
+ // If we don't have anything yet, throw an exception.
45575
+ throw Error(
45576
+ `Error during optimization: ${svgjs.error} ${JSON.stringify(plugins)}`)
45384
45577
  }
45385
45578
  // If all went well keep the result.
45386
- return svgjs;
45387
- };
45388
-
45389
- module.exports = function(options, data) {
45390
- options = JSON.parse(options);
45391
- options.full = true;
45392
- var svgoContext = new SVGO(options);
45393
- return svgoContext.optimize(data);
45394
- };
45579
+ return svgjs
45580
+ }
45581
+ let svgoContext
45582
+ module.exports = (obj) => {
45583
+ let command = Object.keys(obj)[0]
45584
+ let payload = obj[command]
45585
+ if (command === 'setup') {
45586
+ svgoContext = new SVGO(payload)
45587
+ return true
45588
+ } else if (command === 'optimize' && svgoContext) {
45589
+ return svgoContext.optimize(payload)
45590
+ }
45591
+ throw Error('You need to call `setup([options])` before calling optimize.')
45592
+ }
45395
45593
 
45396
- },{"../node_modules/svgo/lib/svgo/config.js":389,"../node_modules/svgo/lib/svgo/js2svg.js":393,"../node_modules/svgo/lib/svgo/plugins.js":395,"../node_modules/svgo/lib/svgo/svg2js.js":396,"../node_modules/svgo/plugins/addAttributesToSVGElement":401,"../node_modules/svgo/plugins/addClassesToSVGElement":402,"../node_modules/svgo/plugins/cleanupAttrs":403,"../node_modules/svgo/plugins/cleanupEnableBackground":404,"../node_modules/svgo/plugins/cleanupIDs":405,"../node_modules/svgo/plugins/cleanupListOfValues":406,"../node_modules/svgo/plugins/cleanupNumericValues":407,"../node_modules/svgo/plugins/collapseGroups":408,"../node_modules/svgo/plugins/convertColors":409,"../node_modules/svgo/plugins/convertPathData":410,"../node_modules/svgo/plugins/convertShapeToPath":411,"../node_modules/svgo/plugins/convertStyleToAttrs":412,"../node_modules/svgo/plugins/convertTransform":413,"../node_modules/svgo/plugins/inlineStyles":414,"../node_modules/svgo/plugins/mergePaths":415,"../node_modules/svgo/plugins/minifyStyles":416,"../node_modules/svgo/plugins/moveElemsAttrsToGroup":417,"../node_modules/svgo/plugins/moveGroupAttrsToElems":418,"../node_modules/svgo/plugins/prefixIds":419,"../node_modules/svgo/plugins/removeComments":420,"../node_modules/svgo/plugins/removeDesc":421,"../node_modules/svgo/plugins/removeDimensions":422,"../node_modules/svgo/plugins/removeDoctype":423,"../node_modules/svgo/plugins/removeEditorsNSData":424,"../node_modules/svgo/plugins/removeElementsByAttr":425,"../node_modules/svgo/plugins/removeEmptyAttrs":426,"../node_modules/svgo/plugins/removeEmptyContainers":427,"../node_modules/svgo/plugins/removeEmptyText":428,"../node_modules/svgo/plugins/removeHiddenElems":429,"../node_modules/svgo/plugins/removeMetadata":430,"../node_modules/svgo/plugins/removeNonInheritableGroupAttrs":431,"../node_modules/svgo/plugins/removeRasterImages":432,"../node_modules/svgo/plugins/removeScriptElement":433,"../node_modules/svgo/plugins/removeStyleElement":434,"../node_modules/svgo/plugins/removeTitle":435,"../node_modules/svgo/plugins/removeUnknownsAndDefaults":436,"../node_modules/svgo/plugins/removeUnusedNS":437,"../node_modules/svgo/plugins/removeUselessDefs":438,"../node_modules/svgo/plugins/removeUselessStrokeAndFill":439,"../node_modules/svgo/plugins/removeViewBox":440,"../node_modules/svgo/plugins/removeXMLNS":441,"../node_modules/svgo/plugins/removeXMLProcInst":442,"../node_modules/svgo/plugins/sortAttrs":443}]},{},[447])(447)
45594
+ },{"../node_modules/svgo/lib/svgo/config.js":389,"../node_modules/svgo/lib/svgo/js2svg.js":393,"../node_modules/svgo/lib/svgo/plugins.js":395,"../node_modules/svgo/lib/svgo/svg2js.js":396,"../node_modules/svgo/plugins/addAttributesToSVGElement":401,"../node_modules/svgo/plugins/addClassesToSVGElement":402,"../node_modules/svgo/plugins/cleanupAttrs":403,"../node_modules/svgo/plugins/cleanupEnableBackground":404,"../node_modules/svgo/plugins/cleanupIDs":405,"../node_modules/svgo/plugins/cleanupListOfValues":406,"../node_modules/svgo/plugins/cleanupNumericValues":407,"../node_modules/svgo/plugins/collapseGroups":408,"../node_modules/svgo/plugins/convertColors":409,"../node_modules/svgo/plugins/convertPathData":410,"../node_modules/svgo/plugins/convertShapeToPath":411,"../node_modules/svgo/plugins/convertStyleToAttrs":412,"../node_modules/svgo/plugins/convertTransform":413,"../node_modules/svgo/plugins/inlineStyles":414,"../node_modules/svgo/plugins/mergePaths":415,"../node_modules/svgo/plugins/minifyStyles":416,"../node_modules/svgo/plugins/moveElemsAttrsToGroup":417,"../node_modules/svgo/plugins/moveGroupAttrsToElems":418,"../node_modules/svgo/plugins/prefixIds":419,"../node_modules/svgo/plugins/removeAttrs":420,"../node_modules/svgo/plugins/removeComments":421,"../node_modules/svgo/plugins/removeDesc":422,"../node_modules/svgo/plugins/removeDimensions":423,"../node_modules/svgo/plugins/removeDoctype":424,"../node_modules/svgo/plugins/removeEditorsNSData":425,"../node_modules/svgo/plugins/removeElementsByAttr":426,"../node_modules/svgo/plugins/removeEmptyAttrs":427,"../node_modules/svgo/plugins/removeEmptyContainers":428,"../node_modules/svgo/plugins/removeEmptyText":429,"../node_modules/svgo/plugins/removeHiddenElems":430,"../node_modules/svgo/plugins/removeMetadata":431,"../node_modules/svgo/plugins/removeNonInheritableGroupAttrs":432,"../node_modules/svgo/plugins/removeRasterImages":433,"../node_modules/svgo/plugins/removeScriptElement":434,"../node_modules/svgo/plugins/removeStyleElement":435,"../node_modules/svgo/plugins/removeTitle":436,"../node_modules/svgo/plugins/removeUnknownsAndDefaults":437,"../node_modules/svgo/plugins/removeUnusedNS":438,"../node_modules/svgo/plugins/removeUselessDefs":439,"../node_modules/svgo/plugins/removeUselessStrokeAndFill":440,"../node_modules/svgo/plugins/removeViewBox":441,"../node_modules/svgo/plugins/removeXMLNS":442,"../node_modules/svgo/plugins/removeXMLProcInst":443,"../node_modules/svgo/plugins/sortAttrs":444}]},{},[448])(448)
45397
45595
  });