sass-embedded 1.63.4-x86-mingw32 → 1.63.5-x86-mingw32
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 +4 -4
- data/README.md +1 -1
- data/ext/sass/dart-sass/src/dart.exe +0 -0
- data/ext/sass/dart-sass/src/sass.snapshot +0 -0
- data/ext/sass/win32_api.rb +129 -0
- data/lib/sass/embedded/dispatcher.rb +5 -9
- data/lib/sass/embedded/version.rb +1 -1
- data/lib/sass/embedded.rb +1 -3
- data/lib/sass/embedded_protocol.rb +10 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3499e3464d8ad259d7f1fe370b09fb3d4c6f41769d2b8c406744966d259681f2
|
4
|
+
data.tar.gz: 3aaf6118266c15c88587e6bc0d7286be8aadc7c20d9a56cd89ab3944ddd8efdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4f3fafb174be2ee1529c26c6015785093e72c918397b5a59f527acb7974c298c19fc342cbbafadc8be5fd5f867d235e6bc8058e0540e4610a7f592f1ca6a36
|
7
|
+
data.tar.gz: a24bbb0adf5f9b4ba78a9deaef97ea43afe29ca6935bb43b1fa690a4e46ad324099da50f2a1fed5cc3096e41297be177b69b2baf6abd6e2abd665d55709af558
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](https://github.com/ntkme/sass-embedded-host-ruby/actions/workflows/build.yml)
|
4
4
|
[](https://rubygems.org/gems/sass-embedded)
|
5
5
|
|
6
|
-
This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/embedded-protocol).
|
6
|
+
This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/sass/blob/HEAD/spec/embedded-protocol.md).
|
7
7
|
|
8
8
|
It exposes a Ruby API for Sass that's backed by a native [Dart Sass](https://sass-lang.com/dart-sass) executable.
|
9
9
|
|
Binary file
|
Binary file
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fiddle'
|
4
|
+
|
5
|
+
# @!visibility private
|
6
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/
|
7
|
+
module Win32API
|
8
|
+
Kernel32 = Fiddle.dlopen('Kernel32.dll')
|
9
|
+
|
10
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/sysinfo/image-file-machine-constants
|
11
|
+
module ImageFileMachineConstants
|
12
|
+
IMAGE_FILE_MACHINE_I386 = 0x014c
|
13
|
+
IMAGE_FILE_MACHINE_ARMNT = 0x01c4
|
14
|
+
IMAGE_FILE_MACHINE_AMD64 = 0x8664
|
15
|
+
IMAGE_FILE_MACHINE_ARM64 = 0xaa64
|
16
|
+
end
|
17
|
+
|
18
|
+
private_constant :ImageFileMachineConstants
|
19
|
+
|
20
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/ne-processthreadsapi-machine_attributes
|
21
|
+
module MachineAttributes
|
22
|
+
USER_ENABLED = 0x00000001
|
23
|
+
KERNEL_ENABLED = 0x00000002
|
24
|
+
WOW64_CONTAINER = 0x00000004
|
25
|
+
end
|
26
|
+
|
27
|
+
private_constant :MachineAttributes
|
28
|
+
|
29
|
+
# Specifies the ways in which an architecture of code can run on a host operating system.
|
30
|
+
class MachineTypeAttributes
|
31
|
+
def initialize(machine_type_attributes)
|
32
|
+
@machine_type_attributes = machine_type_attributes
|
33
|
+
end
|
34
|
+
|
35
|
+
# The specified architecture of code can run in user mode.
|
36
|
+
def user_enabled?
|
37
|
+
@machine_type_attributes & MachineAttributes::USER_ENABLED == MachineAttributes::USER_ENABLED
|
38
|
+
end
|
39
|
+
|
40
|
+
# The specified architecture of code can run in kernel mode.
|
41
|
+
def kernel_enabled?
|
42
|
+
@machine_type_attributes & MachineAttributes::KERNEL_ENABLED == MachineAttributes::KERNEL_ENABLED
|
43
|
+
end
|
44
|
+
|
45
|
+
# The specified architecture of code runs on WOW64.
|
46
|
+
def wow64_container?
|
47
|
+
@machine_type_attributes & MachineAttributes::WOW64_CONTAINER == MachineAttributes::WOW64_CONTAINER
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private_constant :MachineTypeAttributes
|
52
|
+
|
53
|
+
class << self
|
54
|
+
def x86?
|
55
|
+
get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_I386).user_enabled?
|
56
|
+
end
|
57
|
+
|
58
|
+
def arm?
|
59
|
+
get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_ARMNT).user_enabled?
|
60
|
+
end
|
61
|
+
|
62
|
+
def x64?
|
63
|
+
get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_AMD64).user_enabled?
|
64
|
+
end
|
65
|
+
|
66
|
+
def arm64?
|
67
|
+
get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_ARM64).user_enabled?
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
begin
|
73
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getmachinetypeattributes
|
74
|
+
GetMachineTypeAttributes = Fiddle::Function.new(
|
75
|
+
Kernel32['GetMachineTypeAttributes'],
|
76
|
+
[-Fiddle::TYPE_SHORT, Fiddle::TYPE_VOIDP],
|
77
|
+
Fiddle::TYPE_LONG
|
78
|
+
)
|
79
|
+
|
80
|
+
def get_machine_type_attributes(machine)
|
81
|
+
p_machine_type_attributes = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT, Fiddle::RUBY_FREE)
|
82
|
+
raise Fiddle.win32_last_error unless GetMachineTypeAttributes.call(machine, p_machine_type_attributes).zero?
|
83
|
+
|
84
|
+
MachineTypeAttributes.new(p_machine_type_attributes.to_str.unpack1('i'))
|
85
|
+
end
|
86
|
+
rescue Fiddle::DLError
|
87
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess
|
88
|
+
GetCurrentProcess = Fiddle::Function.new(
|
89
|
+
Kernel32['GetCurrentProcess'],
|
90
|
+
[],
|
91
|
+
Fiddle::TYPE_VOIDP
|
92
|
+
)
|
93
|
+
|
94
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/wow64apiset/nf-wow64apiset-iswow64process2
|
95
|
+
IsWow64Process2 = Fiddle::Function.new(
|
96
|
+
Kernel32['IsWow64Process2'],
|
97
|
+
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
|
98
|
+
Fiddle::TYPE_CHAR
|
99
|
+
)
|
100
|
+
|
101
|
+
# @see https://learn.microsoft.com/en-us/windows/win32/api/wow64apiset/nf-wow64apiset-iswow64guestmachinesupported
|
102
|
+
IsWow64GuestMachineSupported = Fiddle::Function.new(
|
103
|
+
Kernel32['IsWow64GuestMachineSupported'],
|
104
|
+
[-Fiddle::TYPE_SHORT, Fiddle::TYPE_VOIDP],
|
105
|
+
Fiddle::TYPE_LONG
|
106
|
+
)
|
107
|
+
|
108
|
+
def get_machine_type_attributes(machine)
|
109
|
+
h_process = GetCurrentProcess.call
|
110
|
+
p_process_machine = Fiddle::Pointer.malloc(Fiddle::SIZEOF_SHORT, Fiddle::RUBY_FREE)
|
111
|
+
p_native_machine = Fiddle::Pointer.malloc(Fiddle::SIZEOF_SHORT, Fiddle::RUBY_FREE)
|
112
|
+
raise Fiddle.win32_last_error if IsWow64Process2.call(h_process, p_process_machine, p_native_machine).zero?
|
113
|
+
|
114
|
+
if p_native_machine.to_str.unpack1('S!') == machine
|
115
|
+
return MachineTypeAttributes.new(MachineAttributes::USER_ENABLED | MachineAttributes::KERNEL_ENABLED)
|
116
|
+
end
|
117
|
+
|
118
|
+
p_machine_is_supported = Fiddle::Pointer.malloc(Fiddle::SIZEOF_CHAR, Fiddle::RUBY_FREE)
|
119
|
+
raise Fiddle.win32_last_error unless IsWow64GuestMachineSupported.call(machine, p_machine_is_supported).zero?
|
120
|
+
|
121
|
+
if p_machine_is_supported.to_str.unpack1('c').zero?
|
122
|
+
MachineTypeAttributes.new(0)
|
123
|
+
else
|
124
|
+
MachineTypeAttributes.new(MachineAttributes::USER_ENABLED | MachineAttributes::WOW64_CONTAINER)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -46,15 +46,11 @@ module Sass
|
|
46
46
|
|
47
47
|
return unless @observers.empty?
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# Resetting @id can cause a race condition in compiler
|
56
|
-
# See: https://github.com/sass/dart-sass/issues/2004
|
57
|
-
close if @id == UINT_MAX
|
49
|
+
if @id == UINT_MAX
|
50
|
+
close
|
51
|
+
else
|
52
|
+
@id = 1
|
53
|
+
end
|
58
54
|
end
|
59
55
|
end
|
60
56
|
|
data/lib/sass/embedded.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../../ext/sass/cli'
|
4
|
-
require_relative '../../ext/sass/embedded_sass_pb'
|
5
4
|
require_relative 'compile_error'
|
6
5
|
require_relative 'compile_result'
|
7
6
|
require_relative 'embedded/connection'
|
@@ -12,6 +11,7 @@ require_relative 'embedded/resilient_dispatcher'
|
|
12
11
|
require_relative 'embedded/structifier'
|
13
12
|
require_relative 'embedded/varint'
|
14
13
|
require_relative 'embedded/version'
|
14
|
+
require_relative 'embedded_protocol'
|
15
15
|
require_relative 'logger/silent'
|
16
16
|
require_relative 'logger/source_location'
|
17
17
|
require_relative 'logger/source_span'
|
@@ -247,6 +247,4 @@ module Sass
|
|
247
247
|
@dispatcher.closed?
|
248
248
|
end
|
249
249
|
end
|
250
|
-
|
251
|
-
private_constant :EmbeddedProtocol
|
252
250
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass-embedded
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.63.
|
4
|
+
version: 1.63.5
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- ext/sass/dart-sass/src/dart.exe
|
43
43
|
- ext/sass/dart-sass/src/sass.snapshot
|
44
44
|
- ext/sass/embedded_sass_pb.rb
|
45
|
+
- ext/sass/win32_api.rb
|
45
46
|
- lib/sass-embedded.rb
|
46
47
|
- lib/sass/compile_error.rb
|
47
48
|
- lib/sass/compile_result.rb
|
@@ -59,6 +60,7 @@ files:
|
|
59
60
|
- lib/sass/embedded/structifier.rb
|
60
61
|
- lib/sass/embedded/varint.rb
|
61
62
|
- lib/sass/embedded/version.rb
|
63
|
+
- lib/sass/embedded_protocol.rb
|
62
64
|
- lib/sass/logger/silent.rb
|
63
65
|
- lib/sass/logger/source_location.rb
|
64
66
|
- lib/sass/logger/source_span.rb
|
@@ -79,8 +81,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
|
|
79
81
|
licenses:
|
80
82
|
- MIT
|
81
83
|
metadata:
|
82
|
-
documentation_uri: https://rubydoc.info/gems/sass-embedded/1.63.
|
83
|
-
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.63.
|
84
|
+
documentation_uri: https://rubydoc.info/gems/sass-embedded/1.63.5
|
85
|
+
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.63.5
|
84
86
|
funding_uri: https://github.com/sponsors/ntkme
|
85
87
|
post_install_message:
|
86
88
|
rdoc_options: []
|