lapsoss 0.1.0 → 0.2.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.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "uri"
3
+ require 'uri'
4
4
 
5
5
  module Lapsoss
6
6
  module Validators
@@ -42,18 +42,14 @@ module Lapsoss
42
42
 
43
43
  begin
44
44
  uri = URI.parse(value)
45
- unless uri.scheme && uri.host
46
- raise ValidationError, "#{name} must be a valid URL with scheme and host"
47
- end
48
- unless %w[http https].include?(uri.scheme)
49
- raise ValidationError, "#{name} must use http or https scheme"
50
- end
45
+ raise ValidationError, "#{name} must be a valid URL with scheme and host" unless uri.scheme && uri.host
46
+ raise ValidationError, "#{name} must use http or https scheme" unless %w[http https].include?(uri.scheme)
51
47
  rescue URI::InvalidURIError => e
52
48
  raise ValidationError, "#{name} is not a valid URL: #{e.message}"
53
49
  end
54
50
  end
55
51
 
56
- def validate_dsn!(dsn_string, name = "DSN")
52
+ def validate_dsn!(dsn_string, name = 'DSN')
57
53
  return if dsn_string.nil?
58
54
 
59
55
  validate_type!(dsn_string, [String], name)
@@ -67,12 +63,10 @@ module Lapsoss
67
63
  validate_presence!(uri.user, "#{name} public key")
68
64
 
69
65
  # Validate scheme
70
- unless %w[http https].include?(uri.scheme)
71
- raise ValidationError, "#{name} must use http or https scheme"
72
- end
66
+ raise ValidationError, "#{name} must use http or https scheme" unless %w[http https].include?(uri.scheme)
73
67
 
74
68
  # Extract project ID from path
75
- path_parts = uri.path&.split("/") || []
69
+ path_parts = uri.path&.split('/') || []
76
70
  project_id = path_parts.last
77
71
  validate_presence!(project_id, "#{name} project ID")
78
72
 
@@ -80,7 +74,6 @@ module Lapsoss
80
74
  unless project_id.match?(/^\d+$/)
81
75
  raise ValidationError, "#{name} project ID must be numeric, got '#{project_id}'"
82
76
  end
83
-
84
77
  rescue URI::InvalidURIError => e
85
78
  raise ValidationError, "#{name} is not a valid URI: #{e.message}"
86
79
  end
@@ -96,17 +89,13 @@ module Lapsoss
96
89
  raise ValidationError, "#{name} must be a valid UUID format"
97
90
  end
98
91
  when :hex
99
- unless value.match?(/\A[0-9a-f]+\z/i)
100
- raise ValidationError, "#{name} must be a valid hexadecimal string"
101
- end
92
+ raise ValidationError, "#{name} must be a valid hexadecimal string" unless value.match?(/\A[0-9a-f]+\z/i)
102
93
  when :alphanumeric
103
- unless value.match?(/\A[a-z0-9]+\z/i)
104
- raise ValidationError, "#{name} must be alphanumeric"
105
- end
94
+ raise ValidationError, "#{name} must be alphanumeric" unless value.match?(/\A[a-z0-9]+\z/i)
106
95
  end
107
96
  end
108
97
 
109
- def validate_environment!(value, name = "environment")
98
+ def validate_environment!(value, name = 'environment')
110
99
  return if value.nil?
111
100
 
112
101
  validate_type!(value, [String, Symbol], name)
@@ -117,22 +106,20 @@ module Lapsoss
117
106
  end
118
107
  end
119
108
 
120
- def validate_sample_rate!(value, name = "sample_rate")
109
+ def validate_sample_rate!(value, name = 'sample_rate')
121
110
  return if value.nil?
122
111
 
123
112
  validate_numeric_range!(value, 0.0..1.0, name)
124
113
  end
125
114
 
126
- def validate_timeout!(value, name = "timeout")
115
+ def validate_timeout!(value, name = 'timeout')
127
116
  return if value.nil?
128
117
 
129
118
  validate_type!(value, [Numeric], name)
130
- if value <= 0
131
- raise ValidationError, "#{name} must be positive, got #{value}"
132
- end
119
+ raise ValidationError, "#{name} must be positive, got #{value}" if value <= 0
133
120
  end
134
121
 
135
- def validate_retries!(value, name = "max_retries")
122
+ def validate_retries!(value, name = 'max_retries')
136
123
  return if value.nil?
137
124
 
138
125
  validate_type!(value, [Integer], name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lapsoss
4
- VERSION = "0.1.0"
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/lapsoss.rb CHANGED
@@ -1,22 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lapsoss/version"
4
- require_relative "lapsoss/configuration"
5
- require_relative "lapsoss/registry"
6
- require_relative "lapsoss/event"
7
- require_relative "lapsoss/router"
8
- require_relative "lapsoss/adapters/base"
9
- require_relative "lapsoss/current"
10
- require_relative "lapsoss/client"
11
- require_relative "lapsoss/fingerprinter"
12
- require_relative "lapsoss/backtrace_processor"
13
- require_relative "lapsoss/scrubber"
14
- require_relative "lapsoss/pipeline"
15
- require_relative "lapsoss/sampling"
16
- require_relative "lapsoss/user_context"
17
- require_relative "lapsoss/exclusions"
18
- require_relative "lapsoss/release_tracker"
19
- require_relative "lapsoss/railtie" if defined?(Rails)
3
+ require 'zeitwerk'
4
+ require 'active_support/core_ext/module/delegation'
5
+
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.do_not_eager_load("#{__dir__}/lapsoss/adapters")
8
+ loader.setup
9
+
10
+ require_relative 'lapsoss/railtie' if defined?(Rails)
20
11
 
21
12
  module Lapsoss
22
13
  class Error < StandardError; end
@@ -57,20 +48,16 @@ module Lapsoss
57
48
  client.add_breadcrumb(message, type: type, **metadata)
58
49
  end
59
50
 
60
- def with_scope(context = {}, &block)
61
- client.with_scope(context, &block)
51
+ def with_scope(context = {}, &)
52
+ client.with_scope(context, &)
62
53
  end
63
54
 
64
- def current_scope
65
- client.current_scope
66
- end
55
+ delegate :current_scope, to: :client
67
56
 
68
57
  def flush(timeout: 2)
69
58
  client.flush(timeout: timeout)
70
59
  end
71
60
 
72
- def shutdown
73
- client.shutdown
74
- end
61
+ delegate :shutdown, to: :client
75
62
  end
76
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lapsoss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -10,33 +10,33 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: concurrent-ruby
13
+ name: activesupport
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '1.0'
18
+ version: '7.2'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '1.0'
25
+ version: '7.2'
26
26
  - !ruby/object:Gem::Dependency
27
- name: activesupport
27
+ name: concurrent-ruby
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">="
30
+ - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.2'
32
+ version: '1.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '7.2'
39
+ version: '1.0'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: faraday
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -66,47 +66,53 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: dotenv
69
+ name: zeitwerk
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.0'
75
- type: :development
74
+ version: '2.6'
75
+ type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '3.0'
81
+ version: '2.6'
82
82
  - !ruby/object:Gem::Dependency
83
- name: vcr
83
+ name: async-http-faraday
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '6.0'
89
- type: :development
88
+ version: '0.19'
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 0.19.0
92
+ type: :runtime
90
93
  prerelease: false
91
94
  version_requirements: !ruby/object:Gem::Requirement
92
95
  requirements:
93
96
  - - "~>"
94
97
  - !ruby/object:Gem::Version
95
- version: '6.0'
98
+ version: '0.19'
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: 0.19.0
96
102
  - !ruby/object:Gem::Dependency
97
- name: webmock
103
+ name: dotenv
98
104
  requirement: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - "~>"
101
107
  - !ruby/object:Gem::Version
102
- version: '3.18'
108
+ version: '3.0'
103
109
  type: :development
104
110
  prerelease: false
105
111
  version_requirements: !ruby/object:Gem::Requirement
106
112
  requirements:
107
113
  - - "~>"
108
114
  - !ruby/object:Gem::Version
109
- version: '3.18'
115
+ version: '3.0'
110
116
  - !ruby/object:Gem::Dependency
111
117
  name: rake
112
118
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +155,34 @@ dependencies:
149
155
  - - "~>"
150
156
  - !ruby/object:Gem::Version
151
157
  version: '1.0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: vcr
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '6.0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '6.0'
172
+ - !ruby/object:Gem::Dependency
173
+ name: webmock
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '3.18'
179
+ type: :development
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '3.18'
152
186
  description: Lapsoss provides a clean, adapter-based approach to error reporting that
153
187
  doesn't monkey patch your application. Send errors to any error tracking service
154
188
  or custom backend through a unified API.
@@ -164,6 +198,7 @@ files:
164
198
  - lib/lapsoss.rb
165
199
  - lib/lapsoss/adapters/appsignal_adapter.rb
166
200
  - lib/lapsoss/adapters/base.rb
201
+ - lib/lapsoss/adapters/bugsnag_adapter.rb
167
202
  - lib/lapsoss/adapters/insight_hub_adapter.rb
168
203
  - lib/lapsoss/adapters/logger_adapter.rb
169
204
  - lib/lapsoss/adapters/rollbar_adapter.rb
@@ -174,7 +209,7 @@ files:
174
209
  - lib/lapsoss/configuration.rb
175
210
  - lib/lapsoss/current.rb
176
211
  - lib/lapsoss/event.rb
177
- - lib/lapsoss/exclusions.rb
212
+ - lib/lapsoss/exclusion_filter.rb
178
213
  - lib/lapsoss/fingerprinter.rb
179
214
  - lib/lapsoss/http_client.rb
180
215
  - lib/lapsoss/middleware.rb
@@ -197,6 +232,7 @@ metadata:
197
232
  homepage_uri: https://github.com/seuros/lapsoss
198
233
  source_code_uri: https://github.com/seuros/lapsoss
199
234
  changelog_uri: https://github.com/seuros/lapsoss/blob/main/CHANGELOG.md
235
+ rubygems_mfa_required: 'true'
200
236
  rdoc_options: []
201
237
  require_paths:
202
238
  - lib