afterlife 1.0.0 → 1.1.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 +4 -4
- data/.rubocop.yml +1 -1
- data/afterlife.gemspec +4 -2
- data/lib/afterlife/cli.rb +3 -49
- data/lib/afterlife/deploy/cdn_deployment.rb +15 -2
- data/lib/afterlife/deploy/cli.rb +69 -0
- data/lib/afterlife/deploy/custom_deployment.rb +23 -0
- data/lib/afterlife/deploy/deployment.rb +4 -6
- data/lib/afterlife/deploy.rb +28 -24
- data/lib/afterlife/version.rb +1 -1
- metadata +4 -4
- data/Rakefile +0 -17
- data/yarn.lock +0 -260
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad1fcadc1d4fa02e309f7fbffe6e10f1538844dd956381aec84dca99c075b336
|
4
|
+
data.tar.gz: 4885395894cd313ddf440595c5c635733ce3a772d80f2d21756d2a15f424a551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '082b695c397a910107fea5a286e6d6179be4495670a96f550b881e831cee537726d9655be034e77fd4b9f4bb489f071d5974279ac4b80fcdb3aeb905218a98cc'
|
7
|
+
data.tar.gz: 3301a025549f4a02582ac27151a33193447137d80809c90122031cd1f0727d3bf3bb8e197a0bb0480acdee4e8c2900a6bdf409e1efa358f3b6db9d8af9c9f54d
|
data/.rubocop.yml
CHANGED
data/afterlife.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ['Genaro Madrid']
|
9
9
|
spec.email = ['genmadrid@gmail.com']
|
10
10
|
|
11
|
-
spec.summary = 'Devops
|
11
|
+
spec.summary = 'Devops utils'
|
12
12
|
spec.description = 'Afterlife helps you setup your development environment and deploy code easily'
|
13
13
|
spec.required_ruby_version = '>= 2.6'
|
14
14
|
|
@@ -19,7 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
20
|
spec.files = Dir.chdir(__dir__) do
|
21
21
|
`git ls-files -z`.split("\x0").reject do |f|
|
22
|
-
(f == __FILE__) ||
|
22
|
+
(f == __FILE__) ||
|
23
|
+
f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)}) ||
|
24
|
+
f.match(/Rakefile/)
|
23
25
|
end
|
24
26
|
end
|
25
27
|
spec.bindir = 'exe'
|
data/lib/afterlife/cli.rb
CHANGED
@@ -41,27 +41,14 @@ module Afterlife
|
|
41
41
|
desc 'cdn', 'CDN stuff'
|
42
42
|
subcommand 'cdn', Cdn::Cli
|
43
43
|
|
44
|
-
desc 'deploy <stage>', 'Deploy current
|
44
|
+
desc 'deploy <stage>', 'Deploy current repo'
|
45
45
|
option 'no-build', type: :boolean
|
46
46
|
option 'no-install', type: :boolean
|
47
47
|
option 'dry-run', type: :boolean
|
48
48
|
option 'skip-after-hooks', type: :boolean
|
49
49
|
option :yes, type: :boolean
|
50
|
-
|
51
|
-
|
52
|
-
def deploy(stage) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
53
|
-
Afterlife.cli = self
|
54
|
-
Afterlife.current_stage = Afterlife.config.stages[stage.to_sym]
|
55
|
-
fill_env
|
56
|
-
ask_confirmation(repo.confirmation_message) unless options['yes']
|
57
|
-
install_dependencies unless options['no-install']
|
58
|
-
build unless options['no-build']
|
59
|
-
|
60
|
-
say_status 'Deploying', repo.dist_path
|
61
|
-
output = Deploy.call
|
62
|
-
say_status 'Deployed', output
|
63
|
-
rescue Deploy::Error => e
|
64
|
-
fatal!(e.message)
|
50
|
+
def deploy(stage)
|
51
|
+
invoke Deploy::Cli, :call, [stage], options
|
65
52
|
rescue Interrupt
|
66
53
|
log_interrupted
|
67
54
|
end
|
@@ -77,39 +64,6 @@ module Afterlife
|
|
77
64
|
|
78
65
|
private
|
79
66
|
|
80
|
-
def fill_env
|
81
|
-
repo.env.merge!(
|
82
|
-
'DIST_PATH' => repo.dist_path.to_s,
|
83
|
-
'CURRENT_BRANCH' => repo.current_branch,
|
84
|
-
'AFTERLIFE_STAGE' => Afterlife.current_stage.name,
|
85
|
-
)
|
86
|
-
end
|
87
|
-
|
88
|
-
def install_dependencies
|
89
|
-
return unless repo.install_dependencies_command
|
90
|
-
|
91
|
-
say_status 'Installing', '*' * 20
|
92
|
-
Exec.run(repo.install_dependencies_command)
|
93
|
-
end
|
94
|
-
|
95
|
-
def build
|
96
|
-
return unless repo.build_command
|
97
|
-
|
98
|
-
say_status 'Building', '*' * 20
|
99
|
-
Exec.run(repo.build_command)
|
100
|
-
end
|
101
|
-
|
102
|
-
def ask_confirmation(message)
|
103
|
-
if message
|
104
|
-
say message
|
105
|
-
else
|
106
|
-
say set_color("You're about to deploy the contents of '#{repo.dist_path}' to")
|
107
|
-
say set_color(Cdn.url(repo), :bold)
|
108
|
-
say set_color("\nWARNING: Please be aware that this may be a destructive operation", :yellow)
|
109
|
-
end
|
110
|
-
exit 1 unless yes?('Are you sure? [y/n]')
|
111
|
-
end
|
112
|
-
|
113
67
|
def repo
|
114
68
|
Afterlife.current_repo
|
115
69
|
end
|
@@ -1,10 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Afterlife
|
4
|
-
|
4
|
+
module Deploy
|
5
5
|
class CdnDeployment < Deployment
|
6
6
|
def run
|
7
7
|
Exec.run(commands)
|
8
|
+
end
|
9
|
+
|
10
|
+
def output
|
8
11
|
Cdn.url(repo)
|
9
12
|
end
|
10
13
|
|
@@ -17,6 +20,15 @@ module Afterlife
|
|
17
20
|
)
|
18
21
|
end
|
19
22
|
|
23
|
+
def initial_message
|
24
|
+
repo.dist_path
|
25
|
+
end
|
26
|
+
|
27
|
+
def confirmation_message
|
28
|
+
repo.confirmation_message ||
|
29
|
+
"You are about to deploy the contents of '#{repo.dist_path}' to"
|
30
|
+
end
|
31
|
+
|
20
32
|
private
|
21
33
|
|
22
34
|
def commands
|
@@ -35,13 +47,14 @@ module Afterlife
|
|
35
47
|
%<S3_FULL_PATH>s
|
36
48
|
--exclude '*.ts'
|
37
49
|
--exclude '*.tsx'
|
50
|
+
--size-only
|
38
51
|
--cache-control 'no-cache'
|
39
52
|
BASH
|
40
53
|
end
|
41
54
|
|
42
55
|
def revision
|
43
56
|
<<-BASH
|
44
|
-
echo "#{repo.current_revision}" | aws s3 cp --content-type text/plain - %<S3_FULL_PATH>s/revision
|
57
|
+
echo "#{repo.current_revision}" | aws s3 cp --content-type text/plain --cache-control 'no-cache' - %<S3_FULL_PATH>s/revision
|
45
58
|
BASH
|
46
59
|
end
|
47
60
|
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Afterlife
|
4
|
+
module Deploy
|
5
|
+
class Cli < Thor
|
6
|
+
include BaseCli
|
7
|
+
def self.exit_on_failure?
|
8
|
+
true
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'deploy <stage>', 'Deploy current repo'
|
12
|
+
def call(stage)
|
13
|
+
Afterlife.cli = self
|
14
|
+
Deploy.call(stage) do |deployment|
|
15
|
+
setup_deploy(deployment)
|
16
|
+
say_status 'Deploying', deployment.initial_message
|
17
|
+
deployment.run
|
18
|
+
say_status 'Deployed', deployment.output
|
19
|
+
run_after_hooks
|
20
|
+
end
|
21
|
+
rescue Deploy::Error => e
|
22
|
+
fatal!(e.message)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def run_after_hooks
|
28
|
+
return if options['skip-after-hooks']
|
29
|
+
|
30
|
+
commands = repo.conf.dig(:deploy, :after)
|
31
|
+
return unless commands
|
32
|
+
|
33
|
+
say_status 'After hooks', ''
|
34
|
+
Exec.run(commands)
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup_deploy(deployment)
|
38
|
+
ask_confirmation(deployment) unless options['yes']
|
39
|
+
install_dependencies unless options['no-install']
|
40
|
+
build unless options['no-build']
|
41
|
+
end
|
42
|
+
|
43
|
+
def ask_confirmation(deployment)
|
44
|
+
say set_color(deployment.confirmation_message)
|
45
|
+
say set_color(deployment.output, :bold) if deployment.output
|
46
|
+
say set_color("\nWARNING: Please be aware that this may be a destructive operation", :yellow)
|
47
|
+
exit 1 unless yes?('Are you sure? [y/n]')
|
48
|
+
end
|
49
|
+
|
50
|
+
def install_dependencies
|
51
|
+
return unless repo.install_dependencies_command
|
52
|
+
|
53
|
+
say_status 'Installing', '*' * 20
|
54
|
+
Exec.run(repo.install_dependencies_command)
|
55
|
+
end
|
56
|
+
|
57
|
+
def build
|
58
|
+
return unless repo.build_command
|
59
|
+
|
60
|
+
say_status 'Building', '*' * 20
|
61
|
+
Exec.run(repo.build_command)
|
62
|
+
end
|
63
|
+
|
64
|
+
def repo
|
65
|
+
Afterlife.current_repo
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Afterlife
|
4
|
+
module Deploy
|
5
|
+
class CustomDeployment < Deployment
|
6
|
+
def run
|
7
|
+
Exec.run(commands)
|
8
|
+
end
|
9
|
+
|
10
|
+
def confirmation_message
|
11
|
+
'You are about to deploy the current directory'
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def commands
|
17
|
+
[
|
18
|
+
repo_command,
|
19
|
+
].flatten
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,13 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Afterlife
|
4
|
-
|
4
|
+
module Deploy
|
5
5
|
class Deployment
|
6
|
-
def self.run
|
7
|
-
deployment = new.tap(&:setup)
|
8
|
-
deployment.run
|
9
|
-
end
|
10
|
-
|
11
6
|
def run
|
12
7
|
fail NotImplementedError
|
13
8
|
end
|
@@ -17,6 +12,9 @@ module Afterlife
|
|
17
12
|
end
|
18
13
|
|
19
14
|
def setup; end
|
15
|
+
def output; end
|
16
|
+
def initial_message; end
|
17
|
+
def confirmation_message; end
|
20
18
|
|
21
19
|
protected
|
22
20
|
|
data/lib/afterlife/deploy.rb
CHANGED
@@ -1,44 +1,48 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Afterlife
|
4
|
-
|
5
|
-
|
4
|
+
module Deploy
|
5
|
+
module_function
|
6
6
|
|
7
|
-
|
8
|
-
new.deploy
|
9
|
-
end
|
7
|
+
Error = Class.new StandardError
|
10
8
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
def call(stage)
|
10
|
+
deployment = klass.new
|
11
|
+
setup_stage(stage)
|
12
|
+
fill_env
|
13
|
+
deployment.setup
|
14
|
+
yield deployment
|
15
|
+
deployment
|
17
16
|
end
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
def deployment_output
|
22
|
-
case deployment_type
|
18
|
+
def klass
|
19
|
+
case current_type
|
23
20
|
when 'cdn'
|
24
|
-
CdnDeployment
|
21
|
+
CdnDeployment
|
22
|
+
else
|
23
|
+
CustomDeployment
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
def
|
29
|
-
|
27
|
+
def current_type
|
28
|
+
Afterlife.current_repo.conf.dig(:deploy, :type).tap do |result|
|
30
29
|
fail Error, 'deploy.type must be defined if you want to deploy with Afterlife' unless result
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
def setup_stage(stage)
|
34
|
+
unless Afterlife.config.stages.key?(stage.to_sym)
|
35
|
+
fatal!("invalid stage '#{stage}'. Possible values: #{Afterlife.config.stages.keys.map(&:to_s)}")
|
36
|
+
end
|
37
|
+
Afterlife.current_stage = Afterlife.config.stages[stage.to_sym]
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
Afterlife.current_repo
|
40
|
+
def fill_env
|
41
|
+
Afterlife.current_repo.env.merge!(
|
42
|
+
'DIST_PATH' => Afterlife.current_repo.dist_path.to_s,
|
43
|
+
'CURRENT_BRANCH' => Afterlife.current_repo.current_branch,
|
44
|
+
'AFTERLIFE_STAGE' => Afterlife.current_stage.name,
|
45
|
+
)
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
data/lib/afterlife/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: afterlife
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genaro Madrid
|
@@ -110,7 +110,6 @@ files:
|
|
110
110
|
- CHANGELOG.md
|
111
111
|
- Gemfile
|
112
112
|
- README.md
|
113
|
-
- Rakefile
|
114
113
|
- afterlife.gemspec
|
115
114
|
- config.ru
|
116
115
|
- exe/afterlife
|
@@ -125,6 +124,8 @@ files:
|
|
125
124
|
- lib/afterlife/config.rb
|
126
125
|
- lib/afterlife/deploy.rb
|
127
126
|
- lib/afterlife/deploy/cdn_deployment.rb
|
127
|
+
- lib/afterlife/deploy/cli.rb
|
128
|
+
- lib/afterlife/deploy/custom_deployment.rb
|
128
129
|
- lib/afterlife/deploy/deployment.rb
|
129
130
|
- lib/afterlife/environment.rb
|
130
131
|
- lib/afterlife/exec.rb
|
@@ -138,7 +139,6 @@ files:
|
|
138
139
|
- lib/afterlife/stage.rb
|
139
140
|
- lib/afterlife/version.rb
|
140
141
|
- logs/.keep
|
141
|
-
- yarn.lock
|
142
142
|
homepage:
|
143
143
|
licenses: []
|
144
144
|
metadata:
|
@@ -163,5 +163,5 @@ requirements: []
|
|
163
163
|
rubygems_version: 3.2.33
|
164
164
|
signing_key:
|
165
165
|
specification_version: 4
|
166
|
-
summary: Devops
|
166
|
+
summary: Devops utils
|
167
167
|
test_files: []
|
data/Rakefile
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'bundler/gem_tasks'
|
4
|
-
require 'rspec/core/rake_task'
|
5
|
-
|
6
|
-
RSpec::Core::RakeTask.new(:spec)
|
7
|
-
|
8
|
-
require 'rubocop/rake_task'
|
9
|
-
|
10
|
-
RuboCop::RakeTask.new
|
11
|
-
|
12
|
-
desc 'start a console'
|
13
|
-
task :console do
|
14
|
-
exec 'pry -r afterlife -I ./lib'
|
15
|
-
end
|
16
|
-
|
17
|
-
task default: %i[spec rubocop]
|
data/yarn.lock
DELETED
@@ -1,260 +0,0 @@
|
|
1
|
-
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
2
|
-
# yarn lockfile v1
|
3
|
-
|
4
|
-
|
5
|
-
ansi-styles@^4.1.0:
|
6
|
-
version "4.3.0"
|
7
|
-
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
8
|
-
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
9
|
-
dependencies:
|
10
|
-
color-convert "^2.0.1"
|
11
|
-
|
12
|
-
async@^2.6.4:
|
13
|
-
version "2.6.4"
|
14
|
-
resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
|
15
|
-
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
|
16
|
-
dependencies:
|
17
|
-
lodash "^4.17.14"
|
18
|
-
|
19
|
-
basic-auth@^2.0.1:
|
20
|
-
version "2.0.1"
|
21
|
-
resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
|
22
|
-
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
|
23
|
-
dependencies:
|
24
|
-
safe-buffer "5.1.2"
|
25
|
-
|
26
|
-
call-bind@^1.0.0:
|
27
|
-
version "1.0.2"
|
28
|
-
resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
|
29
|
-
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
|
30
|
-
dependencies:
|
31
|
-
function-bind "^1.1.1"
|
32
|
-
get-intrinsic "^1.0.2"
|
33
|
-
|
34
|
-
chalk@^4.1.2:
|
35
|
-
version "4.1.2"
|
36
|
-
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
37
|
-
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
38
|
-
dependencies:
|
39
|
-
ansi-styles "^4.1.0"
|
40
|
-
supports-color "^7.1.0"
|
41
|
-
|
42
|
-
color-convert@^2.0.1:
|
43
|
-
version "2.0.1"
|
44
|
-
resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
45
|
-
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
46
|
-
dependencies:
|
47
|
-
color-name "~1.1.4"
|
48
|
-
|
49
|
-
color-name@~1.1.4:
|
50
|
-
version "1.1.4"
|
51
|
-
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
52
|
-
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
53
|
-
|
54
|
-
corser@^2.0.1:
|
55
|
-
version "2.0.1"
|
56
|
-
resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
|
57
|
-
integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==
|
58
|
-
|
59
|
-
debug@^3.2.7:
|
60
|
-
version "3.2.7"
|
61
|
-
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
62
|
-
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
63
|
-
dependencies:
|
64
|
-
ms "^2.1.1"
|
65
|
-
|
66
|
-
eventemitter3@^4.0.0:
|
67
|
-
version "4.0.7"
|
68
|
-
resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
69
|
-
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
|
70
|
-
|
71
|
-
follow-redirects@^1.0.0:
|
72
|
-
version "1.15.2"
|
73
|
-
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
|
74
|
-
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
|
75
|
-
|
76
|
-
function-bind@^1.1.1:
|
77
|
-
version "1.1.1"
|
78
|
-
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
79
|
-
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
80
|
-
|
81
|
-
get-intrinsic@^1.0.2:
|
82
|
-
version "1.1.3"
|
83
|
-
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
|
84
|
-
integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
|
85
|
-
dependencies:
|
86
|
-
function-bind "^1.1.1"
|
87
|
-
has "^1.0.3"
|
88
|
-
has-symbols "^1.0.3"
|
89
|
-
|
90
|
-
has-flag@^4.0.0:
|
91
|
-
version "4.0.0"
|
92
|
-
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
93
|
-
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
94
|
-
|
95
|
-
has-symbols@^1.0.3:
|
96
|
-
version "1.0.3"
|
97
|
-
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
|
98
|
-
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
|
99
|
-
|
100
|
-
has@^1.0.3:
|
101
|
-
version "1.0.3"
|
102
|
-
resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
103
|
-
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
104
|
-
dependencies:
|
105
|
-
function-bind "^1.1.1"
|
106
|
-
|
107
|
-
he@^1.2.0:
|
108
|
-
version "1.2.0"
|
109
|
-
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
110
|
-
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
111
|
-
|
112
|
-
html-encoding-sniffer@^3.0.0:
|
113
|
-
version "3.0.0"
|
114
|
-
resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
|
115
|
-
integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
|
116
|
-
dependencies:
|
117
|
-
whatwg-encoding "^2.0.0"
|
118
|
-
|
119
|
-
http-proxy@^1.18.1:
|
120
|
-
version "1.18.1"
|
121
|
-
resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
|
122
|
-
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
|
123
|
-
dependencies:
|
124
|
-
eventemitter3 "^4.0.0"
|
125
|
-
follow-redirects "^1.0.0"
|
126
|
-
requires-port "^1.0.0"
|
127
|
-
|
128
|
-
http-server@^14.1.1:
|
129
|
-
version "14.1.1"
|
130
|
-
resolved "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e"
|
131
|
-
integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==
|
132
|
-
dependencies:
|
133
|
-
basic-auth "^2.0.1"
|
134
|
-
chalk "^4.1.2"
|
135
|
-
corser "^2.0.1"
|
136
|
-
he "^1.2.0"
|
137
|
-
html-encoding-sniffer "^3.0.0"
|
138
|
-
http-proxy "^1.18.1"
|
139
|
-
mime "^1.6.0"
|
140
|
-
minimist "^1.2.6"
|
141
|
-
opener "^1.5.1"
|
142
|
-
portfinder "^1.0.28"
|
143
|
-
secure-compare "3.0.1"
|
144
|
-
union "~0.5.0"
|
145
|
-
url-join "^4.0.1"
|
146
|
-
|
147
|
-
iconv-lite@0.6.3:
|
148
|
-
version "0.6.3"
|
149
|
-
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
|
150
|
-
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
151
|
-
dependencies:
|
152
|
-
safer-buffer ">= 2.1.2 < 3.0.0"
|
153
|
-
|
154
|
-
lodash@^4.17.14:
|
155
|
-
version "4.17.21"
|
156
|
-
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
157
|
-
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
158
|
-
|
159
|
-
mime@^1.6.0:
|
160
|
-
version "1.6.0"
|
161
|
-
resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
162
|
-
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
163
|
-
|
164
|
-
minimist@^1.2.6:
|
165
|
-
version "1.2.7"
|
166
|
-
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
|
167
|
-
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
|
168
|
-
|
169
|
-
mkdirp@^0.5.6:
|
170
|
-
version "0.5.6"
|
171
|
-
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
172
|
-
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
|
173
|
-
dependencies:
|
174
|
-
minimist "^1.2.6"
|
175
|
-
|
176
|
-
ms@^2.1.1:
|
177
|
-
version "2.1.3"
|
178
|
-
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
179
|
-
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
180
|
-
|
181
|
-
object-inspect@^1.9.0:
|
182
|
-
version "1.12.2"
|
183
|
-
resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
|
184
|
-
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
|
185
|
-
|
186
|
-
opener@^1.5.1:
|
187
|
-
version "1.5.2"
|
188
|
-
resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
|
189
|
-
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
|
190
|
-
|
191
|
-
portfinder@^1.0.28:
|
192
|
-
version "1.0.32"
|
193
|
-
resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81"
|
194
|
-
integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
|
195
|
-
dependencies:
|
196
|
-
async "^2.6.4"
|
197
|
-
debug "^3.2.7"
|
198
|
-
mkdirp "^0.5.6"
|
199
|
-
|
200
|
-
qs@^6.4.0:
|
201
|
-
version "6.11.0"
|
202
|
-
resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
|
203
|
-
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
|
204
|
-
dependencies:
|
205
|
-
side-channel "^1.0.4"
|
206
|
-
|
207
|
-
requires-port@^1.0.0:
|
208
|
-
version "1.0.0"
|
209
|
-
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
210
|
-
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
211
|
-
|
212
|
-
safe-buffer@5.1.2:
|
213
|
-
version "5.1.2"
|
214
|
-
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
215
|
-
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
216
|
-
|
217
|
-
"safer-buffer@>= 2.1.2 < 3.0.0":
|
218
|
-
version "2.1.2"
|
219
|
-
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
220
|
-
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
221
|
-
|
222
|
-
secure-compare@3.0.1:
|
223
|
-
version "3.0.1"
|
224
|
-
resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
|
225
|
-
integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==
|
226
|
-
|
227
|
-
side-channel@^1.0.4:
|
228
|
-
version "1.0.4"
|
229
|
-
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
|
230
|
-
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
|
231
|
-
dependencies:
|
232
|
-
call-bind "^1.0.0"
|
233
|
-
get-intrinsic "^1.0.2"
|
234
|
-
object-inspect "^1.9.0"
|
235
|
-
|
236
|
-
supports-color@^7.1.0:
|
237
|
-
version "7.2.0"
|
238
|
-
resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
239
|
-
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
240
|
-
dependencies:
|
241
|
-
has-flag "^4.0.0"
|
242
|
-
|
243
|
-
union@~0.5.0:
|
244
|
-
version "0.5.0"
|
245
|
-
resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075"
|
246
|
-
integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==
|
247
|
-
dependencies:
|
248
|
-
qs "^6.4.0"
|
249
|
-
|
250
|
-
url-join@^4.0.1:
|
251
|
-
version "4.0.1"
|
252
|
-
resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
|
253
|
-
integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
|
254
|
-
|
255
|
-
whatwg-encoding@^2.0.0:
|
256
|
-
version "2.0.0"
|
257
|
-
resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
|
258
|
-
integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
|
259
|
-
dependencies:
|
260
|
-
iconv-lite "0.6.3"
|