sass-embedded 1.63.3-x86_64-darwin → 1.63.4-x86_64-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 +4 -4
- data/ext/sass/dart-sass/src/sass.snapshot +0 -0
- data/lib/sass/embedded/{compiler.rb → connection.rb} +4 -4
- data/lib/sass/embedded/dispatcher.rb +30 -6
- data/lib/sass/embedded/host.rb +9 -9
- data/lib/sass/embedded/resilient_dispatcher.rb +40 -0
- data/lib/sass/embedded/version.rb +1 -1
- data/lib/sass/embedded.rb +9 -9
- metadata +7 -7
- data/lib/sass/embedded/channel.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44521962732456ece8d4c10046a43b7e5719b2e616cbb545fb8e455d636cc749
|
4
|
+
data.tar.gz: d751bb0b2db77685248c0f1e043b8c5209ab17dd28eef67034326b34a9092b22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7c44ab021b3763a50abf79d4ebe27278f0d1253c951df6ad2d674c25d0058169afcba5743e417087d6070baea143ca483b667d7567f9f1e7d7a9cd70851d0fb
|
7
|
+
data.tar.gz: f5ab444eb79135829edcc9d40817fa8d03491a473b60b01a040d45746b8408b17392dff44ec8e5bfc9cbe8838e54dfcb21a5d20944af5b9adac89acdd1097abb
|
Binary file
|
@@ -4,10 +4,10 @@ require 'open3'
|
|
4
4
|
|
5
5
|
module Sass
|
6
6
|
class Embedded
|
7
|
-
# The {
|
7
|
+
# The stdio based {Connection} between the {Dispatcher} and the compiler.
|
8
8
|
#
|
9
|
-
# It runs the `sass --embedded`
|
10
|
-
class
|
9
|
+
# It runs the `sass --embedded` command.
|
10
|
+
class Connection
|
11
11
|
def initialize
|
12
12
|
@stdin, @stdout, @stderr, @wait_thread = begin
|
13
13
|
Open3.popen3(*CLI::COMMAND, '--embedded', chdir: __dir__)
|
@@ -67,6 +67,6 @@ module Sass
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
private_constant :
|
70
|
+
private_constant :Connection
|
71
71
|
end
|
72
72
|
end
|
@@ -4,12 +4,12 @@ module Sass
|
|
4
4
|
class Embedded
|
5
5
|
# The {Dispatcher} class.
|
6
6
|
#
|
7
|
-
# It dispatches messages between mutliple instances of {Host} and a single {
|
7
|
+
# It dispatches messages between mutliple instances of {Host} and a single {Connection} to the compiler.
|
8
8
|
class Dispatcher
|
9
9
|
UINT_MAX = 0xffffffff
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
@
|
12
|
+
@connection = Connection.new
|
13
13
|
@observers = {}
|
14
14
|
@id = 1
|
15
15
|
@mutex = Mutex.new
|
@@ -58,22 +58,26 @@ module Sass
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
def connect(host)
|
62
|
+
Channel.new(self, host)
|
63
|
+
end
|
64
|
+
|
61
65
|
def close
|
62
|
-
@
|
66
|
+
@connection.close
|
63
67
|
end
|
64
68
|
|
65
69
|
def closed?
|
66
|
-
@
|
70
|
+
@connection.closed?
|
67
71
|
end
|
68
72
|
|
69
73
|
def send_proto(...)
|
70
|
-
@
|
74
|
+
@connection.write(...)
|
71
75
|
end
|
72
76
|
|
73
77
|
private
|
74
78
|
|
75
79
|
def receive_proto
|
76
|
-
id, proto = @
|
80
|
+
id, proto = @connection.read
|
77
81
|
case id
|
78
82
|
when 1...UINT_MAX
|
79
83
|
@mutex.synchronize { @observers[id] }.receive_proto(proto)
|
@@ -91,6 +95,26 @@ module Sass
|
|
91
95
|
raise Errno::EPROTO
|
92
96
|
end
|
93
97
|
end
|
98
|
+
|
99
|
+
# The {Channel} between {Dispatcher} and {Host}.
|
100
|
+
class Channel
|
101
|
+
attr_reader :id
|
102
|
+
|
103
|
+
def initialize(dispatcher, host)
|
104
|
+
@dispatcher = dispatcher
|
105
|
+
@id = @dispatcher.subscribe(host)
|
106
|
+
end
|
107
|
+
|
108
|
+
def disconnect
|
109
|
+
@dispatcher.unsubscribe(id)
|
110
|
+
end
|
111
|
+
|
112
|
+
def send_proto(...)
|
113
|
+
@dispatcher.send_proto(...)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
private_constant :Channel
|
94
118
|
end
|
95
119
|
|
96
120
|
private_constant :Dispatcher
|
data/lib/sass/embedded/host.rb
CHANGED
@@ -11,8 +11,8 @@ module Sass
|
|
11
11
|
#
|
12
12
|
# It communicates with {Dispatcher} and handles the host logic.
|
13
13
|
class Host
|
14
|
-
def initialize(
|
15
|
-
@
|
14
|
+
def initialize(dispatcher)
|
15
|
+
@dispatcher = dispatcher
|
16
16
|
end
|
17
17
|
|
18
18
|
def compile_request(path:,
|
@@ -117,7 +117,7 @@ module Sass
|
|
117
117
|
private
|
118
118
|
|
119
119
|
def await0
|
120
|
-
@
|
120
|
+
@channel = @dispatcher.connect(self)
|
121
121
|
@queue = Queue.new
|
122
122
|
|
123
123
|
yield
|
@@ -128,11 +128,11 @@ module Sass
|
|
128
128
|
|
129
129
|
@result
|
130
130
|
ensure
|
131
|
-
@
|
131
|
+
@channel&.disconnect
|
132
132
|
end
|
133
133
|
|
134
134
|
def await
|
135
|
-
@
|
135
|
+
@channel = @dispatcher.connect(self)
|
136
136
|
@queue = Queue.new
|
137
137
|
|
138
138
|
yield
|
@@ -148,21 +148,21 @@ module Sass
|
|
148
148
|
|
149
149
|
@result
|
150
150
|
ensure
|
151
|
-
@
|
151
|
+
@channel&.disconnect
|
152
152
|
end
|
153
153
|
|
154
154
|
def id
|
155
|
-
@
|
155
|
+
@channel.id
|
156
156
|
end
|
157
157
|
|
158
158
|
def send_message0(...)
|
159
159
|
inbound_message = EmbeddedProtocol::InboundMessage.new(...)
|
160
|
-
@
|
160
|
+
@channel.send_proto(0, inbound_message.to_proto)
|
161
161
|
end
|
162
162
|
|
163
163
|
def send_message(...)
|
164
164
|
inbound_message = EmbeddedProtocol::InboundMessage.new(...)
|
165
|
-
@
|
165
|
+
@channel.send_proto(id, inbound_message.to_proto)
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sass
|
4
|
+
class Embedded
|
5
|
+
# The {ResilientDispatcher} class.
|
6
|
+
#
|
7
|
+
# It recovers from failures and continues to function.
|
8
|
+
class ResilientDispatcher
|
9
|
+
def initialize
|
10
|
+
@dispatcher = Dispatcher.new
|
11
|
+
@mutex = Mutex.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def close
|
15
|
+
@mutex.synchronize do
|
16
|
+
@dispatcher.close
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def closed?
|
21
|
+
@mutex.synchronize do
|
22
|
+
@dispatcher.closed?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def connect(host)
|
27
|
+
@dispatcher.connect(host)
|
28
|
+
rescue Errno::EBUSY
|
29
|
+
@mutex.synchronize do
|
30
|
+
@dispatcher.connect(host)
|
31
|
+
rescue Errno::EBUSY
|
32
|
+
@dispatcher = Dispatcher.new
|
33
|
+
@dispatcher.connect(host)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
private_constant :ResilientDispatcher
|
39
|
+
end
|
40
|
+
end
|
data/lib/sass/embedded.rb
CHANGED
@@ -4,11 +4,11 @@ require_relative '../../ext/sass/cli'
|
|
4
4
|
require_relative '../../ext/sass/embedded_sass_pb'
|
5
5
|
require_relative 'compile_error'
|
6
6
|
require_relative 'compile_result'
|
7
|
-
require_relative 'embedded/
|
8
|
-
require_relative 'embedded/compiler'
|
7
|
+
require_relative 'embedded/connection'
|
9
8
|
require_relative 'embedded/dispatcher'
|
10
9
|
require_relative 'embedded/host'
|
11
10
|
require_relative 'embedded/protofier'
|
11
|
+
require_relative 'embedded/resilient_dispatcher'
|
12
12
|
require_relative 'embedded/structifier'
|
13
13
|
require_relative 'embedded/varint'
|
14
14
|
require_relative 'embedded/version'
|
@@ -80,7 +80,7 @@ module Sass
|
|
80
80
|
# rubocop:enable Layout/LineLength
|
81
81
|
|
82
82
|
# The {Embedded} host for using dart-sass. Each instance creates its own
|
83
|
-
# communication {
|
83
|
+
# communication {Dispatcher} with a dedicated compiler process.
|
84
84
|
#
|
85
85
|
# @example
|
86
86
|
# embedded = Sass::Embedded.new
|
@@ -89,7 +89,7 @@ module Sass
|
|
89
89
|
# embedded.close
|
90
90
|
class Embedded
|
91
91
|
def initialize
|
92
|
-
@
|
92
|
+
@dispatcher = ResilientDispatcher.new
|
93
93
|
end
|
94
94
|
|
95
95
|
# Compiles the Sass file at +path+ to CSS.
|
@@ -138,7 +138,7 @@ module Sass
|
|
138
138
|
verbose: false)
|
139
139
|
raise ArgumentError, 'path must be set' if path.nil?
|
140
140
|
|
141
|
-
Host.new(@
|
141
|
+
Host.new(@dispatcher).compile_request(
|
142
142
|
path: path,
|
143
143
|
source: nil,
|
144
144
|
importer: nil,
|
@@ -212,7 +212,7 @@ module Sass
|
|
212
212
|
verbose: false)
|
213
213
|
raise ArgumentError, 'source must be set' if source.nil?
|
214
214
|
|
215
|
-
Host.new(@
|
215
|
+
Host.new(@dispatcher).compile_request(
|
216
216
|
path: nil,
|
217
217
|
source: source,
|
218
218
|
importer: importer,
|
@@ -236,15 +236,15 @@ module Sass
|
|
236
236
|
# @return [String] Information about the Sass implementation.
|
237
237
|
# @see https://sass-lang.com/documentation/js-api/modules#info
|
238
238
|
def info
|
239
|
-
@info ||= Host.new(@
|
239
|
+
@info ||= Host.new(@dispatcher).version_request
|
240
240
|
end
|
241
241
|
|
242
242
|
def close
|
243
|
-
@
|
243
|
+
@dispatcher.close
|
244
244
|
end
|
245
245
|
|
246
246
|
def closed?
|
247
|
-
@
|
247
|
+
@dispatcher.closed?
|
248
248
|
end
|
249
249
|
end
|
250
250
|
|
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.4
|
5
5
|
platform: x86_64-darwin
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -47,8 +47,7 @@ files:
|
|
47
47
|
- lib/sass/compile_result.rb
|
48
48
|
- lib/sass/elf.rb
|
49
49
|
- lib/sass/embedded.rb
|
50
|
-
- lib/sass/embedded/
|
51
|
-
- lib/sass/embedded/compiler.rb
|
50
|
+
- lib/sass/embedded/connection.rb
|
52
51
|
- lib/sass/embedded/dispatcher.rb
|
53
52
|
- lib/sass/embedded/host.rb
|
54
53
|
- lib/sass/embedded/host/function_registry.rb
|
@@ -56,6 +55,7 @@ files:
|
|
56
55
|
- lib/sass/embedded/host/logger_registry.rb
|
57
56
|
- lib/sass/embedded/host/value_protofier.rb
|
58
57
|
- lib/sass/embedded/protofier.rb
|
58
|
+
- lib/sass/embedded/resilient_dispatcher.rb
|
59
59
|
- lib/sass/embedded/structifier.rb
|
60
60
|
- lib/sass/embedded/varint.rb
|
61
61
|
- lib/sass/embedded/version.rb
|
@@ -79,8 +79,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
|
|
79
79
|
licenses:
|
80
80
|
- MIT
|
81
81
|
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.
|
82
|
+
documentation_uri: https://rubydoc.info/gems/sass-embedded/1.63.4
|
83
|
+
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.63.4
|
84
84
|
funding_uri: https://github.com/sponsors/ntkme
|
85
85
|
post_install_message:
|
86
86
|
rdoc_options: []
|
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
rubygems_version: 3.4.
|
100
|
+
rubygems_version: 3.4.14
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: Use dart-sass with Ruby!
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sass
|
4
|
-
class Embedded
|
5
|
-
# The {Channel} class.
|
6
|
-
#
|
7
|
-
# It establishes connection between {Host} and {Dispatcher}.
|
8
|
-
class Channel
|
9
|
-
def initialize
|
10
|
-
@dispatcher = Dispatcher.new
|
11
|
-
@mutex = Mutex.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def close
|
15
|
-
@mutex.synchronize do
|
16
|
-
@dispatcher.close
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def closed?
|
21
|
-
@mutex.synchronize do
|
22
|
-
@dispatcher.closed?
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def connect(observer)
|
27
|
-
@mutex.synchronize do
|
28
|
-
begin
|
29
|
-
id = @dispatcher.subscribe(observer)
|
30
|
-
rescue Errno::EBUSY
|
31
|
-
@dispatcher = Dispatcher.new
|
32
|
-
id = @dispatcher.subscribe(observer)
|
33
|
-
end
|
34
|
-
Connection.new(@dispatcher, id)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# The {Connection} between {Host} to {Dispatcher}.
|
39
|
-
class Connection
|
40
|
-
attr_reader :id
|
41
|
-
|
42
|
-
def initialize(dispatcher, id)
|
43
|
-
@dispatcher = dispatcher
|
44
|
-
@id = id
|
45
|
-
end
|
46
|
-
|
47
|
-
def disconnect
|
48
|
-
@dispatcher.unsubscribe(id)
|
49
|
-
end
|
50
|
-
|
51
|
-
def send_proto(...)
|
52
|
-
@dispatcher.send_proto(...)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
private_constant :Connection
|
57
|
-
end
|
58
|
-
|
59
|
-
private_constant :Channel
|
60
|
-
end
|
61
|
-
end
|