proscenium 0.11.0.pre.1-aarch64-linux → 0.11.0.pre.5-aarch64-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: fde63e380814f9a349bc24edb630bf9c3e6ed2f62580d5d446b1899ce2a28506
4
- data.tar.gz: 19bb4f3960a0f04c2097a864834ba5bc77df25c08e98015a531627f86e41f883
3
+ metadata.gz: f479570196d4e7c1cb3c1ea4855581f3388a49853e59d491eb48acee127fcff7
4
+ data.tar.gz: 7f7146d3eb68f3621be0d349845b9f5117335c5cf28f3918b0449cf405d7f312
5
5
  SHA512:
6
- metadata.gz: 467f9f5cd2327d3f5cec2a1fbab4f6fdc9795f07acf7da6cd6d124521bb95b25e32fac3ee411c91d724760f032aeaa4b70f3bef1c349dd41da944a1569b66fff
7
- data.tar.gz: 5bc029ba931c2987e74871b4467a79eacbd41680e49c597847321956271d2076717ff84e1f3bba809da4ff3ef94447f96fc2993443aeca096dbff0ba6381e92f
6
+ metadata.gz: dd703b0fca83a1e6fe8e274b81c6452f626d8fcd615a1a5feb8b1f1701242c9f7db7848d9af5c8c82bbcf12d326fddb4ef4ec189134f11cca6583909ec948b4a
7
+ data.tar.gz: c1ff9a6b6ec73352ecd395bbfd49a6df13044109fa902fb48ca8aa2691e6406ead5c46c436581c668993f7663ec4261f4591426163f42ddb60448092e17bb363
@@ -25,7 +25,8 @@ module Proscenium
25
25
  :string, # ENV variables as a JSON string
26
26
 
27
27
  # Config
28
- :string, # root
28
+ :string, # Rails application root
29
+ :string, # Proscenium gem root
29
30
  :environment, # Rails environment as a Symbol
30
31
  :bool, # code splitting enabled?
31
32
  :bool # debugging enabled?
@@ -36,8 +37,10 @@ module Proscenium
36
37
  :string, # path to import map, relative to root
37
38
 
38
39
  # Config
39
- :string, # root
40
- :environment # Rails environment as a Symbol
40
+ :string, # Rails application root
41
+ :string, # Proscenium gem root
42
+ :environment, # Rails environment as a Symbol
43
+ :bool # debugging enabled?
41
44
  ], Result.by_value
42
45
  end
43
46
 
@@ -72,10 +75,11 @@ module Proscenium
72
75
  @base_url = base_url
73
76
  end
74
77
 
75
- def build(path)
78
+ def build(path) # rubocop:disable Metrics/AbcSize
76
79
  ActiveSupport::Notifications.instrument('build.proscenium', identifier: path) do
77
80
  result = Request.build(path, @base_url, import_map, env_vars.to_json,
78
81
  @root.to_s,
82
+ Pathname.new(__dir__).join('..', '..').to_s,
79
83
  Rails.env.to_sym,
80
84
  Proscenium.config.code_splitting,
81
85
  Proscenium.config.debug)
@@ -88,7 +92,10 @@ module Proscenium
88
92
 
89
93
  def resolve(path)
90
94
  ActiveSupport::Notifications.instrument('resolve.proscenium', identifier: path) do
91
- result = Request.resolve(path, import_map, @root.to_s, Rails.env.to_sym)
95
+ result = Request.resolve(path, import_map, @root.to_s,
96
+ Pathname.new(__dir__).join('..', '..').to_s,
97
+ Rails.env.to_sym,
98
+ Proscenium.config.debug)
92
99
  raise ResolveError.new(path, result[:response]) unless result[:success]
93
100
 
94
101
  result[:response]
Binary file
@@ -97,7 +97,7 @@ extern "C" {
97
97
  // - codeSpitting?
98
98
  // - debug?
99
99
  //
100
- extern struct Result build(char* filepath, char* baseUrl, char* importMap, char* envVars, char* root, unsigned int env, GoUint8 codeSplitting, GoUint8 debug);
100
+ extern struct Result build(char* filepath, char* baseUrl, char* importMap, char* envVars, char* appRoot, char* gemPath, unsigned int env, GoUint8 codeSplitting, GoUint8 debug);
101
101
 
102
102
  // Resolve the given `path` relative to the `root`.
103
103
  //
@@ -107,8 +107,9 @@ extern struct Result build(char* filepath, char* baseUrl, char* importMap, char*
107
107
  // Config
108
108
  // - root - The working directory.
109
109
  // - env - The environment (1 = development, 2 = test, 3 = production)
110
+ // - debug?
110
111
  //
111
- extern struct Result resolve(char* path, char* importMap, char* root, unsigned int env);
112
+ extern struct Result resolve(char* path, char* importMap, char* appRoot, char* gemPath, unsigned int env, GoUint8 debug);
112
113
 
113
114
  #ifdef __cplusplus
114
115
  }
@@ -0,0 +1 @@
1
+ console.log("/@proscenium/test.js");
@@ -34,12 +34,12 @@ module Proscenium
34
34
  private
35
35
 
36
36
  def real_path
37
- @request.path
37
+ @real_path ||= @request.path
38
38
  end
39
39
 
40
40
  # @return [String] the path to the file without the leading slash which will be built.
41
41
  def path_to_build
42
- @request.path[1..]
42
+ @path_to_build ||= @request.path[1..]
43
43
  end
44
44
 
45
45
  def sourcemap?
@@ -53,22 +53,22 @@ module Proscenium
53
53
  def file_readable?
54
54
  return false unless (path = clean_path(sourcemap? ? real_path[0...-4] : real_path))
55
55
 
56
- file_stat = File.stat(Pathname(root).join(path.delete_prefix('/').b).to_s)
56
+ file_stat = File.stat(root_for_readable.join(path.delete_prefix('/').b).to_s)
57
57
  rescue SystemCallError
58
58
  false
59
59
  else
60
60
  file_stat.file? && file_stat.readable?
61
61
  end
62
62
 
63
+ def root_for_readable
64
+ Rails.root
65
+ end
66
+
63
67
  def clean_path(file)
64
68
  path = Rack::Utils.unescape_path file.chomp('/').delete_prefix('/')
65
69
  Rack::Utils.clean_path_info path if Rack::Utils.valid_path? path
66
70
  end
67
71
 
68
- def root
69
- @root ||= Rails.root.to_s
70
- end
71
-
72
72
  def content_type
73
73
  case ::File.extname(path_to_build)
74
74
  when '.js', '.mjs', '.ts', '.tsx', '.jsx' then 'application/javascript'
@@ -20,7 +20,7 @@ module Proscenium
20
20
  end
21
21
 
22
22
  def attempt
23
- render_response Proscenium::Builder.build(path_to_build, root: root,
23
+ render_response Proscenium::Builder.build(path_to_build, root: Rails.root.to_s,
24
24
  base_url: @request.base_url)
25
25
  rescue Proscenium::Builder::CompileError => e
26
26
  raise self.class::CompileError, { file: @request.fullpath, detail: e.message }, caller
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Proscenium
4
+ class Middleware
5
+ class Runtime < Esbuild
6
+ private
7
+
8
+ def real_path
9
+ @real_path ||= Pathname.new(@request.path.sub(%r{^/@proscenium},
10
+ '/lib/proscenium/libs')).to_s
11
+ end
12
+
13
+ def root_for_readable
14
+ Proscenium::Railtie.root
15
+ end
16
+ end
17
+ end
18
+ end
@@ -9,6 +9,7 @@ module Proscenium
9
9
 
10
10
  autoload :Base
11
11
  autoload :Esbuild
12
+ autoload :Runtime
12
13
  autoload :Url
13
14
 
14
15
  def initialize(app)
@@ -40,6 +41,7 @@ module Proscenium
40
41
 
41
42
  def find_type(request)
42
43
  return Url if request.path.match?(%r{^/https?%3A%2F%2F})
44
+ return Runtime if request.path.match?(%r{^/@proscenium/})
43
45
 
44
46
  Esbuild if Pathname.new(request.path).fnmatch?(path_glob, File::FNM_EXTGLOB)
45
47
  end
@@ -11,7 +11,7 @@ module Proscenium
11
11
  #
12
12
  # @param path [String] Can be URL path, file system path, or bare specifier (ie. NPM package).
13
13
  # @return [String] URL path.
14
- def self.resolve(path) # rubocop:disable Metrics/AbcSize
14
+ def self.resolve(path) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
15
15
  self.resolved ||= {}
16
16
 
17
17
  self.resolved[path] ||= begin
@@ -19,7 +19,11 @@ module Proscenium
19
19
  raise ArgumentError, 'path must be an absolute file system or URL path'
20
20
  end
21
21
 
22
- if (gem = Proscenium.config.side_load_gems.find { |_, x| path.start_with? "#{x[:root]}/" })
22
+ if path.start_with?('@proscenium/')
23
+ "/#{path}"
24
+ elsif (gem = Proscenium.config.side_load_gems.find do |_, x|
25
+ path.start_with? "#{x[:root]}/"
26
+ end)
23
27
  unless (package_name = gem[1][:package_name] || gem[0])
24
28
  # TODO: manually resolve the path without esbuild
25
29
  raise PathResolutionFailed, path
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Proscenium
4
- VERSION = '0.11.0.pre.1'
4
+ VERSION = '0.11.0.pre.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proscenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0.pre.1
4
+ version: 0.11.0.pre.5
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Joel Moss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-11 00:00:00.000000000 Z
11
+ date: 2023-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -101,10 +101,12 @@ files:
101
101
  - lib/proscenium/libs/react-manager/index.jsx
102
102
  - lib/proscenium/libs/react-manager/react.js
103
103
  - lib/proscenium/libs/stimulus-loading.js
104
+ - lib/proscenium/libs/test.js
104
105
  - lib/proscenium/log_subscriber.rb
105
106
  - lib/proscenium/middleware.rb
106
107
  - lib/proscenium/middleware/base.rb
107
108
  - lib/proscenium/middleware/esbuild.rb
109
+ - lib/proscenium/middleware/runtime.rb
108
110
  - lib/proscenium/middleware/url.rb
109
111
  - lib/proscenium/monkey.rb
110
112
  - lib/proscenium/phlex.rb
@@ -145,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
147
  - !ruby/object:Gem::Version
146
148
  version: 1.3.1
147
149
  requirements: []
148
- rubygems_version: 3.4.17
150
+ rubygems_version: 3.4.19
149
151
  signing_key:
150
152
  specification_version: 4
151
153
  summary: The engine powering your Rails frontend