Dhalang 0.3.1 → 0.4.0

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
2
  SHA256:
3
- metadata.gz: 628af09d5e121a562da44e82893f39b3e18a31554cf32c37d22b55aed3a85018
4
- data.tar.gz: a82863a63b690cc24ce3343ce69c1b82ff8900e20d13bb89c0d1770230ae527d
3
+ metadata.gz: 835393ff0f501220a6c71edd20db19897e874b578f0921b37f70b5403840c928
4
+ data.tar.gz: 285639cb8e59c0416d82a15c15ef7e656c00e5d2498b19f885d8635dafc05314
5
5
  SHA512:
6
- metadata.gz: 36a1d5408f42c458a8b2544ed24c9cb4483bc47e14a5abe6c1e8a2767233f698527e771b841b8da126158e620e025a599741ad3c3c9f9b1ffcb93f21a25ab1ec
7
- data.tar.gz: 5df170ccccbde09a90cde11725eac505288dd816f591f23768ab459e0c6d971b11ee931215f225c8f1229cec7c415912728f0597a5b753f8ebb404a00472dbc0
6
+ metadata.gz: aeacd63e036366dcd4f61da1b06fe65965378c6d4dba61de5401daa67f7f3f06744f01e7e4d24bd0d28a157e052eb5ff597695e978f73b9290594787ef48a482
7
+ data.tar.gz: 1888bee0d744f67529fa7927740fbe057ceb73c571c3d06d7de74e24ee028f0769592bc7107bb1696e31e448fd02f7ead676b57f0a94bb2d8ee68192e1382c18
@@ -1,8 +1,12 @@
1
1
  language: ruby
2
+ node_js:
3
+ - node
2
4
  rvm:
3
5
  - 2.6
4
6
  addons:
5
7
  chrome: stable
8
+ before_install:
9
+ - nvm install v15.0.1
6
10
  install:
7
11
  - bundle install
8
12
  - npm install
@@ -13,8 +13,6 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = "Ruby wrapper for Puppeteer. Generate screenshots and PDF's from HTML!"
14
14
  spec.homepage = "https://github.com/NielsSteensma/Dhalang"
15
15
 
16
-
17
-
18
16
  # Specify which files should be added to the gem when it is released.
19
17
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
18
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- Dhalang (0.2.0)
4
+ Dhalang (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -49,4 +49,4 @@ DEPENDENCIES
49
49
  rspec (~> 3.0)
50
50
 
51
51
  BUNDLED WITH
52
- 1.17.2
52
+ 1.17.3
data/README.md CHANGED
@@ -21,7 +21,7 @@ Install puppeteer in your application's root directory:
21
21
 
22
22
  $ npm install puppeteer
23
23
 
24
- <sub>NodeJS v7.6.0 or greater is required</sub>
24
+ <sub>NodeJS v10.18.1 or greater is required</sub>
25
25
  ## Usage
26
26
  __Get a PDF of a website url__
27
27
  `Dhalang::PDF.get_from_url("https://www.google.com")`
@@ -38,7 +38,24 @@ __Get a JPEG screenshot of a website__
38
38
 
39
39
  All methods return a string containing the PDF or JPEG/PNG in binary.
40
40
 
41
- To return the PDF from a Rails controller you can do the following:
41
+
42
+
43
+ ## Custom configuration
44
+ Depending on your use case you may want to change the way Dhalang interacts with Puppeteer. You can do this by passing a Hash with custom configuration parameters as last argument to any calls you make to the library.
45
+
46
+ So for example:
47
+ `Dhalang::Screenshot.get_from_url_as_jpeg("https://www.google.com", {navigation_timeout: 20000})`
48
+
49
+ Below table list the possible configuration parameters you can set:
50
+ | Key | Description | Default |
51
+ |--------------------|-----------------------------------------------------------------------------------------|---------------------------------|
52
+ | navigation_timeout | Amount of milliseconds until Puppeteer while timeout when navigating to the given page | 10000 |
53
+ | user_agent | User agent to send with the request | Default Puppeteer one |
54
+ | view_port | Custom viewport to use for the request | Default Puppeteer one |
55
+ | http_authentication_credentials | Custom HTTP authentication credentials to use for the request | None |
56
+
57
+ ## Examples
58
+ To return a PDF from a Rails controller you can do the following:
42
59
  ```
43
60
  def example_controller_method
44
61
  binary_pdf = Dhalang::PDF.get_from_url("https://www.google.com")
@@ -46,7 +63,7 @@ def example_controller_method
46
63
  end
47
64
  ```
48
65
 
49
- To return the PNG from a Rails controller you can do the following:
66
+ To return a PNG from a Rails controller you can do the following:
50
67
  ```
51
68
  def example_controller_method
52
69
  binary_png = Dhalang::Screenshot.get_from_url_as_png("https://www.google.com")
@@ -54,7 +71,7 @@ def example_controller_method
54
71
  end
55
72
  ```
56
73
 
57
- To return the JPEG from a Rails controller you can do the following:
74
+ To return a JPEG from a Rails controller you can do the following:
58
75
  ```
59
76
  def example_controller_method
60
77
  binary_jpeg = Dhalang::Screenshot.get_from_url_as_jpeg("https://www.google.com")
@@ -8,4 +8,5 @@ module Dhalang
8
8
  require 'uri'
9
9
  require 'tempfile'
10
10
  require 'shellwords'
11
+ require 'json'
11
12
  end
@@ -3,15 +3,76 @@ module Dhalang
3
3
  class Puppeteer
4
4
  NODE_MODULES_PATH = Dir.pwd + '/node_modules/'.freeze
5
5
  private_constant :NODE_MODULES_PATH
6
-
6
+
7
+ NAVIGATION_TIMEOUT = 10000
8
+ private_constant :NAVIGATION_TIMEOUT
9
+
10
+ NAVIGATION_WAIT_UNTIL = 'load'
11
+ private_constant :NAVIGATION_WAIT_UNTIL
12
+
13
+ USER_AGENT = ''
14
+ private_constant :USER_AGENT
15
+
16
+ VIEW_PORT = ''
17
+ private_constant :VIEW_PORT
18
+
19
+ HTTP_AUTHENTICATION_CREDENTIALS = ''
20
+ private_constant :HTTP_AUTHENTICATION_CREDENTIALS
21
+
22
+ DEFAULT_OPTIONS = {
23
+ scale: 1,
24
+ displayHeaderFooter: false,
25
+ headerTemplate: '',
26
+ footerTemplate: '',
27
+ printBackground: true,
28
+ landscape: false,
29
+ pageRanges: '',
30
+ format: 'A4',
31
+ width: '',
32
+ height: '',
33
+ margin: { top: 36, right: 36, bottom: 20, left: 36 },
34
+ preferCSSPageSiz: false
35
+ }
36
+ private_constant :DEFAULT_OPTIONS
37
+
38
+
7
39
  # Launches a new Node process, executing the (Puppeteer) script under the given script_path.
8
40
  #
9
41
  # @param [String] page_url The url to pass to the goTo method of Puppeteer.
10
42
  # @param [String] script_path The absolute path of the JS script to execute.
11
- # @param [String] temp_file_path The absolute path of the temp file to use to write any actions tom from Puppeteer.
43
+ # @param [String] temp_file_path The absolute path of the temp file to use to write any actions from Puppeteer.
12
44
  # @param [String] temp_file_extension The extension of the temp file.
13
- def self.visit(page_url, script_path, temp_file_path, temp_file_extension)
14
- system("node #{script_path} #{Shellwords.escape(NODE_MODULES_PATH)} #{page_url} #{Shellwords.escape(temp_file_path)} #{Shellwords.escape(temp_file_extension)}")
45
+ # @param [Object] options Set of options to use, configurable by the user.
46
+ def self.visit(page_url, script_path, temp_file_path, temp_file_extension, options)
47
+ configuration = create_configuration(page_url, script_path, temp_file_path, temp_file_extension, options)
48
+ Kernel.system("node #{script_path} #{Shellwords.escape(configuration)}")
49
+ end
50
+
51
+
52
+ # Returns a JSON string with the configuration to use within the Puppeteer script.
53
+ #
54
+ # @param [String] page_url The url to pass to the goTo method of Puppeteer.
55
+ # @param [String] script_path The absolute path of the JS script to execute.
56
+ # @param [String] temp_file_path The absolute path of the temp file to use to write any actions from Puppeteer.
57
+ # @param [String] temp_file_extension The extension of the temp file.
58
+ # @param [Hash] options Set of options to use, configurable by the user.
59
+ private_class_method def self.create_configuration(page_url, script_path, temp_file_path, temp_file_extension, options)
60
+ {
61
+ webPageUrl: page_url,
62
+ tempFilePath: temp_file_path,
63
+ puppeteerPath: NODE_MODULES_PATH,
64
+ imageType: temp_file_extension,
65
+ userOptions: {
66
+ navigationParameters: {
67
+ timeout: options.has_key?(:navigation_timeout) ? options[:navigation_timeout] : NAVIGATION_TIMEOUT,
68
+ waitUntil: NAVIGATION_WAIT_UNTIL
69
+ },
70
+ userAgent: options.has_key?(:user_agent) ? options[:user_agent] : USER_AGENT,
71
+ viewPort: options.has_key?(:view_port) ? options[:view_port] : VIEW_PORT,
72
+ httpAuthenticationCredentials: options.has_key?(:http_authentication_credentials) ? options[:http_authentication_credentials] : HTTP_AUTHENTICATION_CREDENTIALS
73
+ },
74
+ pdfOptions: DEFAULT_OPTIONS.map { |option, value| [option, options.has_key?(option) ? options[option] : value] }.to_h
75
+ }.to_json
15
76
  end
16
77
  end
17
- end
78
+ end
@@ -1,3 +1,3 @@
1
1
  module Dhalang
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/PDF.rb CHANGED
@@ -6,25 +6,27 @@ module Dhalang
6
6
 
7
7
  # Captures the full webpage under the given url as PDF.
8
8
  #
9
- # @param [String] url The url to get as PDF.
9
+ # @param [String] url The url to get as PDF.
10
+ # @param [Hash] options User configurable options.
10
11
  #
11
12
  # @return [String] The PDF that was created as binary.
12
- def self.get_from_url(url)
13
+ def self.get_from_url(url, options = {})
13
14
  UrlUtils.validate(url)
14
- get(url)
15
+ get(url, options)
15
16
  end
16
17
 
17
18
  # Captures the full HTML as PDF.
18
19
  # Useful when creating dynamic content, for example invoices.
19
20
  #
20
- # @param [String] html The html to get as PDF.
21
+ # @param [String] html The html to get as PDF.
22
+ # @param [Hash] options User configurable options.
21
23
  #
22
24
  # @return [String] The PDF that was created as binary.
23
- def self.get_from_html(html)
25
+ def self.get_from_html(html, options = {})
24
26
  html_file = FileUtils.create_temp_file("html", html)
25
27
  url = "file://" + html_file.path
26
28
  begin
27
- binary_pdf_content = get(url)
29
+ binary_pdf_content = get(url, options)
28
30
  ensure
29
31
  FileUtils.delete(html_file)
30
32
  end
@@ -34,13 +36,14 @@ module Dhalang
34
36
 
35
37
  # Groups and executes the logic for creating a PDF of a webpage.
36
38
  #
37
- # @param [String] url The url to create a PDF for.
39
+ # @param [String] url The url to create a PDF for.
40
+ # @param [Hash] options Set of options to use, passed by the user of this library.
38
41
  #
39
42
  # @return [String] The PDF that was created as binary.
40
- private_class_method def self.get(url)
43
+ private_class_method def self.get(url, options)
41
44
  temp_file = FileUtils.create_temp_file("pdf")
42
45
  begin
43
- Puppeteer.visit(url, PUPPETEER_SCRIPT_PATH, temp_file.path, "pdf")
46
+ Puppeteer.visit(url, PUPPETEER_SCRIPT_PATH, temp_file.path, "pdf", options)
44
47
  binary_pdf_content = FileUtils.read_binary(temp_file.path)
45
48
  ensure
46
49
  FileUtils.delete(temp_file)
@@ -7,32 +7,35 @@ module Dhalang
7
7
  # Captures a full JPEG screenshot of the webpage under the given url.
8
8
  #
9
9
  # @param [String] url The url to take a screenshot of.
10
+ # @param [Hash] options User configurable options.
10
11
  #
11
12
  # @return [String] the screenshot that was taken as binary.
12
- def self.get_from_url_as_jpeg(url)
13
- get(url, "jpeg")
13
+ def self.get_from_url_as_jpeg(url, options = {})
14
+ get(url, "jpeg", options)
14
15
  end
15
16
 
16
17
  # Captures a full PNG screenshot of the webpage under the given url.
17
18
  #
18
19
  # @param [String] url The url to take a screenshot of.
20
+ # @param [Hash] options User configurable options.
19
21
  #
20
22
  # @return [String] The screenshot that was taken as binary.
21
- def self.get_from_url_as_png(url)
22
- get(url, "png")
23
+ def self.get_from_url_as_png(url, options = {})
24
+ get(url, "png", options)
23
25
  end
24
26
 
25
27
  # Groups and executes the logic for taking a screenhot of a webpage.
26
28
  #
27
29
  # @param [String] url The url to take a screenshot of.
28
30
  # @param [String] image_type The image type to use for storing the screenshot.
31
+ # @param [Hash] options Set of options to use, passed by the user of this library.
29
32
  #
30
33
  # @return [String] The screenshot that was taken as binary.
31
- private_class_method def self.get(url, image_type)
34
+ private_class_method def self.get(url, image_type, options)
32
35
  UrlUtils.validate(url)
33
36
  temp_file = FileUtils.create_temp_file(image_type)
34
37
  begin
35
- Puppeteer.visit(url, PUPPETEER_SCRIPT_PATH, temp_file.path, image_type)
38
+ Puppeteer.visit(url, PUPPETEER_SCRIPT_PATH, temp_file.path, image_type, options)
36
39
  binary_image_content = FileUtils.read_binary(temp_file.path)
37
40
  ensure
38
41
  FileUtils.delete(temp_file)
@@ -1,30 +1,32 @@
1
1
  /**
2
2
  * @typedef {Object} Configuration
3
- * @property {string} webPageUrl - The url of the webpage to visit.
4
- * @property {string} tempFilePath - The path of the tempfile to write the screenshot/pdf to.
5
- * @property {string} puppeteerModulePath - The path of the Puppeteer module.
6
- * @property {string} imageType - The type of image to save ( undefined for pdfgenerator ).
3
+ * @property {string} webPageUrl - The url of the webpage to visit.
4
+ * @property {string} tempFilePath - The path of the tempfile to write the screenshot/pdf to.
5
+ * @property {string} puppeteerModulePath - The path of the Puppeteer module.
6
+ * @property {string} imageType - The type of image to save ( undefined for pdfgenerator ).
7
+ * @property {UserOptions} userOptions - User defined and default parameters to use when navigating to pages with Puppeteer.
8
+ */
9
+ /**
10
+ * @typedef {Object} UserOptions
11
+ * @property {NavigationParameters} navigationParameters - The parameters to use when navigating to pages with Puppeteer.
12
+ * @property {string} userAgent - The user agent to send with requests.
13
+ * @property {Object} viewPort - The view port to use.
14
+ * @property {Object} httpAuthenticationCredentials - The credentials to use for HTTP authentication.
7
15
  */
8
16
 
9
17
  /**
10
18
  * @typedef {Object} NavigationParameters
11
- * @property {number} timeout - Maximum in milliseconds until navigation times out, we use a default of 10 seconds as timeout.
12
- * @property {string} waituntil - Determines when the navigation was finished, we wait here until the Window.load event is fired ( meaning all images, stylesheet, etc was loaded ).
19
+ * @property {number} timeout - Maximum in milliseconds until navigation times out, we use a default of 10 seconds as timeout.
20
+ * @property {string} waituntil - Determines when the navigation was finished, we wait here until the Window.load event is fired ( meaning all images, stylesheet, etc was loaded ).
13
21
  */
14
22
 
15
23
  /**
16
- * Generates a configuration object based on the given process arguments from Ruby.
17
- * @param {Boolean} isForScreenshotGenerator - Indicates if this configuration is for a screenshot generator.
24
+ * Parses the given configuration process argument from Ruby to a JS object.
18
25
  * @returns {Configuration}
19
- * The generated configuration object.
26
+ * The configuration object.
20
27
  */
21
- exports.getConfiguration = function (isForScreenshotGenerator) {
22
- return {
23
- puppeteerPath: process.argv[2],
24
- webPageUrl: process.argv[3],
25
- tempFilePath: process.argv[4],
26
- imageType: isForScreenshotGenerator ? process.argv[5] : undefined
27
- }
28
+ exports.getConfiguration = function () {
29
+ return JSON.parse(process.argv[2])
28
30
  }
29
31
 
30
32
  /**
@@ -42,13 +44,20 @@ exports.launchPuppeteer = async function (puppeteerModulePath) {
42
44
  }
43
45
 
44
46
  /**
45
- * Returns a new object containing the navigation parameters to use when navigating with Puppeteer to web pages.
46
- * @returns {NavigationParameters}
47
- * The navigation parameters to use.
47
+ * Configures the given Puppeteer page.
48
+ * @param {Object} page - The Puppeteer page to configure.
49
+ * @param {UserOptions} configuration - The configuration to use.
48
50
  */
49
- exports.getNavigationParameters = function () {
50
- return {
51
- timeout: 10000,
52
- waitUntil: 'load'
51
+ exports.configurePage = async function (page, configuration) {
52
+ if (configuration.userAgent !== "") {
53
+ await page.setUserAgent(configuration.userAgent)
54
+ }
55
+
56
+ if (configuration.viewPort !== "") {
57
+ await page.setViewport(configuration.viewPort)
58
+ }
59
+
60
+ if (configuration.httpAuthenticationCredentials !== "") {
61
+ await page.authenticate(configuration.authenticationCredentials)
53
62
  }
54
63
  }
@@ -2,24 +2,20 @@
2
2
  const dhalang = require('./dhalang');
3
3
 
4
4
  const createPdf = async () => {
5
- const configuration = dhalang.getConfiguration(false);
5
+ const configuration = dhalang.getConfiguration();
6
6
 
7
7
  let browser;
8
8
  try {
9
9
  browser = await dhalang.launchPuppeteer(configuration.puppeteerPath);
10
10
  const page = await browser.newPage();
11
- await page.goto(configuration.webPageUrl, dhalang.getNavigationParameters());
12
- await page.waitFor(250);
11
+ await dhalang.configurePage(page, configuration.userOptions);
12
+ await page.goto(configuration.webPageUrl, configuration.userOptions.navigationParameters);
13
+ await page.waitForTimeout(250);
13
14
  await page.pdf({
14
- path: configuration.tempFilePath,
15
- format: 'A4',
16
- margin: {
17
- top: 36,
18
- right: 36,
19
- bottom: 20,
20
- left: 36
15
+ ...{
16
+ path: configuration.tempFilePath
21
17
  },
22
- printBackground: true
18
+ ...configuration.pdfOptions
23
19
  });
24
20
  } catch (error) {
25
21
  console.log(error.message);
@@ -2,14 +2,15 @@
2
2
  const dhalang = require('./dhalang')
3
3
 
4
4
  const createPdf = async () => {
5
- const configuration = dhalang.getConfiguration(true);
5
+ const configuration = dhalang.getConfiguration();
6
6
 
7
7
  let browser;
8
8
  try {
9
9
  browser = await dhalang.launchPuppeteer(configuration.puppeteerPath);
10
10
  const page = await browser.newPage();
11
- await page.goto(configuration.webPageUrl, dhalang.getNavigationParameters());
12
- await page.waitFor(250);
11
+ await dhalang.configurePage(page, configuration.userOptions);
12
+ await page.goto(configuration.webPageUrl, configuration.userOptions.navigationParameters);
13
+ await page.waitForTimeout(250);
13
14
  await page.screenshot({
14
15
  path: configuration.tempFilePath,
15
16
  type: configuration.imageType,
@@ -4,19 +4,27 @@
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
7
- "agent-base": {
8
- "version": "4.3.0",
9
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
10
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
7
+ "@types/node": {
8
+ "version": "14.14.2",
9
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz",
10
+ "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==",
11
+ "dev": true,
12
+ "optional": true
13
+ },
14
+ "@types/yauzl": {
15
+ "version": "2.9.1",
16
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz",
17
+ "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==",
11
18
  "dev": true,
19
+ "optional": true,
12
20
  "requires": {
13
- "es6-promisify": "^5.0.0"
21
+ "@types/node": "*"
14
22
  }
15
23
  },
16
- "async-limiter": {
17
- "version": "1.0.1",
18
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
19
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
24
+ "agent-base": {
25
+ "version": "5.1.1",
26
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
27
+ "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==",
20
28
  "dev": true
21
29
  },
22
30
  "balanced-match": {
@@ -25,6 +33,23 @@
25
33
  "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
26
34
  "dev": true
27
35
  },
36
+ "base64-js": {
37
+ "version": "1.3.1",
38
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
39
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
40
+ "dev": true
41
+ },
42
+ "bl": {
43
+ "version": "4.0.3",
44
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
45
+ "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
46
+ "dev": true,
47
+ "requires": {
48
+ "buffer": "^5.5.0",
49
+ "inherits": "^2.0.4",
50
+ "readable-stream": "^3.4.0"
51
+ }
52
+ },
28
53
  "brace-expansion": {
29
54
  "version": "1.1.11",
30
55
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -35,16 +60,26 @@
35
60
  "concat-map": "0.0.1"
36
61
  }
37
62
  },
63
+ "buffer": {
64
+ "version": "5.6.0",
65
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
66
+ "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
67
+ "dev": true,
68
+ "requires": {
69
+ "base64-js": "^1.0.2",
70
+ "ieee754": "^1.1.4"
71
+ }
72
+ },
38
73
  "buffer-crc32": {
39
74
  "version": "0.2.13",
40
75
  "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
41
76
  "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
42
77
  "dev": true
43
78
  },
44
- "buffer-from": {
45
- "version": "1.1.1",
46
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
47
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
79
+ "chownr": {
80
+ "version": "1.1.4",
81
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
82
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
48
83
  "dev": true
49
84
  },
50
85
  "concat-map": {
@@ -53,75 +88,40 @@
53
88
  "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
54
89
  "dev": true
55
90
  },
56
- "concat-stream": {
57
- "version": "1.6.2",
58
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
59
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
60
- "dev": true,
61
- "requires": {
62
- "buffer-from": "^1.0.0",
63
- "inherits": "^2.0.3",
64
- "readable-stream": "^2.2.2",
65
- "typedarray": "^0.0.6"
66
- }
67
- },
68
- "core-util-is": {
69
- "version": "1.0.2",
70
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
71
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
72
- "dev": true
73
- },
74
91
  "debug": {
75
- "version": "4.1.1",
76
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
77
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
92
+ "version": "4.2.0",
93
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
94
+ "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
78
95
  "dev": true,
79
96
  "requires": {
80
- "ms": "^2.1.1"
97
+ "ms": "2.1.2"
81
98
  }
82
99
  },
83
- "es6-promise": {
84
- "version": "4.2.8",
85
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
86
- "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
100
+ "devtools-protocol": {
101
+ "version": "0.0.799653",
102
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.799653.tgz",
103
+ "integrity": "sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg==",
87
104
  "dev": true
88
105
  },
89
- "es6-promisify": {
90
- "version": "5.0.0",
91
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
92
- "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
106
+ "end-of-stream": {
107
+ "version": "1.4.4",
108
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
109
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
93
110
  "dev": true,
94
111
  "requires": {
95
- "es6-promise": "^4.0.3"
112
+ "once": "^1.4.0"
96
113
  }
97
114
  },
98
115
  "extract-zip": {
99
- "version": "1.7.0",
100
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
101
- "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
116
+ "version": "2.0.1",
117
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
118
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
102
119
  "dev": true,
103
120
  "requires": {
104
- "concat-stream": "^1.6.2",
105
- "debug": "^2.6.9",
106
- "mkdirp": "^0.5.4",
121
+ "@types/yauzl": "^2.9.1",
122
+ "debug": "^4.1.1",
123
+ "get-stream": "^5.1.0",
107
124
  "yauzl": "^2.10.0"
108
- },
109
- "dependencies": {
110
- "debug": {
111
- "version": "2.6.9",
112
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
113
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
114
- "dev": true,
115
- "requires": {
116
- "ms": "2.0.0"
117
- }
118
- },
119
- "ms": {
120
- "version": "2.0.0",
121
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
122
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
123
- "dev": true
124
- }
125
125
  }
126
126
  },
127
127
  "fd-slicer": {
@@ -133,12 +133,37 @@
133
133
  "pend": "~1.2.0"
134
134
  }
135
135
  },
136
+ "find-up": {
137
+ "version": "4.1.0",
138
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
139
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
140
+ "dev": true,
141
+ "requires": {
142
+ "locate-path": "^5.0.0",
143
+ "path-exists": "^4.0.0"
144
+ }
145
+ },
146
+ "fs-constants": {
147
+ "version": "1.0.0",
148
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
149
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
150
+ "dev": true
151
+ },
136
152
  "fs.realpath": {
137
153
  "version": "1.0.0",
138
154
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
139
155
  "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
140
156
  "dev": true
141
157
  },
158
+ "get-stream": {
159
+ "version": "5.2.0",
160
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
161
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
162
+ "dev": true,
163
+ "requires": {
164
+ "pump": "^3.0.0"
165
+ }
166
+ },
142
167
  "glob": {
143
168
  "version": "7.1.6",
144
169
  "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@@ -154,26 +179,21 @@
154
179
  }
155
180
  },
156
181
  "https-proxy-agent": {
157
- "version": "2.2.4",
158
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
159
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
182
+ "version": "4.0.0",
183
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
184
+ "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
160
185
  "dev": true,
161
186
  "requires": {
162
- "agent-base": "^4.3.0",
163
- "debug": "^3.1.0"
164
- },
165
- "dependencies": {
166
- "debug": {
167
- "version": "3.2.6",
168
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
169
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
170
- "dev": true,
171
- "requires": {
172
- "ms": "^2.1.1"
173
- }
174
- }
187
+ "agent-base": "5",
188
+ "debug": "4"
175
189
  }
176
190
  },
191
+ "ieee754": {
192
+ "version": "1.1.13",
193
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
194
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
195
+ "dev": true
196
+ },
177
197
  "inflight": {
178
198
  "version": "1.0.6",
179
199
  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -190,17 +210,14 @@
190
210
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
191
211
  "dev": true
192
212
  },
193
- "isarray": {
194
- "version": "1.0.0",
195
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
196
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
197
- "dev": true
198
- },
199
- "mime": {
200
- "version": "2.4.6",
201
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
202
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
203
- "dev": true
213
+ "locate-path": {
214
+ "version": "5.0.0",
215
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
216
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
217
+ "dev": true,
218
+ "requires": {
219
+ "p-locate": "^4.1.0"
220
+ }
204
221
  },
205
222
  "minimatch": {
206
223
  "version": "3.0.4",
@@ -211,21 +228,12 @@
211
228
  "brace-expansion": "^1.1.7"
212
229
  }
213
230
  },
214
- "minimist": {
215
- "version": "1.2.5",
216
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
217
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
231
+ "mkdirp-classic": {
232
+ "version": "0.5.3",
233
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
234
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
218
235
  "dev": true
219
236
  },
220
- "mkdirp": {
221
- "version": "0.5.5",
222
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
223
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
224
- "dev": true,
225
- "requires": {
226
- "minimist": "^1.2.5"
227
- }
228
- },
229
237
  "ms": {
230
238
  "version": "2.1.2",
231
239
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -241,6 +249,36 @@
241
249
  "wrappy": "1"
242
250
  }
243
251
  },
252
+ "p-limit": {
253
+ "version": "2.3.0",
254
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
255
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
256
+ "dev": true,
257
+ "requires": {
258
+ "p-try": "^2.0.0"
259
+ }
260
+ },
261
+ "p-locate": {
262
+ "version": "4.1.0",
263
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
264
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
265
+ "dev": true,
266
+ "requires": {
267
+ "p-limit": "^2.2.0"
268
+ }
269
+ },
270
+ "p-try": {
271
+ "version": "2.2.0",
272
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
273
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
274
+ "dev": true
275
+ },
276
+ "path-exists": {
277
+ "version": "4.0.0",
278
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
279
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
280
+ "dev": true
281
+ },
244
282
  "path-is-absolute": {
245
283
  "version": "1.0.1",
246
284
  "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -253,11 +291,14 @@
253
291
  "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
254
292
  "dev": true
255
293
  },
256
- "process-nextick-args": {
257
- "version": "2.0.1",
258
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
259
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
260
- "dev": true
294
+ "pkg-dir": {
295
+ "version": "4.2.0",
296
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
297
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
298
+ "dev": true,
299
+ "requires": {
300
+ "find-up": "^4.0.0"
301
+ }
261
302
  },
262
303
  "progress": {
263
304
  "version": "2.0.3",
@@ -271,67 +312,111 @@
271
312
  "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
272
313
  "dev": true
273
314
  },
315
+ "pump": {
316
+ "version": "3.0.0",
317
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
318
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
319
+ "dev": true,
320
+ "requires": {
321
+ "end-of-stream": "^1.1.0",
322
+ "once": "^1.3.1"
323
+ }
324
+ },
274
325
  "puppeteer": {
275
- "version": "1.20.0",
276
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz",
277
- "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==",
326
+ "version": "5.3.1",
327
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.3.1.tgz",
328
+ "integrity": "sha512-YTM1RaBeYrj6n7IlRXRYLqJHF+GM7tasbvrNFx6w1S16G76NrPq7oYFKLDO+BQsXNtS8kW2GxWCXjIMPvfDyaQ==",
278
329
  "dev": true,
279
330
  "requires": {
280
331
  "debug": "^4.1.0",
281
- "extract-zip": "^1.6.6",
282
- "https-proxy-agent": "^2.2.1",
283
- "mime": "^2.0.3",
332
+ "devtools-protocol": "0.0.799653",
333
+ "extract-zip": "^2.0.0",
334
+ "https-proxy-agent": "^4.0.0",
335
+ "pkg-dir": "^4.2.0",
284
336
  "progress": "^2.0.1",
285
337
  "proxy-from-env": "^1.0.0",
286
- "rimraf": "^2.6.1",
287
- "ws": "^6.1.0"
338
+ "rimraf": "^3.0.2",
339
+ "tar-fs": "^2.0.0",
340
+ "unbzip2-stream": "^1.3.3",
341
+ "ws": "^7.2.3"
288
342
  }
289
343
  },
290
344
  "readable-stream": {
291
- "version": "2.3.7",
292
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
293
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
345
+ "version": "3.6.0",
346
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
347
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
294
348
  "dev": true,
295
349
  "requires": {
296
- "core-util-is": "~1.0.0",
297
- "inherits": "~2.0.3",
298
- "isarray": "~1.0.0",
299
- "process-nextick-args": "~2.0.0",
300
- "safe-buffer": "~5.1.1",
301
- "string_decoder": "~1.1.1",
302
- "util-deprecate": "~1.0.1"
350
+ "inherits": "^2.0.3",
351
+ "string_decoder": "^1.1.1",
352
+ "util-deprecate": "^1.0.1"
303
353
  }
304
354
  },
305
355
  "rimraf": {
306
- "version": "2.7.1",
307
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
308
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
356
+ "version": "3.0.2",
357
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
358
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
309
359
  "dev": true,
310
360
  "requires": {
311
361
  "glob": "^7.1.3"
312
362
  }
313
363
  },
314
364
  "safe-buffer": {
315
- "version": "5.1.2",
316
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
317
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
365
+ "version": "5.2.1",
366
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
367
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
318
368
  "dev": true
319
369
  },
320
370
  "string_decoder": {
321
- "version": "1.1.1",
322
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
323
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
371
+ "version": "1.3.0",
372
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
373
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
374
+ "dev": true,
375
+ "requires": {
376
+ "safe-buffer": "~5.2.0"
377
+ }
378
+ },
379
+ "tar-fs": {
380
+ "version": "2.1.0",
381
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz",
382
+ "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==",
383
+ "dev": true,
384
+ "requires": {
385
+ "chownr": "^1.1.1",
386
+ "mkdirp-classic": "^0.5.2",
387
+ "pump": "^3.0.0",
388
+ "tar-stream": "^2.0.0"
389
+ }
390
+ },
391
+ "tar-stream": {
392
+ "version": "2.1.4",
393
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz",
394
+ "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==",
324
395
  "dev": true,
325
396
  "requires": {
326
- "safe-buffer": "~5.1.0"
397
+ "bl": "^4.0.3",
398
+ "end-of-stream": "^1.4.1",
399
+ "fs-constants": "^1.0.0",
400
+ "inherits": "^2.0.3",
401
+ "readable-stream": "^3.1.1"
327
402
  }
328
403
  },
329
- "typedarray": {
330
- "version": "0.0.6",
331
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
332
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
404
+ "through": {
405
+ "version": "2.3.8",
406
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
407
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
333
408
  "dev": true
334
409
  },
410
+ "unbzip2-stream": {
411
+ "version": "1.4.3",
412
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
413
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
414
+ "dev": true,
415
+ "requires": {
416
+ "buffer": "^5.2.1",
417
+ "through": "^2.3.8"
418
+ }
419
+ },
335
420
  "util-deprecate": {
336
421
  "version": "1.0.2",
337
422
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -345,13 +430,10 @@
345
430
  "dev": true
346
431
  },
347
432
  "ws": {
348
- "version": "6.2.1",
349
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
350
- "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
351
- "dev": true,
352
- "requires": {
353
- "async-limiter": "~1.0.0"
354
- }
433
+ "version": "7.3.1",
434
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
435
+ "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
436
+ "dev": true
355
437
  },
356
438
  "yauzl": {
357
439
  "version": "2.10.0",
@@ -20,6 +20,6 @@
20
20
  },
21
21
  "homepage": "https://github.com/NielsSteensma/Dhalang#readme",
22
22
  "devDependencies": {
23
- "puppeteer": "^1.20.0"
23
+ "puppeteer": "^5.3.0"
24
24
  }
25
- }
25
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dhalang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niels Steensma
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-28 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler