Dhalang 0.3.1 → 0.4.0

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
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