nostr 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.adr-dir +1 -0
  3. data/.editorconfig +1 -1
  4. data/.rubocop.yml +24 -1
  5. data/.tool-versions +2 -1
  6. data/CHANGELOG.md +70 -1
  7. data/README.md +93 -228
  8. data/adr/0001-record-architecture-decisions.md +19 -0
  9. data/adr/0002-introduction-of-signature-class.md +27 -0
  10. data/docs/.gitignore +4 -0
  11. data/docs/.vitepress/config.mjs +114 -0
  12. data/docs/README.md +44 -0
  13. data/docs/api-examples.md +49 -0
  14. data/docs/bun.lockb +0 -0
  15. data/docs/common-use-cases/bech32-encoding-and-decoding-(NIP-19).md +190 -0
  16. data/docs/common-use-cases/signing-and-verifying-events.md +50 -0
  17. data/docs/common-use-cases/signing-and-verifying-messages.md +43 -0
  18. data/docs/core/client.md +108 -0
  19. data/docs/core/keys.md +136 -0
  20. data/docs/core/user.md +43 -0
  21. data/docs/events/contact-list.md +29 -0
  22. data/docs/events/encrypted-direct-message.md +28 -0
  23. data/docs/events/recommend-server.md +32 -0
  24. data/docs/events/set-metadata.md +20 -0
  25. data/docs/events/text-note.md +15 -0
  26. data/docs/events.md +11 -0
  27. data/docs/getting-started/installation.md +21 -0
  28. data/docs/getting-started/overview.md +171 -0
  29. data/docs/implemented-nips.md +9 -0
  30. data/docs/index.md +42 -0
  31. data/docs/markdown-examples.md +85 -0
  32. data/docs/package.json +12 -0
  33. data/docs/relays/connecting-to-a-relay.md +21 -0
  34. data/docs/relays/publishing-events.md +29 -0
  35. data/docs/relays/receiving-events.md +6 -0
  36. data/docs/subscriptions/creating-a-subscription.md +49 -0
  37. data/docs/subscriptions/deleting-a-subscription.md +10 -0
  38. data/docs/subscriptions/filtering-subscription-events.md +115 -0
  39. data/docs/subscriptions/updating-a-subscription.md +4 -0
  40. data/lib/nostr/bech32.rb +203 -0
  41. data/lib/nostr/client.rb +2 -1
  42. data/lib/nostr/crypto.rb +93 -13
  43. data/lib/nostr/errors/error.rb +7 -0
  44. data/lib/nostr/errors/invalid_hrp_error.rb +21 -0
  45. data/lib/nostr/errors/invalid_key_format_error.rb +20 -0
  46. data/lib/nostr/errors/invalid_key_length_error.rb +20 -0
  47. data/lib/nostr/errors/invalid_key_type_error.rb +18 -0
  48. data/lib/nostr/errors/invalid_signature_format_error.rb +18 -0
  49. data/lib/nostr/errors/invalid_signature_length_error.rb +18 -0
  50. data/lib/nostr/errors/invalid_signature_type_error.rb +16 -0
  51. data/lib/nostr/errors/key_validation_error.rb +6 -0
  52. data/lib/nostr/errors/signature_validation_error.rb +6 -0
  53. data/lib/nostr/errors.rb +12 -0
  54. data/lib/nostr/event.rb +40 -13
  55. data/lib/nostr/event_kind.rb +1 -0
  56. data/lib/nostr/events/encrypted_direct_message.rb +8 -7
  57. data/lib/nostr/filter.rb +14 -11
  58. data/lib/nostr/key.rb +100 -0
  59. data/lib/nostr/key_pair.rb +54 -6
  60. data/lib/nostr/keygen.rb +44 -5
  61. data/lib/nostr/private_key.rb +36 -0
  62. data/lib/nostr/public_key.rb +36 -0
  63. data/lib/nostr/relay_message_type.rb +18 -0
  64. data/lib/nostr/signature.rb +67 -0
  65. data/lib/nostr/subscription.rb +2 -2
  66. data/lib/nostr/user.rb +17 -8
  67. data/lib/nostr/version.rb +1 -1
  68. data/lib/nostr.rb +7 -0
  69. data/nostr.gemspec +13 -13
  70. data/sig/nostr/bech32.rbs +14 -0
  71. data/sig/nostr/client.rbs +5 -5
  72. data/sig/nostr/crypto.rbs +8 -5
  73. data/sig/nostr/errors/error.rbs +4 -0
  74. data/sig/nostr/errors/invalid_hrb_error.rbs +6 -0
  75. data/sig/nostr/errors/invalid_key_format_error.rbs +5 -0
  76. data/sig/nostr/errors/invalid_key_length_error.rbs +5 -0
  77. data/sig/nostr/errors/invalid_key_type_error.rbs +5 -0
  78. data/sig/nostr/errors/invalid_signature_format_error.rbs +5 -0
  79. data/sig/nostr/errors/invalid_signature_length_error.rbs +5 -0
  80. data/sig/nostr/errors/invalid_signature_type_error.rbs +5 -0
  81. data/sig/nostr/errors/key_validation_error.rbs +4 -0
  82. data/sig/nostr/errors/signature_validation_error.rbs +4 -0
  83. data/sig/nostr/event.rbs +11 -10
  84. data/sig/nostr/events/encrypted_direct_message.rbs +2 -2
  85. data/sig/nostr/filter.rbs +3 -12
  86. data/sig/nostr/key.rbs +16 -0
  87. data/sig/nostr/key_pair.rbs +8 -3
  88. data/sig/nostr/keygen.rbs +5 -2
  89. data/sig/nostr/private_key.rbs +4 -0
  90. data/sig/nostr/public_key.rbs +4 -0
  91. data/sig/nostr/relay_message_type.rbs +8 -0
  92. data/sig/nostr/signature.rbs +14 -0
  93. data/sig/nostr/user.rbs +4 -8
  94. data/sig/vendor/bech32/nostr/entity.rbs +41 -0
  95. data/sig/vendor/bech32/nostr/nip19.rbs +20 -0
  96. data/sig/vendor/bech32/segwit_addr.rbs +21 -0
  97. data/sig/vendor/bech32.rbs +25 -0
  98. data/sig/vendor/event_emitter.rbs +10 -3
  99. data/sig/vendor/event_machine/channel.rbs +1 -1
  100. data/sig/vendor/faye/websocket/api.rbs +45 -0
  101. data/sig/vendor/faye/websocket/client.rbs +43 -0
  102. data/sig/vendor/faye/websocket.rbs +30 -0
  103. data/sig/vendor/schnorr/signature.rbs +16 -0
  104. data/sig/vendor/schnorr.rbs +3 -1
  105. metadata +102 -28
@@ -1,9 +1,16 @@
1
1
  # Added only to satisfy the Steep requirements. Not 100% reliable.
2
2
  module EventEmitter
3
- def add_listener: (untyped `type`, ?{once: true} params) -> Integer
3
+ interface _Event
4
+ def data: -> String
5
+ def message: -> String
6
+ def code: -> Integer
7
+ def reason: -> String
8
+ end
9
+
10
+ def add_listener: (Symbol event_name) { (_Event event) -> void } -> void
4
11
  alias on add_listener
5
12
 
6
13
  def remove_listener: (untyped id_or_type) -> Array[untyped]?
7
- def emit: (untyped `type`, *untyped data) -> Array[untyped]
8
- def once: (untyped `type`) -> Integer
14
+ def emit: (Symbol `type`, *untyped data) -> Array[untyped]
15
+ def once: (Symbol `type`) -> Integer
9
16
  end
@@ -6,7 +6,7 @@ module EventMachine
6
6
 
7
7
  def initialize: -> void
8
8
  def num_subscribers: -> Integer
9
- def subscribe: (*untyped a) ?{ -> untyped } -> Integer
9
+ def subscribe: (*untyped a) ?{ (untyped) -> untyped } -> Integer
10
10
  def unsubscribe: (untyped name) -> untyped
11
11
  def push: (*untyped items) -> untyped
12
12
  alias << push
@@ -0,0 +1,45 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module Faye
3
+ class WebSocket
4
+ module API
5
+ CONNECTING: Integer
6
+ OPEN: Integer
7
+ CLOSING: Integer
8
+ CLOSED: Integer
9
+ CLOSE_TIMEOUT: Integer
10
+
11
+ @driver: untyped
12
+ @ping: nil
13
+ @ping_id: Integer
14
+ @stream: nil
15
+ @proxy: nil
16
+ @ping_timer: nil
17
+ @close_timer: nil
18
+ @close_params: [String, Integer]?
19
+ @onerror: nil
20
+ @onclose: nil
21
+ @onmessage: nil
22
+ @onopen: nil
23
+
24
+ attr_reader url: untyped
25
+ attr_reader ready_state: Integer
26
+ attr_reader buffered_amount: Integer
27
+
28
+ def initialize: (?Hash[untyped, untyped] options) -> void
29
+ def write: (untyped data) -> untyped
30
+ def send: (untyped message) -> false
31
+ def ping: (?String message) -> false
32
+ def close: (?nil code, ?nil reason) -> untyped
33
+ def protocol: -> String
34
+
35
+ private
36
+
37
+ def open: -> nil
38
+ def receive_message: (untyped data) -> nil
39
+ def emit_error: (untyped message) -> nil
40
+ def begin_close: (String reason, Integer code, ?Hash[untyped, untyped] options) -> nil
41
+ def finalize_close: -> nil
42
+ def parse: (untyped data) -> untyped
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,43 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module Faye
3
+ class WebSocket
4
+ class Client
5
+ DEFAULT_PORTS: Hash[String, Integer]
6
+ SECURE_PROTOCOLS: [String, String]
7
+
8
+ include EventEmitter
9
+ include API
10
+
11
+ @url: untyped
12
+ @endpoint: untyped
13
+ @origin_tls: Hash[untyped, untyped]
14
+ @socket_tls: Hash[untyped, untyped]
15
+ @driver: bot
16
+ @proxy: nil
17
+ @ssl_verifier: untyped
18
+ @stream: untyped
19
+
20
+ def initialize: (untyped url, ?Array[String] protocols, ?Hash[untyped, untyped] options) -> void
21
+
22
+ private
23
+
24
+ def configure_proxy: (Hash[untyped, untyped] proxy) -> nil
25
+ def start_tls: (untyped uri, Hash[untyped, untyped] options) -> nil
26
+ def on_connect: (untyped stream) -> untyped
27
+ def on_network_error: (nil error) -> untyped
28
+ def ssl_verify_peer: (untyped cert) -> untyped
29
+ def ssl_handshake_completed: -> untyped
30
+
31
+ module Connection
32
+ attr_accessor parent: bot
33
+
34
+ def connection_completed: -> untyped
35
+ def ssl_verify_peer: (untyped cert) -> untyped
36
+ def ssl_handshake_completed: -> untyped
37
+ def receive_data: (untyped data) -> untyped
38
+ def unbind: (?nil error) -> untyped
39
+ def write: (untyped data) -> nil
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module Faye
3
+ class WebSocket
4
+ ADAPTERS: Hash[String, :Goliath | :Rainbows | :Thin]
5
+
6
+ @url: String
7
+ @driver_started: false
8
+ @stream: Stream
9
+ @driver: bot
10
+
11
+ def self.determine_url: (untyped env, ?[String, String] schemes) -> String
12
+ def self.ensure_reactor_running: -> nil
13
+ def self.load_adapter: (untyped backend) -> bool?
14
+ def self.secure_request?: (untyped env) -> bool
15
+ def self.websocket?: (untyped env) -> untyped
16
+
17
+ attr_reader env: untyped
18
+
19
+ def initialize: (untyped env, ?nil protocols, ?Hash[untyped, untyped] options) -> void
20
+ def start_driver: -> nil
21
+ def rack_response: -> [Integer, Hash[untyped, untyped], Array[untyped]]
22
+
23
+ class Stream
24
+ @socket_object: bot
25
+
26
+ def fail: -> untyped
27
+ def receive: (untyped data) -> untyped
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ # Added only to satisfy the Steep requirements. Not 100% reliable.
2
+ module Schnorr
3
+ class InvalidSignatureError < StandardError
4
+ end
5
+
6
+ class Signature
7
+ attr_reader r: Integer
8
+ attr_reader s: Integer
9
+
10
+ def self.decode: (String string) -> Signature
11
+
12
+ def initialize: (Integer r, Integer s) -> void
13
+ def encode: -> String
14
+ def ==: (untyped other) -> bool
15
+ end
16
+ end
@@ -1,4 +1,6 @@
1
1
  # Added only to satisfy the Steep requirements. Not 100% reliable.
2
2
  module Schnorr
3
- def self.sign: (String message, String private_key, ?String aux_rand) -> untyped
3
+ def self.sign: (String message, String private_key, ?String aux_rand) -> Signature
4
+ def self.valid_sig?: (String message, String public_key, String signature) -> bool
5
+ def self.check_sig!: (String message, String public_key, String signature) -> bool
4
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nostr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.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-02-25 00:00:00.000000000 Z
11
+ date: 2024-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bech32
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bip-schnorr
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.4'
33
+ version: '0.7'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.4'
40
+ version: '0.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ecdsa
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.8'
117
+ version: '3.1'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.8'
124
+ version: '3.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: guard
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +198,14 @@ dependencies:
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '0.59'
201
+ version: '0.63'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '0.59'
208
+ version: '0.63'
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: pry
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -226,14 +226,14 @@ dependencies:
226
226
  requirements:
227
227
  - - "~>"
228
228
  - !ruby/object:Gem::Version
229
- version: '5.6'
229
+ version: '6.4'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: '5.6'
236
+ version: '6.4'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: rack
239
239
  requirement: !ruby/object:Gem::Requirement
@@ -254,56 +254,56 @@ dependencies:
254
254
  requirements:
255
255
  - - "~>"
256
256
  - !ruby/object:Gem::Version
257
- version: '13.0'
257
+ version: '13.1'
258
258
  type: :development
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
- version: '13.0'
264
+ version: '13.1'
265
265
  - !ruby/object:Gem::Dependency
266
266
  name: rbs
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: '2.8'
271
+ version: '3.4'
272
272
  type: :development
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: '2.8'
278
+ version: '3.4'
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: rspec
281
281
  requirement: !ruby/object:Gem::Requirement
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: '3.12'
285
+ version: '3.13'
286
286
  type: :development
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: '3.12'
292
+ version: '3.13'
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: rubocop
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
297
  - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: '1.42'
299
+ version: '1.62'
300
300
  type: :development
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: '1.42'
306
+ version: '1.62'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: rubocop-rake
309
309
  requirement: !ruby/object:Gem::Requirement
@@ -324,14 +324,14 @@ dependencies:
324
324
  requirements:
325
325
  - - '='
326
326
  - !ruby/object:Gem::Version
327
- version: '2.16'
327
+ version: '2.27'
328
328
  type: :development
329
329
  prerelease: false
330
330
  version_requirements: !ruby/object:Gem::Requirement
331
331
  requirements:
332
332
  - - '='
333
333
  - !ruby/object:Gem::Version
334
- version: '2.16'
334
+ version: '2.27'
335
335
  - !ruby/object:Gem::Dependency
336
336
  name: simplecov
337
337
  requirement: !ruby/object:Gem::Requirement
@@ -366,14 +366,14 @@ dependencies:
366
366
  requirements:
367
367
  - - "~>"
368
368
  - !ruby/object:Gem::Version
369
- version: '1.3'
369
+ version: '1.6'
370
370
  type: :development
371
371
  prerelease: false
372
372
  version_requirements: !ruby/object:Gem::Requirement
373
373
  requirements:
374
374
  - - "~>"
375
375
  - !ruby/object:Gem::Version
376
- version: '1.3'
376
+ version: '1.6'
377
377
  - !ruby/object:Gem::Dependency
378
378
  name: typeprof
379
379
  requirement: !ruby/object:Gem::Requirement
@@ -437,6 +437,7 @@ executables: []
437
437
  extensions: []
438
438
  extra_rdoc_files: []
439
439
  files:
440
+ - ".adr-dir"
440
441
  - ".editorconfig"
441
442
  - ".overcommit.yml"
442
443
  - ".rspec"
@@ -452,45 +453,118 @@ files:
452
453
  - README.md
453
454
  - Rakefile
454
455
  - Steepfile
456
+ - adr/0001-record-architecture-decisions.md
457
+ - adr/0002-introduction-of-signature-class.md
458
+ - docs/.gitignore
459
+ - docs/.vitepress/config.mjs
460
+ - docs/README.md
461
+ - docs/api-examples.md
462
+ - docs/bun.lockb
463
+ - docs/common-use-cases/bech32-encoding-and-decoding-(NIP-19).md
464
+ - docs/common-use-cases/signing-and-verifying-events.md
465
+ - docs/common-use-cases/signing-and-verifying-messages.md
466
+ - docs/core/client.md
467
+ - docs/core/keys.md
468
+ - docs/core/user.md
469
+ - docs/events.md
470
+ - docs/events/contact-list.md
471
+ - docs/events/encrypted-direct-message.md
472
+ - docs/events/recommend-server.md
473
+ - docs/events/set-metadata.md
474
+ - docs/events/text-note.md
475
+ - docs/getting-started/installation.md
476
+ - docs/getting-started/overview.md
477
+ - docs/implemented-nips.md
478
+ - docs/index.md
479
+ - docs/markdown-examples.md
480
+ - docs/package.json
481
+ - docs/relays/connecting-to-a-relay.md
482
+ - docs/relays/publishing-events.md
483
+ - docs/relays/receiving-events.md
484
+ - docs/subscriptions/creating-a-subscription.md
485
+ - docs/subscriptions/deleting-a-subscription.md
486
+ - docs/subscriptions/filtering-subscription-events.md
487
+ - docs/subscriptions/updating-a-subscription.md
455
488
  - lib/nostr.rb
489
+ - lib/nostr/bech32.rb
456
490
  - lib/nostr/client.rb
457
491
  - lib/nostr/client_message_type.rb
458
492
  - lib/nostr/crypto.rb
493
+ - lib/nostr/errors.rb
494
+ - lib/nostr/errors/error.rb
495
+ - lib/nostr/errors/invalid_hrp_error.rb
496
+ - lib/nostr/errors/invalid_key_format_error.rb
497
+ - lib/nostr/errors/invalid_key_length_error.rb
498
+ - lib/nostr/errors/invalid_key_type_error.rb
499
+ - lib/nostr/errors/invalid_signature_format_error.rb
500
+ - lib/nostr/errors/invalid_signature_length_error.rb
501
+ - lib/nostr/errors/invalid_signature_type_error.rb
502
+ - lib/nostr/errors/key_validation_error.rb
503
+ - lib/nostr/errors/signature_validation_error.rb
459
504
  - lib/nostr/event.rb
460
505
  - lib/nostr/event_kind.rb
461
506
  - lib/nostr/events/encrypted_direct_message.rb
462
507
  - lib/nostr/filter.rb
508
+ - lib/nostr/key.rb
463
509
  - lib/nostr/key_pair.rb
464
510
  - lib/nostr/keygen.rb
511
+ - lib/nostr/private_key.rb
512
+ - lib/nostr/public_key.rb
465
513
  - lib/nostr/relay.rb
514
+ - lib/nostr/relay_message_type.rb
515
+ - lib/nostr/signature.rb
466
516
  - lib/nostr/subscription.rb
467
517
  - lib/nostr/user.rb
468
518
  - lib/nostr/version.rb
469
519
  - nostr.gemspec
470
520
  - sig/nostr.rbs
521
+ - sig/nostr/bech32.rbs
471
522
  - sig/nostr/client.rbs
472
523
  - sig/nostr/client_message_type.rbs
473
524
  - sig/nostr/crypto.rbs
525
+ - sig/nostr/errors/error.rbs
526
+ - sig/nostr/errors/invalid_hrb_error.rbs
527
+ - sig/nostr/errors/invalid_key_format_error.rbs
528
+ - sig/nostr/errors/invalid_key_length_error.rbs
529
+ - sig/nostr/errors/invalid_key_type_error.rbs
530
+ - sig/nostr/errors/invalid_signature_format_error.rbs
531
+ - sig/nostr/errors/invalid_signature_length_error.rbs
532
+ - sig/nostr/errors/invalid_signature_type_error.rbs
533
+ - sig/nostr/errors/key_validation_error.rbs
534
+ - sig/nostr/errors/signature_validation_error.rbs
474
535
  - sig/nostr/event.rbs
475
536
  - sig/nostr/event_kind.rbs
476
537
  - sig/nostr/events/encrypted_direct_message.rbs
477
538
  - sig/nostr/filter.rbs
539
+ - sig/nostr/key.rbs
478
540
  - sig/nostr/key_pair.rbs
479
541
  - sig/nostr/keygen.rbs
542
+ - sig/nostr/private_key.rbs
543
+ - sig/nostr/public_key.rbs
480
544
  - sig/nostr/relay.rbs
545
+ - sig/nostr/relay_message_type.rbs
546
+ - sig/nostr/signature.rbs
481
547
  - sig/nostr/subscription.rbs
482
548
  - sig/nostr/user.rbs
549
+ - sig/vendor/bech32.rbs
550
+ - sig/vendor/bech32/nostr/entity.rbs
551
+ - sig/vendor/bech32/nostr/nip19.rbs
552
+ - sig/vendor/bech32/segwit_addr.rbs
483
553
  - sig/vendor/ecsda/group/secp256k1.rbs
484
554
  - sig/vendor/event_emitter.rbs
485
555
  - sig/vendor/event_machine.rbs
486
556
  - sig/vendor/event_machine/channel.rbs
557
+ - sig/vendor/faye/websocket.rbs
558
+ - sig/vendor/faye/websocket/api.rbs
559
+ - sig/vendor/faye/websocket/client.rbs
487
560
  - sig/vendor/schnorr.rbs
488
- homepage: https://github.com/wilsonsilva/nostr
561
+ - sig/vendor/schnorr/signature.rbs
562
+ homepage: https://nostr-ruby.com/
489
563
  licenses:
490
564
  - MIT
491
565
  metadata:
492
566
  rubygems_mfa_required: 'true'
493
- homepage_uri: https://github.com/wilsonsilva/nostr
567
+ homepage_uri: https://nostr-ruby.com/
494
568
  source_code_uri: https://github.com/wilsonsilva/nostr
495
569
  changelog_uri: https://github.com/wilsonsilva/nostr/blob/main/CHANGELOG.md
496
570
  post_install_message:
@@ -501,14 +575,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
501
575
  requirements:
502
576
  - - ">="
503
577
  - !ruby/object:Gem::Version
504
- version: 3.2.0
578
+ version: 3.3.0
505
579
  required_rubygems_version: !ruby/object:Gem::Requirement
506
580
  requirements:
507
581
  - - ">="
508
582
  - !ruby/object:Gem::Version
509
583
  version: '0'
510
584
  requirements: []
511
- rubygems_version: 3.4.7
585
+ rubygems_version: 3.5.6
512
586
  signing_key:
513
587
  specification_version: 4
514
588
  summary: Client and relay implementation of the Nostr protocol.