sprockets-esbuild 0.0.1-arm64-darwin → 0.0.4-arm64-darwin

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: 0f6a8ca3ce140702830aa6d81f5c495b8398e683db8e20c7f016cdbfb768aecb
4
- data.tar.gz: ea48d381efbbb9a3e56d0386c3fd07b980747dfe8017cd74f42ca3c663652153
3
+ metadata.gz: 36ee53171333e633c95f69b91f986fd86e1f5ef491cedefd4502e99d90cfacd9
4
+ data.tar.gz: 318c7936fb2e1ea3178cca9acf055218d15debd3b7aad6d632171b19ee1dd9a1
5
5
  SHA512:
6
- metadata.gz: dcc59b2562ca442daf0220929564a804b1ca8419e81dd47ff384060a28adb905c17b233baacf5b409bdf65408bfa4172ce4cdb5aa71ea183d18ef2ff181f5371
7
- data.tar.gz: fc6455ae4e99447959271290a48dda3d60c8c5c0333f15833295ff7bba5201e106357448fe8748657297c158bd85b2528a9673332a5b1f901dc44e7cf4226930
6
+ metadata.gz: ddd9287038127d30c7c9ba7c866b75b3b4e86ea7b06cc64b814f05d0f52d82bc9ea5c9a39322fd3afa4396208aa727ff05ccb0cf98d88e9ba8da831aecbc8a11
7
+ data.tar.gz: 07a49a212f25640298c433a9eafc740abf2f16512661116c9c56a426847e252ab330f57e7cafa9517f88268424ef4e6de6415184ae38cd57b04f94c3ffd1c0f0
data/exe/esbuild CHANGED
@@ -1,19 +1,44 @@
1
1
  #! /usr/bin/env ruby
2
2
  # because rubygems shims assume a gem's executables are Ruby
3
3
 
4
- require "shellwords"
4
+ require "sprockets-esbuild/upstream"
5
5
 
6
- platform_dir = Dir.glob(File.join(__dir__, "*")).select do |f|
7
- File.directory?(f) && Gem::Platform.match(File.basename(f))
8
- end.first
9
- if platform_dir.nil?
10
- raise "Cannot find the esbuild executable in #{__dir__} (1)"
6
+ supported_platforms = SprocketsEsbuild::Upstream::NATIVE_PLATFORMS.keys
7
+ platform = [:cpu, :os].map { |m| Gem::Platform.local.send(m) }.join("-")
8
+
9
+ if supported_platforms.none? { |supported_platform| Gem::Platform.match(supported_platform) }
10
+ STDERR.puts(<<~ERRMSG)
11
+ ERROR: sprockets-esbuild does not support the #{platform} platform
12
+ ERRMSG
13
+ exit 1
14
+ end
15
+
16
+ exe_path = Dir.glob(File.join(__dir__, "*", "esbuild")).find do |f|
17
+ Gem::Platform.match(File.basename(File.dirname(f)))
11
18
  end
19
+ if exe_path.nil?
20
+ STDERR.puts(<<~ERRMSG)
21
+ ERROR: Cannot find the esbuild executable for #{platform} in #{__dir__}
22
+ If you're using bundler, please make sure you're on the latest bundler version:
23
+
24
+ gem install bundler
25
+ bundle update --bundler
26
+
27
+ Then make sure your lock file includes this platform by running:
28
+
29
+ bundle lock --add-platform #{platform}
30
+ bundle install
12
31
 
13
- exe_path = File.join(platform_dir, "esbuild")
14
- if !File.exist?(exe_path)
15
- raise "Cannot find the esbuild executable in #{__dir__} (2)"
32
+ See `bundle lock --help` output for details.
33
+ ERRMSG
34
+ exit 1
16
35
  end
17
36
 
18
- command = Shellwords.join([exe_path, ARGV].flatten)
19
- exec(command)
37
+ if Gem.win_platform?
38
+ # use system rather than exec as exec inexplicably fails to find the executable
39
+ # on Windows
40
+ system exe_path, *ARGV
41
+ else
42
+ # use exec rather than system to avoid creating a new process
43
+ exec exe_path, *ARGV
44
+ end
@@ -3,13 +3,21 @@
3
3
 
4
4
  require 'open3'
5
5
  require 'sprockets'
6
+ require 'sprockets/source_map_utils'
7
+ require 'json'
8
+ require 'base64'
9
+ require 'pathname'
6
10
 
7
11
  module SprocketsEsbuild
8
12
 
9
13
  class TransformerBase
10
14
  include Sprockets
11
15
 
12
- ESBUILD = File.expand_path('../../exe/esbuild', __dir__)
16
+ ESBUILD = [File.expand_path('../../exe/esbuild', __dir__)]
17
+
18
+ # As windows doesn't support she-bang syntax in scripts, prepend Ruby to
19
+ # the command
20
+ ESBUILD.unshift RbConfig.ruby if Gem.win_platform?
13
21
 
14
22
  def cache_key
15
23
  @cache_key ||= "#{self.class.name}::#{VERSION}".freeze
@@ -20,15 +28,31 @@ module SprocketsEsbuild
20
28
 
21
29
  input[:cache].fetch([cache_key, data]) do
22
30
 
23
- out, err, status = Open3.capture3(ESBUILD, '--sourcemap',
24
- "--sourcefile=#{input[:filename]}", "--loader=#{loader}",
25
- stdin_data: input[:data])
26
-
27
- if status.success? and err.empty?
28
- out
29
- else
30
- raise Error, "esbuild exit status=#{status.exitstatus}\n#{err}"
31
- end
31
+ out, err, status = Open3.capture3(*ESBUILD, '--sourcemap',
32
+ "--sourcefile=#{input[:filename]}", "--loader=#{loader}",
33
+ stdin_data: input[:data])
34
+
35
+ match = out.match %r{^//# sourceMappingURL=data:application/json;base64,(.*)\s*}
36
+
37
+ if match
38
+ # extract sourcemap from output and then format and combine it
39
+ out[match.begin(0)..match.end(0)] = ''
40
+ map = JSON.parse(Base64.decode64(match[1]))
41
+ map = SourceMapUtils.format_source_map(map, input)
42
+ map = SourceMapUtils.combine_source_maps(input[:metadata][:map], map)
43
+ else
44
+ map = nil
45
+ end
46
+
47
+ if status.success? and err.empty?
48
+ if map
49
+ { data: out, map: map }
50
+ else
51
+ out
52
+ end
53
+ else
54
+ raise Error, "esbuild exit status=#{status.exitstatus}\n#{err}"
55
+ end
32
56
  end
33
57
  end
34
58
  end
@@ -0,0 +1,14 @@
1
+ module SprocketsEsbuild
2
+ # constants describing the upstream esbuild project
3
+ module Upstream
4
+ VERSION = "0.19.5"
5
+
6
+ # rubygems platform name => [upstream release tarball name, tarball path]
7
+ NATIVE_PLATFORMS = {
8
+ "arm64-darwin" => ["esbuild-darwin-arm64", "package/bin/esbuild"],
9
+ "x64-mingw32" => ["esbuild-windows-64", "package/esbuild.exe"],
10
+ "x86_64-darwin" => ["esbuild-darwin-64", "package/bin/esbuild"],
11
+ "x86_64-linux" => ["esbuild-linux-64", "package/bin/esbuild"],
12
+ }
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module SprocketsEsbuild
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,2 +1,6 @@
1
+ module SprocketsEsbuild
2
+ end
3
+
4
+ require 'sprockets-esbuild/upstream'
1
5
  require 'sprockets-esbuild/version'
2
6
  require 'sprockets-esbuild/transformers'
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-esbuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.4
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Sam Ruby
8
+ - Mike Dalessio
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2021-12-19 00:00:00.000000000 Z
12
+ date: 2023-10-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: sprockets
@@ -38,12 +39,13 @@ files:
38
39
  - exe/esbuild
39
40
  - lib/sprockets-esbuild.rb
40
41
  - lib/sprockets-esbuild/transformers.rb
42
+ - lib/sprockets-esbuild/upstream.rb
41
43
  - lib/sprockets-esbuild/version.rb
42
- homepage: https://github.com/rails/tailwindcss-rails
44
+ homepage: https://github.com/rubys/sprockets-esbuild
43
45
  licenses:
44
46
  - MIT
45
47
  metadata:
46
- homepage_uri: https://github.com/rails/tailwindcss-rails
48
+ homepage_uri: https://github.com/rubys/sprockets-esbuild
47
49
  post_install_message:
48
50
  rdoc_options: []
49
51
  require_paths:
@@ -59,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
61
  - !ruby/object:Gem::Version
60
62
  version: '0'
61
63
  requirements: []
62
- rubygems_version: 3.2.33
64
+ rubygems_version: 3.4.8
63
65
  signing_key:
64
66
  specification_version: 4
65
67
  summary: Transpile JSX, TS, and TSX files with esbuild.