debounced 0.1.2 → 0.1.4
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 +3 -3
- data/exe/debounced-server +2 -8
- data/lib/assets/javascript/{debounced/event_service.mjs → debounce_service.mjs} +2 -2
- data/lib/debounced/abort_signal.rb +23 -0
- data/lib/debounced/{event_service_proxy.rb → service_proxy.rb} +8 -5
- data/lib/debounced/version.rb +1 -1
- data/lib/debounced.rb +2 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0ca3c65791fc6ed5dcb22b1e966061aa0e80a290a9edf3121fe8229441ebe29
|
4
|
+
data.tar.gz: d2e14d5f93526625d4b748f9498d2419c9fb8e7f759a9381c0c4ab47024242c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00c4d1ddfe2d3ecb0c03d742b63d7e38cce7a95c70f1d723e112b497cf16941f0178f3bc3c434e97dde88d66337db03ace5a5add86d7252e28875d1c22ef9fdb
|
7
|
+
data.tar.gz: 37619a355bed3d94ad841f718d09ed7ea73981a9f4c31bed5c332a8afcfa251099421247b4a4d0620ad4bd519de829ba23040d2ada4ee263d8070033eccd92e4
|
data/README.md
CHANGED
@@ -61,17 +61,17 @@ Or in your application code:
|
|
61
61
|
require 'debounced'
|
62
62
|
|
63
63
|
# Start the listener thread
|
64
|
-
proxy = Debounced::
|
64
|
+
proxy = Debounced::ServiceProxy.new
|
65
65
|
listener_thread = proxy.listen
|
66
66
|
|
67
67
|
# Debounce an event
|
68
68
|
class MyEvent
|
69
69
|
attr_reader :attributes
|
70
|
-
|
70
|
+
|
71
71
|
def initialize(data)
|
72
72
|
@attributes = data
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
def self.publish(data)
|
76
76
|
# Publish logic here
|
77
77
|
puts "Publishing event with data: #{data.inspect}"
|
data/exe/debounced-server
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
|
-
|
3
|
-
import { fileURLToPath } from 'url';
|
4
|
-
import { dirname, join } from 'path';
|
5
|
-
import DebounceEventService from '../lib/assets/javascript/debounced/event_service.mjs';
|
6
|
-
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
8
|
-
const __dirname = dirname(__filename);
|
2
|
+
import DebounceService from '../lib/assets/javascript/debounce_service.mjs';
|
9
3
|
|
10
4
|
// Default socket path
|
11
5
|
let socketDescriptor = process.env.DEBOUNCED_SOCKET || '/tmp/app.debounceEvents';
|
@@ -20,4 +14,4 @@ if (process.argv.length > 2) {
|
|
20
14
|
socketDescriptor = process.argv[2];
|
21
15
|
}
|
22
16
|
|
23
|
-
new
|
17
|
+
new DebounceService(socketDescriptor).listen();
|
@@ -3,7 +3,7 @@ import fs from 'fs';
|
|
3
3
|
|
4
4
|
const logLevel = process.env.LOG_LEVEL || 'info';
|
5
5
|
|
6
|
-
export default class
|
6
|
+
export default class DebounceService {
|
7
7
|
constructor(socketDescriptor) {
|
8
8
|
this._socketDescriptor = socketDescriptor;
|
9
9
|
this._timers = {};
|
@@ -37,7 +37,7 @@ export default class DebounceEventService {
|
|
37
37
|
}
|
38
38
|
|
39
39
|
listen() {
|
40
|
-
console.log('
|
40
|
+
console.log('DebounceService listening on', this._socketDescriptor);
|
41
41
|
ipc.server.start();
|
42
42
|
}
|
43
43
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Debounced
|
2
|
+
###
|
3
|
+
# Allow an abort signal to be passed to blocking call for graceful shutdown.
|
4
|
+
#
|
5
|
+
# Inspired by the AbortController in the DOM, but made for Ruby
|
6
|
+
# @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
7
|
+
#
|
8
|
+
# For notes about thread safety of this approach,
|
9
|
+
# @see https://stackoverflow.com/questions/9620886/is-it-safe-to-set-the-boolean-value-in-thread-from-another-one
|
10
|
+
class AbortSignal
|
11
|
+
def initialize
|
12
|
+
@abort = false
|
13
|
+
end
|
14
|
+
|
15
|
+
def abort
|
16
|
+
@abort = true
|
17
|
+
end
|
18
|
+
|
19
|
+
def set?
|
20
|
+
@abort
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -2,9 +2,12 @@ require 'socket'
|
|
2
2
|
require 'active_support/json'
|
3
3
|
|
4
4
|
module Debounced
|
5
|
-
class
|
5
|
+
class ServiceProxy
|
6
6
|
DELIMITER = "\f".freeze
|
7
|
-
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@wait_timeout = Debounced.configuration.wait_timeout
|
10
|
+
end
|
8
11
|
|
9
12
|
def listen(abort_signal = nil)
|
10
13
|
Thread.new do
|
@@ -45,7 +48,7 @@ module Debounced
|
|
45
48
|
|
46
49
|
if socket.nil?
|
47
50
|
log_debug("Waiting for #{server_name}...")
|
48
|
-
sleep(
|
51
|
+
sleep(@wait_timeout)
|
49
52
|
next
|
50
53
|
end
|
51
54
|
|
@@ -131,13 +134,13 @@ module Debounced
|
|
131
134
|
end
|
132
135
|
|
133
136
|
def socket_descriptor
|
134
|
-
Debounced.configuration.socket_descriptor
|
137
|
+
@socket_descriptor ||= Debounced.configuration.socket_descriptor
|
135
138
|
end
|
136
139
|
|
137
140
|
def socket
|
138
141
|
@socket ||= UNIXSocket.new(socket_descriptor)
|
139
142
|
.tap do |socket|
|
140
|
-
socket.timeout =
|
143
|
+
socket.timeout = @wait_timeout
|
141
144
|
end
|
142
145
|
###
|
143
146
|
# Errno::ENOENT is raised if the socket file does not exist.
|
data/lib/debounced/version.rb
CHANGED
data/lib/debounced.rb
CHANGED
@@ -15,10 +15,11 @@ module Debounced
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Configuration
|
18
|
-
attr_accessor :socket_descriptor
|
18
|
+
attr_accessor :socket_descriptor, :wait_timeout
|
19
19
|
|
20
20
|
def initialize
|
21
21
|
@socket_descriptor = ENV['DEBOUNCED_SOCKET'] || '/tmp/app.debounceEvents'
|
22
|
+
@wait_timeout = ENV['DEBOUNCED_TIMEOUT']&.to_i || 3
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debounced
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gary Passero
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-17 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rails
|
@@ -97,10 +97,11 @@ files:
|
|
97
97
|
- CHANGELOG.md
|
98
98
|
- README.md
|
99
99
|
- exe/debounced-server
|
100
|
-
- lib/assets/javascript/
|
100
|
+
- lib/assets/javascript/debounce_service.mjs
|
101
101
|
- lib/debounced.rb
|
102
|
-
- lib/debounced/
|
102
|
+
- lib/debounced/abort_signal.rb
|
103
103
|
- lib/debounced/railtie.rb
|
104
|
+
- lib/debounced/service_proxy.rb
|
104
105
|
- lib/debounced/version.rb
|
105
106
|
homepage: https://github.com/flytedesk/debounced
|
106
107
|
licenses:
|