isorun 0.1.8-x86_64-linux → 0.1.9-x86_64-linux

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: 3b7fbac84c4db38f693ab09b2e841b9c8ef840cfeb50d212d1123d147e6bc8ff
4
- data.tar.gz: bfa169c65285f23465e5016eb8b0e5a8700cad33e966ecaaa8e7bf101ed15bb2
3
+ metadata.gz: e55fbaa0d365f79a373fb083e50995f3512a2f7c92283d6404713f59afc3f1a8
4
+ data.tar.gz: 65925634d432f43e74a19504bb88e9373b7a23c2e57b36b3fa3fa746bf9ca817
5
5
  SHA512:
6
- metadata.gz: 426b9460bfda7af56298427b522808a0816506799895ea4f6adf57836ad259622e056b040d860e4c568a7a01d749496d65255aa45014fe02276b3ba27e32f7c6
7
- data.tar.gz: 85d72159f954e240c8d68d1c415e5f07e751df504a23310f4305eba9f47c5d90d44b61ed42c92c536fe3b2b40d0ea85e9deba2e4b9811bf150dc67ed83453712
6
+ metadata.gz: f8bcce16589d12284ec5d3ba866e7d28bb9aec1cc4b84deb483146e5aaa895631817dcf0f3b62fbf34c12ab084afc4303585a4c194d15b913ed1d8732d2343ca
7
+ data.tar.gz: 1e8e05b2068cfc12bde32b78741df12b44ded34eb8e22a8167980eb3f5d8b92338ff895f9664f6002d7da775a052d5f42487801c011d13bebb8b4785c1ab379c
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Isorun
4
+ module ViteAppHelper
5
+ # The isorun_vite_app helper is the most convenient way to server-side
6
+ # render a JavaScript application built with vite, including state
7
+ # extraction and automatic rehydration. The helper tries to render the
8
+ # application and will also inject the client-side code immediately after
9
+ # the rendered result.
10
+ #
11
+ # @example Renders a JavaScript application
12
+ # <html>
13
+ # <body>
14
+ # <%= isorun_vite_app("my_app") %>
15
+ # </body>
16
+ # </html>
17
+ #
18
+ # @param id [String] An ID representing both, the asset bundle, and by
19
+ # convention, the target node (e.g. `<div id="my_app">`)
20
+ # @return [String]
21
+ def isorun_vite_app(id) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
22
+ ActiveSupport::Notifications.instrument "start.render.isorun", { ts: Time.current }
23
+
24
+ # if id has a file extension, we extract the extension and reduce the ID
25
+ # to the basename
26
+ extension = (File.extname(id) || ".js").delete_prefix(".")
27
+ id = File.basename(id, ".*")
28
+
29
+ module_path = Isorun.config.module_resolver.call(id)
30
+
31
+ ssr_html = Isorun::Context.create(receiver: Isorun.config.receiver) do |context|
32
+ render_context = { environment: Rails.env.to_s }
33
+ render_function = context.import.from(module_path)
34
+
35
+ if render_function.blank?
36
+ Rails.logger.warn("[ISORUN] the requested app does not exist or " \
37
+ "does not have a server entrypoint. Please " \
38
+ "check if an asset with filename " + "
39
+ `public/vite-ssr/ssr.js` exists.")
40
+ return ""
41
+ end
42
+
43
+ html = render_function.call(render_context)
44
+
45
+ ActiveSupport::Notifications.instrument "finish.render.isorun", { ts: Time.current }
46
+ ActiveSupport::Notifications.instrument "stats.isorun", Isorun.stats
47
+
48
+ html
49
+ end
50
+
51
+ html = if ssr_html.present?
52
+ tag.div id: id do
53
+ ssr_html.html_safe # rubocop:disable Rails/OutputSafety
54
+ end
55
+ else
56
+ Rails.logger.warn("[ISORUN] The server-side rendered result is empty.")
57
+ ""
58
+ end
59
+
60
+ html += "\n"
61
+ case extension
62
+ when "js", "jsx"
63
+ html += vite_javascript_tag("#{id}.#{extension}")
64
+ when "ts", "tsx"
65
+ html += vite_typescript_tag("#{id}.#{extension}")
66
+ else
67
+ Rails.logger.warn("[ISORUN] unsupported client application extension: `#{extension}`")
68
+ end
69
+ html.html_safe # rubocop:disable Rails/OutputSafety
70
+ end
71
+ end
72
+ end
@@ -1,26 +1,26 @@
1
1
  [package]
2
2
  name = "isorun"
3
- version = "0.1.8"
3
+ version = "0.1.9"
4
4
  edition = "2021"
5
5
  authors = ["Hannes Moser <box@hannesmoser.at>"]
6
6
  homepage = "https://github.com/eliias/isorun"
7
7
  repository = "https://github.com/eliias/isorun"
8
8
 
9
9
  [dependencies]
10
- deno_console = "0.83.0"
11
- deno_core = "0.165.0"
12
- deno_fetch = "0.107.0"
13
- deno_runtime = "0.91.0"
14
- deno_url = "0.83.0"
15
- deno_web = "0.114.0"
16
- deno_webidl = "0.83.0"
10
+ deno_console = "0.86.0"
11
+ deno_core = "0.168.0"
12
+ deno_fetch = "0.110.0"
13
+ deno_runtime = "0.94.0"
14
+ deno_url = "0.86.0"
15
+ deno_web = "0.117.0"
16
+ deno_webidl = "0.86.0"
17
17
  lazy_static = "1.4.0"
18
- magnus = { git = "https://github.com/eliias/magnus", rev = "5220756ca0ab4f2bc32d38310c26f7dda2be9bd6" }
18
+ magnus = { git = "https://github.com/eliias/magnus", rev = "75e2ba89d12af8c51d2bbbb137da2eac3fc966e3" }
19
19
  tokio = { version = "1.21.1", features = ["full"] }
20
- v8 = "0.60.0"
20
+ v8 = "0.60.1"
21
21
 
22
22
  [dev-dependencies]
23
- magnus = { git = "https://github.com/eliias/magnus", rev = "5220756ca0ab4f2bc32d38310c26f7dda2be9bd6", features = ["embed"] }
23
+ magnus = { git = "https://github.com/eliias/magnus", rev = "75e2ba89d12af8c51d2bbbb137da2eac3fc966e3", features = ["embed"] }
24
24
 
25
25
  [lib]
26
26
  name = "isorun"
@@ -3,7 +3,7 @@ use deno_core::error::AnyError;
3
3
  use deno_core::serde_v8::from_v8;
4
4
  use deno_core::{op, serde_v8, Extension, FsModuleLoader, JsRealm, ModuleId};
5
5
  use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel;
6
- use deno_runtime::permissions::Permissions;
6
+ use deno_runtime::permissions::PermissionsContainer;
7
7
  use deno_runtime::worker::{MainWorker, WorkerOptions};
8
8
  use deno_runtime::BootstrapOptions;
9
9
  use deno_web::BlobStore;
@@ -207,7 +207,7 @@ impl Default for Worker {
207
207
  todo!("Web workers are not supported in the example");
208
208
  });
209
209
 
210
- let extension_send = Extension::builder()
210
+ let extension_send = Extension::builder("isorun")
211
211
  .ops(vec![op_send_to_ruby::decl()])
212
212
  .build();
213
213
  let mut extensions = vec![extension_send];
@@ -263,7 +263,7 @@ impl Default for Worker {
263
263
 
264
264
  let main_module =
265
265
  deno_core::resolve_path(&js_path.to_string_lossy()).unwrap();
266
- let permissions = Permissions::allow_all();
266
+ let permissions = PermissionsContainer::allow_all();
267
267
  let mut worker = MainWorker::bootstrap_from_options(
268
268
  main_module.clone(),
269
269
  permissions,
Binary file
Binary file
Binary file
Binary file
@@ -10,6 +10,10 @@ module Isorun
10
10
  end
11
11
  }
12
12
 
13
+ SSR_VITE_APP_RESOLVER = lambda { |_bundle_id|
14
+ Rails.public_path.join("vite-ssr/ssr.js").to_s
15
+ }
16
+
13
17
  SIMPLE_RESOLVER = lambda { |bundle_id|
14
18
  if Rails.env.development?
15
19
  Rails.root.join("app", "assets", "builds", "#{bundle_id}.js").to_s
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Isorun
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.9"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isorun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Hannes Moser
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-13 00:00:00.000000000 Z
11
+ date: 2023-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -24,6 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.0.0
27
+ force_ruby_platform: false
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: rake
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +39,7 @@ dependencies:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
41
  version: '13.0'
42
+ force_ruby_platform: false
41
43
  - !ruby/object:Gem::Dependency
42
44
  name: rb_sys
43
45
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +54,7 @@ dependencies:
52
54
  - - "~>"
53
55
  - !ruby/object:Gem::Version
54
56
  version: 0.9.46
57
+ force_ruby_platform: false
55
58
  - !ruby/object:Gem::Dependency
56
59
  name: rails
57
60
  requirement: !ruby/object:Gem::Requirement
@@ -153,6 +156,7 @@ files:
153
156
  - README.md
154
157
  - Rakefile
155
158
  - app/helpers/isorun/app_helper.rb
159
+ - app/helpers/isorun/vite_app_helper.rb
156
160
  - ext/isorun/Cargo.lock
157
161
  - ext/isorun/Cargo.toml
158
162
  - ext/isorun/extconf.rb
@@ -171,6 +175,7 @@ files:
171
175
  - lib/isorun/2.7/isorun.so
172
176
  - lib/isorun/3.0/isorun.so
173
177
  - lib/isorun/3.1/isorun.so
178
+ - lib/isorun/3.2/isorun.so
174
179
  - lib/isorun/config.rb
175
180
  - lib/isorun/config/abstract_builder.rb
176
181
  - lib/isorun/config/option.rb
@@ -191,7 +196,7 @@ metadata:
191
196
  changelog_uri: https://github.com/eliias/isorun
192
197
  documentation_uri: https://eliias.github.io/isorun
193
198
  rubygems_mfa_required: 'true'
194
- post_install_message:
199
+ post_install_message:
195
200
  rdoc_options: []
196
201
  require_paths:
197
202
  - lib
@@ -202,15 +207,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
207
  version: '2.7'
203
208
  - - "<"
204
209
  - !ruby/object:Gem::Version
205
- version: 3.2.dev
210
+ version: 3.3.dev
206
211
  required_rubygems_version: !ruby/object:Gem::Requirement
207
212
  requirements:
208
213
  - - ">="
209
214
  - !ruby/object:Gem::Version
210
215
  version: '0'
211
216
  requirements: []
212
- rubygems_version: 3.3.22
213
- signing_key:
217
+ rubygems_version: 3.4.4
218
+ signing_key:
214
219
  specification_version: 4
215
220
  summary: Run JavaScript applications in your Rails application.
216
221
  test_files: []