nostr 0.1.0 → 0.3.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.
data/nostr.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.metadata['homepage_uri'] = spec.homepage
19
19
  spec.metadata['source_code_uri'] = 'https://github.com/wilsonsilva/nostr'
20
- spec.metadata['changelog_uri'] = 'https://github.com/wilsonsilva/nostr/blob/master/CHANGELOG.md'
20
+ spec.metadata['changelog_uri'] = 'https://github.com/wilsonsilva/nostr/blob/main/CHANGELOG.md'
21
21
 
22
22
  # Specify which files should be added to the gem when it is released.
23
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -31,7 +31,15 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
+ spec.add_dependency 'bech32', '~> 1.3'
35
+ spec.add_dependency 'bip-schnorr', '~> 0.4'
36
+ spec.add_dependency 'ecdsa', '~> 1.2'
37
+ spec.add_dependency 'event_emitter', '~> 0.2'
38
+ spec.add_dependency 'faye-websocket', '~> 0.11'
39
+ spec.add_dependency 'json', '~> 2.6'
40
+
34
41
  spec.add_development_dependency 'bundler-audit', '~> 0.9'
42
+ spec.add_development_dependency 'dotenv', '~> 2.8'
35
43
  spec.add_development_dependency 'guard', '~> 2.18'
36
44
  spec.add_development_dependency 'guard-bundler', '~> 3.0'
37
45
  spec.add_development_dependency 'guard-bundler-audit', '~> 0.1'
@@ -39,13 +47,18 @@ Gem::Specification.new do |spec|
39
47
  spec.add_development_dependency 'guard-rubocop', '~> 1.5'
40
48
  spec.add_development_dependency 'overcommit', '~> 0.59'
41
49
  spec.add_development_dependency 'pry', '~> 0.14'
50
+ spec.add_development_dependency 'puma', '~> 5.6'
51
+ spec.add_development_dependency 'rack', '~> 3.0'
42
52
  spec.add_development_dependency 'rake', '~> 13.0'
53
+ spec.add_development_dependency 'rbs', '~> 2.8'
43
54
  spec.add_development_dependency 'rspec', '~> 3.12'
44
55
  spec.add_development_dependency 'rubocop', '~> 1.42'
45
56
  spec.add_development_dependency 'rubocop-rake', '~> 0.6'
46
57
  spec.add_development_dependency 'rubocop-rspec', '2.16'
47
- spec.add_development_dependency 'simplecov', '~> 0.22'
58
+ spec.add_development_dependency 'simplecov', '= 0.17'
48
59
  spec.add_development_dependency 'simplecov-console', '~> 0.9'
60
+ spec.add_development_dependency 'steep', '~> 1.3'
61
+ spec.add_development_dependency 'typeprof', '~> 0.21'
49
62
  spec.add_development_dependency 'yard', '~> 0.9'
50
63
  spec.add_development_dependency 'yard-junk', '~> 0.0.9'
51
64
  spec.add_development_dependency 'yardstick', '~> 0.9'
@@ -0,0 +1,20 @@
1
+ module Nostr
2
+ class Client
3
+ include EventEmitter
4
+
5
+ def initialize: -> void
6
+ def connect: (Relay relay) -> Thread
7
+ def subscribe: (?subscription_id: String, ?filter: Filter) -> Subscription
8
+ def unsubscribe: (String subscription_id) -> untyped
9
+ def publish: (Event event) -> untyped
10
+
11
+ private
12
+
13
+ attr_reader subscriptions: Hash[String, Subscription]
14
+ attr_reader parent_to_child_channel: untyped
15
+ attr_reader child_to_parent_channel: untyped
16
+
17
+ def execute_within_an_em_thread: { -> untyped } -> Thread
18
+ def initialize_channels: -> untyped
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module Nostr
2
+ module ClientMessageType
3
+ EVENT: String
4
+ REQ: String
5
+ CLOSE: String
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ module Nostr
2
+ class Event < EventFragment
3
+ attr_reader id: String
4
+ attr_reader sig: String
5
+
6
+ def initialize: (id: String, sig: String,
7
+ created_at: Integer,
8
+ kind: Integer,
9
+ tags: Array[String],
10
+ content: String,
11
+ ) -> void
12
+
13
+ def to_h: -> {
14
+ id: String,
15
+ pubkey: String,
16
+ created_at: Integer,
17
+ kind: Integer,
18
+ tags: Array[String],
19
+ content: String,
20
+ sig: String
21
+ }
22
+ def ==: (Event other) -> bool
23
+ end
24
+ end
@@ -0,0 +1,12 @@
1
+ module Nostr
2
+ class EventFragment
3
+ attr_reader pubkey: String
4
+ attr_reader created_at: Integer
5
+ attr_reader kind: Integer
6
+ attr_reader tags: Array[String]
7
+ attr_reader content: String
8
+
9
+ def initialize: (pubkey: String, kind: Integer, content: String, ?created_at: Integer, ?tags: Array[String]) -> void
10
+ def serialize: -> [Integer, String, Integer, Integer, Array[String], String]
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ module Nostr
2
+ module EventKind
3
+ SET_METADATA: Integer
4
+ TEXT_NOTE: Integer
5
+ RECOMMEND_SERVER: Integer
6
+ CONTACT_LIST: Integer
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ module Nostr
2
+ class Filter
3
+ attr_reader ids: Array[String]
4
+ attr_reader authors: Array[String]
5
+ attr_reader kinds: Array[Integer]
6
+ attr_reader e: String
7
+ attr_reader p: String
8
+ attr_reader since: Integer
9
+ attr_reader until: Integer
10
+ attr_reader limit: Integer
11
+
12
+ def initialize: (**untyped) -> void
13
+ def to_h: -> {
14
+ ids: Array[String],
15
+ authors: Array[String],
16
+ kinds: Array[Integer],
17
+ e: String,
18
+ p: String,
19
+ since: Integer,
20
+ until: Integer,
21
+ limit: Integer
22
+ }
23
+ def ==: (Filter other) -> bool
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # Classes
2
+ module Nostr
3
+ class KeyPair
4
+ attr_reader private_key: String
5
+ attr_reader public_key: String
6
+
7
+ def initialize: (private_key: String, public_key: String) -> void
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # Classes
2
+ module Nostr
3
+ class Keygen
4
+ def initialize: -> void
5
+ def generate_key_pair: -> KeyPair
6
+ def generate_private_key: -> String
7
+ def extract_public_key: (String private_key) -> String
8
+
9
+ private
10
+
11
+ attr_reader group: untyped
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # Classes
2
+ module Nostr
3
+ class Relay
4
+ attr_reader url: String
5
+ attr_reader name: String
6
+
7
+ def initialize: (url: String, name: String) -> void
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Nostr
2
+ class Subscription
3
+ attr_reader id: String
4
+ attr_reader filter: Filter
5
+
6
+ def initialize: (filter: Filter, ?id: String) -> void
7
+ def ==: (Subscription other) -> bool
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ # Classes
2
+ module Nostr
3
+ class User
4
+ attr_reader keypair: KeyPair
5
+
6
+ def initialize: (?keypair: KeyPair | nil, ?keygen: Keygen) -> void
7
+ def create_event: (
8
+ {
9
+ id: String,
10
+ pubkey: String,
11
+ created_at: Integer,
12
+ kind: Integer,
13
+ tags: Array[String],
14
+ content: String,
15
+ created_at: Integer,
16
+ sig: String
17
+ }
18
+ ) -> Event
19
+
20
+ private
21
+
22
+ def sign: (String event_sha256) -> String
23
+ end
24
+ end
@@ -0,0 +1,6 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module ECDSA
3
+ class Group
4
+ Secp256k1: Group
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module EventEmitter
3
+ def add_listener: (untyped `type`, ?{once: true} params) -> Integer
4
+ alias on add_listener
5
+
6
+ def remove_listener: (untyped id_or_type) -> Array[untyped]?
7
+ def emit: (untyped `type`, *untyped data) -> Array[untyped]
8
+ def once: (untyped `type`) -> Integer
9
+ end
@@ -0,0 +1,18 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module EventMachine
3
+ class Channel
4
+ @subs: Hash[untyped, untyped]
5
+ @uid: Integer
6
+
7
+ def initialize: -> void
8
+ def num_subscribers: -> Integer
9
+ def subscribe: (*untyped a) ?{ -> untyped } -> Integer
10
+ def unsubscribe: (untyped name) -> untyped
11
+ def push: (*untyped items) -> untyped
12
+ alias << push
13
+ def pop: (*untyped a) -> untyped
14
+
15
+ private
16
+ def gen_id: -> Integer
17
+ end
18
+ end
@@ -0,0 +1,69 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module EventMachine
3
+ ERRNOS: Hash[untyped, untyped]
4
+ P: untyped
5
+ self.@next_tick_mutex: Thread::Mutex
6
+ self.@reactor_running: bool
7
+ self.@next_tick_queue: Array[^-> untyped]
8
+ self.@tails: Array[nil]
9
+ self.@resultqueue: (Array[untyped] | Thread::Queue)?
10
+ self.@threadqueue: Thread::Queue?
11
+ self.@threadpool: Array[untyped]?
12
+ self.@all_threads_spawned: bool
13
+ self.@reactor_pid: Integer
14
+ self.@conns: Hash[untyped, untyped]
15
+ self.@acceptors: Hash[untyped, Array[(Array[untyped] | Integer)?]]
16
+ self.@timers: Hash[untyped, Integer | ^-> untyped | false]
17
+ self.@wrapped_exception: Exception?
18
+ self.@reactor_thread: Thread?
19
+ self.@threadpool_size: bot
20
+ self.@error_handler: bot
21
+
22
+ def self.run: (?untyped blk, ?nil tail) ?{ -> untyped } -> nil
23
+ def self.run_block: -> nil
24
+ def self.reactor_thread?: -> bool
25
+ def self.schedule: (*untyped a) -> nil
26
+ def self.fork_reactor: -> Integer?
27
+ def self.cleanup_machine: -> Array[untyped]
28
+ def self.add_shutdown_hook: -> Array[nil]
29
+ def self.add_timer: (*Integer | ^-> untyped args) ?{ -> untyped } -> nil
30
+ def self.add_periodic_timer: (*untyped args) -> untyped
31
+ def self.cancel_timer: (untyped timer_or_sig) -> false?
32
+ def self.stop_event_loop: -> untyped
33
+ def self.start_server: (untyped server, ?nil port, ?nil handler, *untyped args) -> untyped
34
+ def self.attach_server: (untyped sock, ?nil handler, *untyped args) -> untyped
35
+ def self.stop_server: (untyped signature) -> untyped
36
+ def self.start_unix_domain_server: (untyped filename, *untyped args) -> untyped
37
+ def self.connect: (untyped server, ?nil port, ?nil handler, *untyped args) -> untyped
38
+ def self.bind_connect: (nil bind_addr, nil bind_port, untyped server, ?nil port, ?nil handler, *untyped args) -> untyped
39
+ def self.watch: (untyped io, ?nil handler, *untyped args) -> untyped
40
+ def self.attach: (untyped io, ?nil handler, *untyped args) -> untyped
41
+ def self.attach_io: (untyped io, bool watch_mode, ?nil handler, *untyped args) -> untyped
42
+ def self.reconnect: (untyped server, untyped port, untyped handler) -> untyped
43
+ def self.connect_unix_domain: (untyped socketname, *untyped args) -> untyped
44
+ def self.open_datagram_socket: (untyped address, untyped port, ?nil handler, *untyped args) -> untyped
45
+ def self.set_quantum: (untyped mills) -> untyped
46
+ def self.set_max_timers: (untyped ct) -> untyped
47
+ def self.get_max_timers: -> untyped
48
+ def self.connection_count: -> untyped
49
+ def self.run_deferred_callbacks: -> Integer
50
+ def self.defer: (?nil op, ?nil callback, ?nil errback) -> untyped
51
+ def self.spawn_threadpool: -> true
52
+ def self.defers_finished?: -> bool
53
+ def self.next_tick: (?nil pr) { -> nil } -> nil
54
+ def self.set_effective_user: (untyped username) -> untyped
55
+ def self.set_descriptor_table_size: (?nil n_descriptors) -> untyped
56
+ def self.popen: (untyped cmd, ?nil handler, *untyped args) -> untyped
57
+ def self.reactor_running?: -> bool
58
+ def self.open_keyboard: (?nil handler, *untyped args) -> untyped
59
+ def self.watch_file: (untyped filename, ?nil handler, *untyped args) -> untyped
60
+ def self.watch_process: (untyped pid, ?nil handler, *untyped args) -> untyped
61
+ def self.error_handler: (?nil cb) -> nil
62
+ def self.enable_proxy: (untyped from, untyped to, ?Integer bufsize, ?Integer length) -> untyped
63
+ def self.disable_proxy: (untyped from) -> untyped
64
+ def self.heartbeat_interval: -> untyped
65
+ def self.heartbeat_interval=: (untyped time) -> untyped
66
+ def self.event_callback: (untyped conn_binding, untyped opcode, untyped data) -> Integer?
67
+ def self._open_file_for_writing: (untyped filename, ?nil handler) -> untyped
68
+ def self.klass_from_handler: (?untyped klass, ?Integer? handler, *nil args) -> Integer
69
+ end
@@ -0,0 +1,4 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module Schnorr
3
+ def self.sign: (String message, String private_key, ?String aux_rand) -> untyped
4
+ end
metadata CHANGED
@@ -1,15 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nostr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wilson Silva
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-06 00:00:00.000000000 Z
11
+ date: 2023-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bech32
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bip-schnorr
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ecdsa
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: event_emitter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faye-websocket
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.11'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.11'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.6'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.6'
13
97
  - !ruby/object:Gem::Dependency
14
98
  name: bundler-audit
15
99
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +108,20 @@ dependencies:
24
108
  - - "~>"
25
109
  - !ruby/object:Gem::Version
26
110
  version: '0.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dotenv
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.8'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.8'
27
125
  - !ruby/object:Gem::Dependency
28
126
  name: guard
29
127
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +220,34 @@ dependencies:
122
220
  - - "~>"
123
221
  - !ruby/object:Gem::Version
124
222
  version: '0.14'
223
+ - !ruby/object:Gem::Dependency
224
+ name: puma
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '5.6'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '5.6'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rack
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '3.0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '3.0'
125
251
  - !ruby/object:Gem::Dependency
126
252
  name: rake
127
253
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +262,20 @@ dependencies:
136
262
  - - "~>"
137
263
  - !ruby/object:Gem::Version
138
264
  version: '13.0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: rbs
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '2.8'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '2.8'
139
279
  - !ruby/object:Gem::Dependency
140
280
  name: rspec
141
281
  requirement: !ruby/object:Gem::Requirement
@@ -196,16 +336,16 @@ dependencies:
196
336
  name: simplecov
197
337
  requirement: !ruby/object:Gem::Requirement
198
338
  requirements:
199
- - - "~>"
339
+ - - '='
200
340
  - !ruby/object:Gem::Version
201
- version: '0.22'
341
+ version: '0.17'
202
342
  type: :development
203
343
  prerelease: false
204
344
  version_requirements: !ruby/object:Gem::Requirement
205
345
  requirements:
206
- - - "~>"
346
+ - - '='
207
347
  - !ruby/object:Gem::Version
208
- version: '0.22'
348
+ version: '0.17'
209
349
  - !ruby/object:Gem::Dependency
210
350
  name: simplecov-console
211
351
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +360,34 @@ dependencies:
220
360
  - - "~>"
221
361
  - !ruby/object:Gem::Version
222
362
  version: '0.9'
363
+ - !ruby/object:Gem::Dependency
364
+ name: steep
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - "~>"
368
+ - !ruby/object:Gem::Version
369
+ version: '1.3'
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - "~>"
375
+ - !ruby/object:Gem::Version
376
+ version: '1.3'
377
+ - !ruby/object:Gem::Dependency
378
+ name: typeprof
379
+ requirement: !ruby/object:Gem::Requirement
380
+ requirements:
381
+ - - "~>"
382
+ - !ruby/object:Gem::Version
383
+ version: '0.21'
384
+ type: :development
385
+ prerelease: false
386
+ version_requirements: !ruby/object:Gem::Requirement
387
+ requirements:
388
+ - - "~>"
389
+ - !ruby/object:Gem::Version
390
+ version: '0.21'
223
391
  - !ruby/object:Gem::Dependency
224
392
  name: yard
225
393
  requirement: !ruby/object:Gem::Requirement
@@ -273,6 +441,7 @@ files:
273
441
  - ".overcommit.yml"
274
442
  - ".rspec"
275
443
  - ".rubocop.yml"
444
+ - ".rubocop_todo.yml"
276
445
  - ".tool-versions"
277
446
  - ".yardstick.yml"
278
447
  - CHANGELOG.md
@@ -282,10 +451,38 @@ files:
282
451
  - LICENSE.txt
283
452
  - README.md
284
453
  - Rakefile
454
+ - Steepfile
285
455
  - lib/nostr.rb
456
+ - lib/nostr/client.rb
457
+ - lib/nostr/client_message_type.rb
458
+ - lib/nostr/event.rb
459
+ - lib/nostr/event_fragment.rb
460
+ - lib/nostr/event_kind.rb
461
+ - lib/nostr/filter.rb
462
+ - lib/nostr/key_pair.rb
463
+ - lib/nostr/keygen.rb
464
+ - lib/nostr/relay.rb
465
+ - lib/nostr/subscription.rb
466
+ - lib/nostr/user.rb
286
467
  - lib/nostr/version.rb
287
468
  - nostr.gemspec
288
469
  - sig/nostr.rbs
470
+ - sig/nostr/client.rbs
471
+ - sig/nostr/client_message_type.rbs
472
+ - sig/nostr/event.rbs
473
+ - sig/nostr/event_fragment.rbs
474
+ - sig/nostr/event_kind.rbs
475
+ - sig/nostr/filter.rbs
476
+ - sig/nostr/key_pair.rbs
477
+ - sig/nostr/keygen.rbs
478
+ - sig/nostr/relay.rbs
479
+ - sig/nostr/subscription.rbs
480
+ - sig/nostr/user.rbs
481
+ - sig/vendor/ecsda/group/secp256k1.rbs
482
+ - sig/vendor/event_emitter.rbs
483
+ - sig/vendor/event_machine.rbs
484
+ - sig/vendor/event_machine/channel.rbs
485
+ - sig/vendor/schnorr.rbs
289
486
  homepage: https://github.com/wilsonsilva/nostr
290
487
  licenses:
291
488
  - MIT
@@ -293,7 +490,7 @@ metadata:
293
490
  rubygems_mfa_required: 'true'
294
491
  homepage_uri: https://github.com/wilsonsilva/nostr
295
492
  source_code_uri: https://github.com/wilsonsilva/nostr
296
- changelog_uri: https://github.com/wilsonsilva/nostr/blob/master/CHANGELOG.md
493
+ changelog_uri: https://github.com/wilsonsilva/nostr/blob/main/CHANGELOG.md
297
494
  post_install_message:
298
495
  rdoc_options: []
299
496
  require_paths:
@@ -309,7 +506,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
506
  - !ruby/object:Gem::Version
310
507
  version: '0'
311
508
  requirements: []
312
- rubygems_version: 3.4.1
509
+ rubygems_version: 3.4.4
313
510
  signing_key:
314
511
  specification_version: 4
315
512
  summary: Client and relay implementation of the Nostr protocol.