vite_ruby 3.11.1 → 4.0.0.alpha1

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.
data/lib/vite_ruby.rb CHANGED
@@ -1,39 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "json"
4
- require "logger"
5
- require "forwardable"
6
- require "pathname"
7
- require "socket"
3
+ require 'logger'
4
+ require 'forwardable'
5
+ require 'pathname'
6
+ require 'socket'
8
7
 
9
- require "zeitwerk"
8
+ require 'zeitwerk'
10
9
  loader = Zeitwerk::Loader.for_gem
11
- loader.ignore("#{__dir__}/install")
12
- loader.ignore("#{__dir__}/tasks")
13
- loader.ignore("#{__dir__}/exe")
14
- loader.inflector.inflect("cli" => "CLI")
15
- loader.inflector.inflect("ssr" => "SSR")
16
- loader.inflector.inflect("io" => "IO")
10
+ loader.ignore("#{ __dir__ }/install")
11
+ loader.ignore("#{ __dir__ }/tasks")
12
+ loader.ignore("#{ __dir__ }/exe")
13
+ loader.inflector.inflect('cli' => 'CLI')
14
+ loader.inflector.inflect('io' => 'IO')
17
15
  loader.setup
18
16
 
17
+ require 'vite_ruby/version'
18
+
19
19
  class ViteRuby
20
20
  # Internal: Prefix used for environment variables that modify the configuration.
21
- ENV_PREFIX = "VITE_RUBY"
21
+ ENV_PREFIX = 'VITE_RUBY'
22
22
 
23
23
  # Internal: Companion libraries for Vite Ruby, and their target framework.
24
24
  COMPANION_LIBRARIES = {
25
- "vite_rails" => "rails",
26
- "vite_hanami" => "hanami",
27
- "vite_padrino" => "padrino",
28
- "jekyll-vite" => "jekyll",
29
- "vite_rails_legacy" => "rails",
30
- "vite_plugin_legacy" => "rack",
25
+ 'vite_rails' => 'rails',
26
+ 'vite_hanami' => 'hanami',
27
+ 'vite_padrino' => 'padrino',
28
+ 'jekyll-vite' => 'jekyll',
29
+ 'vite_rails_legacy' => 'rails',
30
+ 'vite_plugin_legacy' => 'rack',
31
31
  }
32
32
 
33
33
  class << self
34
34
  extend Forwardable
35
35
 
36
- def_delegators :instance, :config, :configure, :commands, :digest, :env, :run, :run_proxy?
36
+ def_delegators :instance, :config, :commands, :env, :run, :run_proxy?
37
37
  def_delegators :config, :mode
38
38
 
39
39
  def instance
@@ -47,7 +47,7 @@ class ViteRuby
47
47
 
48
48
  # Internal: Loads all available rake tasks.
49
49
  def install_tasks
50
- load File.expand_path("tasks/vite.rake", __dir__)
50
+ load File.expand_path('tasks/vite.rake', __dir__)
51
51
  end
52
52
 
53
53
  # Internal: Creates a new instance with the specified options.
@@ -58,11 +58,11 @@ class ViteRuby
58
58
  # Internal: Detects if the application has installed a framework-specific
59
59
  # variant of Vite Ruby.
60
60
  def framework_libraries
61
- COMPANION_LIBRARIES.filter_map { |name, framework|
61
+ COMPANION_LIBRARIES.map { |name, framework|
62
62
  if library = Gem.loaded_specs[name]
63
63
  [framework, library]
64
64
  end
65
- }
65
+ }.compact
66
66
  end
67
67
  end
68
68
 
@@ -76,19 +76,17 @@ class ViteRuby
76
76
  @logger ||= Logger.new($stdout)
77
77
  end
78
78
 
79
- # Public: Returns a digest of all the watched files, allowing to detect
80
- # changes. Useful to perform version checks in single-page applications.
81
- def digest
82
- builder.send(:watched_files_digest)
83
- end
84
-
85
79
  # Public: Returns true if the Vite development server is currently running.
80
+ # NOTE: Checks only once every second since every lookup calls this method.
86
81
  def dev_server_running?
87
- return false unless dev_mode?
88
- return dev_server_connected? if config.dev_server_connection_check
89
-
90
- meta = dev_server_meta
91
- meta.is_a?(Hash) && meta["port"] == config.port
82
+ return false unless run_proxy?
83
+ return true if defined?(@running_at) && @running_at && Time.now - @running_at < 1
84
+
85
+ Socket.tcp(config.host, config.port, connect_timeout: config.dev_server_connect_timeout).close
86
+ @running_at = Time.now
87
+ true
88
+ rescue StandardError
89
+ @running_at = false
92
90
  end
93
91
 
94
92
  # Public: Additional environment variables to pass to Vite.
@@ -99,15 +97,13 @@ class ViteRuby
99
97
  @env ||= ENV.select { |key, _| key.start_with?(ENV_PREFIX) }
100
98
  end
101
99
 
102
- # Public: Whether we are in an environment that might run the Vite dev server.
103
- def dev_mode?
104
- config.mode == "development" || (config.mode == "test" && !ENV["CI"])
105
- rescue => error
106
- logger.error("Failed to check mode for Vite: #{error.message}")
100
+ # Public: The proxy for assets should only run in development mode.
101
+ def run_proxy?
102
+ config.mode == 'development' || (config.mode == 'test' && !ENV['CI'])
103
+ rescue StandardError => error
104
+ logger.error("Failed to check mode for Vite: #{ error.message }")
107
105
  false
108
106
  end
109
- # Public: The proxy for assets should only run in development mode.
110
- alias_method :run_proxy?, :dev_mode?
111
107
 
112
108
  # Internal: Executes the vite binary.
113
109
  def run(argv, **options)
@@ -127,50 +123,15 @@ class ViteRuby
127
123
  # Public: Current instance configuration for Vite.
128
124
  def config
129
125
  unless defined?(@config)
130
- configure
126
+ @config = ViteRuby::Config.resolve_config(**@config_options)
131
127
  @config.load_ruby_config
132
128
  end
133
129
 
134
130
  @config
135
131
  end
136
132
 
137
- # Public: Allows overriding the configuration for this instance.
138
- def configure(**options)
139
- @config = ViteRuby::Config.resolve_config(**@config_options, **options)
140
- end
141
-
142
133
  # Public: Enables looking up assets managed by Vite using name and type.
143
134
  def manifest
144
135
  @manifest ||= ViteRuby::Manifest.new(self)
145
136
  end
146
-
147
- private
148
-
149
- # Internal: Returns true if a TCP connection to the dev server can be opened.
150
- def dev_server_connected?
151
- return @running if defined?(@running) && Time.now - @running_checked_at < 1
152
-
153
- begin
154
- Socket.tcp(config.host, config.port, connect_timeout: config.dev_server_connect_timeout).close
155
- @running = true
156
- rescue
157
- @running = false
158
- ensure
159
- @running_checked_at = Time.now
160
- end
161
- end
162
-
163
- # Internal: Metadata written by the running Vite dev server, or nil when stopped.
164
- def dev_server_meta
165
- return @dev_server_meta if defined?(@dev_server_meta) && Time.now - @dev_server_meta_checked_at < 1
166
-
167
- path = config.dev_server_meta_path
168
- @dev_server_meta = (JSON.parse(path.read) if path.exist?)
169
- rescue JSON::ParserError, SystemCallError
170
- @dev_server_meta = nil
171
- ensure
172
- @dev_server_meta_checked_at = Time.now
173
- end
174
137
  end
175
-
176
- require "vite_ruby/version"
metadata CHANGED
@@ -1,66 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vite_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.1
4
+ version: 4.0.0.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Máximo Mussini
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2022-01-18 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: dry-cli
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: '0.7'
19
- - - "<"
20
- - !ruby/object:Gem::Version
21
- version: '2'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- version: '0.7'
29
- - - "<"
30
- - !ruby/object:Gem::Version
31
- version: '2'
32
- - !ruby/object:Gem::Dependency
33
- name: logger
34
15
  requirement: !ruby/object:Gem::Requirement
35
16
  requirements:
36
17
  - - "~>"
37
18
  - !ruby/object:Gem::Version
38
- version: '1.6'
19
+ version: 0.7.0
39
20
  type: :runtime
40
21
  prerelease: false
41
22
  version_requirements: !ruby/object:Gem::Requirement
42
23
  requirements:
43
24
  - - "~>"
44
25
  - !ruby/object:Gem::Version
45
- version: '1.6'
46
- - !ruby/object:Gem::Dependency
47
- name: mutex_m
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
- type: :runtime
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: '0'
26
+ version: 0.7.0
60
27
  - !ruby/object:Gem::Dependency
61
28
  name: rack-proxy
62
29
  requirement: !ruby/object:Gem::Requirement
63
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
64
34
  - - ">="
65
35
  - !ruby/object:Gem::Version
66
36
  version: 0.6.1
@@ -68,6 +38,9 @@ dependencies:
68
38
  prerelease: false
69
39
  version_requirements: !ruby/object:Gem::Requirement
70
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.6'
71
44
  - - ">="
72
45
  - !ruby/object:Gem::Version
73
46
  version: 0.6.1
@@ -175,14 +148,15 @@ dependencies:
175
148
  requirements:
176
149
  - - "<"
177
150
  - !ruby/object:Gem::Version
178
- version: '0.23'
151
+ version: '0.18'
179
152
  type: :development
180
153
  prerelease: false
181
154
  version_requirements: !ruby/object:Gem::Requirement
182
155
  requirements:
183
156
  - - "<"
184
157
  - !ruby/object:Gem::Version
185
- version: '0.23'
158
+ version: '0.18'
159
+ description:
186
160
  email:
187
161
  - maximomussini@gmail.com
188
162
  executables:
@@ -205,7 +179,6 @@ files:
205
179
  - lib/vite_ruby/cli/dev.rb
206
180
  - lib/vite_ruby/cli/file_utils.rb
207
181
  - lib/vite_ruby/cli/install.rb
208
- - lib/vite_ruby/cli/ssr.rb
209
182
  - lib/vite_ruby/cli/upgrade.rb
210
183
  - lib/vite_ruby/cli/upgrade_packages.rb
211
184
  - lib/vite_ruby/cli/version.rb
@@ -228,9 +201,8 @@ homepage: https://github.com/ElMassimo/vite_ruby
228
201
  licenses:
229
202
  - MIT
230
203
  metadata:
231
- source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_ruby@3.11.1/vite_ruby
232
- changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_ruby@3.11.1/vite_ruby/CHANGELOG.md
233
- rubygems_mfa_required: 'true'
204
+ source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_ruby@4.0.0.alpha1/vite_ruby
205
+ changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_ruby@4.0.0.alpha1/vite_ruby/CHANGELOG.md
234
206
  post_install_message: "Thanks for installing Vite Ruby!\n\nIf you upgraded the gem
235
207
  manually, please run:\n\tbundle exec vite upgrade"
236
208
  rdoc_options: []
@@ -240,14 +212,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
240
212
  requirements:
241
213
  - - ">="
242
214
  - !ruby/object:Gem::Version
243
- version: '2.5'
215
+ version: '2.4'
244
216
  required_rubygems_version: !ruby/object:Gem::Requirement
245
217
  requirements:
246
- - - ">="
218
+ - - ">"
247
219
  - !ruby/object:Gem::Version
248
- version: '0'
220
+ version: 1.3.1
249
221
  requirements: []
250
- rubygems_version: 4.0.16
222
+ rubygems_version: 3.2.32
223
+ signing_key:
251
224
  specification_version: 4
252
225
  summary: Use Vite in Ruby and bring joy to your JavaScript experience
253
226
  test_files: []
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ViteRuby::CLI::SSR < ViteRuby::CLI::Vite
4
- DEFAULT_ENV = CURRENT_ENV || "production"
5
- JS_EXTENSIONS = %w[js mjs cjs]
6
-
7
- desc "Run the resulting app from building in SSR mode."
8
- executable_options
9
-
10
- def call(mode:, inspect: false, trace_deprecation: false)
11
- ViteRuby.env["VITE_RUBY_MODE"] = mode
12
-
13
- ssr_entrypoint = JS_EXTENSIONS
14
- .map { |ext| ViteRuby.config.ssr_output_dir.join("ssr.#{ext}") }
15
- .find(&:exist?)
16
-
17
- raise ArgumentError, "No ssr entrypoint found `#{ViteRuby.config.ssr_output_dir.relative_path_from(ViteRuby.config.root)}/ssr.{#{JS_EXTENSIONS.join(",")}}`. Have you run bin/vite build --ssr?" unless ssr_entrypoint
18
-
19
- cmd = [
20
- "node",
21
- ("--inspect-brk" if inspect),
22
- ("--trace-deprecation" if trace_deprecation),
23
- ssr_entrypoint,
24
- ]
25
- Kernel.exec(*cmd.compact.map(&:to_s))
26
- end
27
- end