json-merge 1.1.2 → 7.1.1

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/sig/json/merge.rbs CHANGED
@@ -1,201 +1,8 @@
1
- # Type signatures for json-merge gem
2
- # Smart merge for JSON files using tree-sitter AST analysis
3
-
4
1
  module Json
5
2
  module Merge
6
- VERSION: String
7
-
8
- # Base error class for json-merge errors
9
- class Error < StandardError
10
- end
11
-
12
- # Error raised when template JSON file has syntax errors
13
- class TemplateParseError < Error
14
- attr_reader errors: Array[untyped]
15
- attr_reader content: String?
16
-
17
- def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
18
- end
19
-
20
- # Error raised when destination JSON file has syntax errors
21
- class DestinationParseError < Error
22
- attr_reader errors: Array[untyped]
23
- attr_reader content: String?
24
-
25
- def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
26
- end
27
-
28
- # Debug logging utility for Json::Merge
29
- module DebugLogger
30
- extend Ast::Merge::DebugLogger
31
-
32
- def self.env_var_name: () -> String
33
- def self.env_var_name=: (String name) -> String
34
- def self.log_prefix: () -> String
35
- def self.log_prefix=: (String prefix) -> String
36
- def self.enabled?: () -> bool
37
- def self.debug: (String message, ?Hash[Symbol, untyped] context) -> void
38
- def self.info: (String message) -> void
39
- def self.warning: (String message) -> void
40
- def self.time: [T] (String operation) { () -> T } -> T
41
- def self.extract_node_info: (untyped node) -> Hash[Symbol, untyped]
42
- end
43
-
44
- # Wrapper for tree-sitter JSON nodes
45
- class NodeWrapper
46
- attr_reader node: untyped
47
- attr_reader start_line: Integer
48
- attr_reader end_line: Integer
49
- attr_reader analysis: FileAnalysis?
50
-
51
- def initialize: (
52
- untyped node,
53
- String source,
54
- ?analysis: FileAnalysis?
55
- ) -> void
56
-
57
- def location: () -> Ast::Merge::FreezeNode::Location
58
- def signature: () -> Array[untyped]
59
- def object?: () -> bool
60
- def array?: () -> bool
61
- def pair?: () -> bool
62
- def key: () -> String?
63
- def value: () -> untyped
64
- def slice: () -> String?
65
- def text: () -> String
66
- def inspect: () -> String
67
- end
68
-
69
- # File analysis for JSON files
70
- class FileAnalysis
71
- include Ast::Merge::FileAnalysisBase
72
-
73
- PARSER_SEARCH_PATHS: Array[String]
74
-
75
- attr_reader source: String
76
- attr_reader lines: Array[String]
77
- attr_reader ast: untyped
78
- attr_reader statements: Array[NodeWrapper]
79
- attr_reader signature_generator: (^(untyped) -> Array[untyped]?)?
80
- attr_reader errors: Array[untyped]
81
-
82
- def self.find_parser_path: () -> String?
83
-
84
- def initialize: (
85
- String source,
86
- ?signature_generator: (^(untyped) -> Array[untyped]?)?,
87
- ?parser_path: String?
88
- ) -> void
89
-
90
- def valid?: () -> bool
91
- def line_at: (Integer line_num) -> String?
92
- def normalized_line: (Integer line_num) -> String?
93
- def signature_at: (Integer index) -> Array[untyped]?
94
- def generate_signature: (untyped statement) -> Array[untyped]?
95
- def compute_node_signature: (untyped statement) -> Array[untyped]?
96
-
97
- private
98
-
99
- def parse_json: () -> void
100
- def extract_nodes: (untyped tree_node) -> Array[NodeWrapper]
101
- def integrate_nodes: () -> Array[NodeWrapper]
102
- end
103
-
104
- # Result of a JSON merge operation
105
- class MergeResult < Ast::Merge::MergeResult
106
- DECISION_KEPT_TEMPLATE: Symbol
107
- DECISION_KEPT_DEST: Symbol
108
- DECISION_MERGED: Symbol
109
- DECISION_ADDED: Symbol
110
-
111
- attr_reader lines: Array[Hash[Symbol, untyped]]
112
- attr_reader decisions: Array[Hash[Symbol, untyped]]
113
- attr_reader statistics: Hash[Symbol, Integer]
114
-
115
- def initialize: (
116
- ?template_analysis: FileAnalysis?,
117
- ?dest_analysis: FileAnalysis?,
118
- ?conflicts: Array[Hash[Symbol, untyped]],
119
- ?stats: Hash[Symbol, untyped]
120
- ) -> void
121
-
122
- def add_line: (
123
- String line,
124
- decision: Symbol,
125
- source: Symbol,
126
- ?original_line: Integer?
127
- ) -> void
128
-
129
- def add_lines: (
130
- Array[String] lines,
131
- decision: Symbol,
132
- source: Symbol,
133
- ?start_line: Integer?
134
- ) -> void
135
-
136
- def add_blank_line: (?decision: Symbol, ?source: Symbol) -> void
137
- def to_json: () -> String
138
- def content: () -> Array[Hash[Symbol, untyped]]
139
- def content_string: () -> String
140
- def empty?: () -> bool
141
-
142
- private
143
-
144
- def track_statistics: (Symbol decision, Symbol source) -> void
145
- end
146
-
147
- # Smart merger for JSON files
148
- class SmartMerger
149
- include Ast::Merge::MergerConfig
150
-
151
- attr_reader template_analysis: FileAnalysis
152
- attr_reader dest_analysis: FileAnalysis
153
- attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
154
- attr_reader add_template_only_nodes: bool
155
-
156
- def initialize: (
157
- String template_content,
158
- String dest_content,
159
- ?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
160
- ?add_template_only_nodes: bool,
161
- ?signature_generator: (^(untyped) -> Array[untyped]?)?,
162
- ?node_splitter: Hash[Symbol, untyped]?,
163
- ?parser_path: String?
164
- ) -> void
165
-
166
- def merge: () -> MergeResult
167
-
168
- private
169
-
170
- def perform_merge: () -> MergeResult
171
- def merge_nodes: (MergeResult result) -> void
172
- end
173
-
174
- # Conflict resolver for JSON merges
175
- class ConflictResolver
176
- attr_reader template_analysis: FileAnalysis
177
- attr_reader dest_analysis: FileAnalysis
178
- attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
179
- attr_reader add_template_only_nodes: bool
180
-
181
- def initialize: (
182
- FileAnalysis template_analysis,
183
- FileAnalysis dest_analysis,
184
- ?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
185
- ?add_template_only_nodes: bool
186
- ) -> void
187
-
188
- def resolve: (untyped boundary, MergeResult result) -> void
189
- end
190
-
191
- # Emitter for reconstructing JSON output
192
- class Emitter
193
- attr_reader result: MergeResult
194
- attr_reader indent: Integer
195
-
196
- def initialize: (MergeResult result, ?indent: Integer) -> void
197
-
198
- def emit: () -> String
3
+ module Version
4
+ VERSION: String
199
5
  end
6
+ VERSION: String
200
7
  end
201
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json-merge
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 7.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -38,45 +38,33 @@ cert_chain:
38
38
  date: 1980-01-02 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
- name: tree_haver
41
+ name: ast-merge
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '5.0'
47
- - - ">="
44
+ - - '='
48
45
  - !ruby/object:Gem::Version
49
- version: 5.0.5
46
+ version: 7.1.1
50
47
  type: :runtime
51
48
  prerelease: false
52
49
  version_requirements: !ruby/object:Gem::Requirement
53
50
  requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: '5.0'
57
- - - ">="
51
+ - - '='
58
52
  - !ruby/object:Gem::Version
59
- version: 5.0.5
53
+ version: 7.1.1
60
54
  - !ruby/object:Gem::Dependency
61
- name: ast-merge
55
+ name: tree_haver
62
56
  requirement: !ruby/object:Gem::Requirement
63
57
  requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '4.0'
67
- - - ">="
58
+ - - '='
68
59
  - !ruby/object:Gem::Version
69
- version: 4.0.6
60
+ version: 7.1.1
70
61
  type: :runtime
71
62
  prerelease: false
72
63
  version_requirements: !ruby/object:Gem::Requirement
73
64
  requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '4.0'
77
- - - ">="
65
+ - - '='
78
66
  - !ruby/object:Gem::Version
79
- version: 4.0.6
67
+ version: 7.1.1
80
68
  - !ruby/object:Gem::Dependency
81
69
  name: version_gem
82
70
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +74,7 @@ dependencies:
86
74
  version: '1.1'
87
75
  - - ">="
88
76
  - !ruby/object:Gem::Version
89
- version: 1.1.9
77
+ version: 1.1.15
90
78
  type: :runtime
91
79
  prerelease: false
92
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -96,35 +84,41 @@ dependencies:
96
84
  version: '1.1'
97
85
  - - ">="
98
86
  - !ruby/object:Gem::Version
99
- version: 1.1.9
87
+ version: 1.1.15
100
88
  - !ruby/object:Gem::Dependency
101
89
  name: kettle-dev
102
90
  requirement: !ruby/object:Gem::Requirement
103
91
  requirements:
104
92
  - - "~>"
105
93
  - !ruby/object:Gem::Version
106
- version: '1.1'
94
+ version: '2.5'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 2.5.17
107
98
  type: :development
108
99
  prerelease: false
109
100
  version_requirements: !ruby/object:Gem::Requirement
110
101
  requirements:
111
102
  - - "~>"
112
103
  - !ruby/object:Gem::Version
113
- version: '1.1'
104
+ version: '2.5'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 2.5.17
114
108
  - !ruby/object:Gem::Dependency
115
109
  name: bundler-audit
116
110
  requirement: !ruby/object:Gem::Requirement
117
111
  requirements:
118
112
  - - "~>"
119
113
  - !ruby/object:Gem::Version
120
- version: 0.9.2
114
+ version: 0.9.3
121
115
  type: :development
122
116
  prerelease: false
123
117
  version_requirements: !ruby/object:Gem::Requirement
124
118
  requirements:
125
119
  - - "~>"
126
120
  - !ruby/object:Gem::Version
127
- version: 0.9.2
121
+ version: 0.9.3
128
122
  - !ruby/object:Gem::Dependency
129
123
  name: rake
130
124
  requirement: !ruby/object:Gem::Requirement
@@ -160,45 +154,85 @@ dependencies:
160
154
  - !ruby/object:Gem::Version
161
155
  version: 1.0.4
162
156
  - !ruby/object:Gem::Dependency
163
- name: appraisal2
157
+ name: anonymous_loader
164
158
  requirement: !ruby/object:Gem::Requirement
165
159
  requirements:
166
160
  - - "~>"
167
161
  - !ruby/object:Gem::Version
168
- version: '3.0'
169
- - - "~>"
162
+ version: '0.1'
163
+ - - ">="
170
164
  - !ruby/object:Gem::Version
171
- version: 3.0.6
165
+ version: 0.1.3
172
166
  type: :development
173
167
  prerelease: false
174
168
  version_requirements: !ruby/object:Gem::Requirement
175
169
  requirements:
176
170
  - - "~>"
177
171
  - !ruby/object:Gem::Version
178
- version: '3.0'
172
+ version: '0.1'
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 0.1.3
176
+ - !ruby/object:Gem::Dependency
177
+ name: appraisal2
178
+ requirement: !ruby/object:Gem::Requirement
179
+ requirements:
179
180
  - - "~>"
180
181
  - !ruby/object:Gem::Version
181
- version: 3.0.6
182
+ version: '3.2'
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 3.2.0
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.2'
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: 3.2.0
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: kettle-test
184
198
  requirement: !ruby/object:Gem::Requirement
185
199
  requirements:
186
200
  - - "~>"
187
201
  - !ruby/object:Gem::Version
188
- version: '1.0'
202
+ version: '2.0'
189
203
  - - ">="
190
204
  - !ruby/object:Gem::Version
191
- version: 1.0.10
205
+ version: 2.0.19
192
206
  type: :development
193
207
  prerelease: false
194
208
  version_requirements: !ruby/object:Gem::Requirement
195
209
  requirements:
196
210
  - - "~>"
197
211
  - !ruby/object:Gem::Version
198
- version: '1.0'
212
+ version: '2.0'
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 2.0.19
216
+ - !ruby/object:Gem::Dependency
217
+ name: turbo_tests2
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.2'
199
223
  - - ">="
200
224
  - !ruby/object:Gem::Version
201
- version: 1.0.10
225
+ version: 3.2.4
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: '3.2'
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 3.2.4
202
236
  - !ruby/object:Gem::Dependency
203
237
  name: ruby-progressbar
204
238
  requirement: !ruby/object:Gem::Requirement
@@ -222,7 +256,7 @@ dependencies:
222
256
  version: '1.0'
223
257
  - - ">="
224
258
  - !ruby/object:Gem::Version
225
- version: 1.0.3
259
+ version: 1.0.8
226
260
  type: :development
227
261
  prerelease: false
228
262
  version_requirements: !ruby/object:Gem::Requirement
@@ -232,86 +266,70 @@ dependencies:
232
266
  version: '1.0'
233
267
  - - ">="
234
268
  - !ruby/object:Gem::Version
235
- version: 1.0.3
269
+ version: 1.0.8
236
270
  - !ruby/object:Gem::Dependency
237
271
  name: gitmoji-regex
238
272
  requirement: !ruby/object:Gem::Requirement
239
273
  requirements:
240
274
  - - "~>"
241
275
  - !ruby/object:Gem::Version
242
- version: '1.0'
276
+ version: '2.0'
243
277
  - - ">="
244
278
  - !ruby/object:Gem::Version
245
- version: 1.0.3
279
+ version: 2.0.11
246
280
  type: :development
247
281
  prerelease: false
248
282
  version_requirements: !ruby/object:Gem::Requirement
249
283
  requirements:
250
284
  - - "~>"
251
285
  - !ruby/object:Gem::Version
252
- version: '1.0'
286
+ version: '2.0'
253
287
  - - ">="
254
288
  - !ruby/object:Gem::Version
255
- version: 1.0.3
256
- description: "☯️ Json::Merge provides smart JSON file merging that understands JSON
257
- structure. Perfect for merging strict JSON configuration files like package.json,
258
- tsconfig.json (without comments), and other standard JSON files. For JSON with Comments
259
- (JSONC) files like devcontainer.json and VS Code settings, use jsonc-merge instead."
289
+ version: 2.0.11
290
+ description: "☯️ Portable JSON and JSONC analysis, owner matching, fallback, and merge
291
+ behavior for Structured Merge."
260
292
  email:
261
293
  - floss@galtzo.com
262
294
  executables: []
263
295
  extensions: []
264
- extra_rdoc_files:
265
- - CHANGELOG.md
266
- - CITATION.cff
267
- - CODE_OF_CONDUCT.md
268
- - CONTRIBUTING.md
269
- - FUNDING.md
270
- - LICENSE.txt
271
- - README.md
272
- - REEK
273
- - RUBOCOP.md
274
- - SECURITY.md
296
+ extra_rdoc_files: []
275
297
  files:
276
- - CHANGELOG.md
277
- - CITATION.cff
278
- - CODE_OF_CONDUCT.md
279
- - CONTRIBUTING.md
280
- - FUNDING.md
281
- - LICENSE.txt
298
+ - LICENSE.md
282
299
  - README.md
283
- - REEK
284
- - RUBOCOP.md
285
- - SECURITY.md
286
300
  - lib/json-merge.rb
287
301
  - lib/json/merge.rb
302
+ - lib/json/merge/comment_tracker.rb
288
303
  - lib/json/merge/conflict_resolver.rb
289
304
  - lib/json/merge/debug_logger.rb
290
305
  - lib/json/merge/emitter.rb
291
306
  - lib/json/merge/file_analysis.rb
307
+ - lib/json/merge/freeze_node.rb
292
308
  - lib/json/merge/merge_result.rb
293
309
  - lib/json/merge/node_wrapper.rb
294
310
  - lib/json/merge/object_match_refiner.rb
295
311
  - lib/json/merge/smart_merger.rb
296
312
  - lib/json/merge/version.rb
297
313
  - sig/json/merge.rbs
298
- homepage: https://github.com/kettle-rb/json-merge
314
+ homepage: https://github.com/structuredmerge/structuredmerge-ruby
299
315
  licenses:
300
- - MIT
316
+ - AGPL-3.0-only
317
+ - PolyForm-Small-Business-1.0.0
301
318
  metadata:
302
- homepage_uri: https://json-merge.galtzo.com/
303
- source_code_uri: https://github.com/kettle-rb/json-merge/tree/v1.1.2
304
- changelog_uri: https://github.com/kettle-rb/json-merge/blob/v1.1.2/CHANGELOG.md
305
- bug_tracker_uri: https://github.com/kettle-rb/json-merge/issues
306
- documentation_uri: https://www.rubydoc.info/gems/json-merge/1.1.2
319
+ homepage_uri: https://structuredmerge.org
320
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.1
321
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.1/CHANGELOG.md
322
+ bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
323
+ documentation_uri: https://www.rubydoc.info/gems/json-merge/7.1.1
307
324
  funding_uri: https://github.com/sponsors/pboling
308
- wiki_uri: https://github.com/kettle-rb/json-merge/wiki
325
+ wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
309
326
  news_uri: https://www.railsbling.com/tags/json-merge
310
327
  discord_uri: https://discord.gg/3qme4XHNKN
328
+ mailing_list_uri: https://www.rubyforum.org/tag/structuredmerge
311
329
  rubygems_mfa_required: 'true'
312
330
  rdoc_options:
313
331
  - "--title"
314
- - json-merge - ☯️ Intelligent JSON file merging using tree-sitter AST analysis
332
+ - json-merge - ☯️ Structured Merge JSON analysis and merge for Ruby
315
333
  - "--main"
316
334
  - README.md
317
335
  - "--exclude"
@@ -325,14 +343,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
325
343
  requirements:
326
344
  - - ">="
327
345
  - !ruby/object:Gem::Version
328
- version: 3.2.0
346
+ version: 4.0.0
329
347
  required_rubygems_version: !ruby/object:Gem::Requirement
330
348
  requirements:
331
349
  - - ">="
332
350
  - !ruby/object:Gem::Version
333
351
  version: '0'
334
352
  requirements: []
335
- rubygems_version: 4.0.5
353
+ rubygems_version: 4.0.17
336
354
  specification_version: 4
337
- summary: "☯️ Intelligent JSON file merging using tree-sitter AST analysis"
355
+ summary: "☯️ Structured Merge JSON analysis and merge for Ruby"
338
356
  test_files: []
metadata.gz.sig CHANGED
Binary file