nostr 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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.