message_bus 4.5.2 → 4.6.0

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: e0f8dcac413e4d7ebfd5518440b1bae9311dfee8395d13b9c9a137aed8048689
4
- data.tar.gz: dd16dc24af70834d8d62ecbc5f570e7790e00c78f876eee3c3b35483e7e576ab
3
+ metadata.gz: ac878307b45991461b9a20bf6a4f31935c164aa6abce9ba8d931ae291869dbb9
4
+ data.tar.gz: 201fd5f776e4fb437eb3f2be49961d9469f81745b60b6f84dcccb332212cdd5d
5
5
  SHA512:
6
- metadata.gz: a48f71540d916776ee00ea49d651b1e5463ce15c1f4c97b7188550896908a6d67cb90d0e165ea6a607b8e5ef6909f3aa53aa0b06772233b80f1656c79f750f18
7
- data.tar.gz: a32fb12a213171d4c1bc40c2d55e34f8572bb97ed44b9fccbcf23c0f7844114039175f4ba122ea9d240280e21e57c3edc7da85d82c69012ef98c8575a0b7c457
6
+ metadata.gz: f54fb643cb48006c33585e2af967b9e0ae9bb69c5c034b3e454cbe82b9330e1fbbfdb3d58bf60cf6056522e67a59c2b519f18dd851d0fe3fe62e4d96dfe559e5
7
+ data.tar.gz: 9c358176d7f5441931f1d0505b2c9e17c330806af06fa310393ba321e9db0b0041c433cc12c79e5247d85f85983ffc592b45ee8be4cd939297e7e8411360e6ae
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 03-08-2026
2
+
3
+ - Version 4.6.0
4
+
5
+ - DEV: Export the JavaScript client as a CommonJS/ES module so it can be imported directly by bundlers and ESM projects, while still assigning the `MessageBus` global for existing consumers
6
+
1
7
  13-02-2026
2
8
 
3
9
  - Version 4.5.2
@@ -1,4 +1,4 @@
1
- /*global define, jQuery*/
1
+ /*global define, jQuery, module*/
2
2
 
3
3
  (function (root, factory) {
4
4
  if (typeof define === "function" && define.amd) {
@@ -9,6 +9,11 @@
9
9
  // a global even when an AMD loader is in use.
10
10
  return (root.MessageBus = factory());
11
11
  });
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory();
14
+ if (typeof self !== "undefined") {
15
+ self.MessageBus = module.exports;
16
+ }
12
17
  } else {
13
18
  // Browser globals
14
19
  root.MessageBus = factory();
@@ -144,9 +144,7 @@ class MessageBus::Client
144
144
  end
145
145
 
146
146
  if has_groups
147
- group_allowed = (
148
- msg.group_ids - (self.group_ids || [])
149
- ).length < msg.group_ids.length
147
+ group_allowed = msg.group_ids.intersect?(self.group_ids || [])
150
148
  end
151
149
 
152
150
  has_permission = client_allowed && (user_allowed || group_allowed || (!has_users && !has_groups))
@@ -1,8 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Represents a published message and its encoding for persistence.
4
- class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data)
5
- attr_accessor :site_id, :user_ids, :group_ids, :client_ids
4
+ class MessageBus::Message
5
+ attr_accessor :global_id, :message_id, :channel, :data,
6
+ :site_id, :user_ids, :group_ids, :client_ids
7
+
8
+ def initialize(global_id, message_id, channel, data)
9
+ @global_id = global_id
10
+ @message_id = message_id
11
+ @channel = channel
12
+ @data = data
13
+ end
6
14
 
7
15
  def self.decode(encoded)
8
16
  s1 = encoded.index("|")
@@ -15,7 +23,7 @@ class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data)
15
23
  channel.gsub!("$$123$$", "|")
16
24
  data = encoded[(s3 + 1), encoded.size]
17
25
 
18
- MessageBus::Message.new(global_id, message_id, channel, data)
26
+ new(global_id, message_id, channel, data)
19
27
  end
20
28
 
21
29
  # only tricky thing to encode is pipes in a channel name ... do a straight replace
@@ -26,4 +34,12 @@ class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data)
26
34
  def encode_without_ids
27
35
  "#{channel.gsub("|", "$$123$$")}|#{data}"
28
36
  end
37
+
38
+ def ==(other)
39
+ other.is_a?(self.class) &&
40
+ self.global_id == other.global_id &&
41
+ self.message_id == other.message_id &&
42
+ self.channel == other.channel &&
43
+ self.data == other.data
44
+ end
29
45
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MessageBus
4
- VERSION = "4.5.2"
4
+ VERSION = "4.6.0"
5
5
  end
data/message_bus.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.required_ruby_version = ">= 3.2.0"
18
18
 
19
19
  gem.add_runtime_dependency 'rack', '> 2', '< 4'
20
+ gem.add_runtime_dependency 'logger'
20
21
 
21
22
  # Optional runtime dependencies
22
23
  gem.add_development_dependency 'redis'
data/package.json CHANGED
@@ -10,8 +10,6 @@
10
10
  "files": [
11
11
  "assets/message-bus.js"
12
12
  ],
13
- "jsnext:main": "assets/message-bus.js",
14
- "module": "assets/message-bus.js",
15
13
  "repository": "https://github.com/discourse/message_bus",
16
14
  "author": "Sam Saffron, Robin Ward",
17
15
  "license": "MIT",
@@ -1,4 +1,4 @@
1
- /*global define, jQuery*/
1
+ /*global define, jQuery, module*/
2
2
 
3
3
  (function (root, factory) {
4
4
  if (typeof define === "function" && define.amd) {
@@ -9,6 +9,11 @@
9
9
  // a global even when an AMD loader is in use.
10
10
  return (root.MessageBus = factory());
11
11
  });
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory();
14
+ if (typeof self !== "undefined") {
15
+ self.MessageBus = module.exports;
16
+ }
12
17
  } else {
13
18
  // Browser globals
14
19
  root.MessageBus = factory();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: message_bus
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.2
4
+ version: 4.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -29,6 +29,20 @@ dependencies:
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
31
  version: '4'
32
+ - !ruby/object:Gem::Dependency
33
+ name: logger
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
32
46
  - !ruby/object:Gem::Dependency
33
47
  name: redis
34
48
  requirement: !ruby/object:Gem::Requirement