app_bridge 0.8.4-x86_64-linux → 1.0.0-x86_64-linux

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: 4901651308bfc67ab288553122bf32f28a8edca12c69416ec71d96b3b72a1fb9
4
- data.tar.gz: cb1a9f52ad3479486400af25869fd398ea3be05625f0fdf73fce98f1dfc22d67
3
+ metadata.gz: e4bdeb18987a5e9597322d89388eee94c6e5933696386444d6211c183147862c
4
+ data.tar.gz: 318733f16613888a5074c1629121fb6ece712ae3232d1f6e2d0a1750e918f1f3
5
5
  SHA512:
6
- metadata.gz: 69cef3cad0999fd403155f2942538700404f088cbf76151a6583582ebe9c925da166936be6da467c45be5be9997d9eb790ca46e5768011336d949e790415296e
7
- data.tar.gz: ea37da0b565090c16d2f7cee2a518dbc5b9fd283527f4b0485e3416ca9fab70170ef015fe8e103c3f7265bcafed93d2ec7a865fc1058d7eb74ca47fe05fd22ef
6
+ metadata.gz: 779d3813984e0887b46ede8c42070b88c8628c838d6edd33b95d925c6c98964cf74a8aba68b95725c45ce967ad44f8a182aee79e1d87b012544c0fe5e2b84bc7
7
+ data.tar.gz: 5ef3654b3d3b4814967f9180207696de38214c982630ac81fdcd969a6788b53e856e39a8664ae96b13fdc6ce7afc5282b8fa9af143790eeb8699c21c94dfdbb5
@@ -81,8 +81,9 @@ interface triggers {
81
81
  // Fetch events
82
82
  //
83
83
  // There are some limitations to the function:
84
- // - It must return within 30 seconds
85
- // - It must return less than or equal to 100 events
84
+ // - It must a `trigger-response` within 30 seconds
85
+ // - It must return less than or equal to 100 `trigger-response.events`
86
+ // - It must not return more than 64 kB of data in the `trigger-response.store`
86
87
  //
87
88
  // If you need to fetch more events, you can return up to 100 events and then
88
89
  // store the data needed for you to remember where you left off in the store.
Binary file
Binary file
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "timeout"
4
+
5
+ module AppBridge
6
+ # An app that can be used to fetch events.
7
+ class App
8
+ def fetch_events(context)
9
+ response = request_events_with_timeout(context)
10
+
11
+ validate_number_of_events!(response.events)
12
+ validate_store_size!(response.store)
13
+
14
+ response
15
+ end
16
+
17
+ def polling_timeout
18
+ 30 # seconds
19
+ end
20
+
21
+ private
22
+
23
+ def validate_number_of_events!(events)
24
+ return if events.size <= 100
25
+
26
+ raise TooManyEventsError, "Maximum 100 events allowed"
27
+ end
28
+
29
+ def validate_store_size!(store)
30
+ return if store.size <= 64 * 1024
31
+
32
+ raise StoreTooLargeError, "Store size exceeds 64 kB limit"
33
+ end
34
+
35
+ def request_events_with_timeout(context)
36
+ Timeout.timeout(polling_timeout, TimeoutError, "Polling exceeded #{polling_timeout} seconds") do
37
+ _rust_fetch_events(context)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppBridge
4
- VERSION = "0.8.4"
4
+ VERSION = "1.0.0"
5
5
  end
data/lib/app_bridge.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "app_bridge/version"
4
+ require_relative "app_bridge/app"
5
+
4
6
  begin
5
7
  require "app_bridge/#{RUBY_VERSION.split(".").first(2).join(".")}/app_bridge"
6
8
  rescue LoadError
@@ -9,6 +11,9 @@ end
9
11
 
10
12
  module AppBridge
11
13
  class Error < StandardError; end
14
+ class TimeoutError < Error; end
15
+ class TooManyEventsError < Error; end
16
+ class StoreTooLargeError < Error; end
12
17
 
13
18
  # Represents a trigger event that is recieved from the app.
14
19
  class TriggerEvent
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_bridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 1.0.0
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Alexander Ross
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-28 00:00:00.000000000 Z
11
+ date: 2025-04-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The app_bridge gem is designed to enable seamless interaction with WebAssembly
14
14
  components that adhere to the WIT specification `standout:app`. It is developed
@@ -26,9 +26,9 @@ files:
26
26
  - Rakefile
27
27
  - ext/app_bridge/wit/world.wit
28
28
  - lib/app_bridge.rb
29
- - lib/app_bridge/3.1/app_bridge.so
30
29
  - lib/app_bridge/3.2/app_bridge.so
31
30
  - lib/app_bridge/3.4/app_bridge.so
31
+ - lib/app_bridge/app.rb
32
32
  - lib/app_bridge/version.rb
33
33
  - sig/app_bridge.rbs
34
34
  - tasks/fixtures.rake
@@ -49,7 +49,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: '3.1'
52
+ version: '3.2'
53
53
  - - "<"
54
54
  - !ruby/object:Gem::Version
55
55
  version: 3.5.dev
Binary file