opal-webpack-loader 0.11.0 → 0.11.1

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: 75cfc2e9527b252335ad359e1eb5c7aa476cec879ed76c4501b686a50f39b1f2
4
- data.tar.gz: b6d13eac5c5eaa0e3c46dfd15b8f59d01d59124f92608c741e93952c87bb04f6
3
+ metadata.gz: f1a1b24301ed05a439abf847ae77a460919a227d250432d0c769d3080d100dec
4
+ data.tar.gz: 48f48641c277ecbf2fd50a7c274bdcf94b960dc28bf5103da70555815b70112f
5
5
  SHA512:
6
- metadata.gz: c9edddd5f0a21625c5376dbf609e594a35bfe36ab84ca2fb804fa7f011093e8a45aa516530bb0dceceec4dcc069619dc0e7c31ceecfd3f68a5ad0c6caf39699f
7
- data.tar.gz: f21627293c524a6db7f7c53f89e83f13f77519597133c05dd992173b7d2cff05f0ab915cfe7eb8e52f036ce448f3905e572d75a2d345cefe93990ece36ad342b
6
+ metadata.gz: 7ef00f2c1e57f71eadaae2a3b2edc6c47745c980a1f85921b0ca9e6e0b092e960c9c3971826ffec3ca22b42e56d45a9b36bd6d692b794b97f23c2343f043e25d
7
+ data.tar.gz: a5ebdd0518490d0eea2e78de43f1527f333b32ab778603fd24cc8052c3870aa4e5408a631c6a0a676185d7355f488c4cc605f5b8a793418a2072ed3c09174b85
data/README.md CHANGED
@@ -23,7 +23,7 @@ At the [Isomorfeus Framework Project](http://isomorfeus.com)
23
23
  opal-webpack-loader-0.7.1 compiles all of opal, a bunch of gems and over 19000SLC on a
24
24
  Intel® Core™ i7-7700HQ CPU @ 2.80GHz × 8, with 8 workers in around 1850ms
25
25
  - support for memcached or redis as compiler cache
26
- - fast builds on windows too, parallel when building multiple assets with parallel webpack
26
+ - fast builds on windows too, parallel when building multiple assets with parallel-webpack
27
27
  - opal modules are packaged as es6 modules
28
28
  - support for rails with webpacker
29
29
  - other webpack features become available, like:
@@ -36,6 +36,7 @@ Intel® Core™ i7-7700HQ CPU @ 2.80GHz × 8, with 8 workers in around 1850ms
36
36
  - everything else webpack can do, like loading stylesheets, etc.
37
37
 
38
38
  ### Requirements
39
+ - npm or yarn
39
40
  - opal-webpack-loader consists of 2 parts, the npm package and the gem, both are required and must be the same version.
40
41
  - webpack ^4.46
41
42
  - webpack-dev-server ^3.11.0
File without changes
File without changes
data/bin/owl-compiler CHANGED
File without changes
File without changes
data/bin/owl-install CHANGED
File without changes
@@ -38,27 +38,31 @@ OpalWebpackLoader.manifest_path = File.join(Dir.getwd, 'public', 'assets', 'mani
38
38
  OpalWebpackLoader.client_asset_path = 'http://localhost:3035/assets/'
39
39
  OpalWebpackLoader.use_manifest = false
40
40
 
41
- # TODO require yarn instead of npm
42
- npm = if Gem.win_platform?
43
- `where npm`.chop.lines.last
44
- else
45
- `which npm`.chop
46
- end
41
+ owl_npm_version = nil
42
+ begin
43
+ yarn = if Gem.win_platform?
44
+ `where yarn`.chop.lines.last.include?('yarn')
45
+ else
46
+ `which yarn`.chop.include?('yarn')
47
+ end
48
+ owl_npm_version = `yarn run -s opal-webpack-loader-npm-version`.chop if yarn
47
49
 
48
- if !npm.nil? && !npm.empty?
49
- bin_dir = `npm bin`.chop
50
- begin
51
- owl_npm_version = `#{File.join(bin_dir, 'opal-webpack-loader-npm-version')}`.chop
52
- rescue
53
- owl_npm_version = nil
50
+ unless owl_npm_version
51
+ npm = if Gem.win_platform?
52
+ `where npm`.chop.lines.last.include?('npm')
53
+ else
54
+ `which npm`.chop.include?('npm')
55
+ end
56
+ owl_npm_version = `npm exec opal-webpack-loader-npm-version`.chop if npm
54
57
  end
58
+ rescue
59
+ owl_npm_version = nil
60
+ end
55
61
 
56
- if owl_npm_version != OpalWebpackLoader::VERSION
57
- STDERR.puts "opal-webpack-loader: Incorrect version of npm package found or npm package not installed.\n" +
58
- "Please install the npm package for opal-webpack-loader:\n" +
59
- "\twith npm:\tnpm install opal-webpack-loader@#{OpalWebpackLoader::VERSION}\n" +
60
- "\tor with yarn:\tyarn add opal-webpack-loader@#{OpalWebpackLoader::VERSION}\n"
61
- end
62
- else
63
- STDERR.puts "opal-webpack-loader: Unable to check npm package version. Please check your npm installation."
62
+ if owl_npm_version != OpalWebpackLoader::VERSION
63
+ STDERR.puts "opal-webpack-loader: Incorrect version of npm package found or npm package not installed.\n" +
64
+ "Please install the npm package for opal-webpack-loader:\n" +
65
+ "\twith npm:\tnpm install opal-webpack-loader@#{OpalWebpackLoader::VERSION}\n" +
66
+ "\tor with yarn:\tyarn add opal-webpack-loader@#{OpalWebpackLoader::VERSION}\n"
64
67
  end
68
+
@@ -1,219 +1,219 @@
1
- require 'ffi'
2
-
3
- module OpalWebpackLoader
4
- module WindowsyThings
5
- extend FFI::Library
6
-
7
- ffi_lib :kernel32, :user32
8
-
9
- ERROR_IO_PENDING = 997
10
- ERROR_PIPE_CONNECTED = 535
11
- ERROR_SUCCESS = 0
12
-
13
- FILE_FLAG_OVERLAPPED = 0x40000000
14
-
15
- INFINITE = 0xFFFFFFFF
16
- INVALID_HANDLE_VALUE = FFI::Pointer.new(-1).address
17
-
18
- PIPE_ACCESS_DUPLEX = 0x00000003
19
- PIPE_READMODE_BYTE = 0x00000000
20
- PIPE_READMODE_MESSAGE = 0x00000002
21
- PIPE_TYPE_BYTE = 0x00000000
22
- PIPE_TYPE_MESSAGE = 0x00000004
23
- PIPE_WAIT = 0x00000000
24
-
25
- QS_ALLINPUT = 0x04FF
26
-
27
- typedef :uintptr_t, :handle
28
-
29
- attach_function :ConnectNamedPipe, [:handle, :pointer], :ulong
30
- attach_function :CreateEvent, :CreateEventA, [:pointer, :ulong, :ulong, :string], :handle
31
- attach_function :CreateNamedPipe, :CreateNamedPipeA, [:string, :ulong, :ulong, :ulong, :ulong, :ulong, :ulong, :pointer], :handle
32
- attach_function :DisconnectNamedPipe, [:handle], :bool
33
- attach_function :FlushFileBuffers, [:handle], :bool
34
- attach_function :GetLastError, [], :ulong
35
- attach_function :GetOverlappedResult, [:handle, :pointer, :pointer, :bool], :bool
36
- attach_function :MsgWaitForMultipleObjects, [:ulong, :pointer, :ulong, :ulong, :ulong], :ulong
37
- attach_function :ReadFile, [:handle, :buffer_out, :ulong, :pointer, :pointer], :bool
38
- attach_function :SetEvent, [:handle], :bool
39
- attach_function :WaitForMultipleObjects, [:ulong, :pointer, :ulong, :ulong], :ulong
40
- attach_function :WriteFile, [:handle, :buffer_in, :ulong, :pointer, :pointer], :bool
41
- end
42
-
43
- class PipeServer
44
- include OpalWebpackLoader::WindowsyThings
45
-
46
- CONNECTING_STATE = 0
47
- READING_STATE = 1
48
- WRITING_STATE = 2
49
- INSTANCES = 4
50
- PIPE_TIMEOUT = 5000
51
- BUFFER_SIZE = 65536
52
-
53
- class Overlapped < FFI::Struct
54
- layout(
55
- :Internal, :uintptr_t,
56
- :InternalHigh, :uintptr_t,
57
- :Offset, :ulong,
58
- :OffsetHigh, :ulong,
59
- :hEvent, :uintptr_t
60
- )
61
- end
62
-
63
- def initialize(pipe_name, instances = 4, &block)
64
- @run_block = block
65
- @full_pipe_name = "\\\\.\\pipe\\#{pipe_name}"
66
- @instances = instances
67
- @events = []
68
- @events_pointer = FFI::MemoryPointer.new(:uintptr_t, @instances)
69
- @pipes = []
70
- end
71
-
72
- def run
73
- create_instances
74
- while_loop
75
- end
76
-
77
- private
78
-
79
- def create_instances
80
- (0...@instances).each do |i|
81
- @events[i] = CreateEvent(nil, 1, 1, nil)
82
- raise "CreateEvent failed with #{GetLastError()}" unless @events[i]
83
-
84
- overlap = Overlapped.new
85
- overlap[:hEvent] = @events[i]
86
-
87
- @pipes[i] = { overlap: overlap, instance: nil, request: FFI::Buffer.new(1, BUFFER_SIZE), bytes_read: 0, reply: FFI::Buffer.new(1, BUFFER_SIZE), bytes_to_write: 0, state: nil, pending_io: false }
88
- @pipes[i][:instance] = CreateNamedPipe(@full_pipe_name,
89
- PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
90
- PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
91
- @instances,
92
- BUFFER_SIZE,
93
- BUFFER_SIZE,
94
- PIPE_TIMEOUT,
95
- nil)
96
-
97
- raise "CreateNamedPipe failed with #{GetLastError()}" if @pipes[i][:instance] == INVALID_HANDLE_VALUE
98
- @pipes[i][:pending_io] = connect_to_new_client(i)
99
- @pipes[i][:state] = @pipes[i][:pending_io] ? CONNECTING_STATE : READING_STATE
100
- end
101
- @events_pointer.write_array_of_ulong_long(@events)
102
- nil
103
- end
104
-
105
- def while_loop
106
- while true
107
- i = MsgWaitForMultipleObjects(@instances, @events_pointer, 0, INFINITE, QS_ALLINPUT)
108
- # Having this STDOUT.putc is essential, otherwise there is a tendency to block within MsgWaitForMultipleObjects ...
109
- STDOUT.putc "."
110
- # ... because the ruby interpreter is waiting for objects too on Windows. Thats why we wait for QS_ALLINPUT and
111
- # with STDOUT.putc give back control to the ruby interpreter that it can handle its things.
112
- if i < 0 || i > (@instances - 1)
113
- STDERR.puts "Pipe index out of range. Maybe a error occured."
114
- next
115
- end
116
-
117
- if @pipes[i][:pending_io]
118
- bytes_transferred = FFI::MemoryPointer.new(:ulong)
119
- success = GetOverlappedResult(@pipes[i][:instance], @pipes[i][:overlap], bytes_transferred, false)
120
-
121
- case @pipes[i][:state]
122
- when CONNECTING_STATE
123
- raise "Error #{GetLastError()}" unless success
124
- @pipes[i][:state] = READING_STATE
125
- when READING_STATE
126
- if !success || bytes_transferred.read_ulong == 0
127
- disconnect_and_reconnect(i)
128
- next
129
- else
130
- @pipes[i][:bytes_read] = bytes_transferred.read_ulong
131
- @pipes[i][:state] = WRITING_STATE
132
- end
133
- when WRITING_STATE
134
- if !success || bytes_transferred.read_ulong != @pipes[i][:bytes_to_write]
135
- disconnect_and_reconnect(i)
136
- next
137
- else
138
- @pipes[i][:state] = READING_STATE
139
- end
140
- else
141
- raise "Invalid pipe state."
142
- end
143
- end
144
-
145
- case @pipes[i][:state]
146
- when READING_STATE
147
- bytes_read = FFI::MemoryPointer.new(:ulong)
148
- success = ReadFile(@pipes[i][:instance], @pipes[i][:request], BUFFER_SIZE, bytes_read, @pipes[i][:overlap].to_ptr)
149
- if success && bytes_read.read_ulong != 0
150
- @pipes[i][:pending_io] = false
151
- @pipes[i][:state] = WRITING_STATE
152
- next
153
- end
154
-
155
- err = GetLastError()
156
- if !success && err == ERROR_IO_PENDING
157
- @pipes[i][:pending_io] = true
158
- next
159
- end
160
-
161
- disconnect_and_reconnect(i)
162
- when WRITING_STATE
163
- @pipes[i][:reply] = @run_block.call(@pipes[i][:request].get_string(0))
164
- @pipes[i][:bytes_to_write] = @pipes[i][:reply].bytesize
165
- bytes_written = FFI::MemoryPointer.new(:ulong)
166
- success = WriteFile(@pipes[i][:instance], @pipes[i][:reply], @pipes[i][:bytes_to_write], bytes_written, @pipes[i][:overlap].to_ptr)
167
-
168
- if success && bytes_written.read_ulong == @pipes[i][:bytes_to_write]
169
- @pipes[i][:pending_io] = false
170
- @pipes[i][:state] = READING_STATE
171
- next
172
- end
173
-
174
- err = GetLastError()
175
-
176
- if !success && err == ERROR_IO_PENDING
177
- @pipes[i][:pending_io] = true
178
- next
179
- end
180
-
181
- disconnect_and_reconnect(i)
182
- else
183
- raise "Invalid pipe state."
184
- end
185
- end
186
- end
187
-
188
- def disconnect_and_reconnect(i)
189
- FlushFileBuffers(@pipes[i][:instance])
190
- STDERR.puts("DisconnectNamedPipe failed with #{GetLastError()}") if !DisconnectNamedPipe(@pipes[i][:instance])
191
-
192
- @pipes[i][:pending_io] = connect_to_new_client(i)
193
-
194
- @pipes[i][:state] = @pipes[i][:pending_io] ? CONNECTING_STATE : READING_STATE
195
- end
196
-
197
- def connect_to_new_client(i)
198
- pending_io = false
199
- @pipes[i][:request].clear
200
- @pipes[i][:reply].clear
201
- connected = ConnectNamedPipe(@pipes[i][:instance], @pipes[i][:overlap].to_ptr)
202
- last_error = GetLastError()
203
- raise "ConnectNamedPipe failed with #{last_error} - #{connected}" if connected != 0
204
-
205
- case last_error
206
- when ERROR_IO_PENDING
207
- pending_io = true
208
- when ERROR_PIPE_CONNECTED
209
- SetEvent(@pipes[i][:overlap][:hEvent])
210
- when ERROR_SUCCESS
211
- pending_io = true
212
- else
213
- raise "ConnectNamedPipe failed with error #{last_error}"
214
- end
215
-
216
- pending_io
217
- end
218
- end
219
- end
1
+ require 'ffi'
2
+
3
+ module OpalWebpackLoader
4
+ module WindowsyThings
5
+ extend FFI::Library
6
+
7
+ ffi_lib :kernel32, :user32
8
+
9
+ ERROR_IO_PENDING = 997
10
+ ERROR_PIPE_CONNECTED = 535
11
+ ERROR_SUCCESS = 0
12
+
13
+ FILE_FLAG_OVERLAPPED = 0x40000000
14
+
15
+ INFINITE = 0xFFFFFFFF
16
+ INVALID_HANDLE_VALUE = FFI::Pointer.new(-1).address
17
+
18
+ PIPE_ACCESS_DUPLEX = 0x00000003
19
+ PIPE_READMODE_BYTE = 0x00000000
20
+ PIPE_READMODE_MESSAGE = 0x00000002
21
+ PIPE_TYPE_BYTE = 0x00000000
22
+ PIPE_TYPE_MESSAGE = 0x00000004
23
+ PIPE_WAIT = 0x00000000
24
+
25
+ QS_ALLINPUT = 0x04FF
26
+
27
+ typedef :uintptr_t, :handle
28
+
29
+ attach_function :ConnectNamedPipe, [:handle, :pointer], :ulong
30
+ attach_function :CreateEvent, :CreateEventA, [:pointer, :ulong, :ulong, :string], :handle
31
+ attach_function :CreateNamedPipe, :CreateNamedPipeA, [:string, :ulong, :ulong, :ulong, :ulong, :ulong, :ulong, :pointer], :handle
32
+ attach_function :DisconnectNamedPipe, [:handle], :bool
33
+ attach_function :FlushFileBuffers, [:handle], :bool
34
+ attach_function :GetLastError, [], :ulong
35
+ attach_function :GetOverlappedResult, [:handle, :pointer, :pointer, :bool], :bool
36
+ attach_function :MsgWaitForMultipleObjects, [:ulong, :pointer, :ulong, :ulong, :ulong], :ulong
37
+ attach_function :ReadFile, [:handle, :buffer_out, :ulong, :pointer, :pointer], :bool
38
+ attach_function :SetEvent, [:handle], :bool
39
+ attach_function :WaitForMultipleObjects, [:ulong, :pointer, :ulong, :ulong], :ulong
40
+ attach_function :WriteFile, [:handle, :buffer_in, :ulong, :pointer, :pointer], :bool
41
+ end
42
+
43
+ class PipeServer
44
+ include OpalWebpackLoader::WindowsyThings
45
+
46
+ CONNECTING_STATE = 0
47
+ READING_STATE = 1
48
+ WRITING_STATE = 2
49
+ INSTANCES = 4
50
+ PIPE_TIMEOUT = 5000
51
+ BUFFER_SIZE = 65536
52
+
53
+ class Overlapped < FFI::Struct
54
+ layout(
55
+ :Internal, :uintptr_t,
56
+ :InternalHigh, :uintptr_t,
57
+ :Offset, :ulong,
58
+ :OffsetHigh, :ulong,
59
+ :hEvent, :uintptr_t
60
+ )
61
+ end
62
+
63
+ def initialize(pipe_name, instances = 4, &block)
64
+ @run_block = block
65
+ @full_pipe_name = "\\\\.\\pipe\\#{pipe_name}"
66
+ @instances = instances
67
+ @events = []
68
+ @events_pointer = FFI::MemoryPointer.new(:uintptr_t, @instances)
69
+ @pipes = []
70
+ end
71
+
72
+ def run
73
+ create_instances
74
+ while_loop
75
+ end
76
+
77
+ private
78
+
79
+ def create_instances
80
+ (0...@instances).each do |i|
81
+ @events[i] = CreateEvent(nil, 1, 1, nil)
82
+ raise "CreateEvent failed with #{GetLastError()}" unless @events[i]
83
+
84
+ overlap = Overlapped.new
85
+ overlap[:hEvent] = @events[i]
86
+
87
+ @pipes[i] = { overlap: overlap, instance: nil, request: FFI::Buffer.new(1, BUFFER_SIZE), bytes_read: 0, reply: FFI::Buffer.new(1, BUFFER_SIZE), bytes_to_write: 0, state: nil, pending_io: false }
88
+ @pipes[i][:instance] = CreateNamedPipe(@full_pipe_name,
89
+ PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
90
+ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
91
+ @instances,
92
+ BUFFER_SIZE,
93
+ BUFFER_SIZE,
94
+ PIPE_TIMEOUT,
95
+ nil)
96
+
97
+ raise "CreateNamedPipe failed with #{GetLastError()}" if @pipes[i][:instance] == INVALID_HANDLE_VALUE
98
+ @pipes[i][:pending_io] = connect_to_new_client(i)
99
+ @pipes[i][:state] = @pipes[i][:pending_io] ? CONNECTING_STATE : READING_STATE
100
+ end
101
+ @events_pointer.write_array_of_ulong_long(@events)
102
+ nil
103
+ end
104
+
105
+ def while_loop
106
+ while true
107
+ i = MsgWaitForMultipleObjects(@instances, @events_pointer, 0, INFINITE, QS_ALLINPUT)
108
+ # Having this STDOUT.putc is essential, otherwise there is a tendency to block within MsgWaitForMultipleObjects ...
109
+ STDOUT.putc "."
110
+ # ... because the ruby interpreter is waiting for objects too on Windows. Thats why we wait for QS_ALLINPUT and
111
+ # with STDOUT.putc give back control to the ruby interpreter that it can handle its things.
112
+ if i < 0 || i > (@instances - 1)
113
+ STDERR.puts "Pipe index out of range. Maybe a error occured."
114
+ next
115
+ end
116
+
117
+ if @pipes[i][:pending_io]
118
+ bytes_transferred = FFI::MemoryPointer.new(:ulong)
119
+ success = GetOverlappedResult(@pipes[i][:instance], @pipes[i][:overlap], bytes_transferred, false)
120
+
121
+ case @pipes[i][:state]
122
+ when CONNECTING_STATE
123
+ raise "Error #{GetLastError()}" unless success
124
+ @pipes[i][:state] = READING_STATE
125
+ when READING_STATE
126
+ if !success || bytes_transferred.read_ulong == 0
127
+ disconnect_and_reconnect(i)
128
+ next
129
+ else
130
+ @pipes[i][:bytes_read] = bytes_transferred.read_ulong
131
+ @pipes[i][:state] = WRITING_STATE
132
+ end
133
+ when WRITING_STATE
134
+ if !success || bytes_transferred.read_ulong != @pipes[i][:bytes_to_write]
135
+ disconnect_and_reconnect(i)
136
+ next
137
+ else
138
+ @pipes[i][:state] = READING_STATE
139
+ end
140
+ else
141
+ raise "Invalid pipe state."
142
+ end
143
+ end
144
+
145
+ case @pipes[i][:state]
146
+ when READING_STATE
147
+ bytes_read = FFI::MemoryPointer.new(:ulong)
148
+ success = ReadFile(@pipes[i][:instance], @pipes[i][:request], BUFFER_SIZE, bytes_read, @pipes[i][:overlap].to_ptr)
149
+ if success && bytes_read.read_ulong != 0
150
+ @pipes[i][:pending_io] = false
151
+ @pipes[i][:state] = WRITING_STATE
152
+ next
153
+ end
154
+
155
+ err = GetLastError()
156
+ if !success && err == ERROR_IO_PENDING
157
+ @pipes[i][:pending_io] = true
158
+ next
159
+ end
160
+
161
+ disconnect_and_reconnect(i)
162
+ when WRITING_STATE
163
+ @pipes[i][:reply] = @run_block.call(@pipes[i][:request].get_string(0))
164
+ @pipes[i][:bytes_to_write] = @pipes[i][:reply].bytesize
165
+ bytes_written = FFI::MemoryPointer.new(:ulong)
166
+ success = WriteFile(@pipes[i][:instance], @pipes[i][:reply], @pipes[i][:bytes_to_write], bytes_written, @pipes[i][:overlap].to_ptr)
167
+
168
+ if success && bytes_written.read_ulong == @pipes[i][:bytes_to_write]
169
+ @pipes[i][:pending_io] = false
170
+ @pipes[i][:state] = READING_STATE
171
+ next
172
+ end
173
+
174
+ err = GetLastError()
175
+
176
+ if !success && err == ERROR_IO_PENDING
177
+ @pipes[i][:pending_io] = true
178
+ next
179
+ end
180
+
181
+ disconnect_and_reconnect(i)
182
+ else
183
+ raise "Invalid pipe state."
184
+ end
185
+ end
186
+ end
187
+
188
+ def disconnect_and_reconnect(i)
189
+ FlushFileBuffers(@pipes[i][:instance])
190
+ STDERR.puts("DisconnectNamedPipe failed with #{GetLastError()}") if !DisconnectNamedPipe(@pipes[i][:instance])
191
+
192
+ @pipes[i][:pending_io] = connect_to_new_client(i)
193
+
194
+ @pipes[i][:state] = @pipes[i][:pending_io] ? CONNECTING_STATE : READING_STATE
195
+ end
196
+
197
+ def connect_to_new_client(i)
198
+ pending_io = false
199
+ @pipes[i][:request].clear
200
+ @pipes[i][:reply].clear
201
+ connected = ConnectNamedPipe(@pipes[i][:instance], @pipes[i][:overlap].to_ptr)
202
+ last_error = GetLastError()
203
+ raise "ConnectNamedPipe failed with #{last_error} - #{connected}" if connected != 0
204
+
205
+ case last_error
206
+ when ERROR_IO_PENDING
207
+ pending_io = true
208
+ when ERROR_PIPE_CONNECTED
209
+ SetEvent(@pipes[i][:overlap][:hEvent])
210
+ when ERROR_SUCCESS
211
+ pending_io = true
212
+ else
213
+ raise "ConnectNamedPipe failed with error #{last_error}"
214
+ end
215
+
216
+ pending_io
217
+ end
218
+ end
219
+ end
@@ -1,3 +1,3 @@
1
- module OpalWebpackLoader
2
- VERSION="0.11.0"
3
- end
1
+ module OpalWebpackLoader
2
+ VERSION="0.11.1"
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-webpack-loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-25 00:00:00.000000000 Z
11
+ date: 2021-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -257,7 +257,7 @@ licenses:
257
257
  - MIT
258
258
  metadata:
259
259
  github_repo: ssh://github.com/isomorfeus/gems
260
- post_install_message:
260
+ post_install_message:
261
261
  rdoc_options: []
262
262
  require_paths:
263
263
  - lib
@@ -273,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
273
  version: '0'
274
274
  requirements: []
275
275
  rubygems_version: 3.2.15
276
- signing_key:
276
+ signing_key:
277
277
  specification_version: 4
278
278
  summary: Bundle assets with webpack, resolve and compile opal ruby files and import
279
279
  them in the bundle.