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

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: 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: []