svgo 0.1.4 → 1.0.1d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  });