graphql-schema_comparator 0.5.1 → 0.6.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b2c5111538092113b88552e2d85930eea51b4c0
|
4
|
+
data.tar.gz: 3a3b4d43916961515caa915c51e0c0b0370c1395
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00c6e2702e8bb9c1f34b1d9a777a3b63cc0cb6f56aa78f76bf14c04aee0997e6e690f79de956d46da31be9298a98ff72413d5cd77f18b514cd0b6b8a02021f76
|
7
|
+
data.tar.gz: b74179eb8941cf2985f9dda75219b28b001e4c771db5db3d49e380cc98bc94c625d720dd7bf4cb88ddef6e51672b0a50b136b92da3e6dbfc6af3c13874e8c65f
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.6.0 (Feb 28th 2018)
|
4
|
+
|
5
|
+
### New Features
|
6
|
+
|
7
|
+
- Add `#path` which returns a dot-delimited path to the affected schema member. (#15)
|
8
|
+
|
3
9
|
## 0.5.1 (Feb 15th 2018)
|
4
10
|
|
5
|
-
|
11
|
+
### Bug Fix
|
6
12
|
|
7
13
|
- Return a better message when adding a default value, if this one was nil before.
|
8
14
|
|
9
15
|
## 0.5.0 (Dec 2 2017)
|
10
16
|
|
11
|
-
|
17
|
+
### New Features
|
12
18
|
|
13
19
|
- `AbstractChange#criticality` now returns a criticality object which
|
14
20
|
has a level (non_breaking, dangerous, breaking) and a reason
|
@@ -19,14 +25,14 @@
|
|
19
25
|
|
20
26
|
- New CLI `schema_comparator` which includes `dangerous_changes`
|
21
27
|
|
22
|
-
|
28
|
+
### Breaking Changes
|
23
29
|
|
24
30
|
- Some changes have been recategorized as dangerous
|
25
31
|
- Some type changes now return breaking or non-breaking depending on the type kind
|
26
32
|
|
27
33
|
## 0.4.0 (Nov 27 2017)
|
28
34
|
|
29
|
-
|
35
|
+
### Breaking Changes
|
30
36
|
|
31
37
|
- Argument and InputValue type changes are considered non
|
32
38
|
breaking if type goes from Null => Non-Null
|
@@ -12,7 +12,7 @@ module GraphQL
|
|
12
12
|
raise NotImplementedError
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
# @return [Boolean] If the change is breaking or not
|
16
16
|
def breaking?
|
17
17
|
criticality.breaking?
|
18
18
|
end
|
@@ -31,6 +31,11 @@ module GraphQL
|
|
31
31
|
def criticality
|
32
32
|
raise NotImplementedError
|
33
33
|
end
|
34
|
+
|
35
|
+
# @return [String] Dot-delimited path to the affected schema member.
|
36
|
+
def path
|
37
|
+
raise NotImplementedError
|
38
|
+
end
|
34
39
|
end
|
35
40
|
|
36
41
|
# Mostly breaking changes
|
@@ -44,7 +49,11 @@ module GraphQL
|
|
44
49
|
end
|
45
50
|
|
46
51
|
def message
|
47
|
-
"`#{removed_type.name}` was removed"
|
52
|
+
"Type `#{removed_type.name}` was removed"
|
53
|
+
end
|
54
|
+
|
55
|
+
def path
|
56
|
+
removed_type.name
|
48
57
|
end
|
49
58
|
end
|
50
59
|
|
@@ -57,7 +66,11 @@ module GraphQL
|
|
57
66
|
end
|
58
67
|
|
59
68
|
def message
|
60
|
-
"`#{directive.name}` was removed"
|
69
|
+
"Directive `#{directive.name}` was removed"
|
70
|
+
end
|
71
|
+
|
72
|
+
def path
|
73
|
+
"@#{directive.name}"
|
61
74
|
end
|
62
75
|
end
|
63
76
|
|
@@ -73,6 +86,10 @@ module GraphQL
|
|
73
86
|
def message
|
74
87
|
"`#{old_type.name}` kind changed from `#{old_type.kind}` to `#{new_type.kind}`"
|
75
88
|
end
|
89
|
+
|
90
|
+
def path
|
91
|
+
old_type.name
|
92
|
+
end
|
76
93
|
end
|
77
94
|
|
78
95
|
class EnumValueRemoved < AbstractChange
|
@@ -87,6 +104,10 @@ module GraphQL
|
|
87
104
|
def message
|
88
105
|
"Enum value `#{enum_value.name}` was removed from enum `#{enum_type.name}`"
|
89
106
|
end
|
107
|
+
|
108
|
+
def path
|
109
|
+
[enum_type.name, enum_value.name].join('.')
|
110
|
+
end
|
90
111
|
end
|
91
112
|
|
92
113
|
class UnionMemberRemoved < AbstractChange
|
@@ -101,6 +122,10 @@ module GraphQL
|
|
101
122
|
def message
|
102
123
|
"Union member `#{union_member.name}` was removed from Union type `#{union_type.name}`"
|
103
124
|
end
|
125
|
+
|
126
|
+
def path
|
127
|
+
union_type.name
|
128
|
+
end
|
104
129
|
end
|
105
130
|
|
106
131
|
class InputFieldRemoved < AbstractChange
|
@@ -115,6 +140,10 @@ module GraphQL
|
|
115
140
|
def message
|
116
141
|
"Input field `#{field.name}` was removed from input object type `#{input_object_type.name}`"
|
117
142
|
end
|
143
|
+
|
144
|
+
def path
|
145
|
+
[input_object_type.name, field.name].join('.')
|
146
|
+
end
|
118
147
|
end
|
119
148
|
|
120
149
|
class FieldArgumentRemoved < AbstractChange
|
@@ -130,6 +159,10 @@ module GraphQL
|
|
130
159
|
def message
|
131
160
|
"Argument `#{argument.name}: #{argument.type}` was removed from field `#{object_type.name}.#{field.name}`"
|
132
161
|
end
|
162
|
+
|
163
|
+
def path
|
164
|
+
[object_type.name, field.name, argument.name].join('.')
|
165
|
+
end
|
133
166
|
end
|
134
167
|
|
135
168
|
class DirectiveArgumentRemoved < AbstractChange
|
@@ -144,6 +177,10 @@ module GraphQL
|
|
144
177
|
def message
|
145
178
|
"Argument `#{argument.name}` was removed from directive `#{directive.name}`"
|
146
179
|
end
|
180
|
+
|
181
|
+
def path
|
182
|
+
["@#{directive.name}", argument.name].join('.')
|
183
|
+
end
|
147
184
|
end
|
148
185
|
|
149
186
|
class SchemaQueryTypeChanged < AbstractChange
|
@@ -158,6 +195,10 @@ module GraphQL
|
|
158
195
|
def message
|
159
196
|
"Schema query root has changed from `#{old_schema.query.name}` to `#{new_schema.query.name}`"
|
160
197
|
end
|
198
|
+
|
199
|
+
def path
|
200
|
+
# TODO
|
201
|
+
end
|
161
202
|
end
|
162
203
|
|
163
204
|
class FieldRemoved < AbstractChange
|
@@ -172,6 +213,10 @@ module GraphQL
|
|
172
213
|
def message
|
173
214
|
"Field `#{field.name}` was removed from object type `#{object_type.name}`"
|
174
215
|
end
|
216
|
+
|
217
|
+
def path
|
218
|
+
[object_type.name, field.name].join('.')
|
219
|
+
end
|
175
220
|
end
|
176
221
|
|
177
222
|
class DirectiveLocationRemoved < AbstractChange
|
@@ -186,6 +231,10 @@ module GraphQL
|
|
186
231
|
def message
|
187
232
|
"Location `#{location}` was removed from directive `#{directive.name}`"
|
188
233
|
end
|
234
|
+
|
235
|
+
def path
|
236
|
+
"@#{directive.name}"
|
237
|
+
end
|
189
238
|
end
|
190
239
|
|
191
240
|
class ObjectTypeInterfaceRemoved < AbstractChange
|
@@ -200,6 +249,10 @@ module GraphQL
|
|
200
249
|
def message
|
201
250
|
"`#{object_type.name}` object type no longer implements `#{interface.name}` interface"
|
202
251
|
end
|
252
|
+
|
253
|
+
def path
|
254
|
+
object_type.name
|
255
|
+
end
|
203
256
|
end
|
204
257
|
|
205
258
|
class FieldTypeChanged < AbstractChange
|
@@ -224,6 +277,10 @@ module GraphQL
|
|
224
277
|
Changes::Criticality.breaking
|
225
278
|
end
|
226
279
|
end
|
280
|
+
|
281
|
+
def path
|
282
|
+
[type.name, old_field.name].join('.')
|
283
|
+
end
|
227
284
|
end
|
228
285
|
|
229
286
|
class InputFieldTypeChanged < AbstractChange
|
@@ -248,6 +305,10 @@ module GraphQL
|
|
248
305
|
def message
|
249
306
|
"Input field `#{input_type}.#{old_input_field.name}` changed type from `#{old_input_field.type}` to `#{new_input_field.type}`"
|
250
307
|
end
|
308
|
+
|
309
|
+
def path
|
310
|
+
[input_type.name, old_input_field.name].join('.')
|
311
|
+
end
|
251
312
|
end
|
252
313
|
|
253
314
|
class FieldArgumentTypeChanged < AbstractChange
|
@@ -274,6 +335,10 @@ module GraphQL
|
|
274
335
|
"Type for argument `#{new_argument.name}` on field `#{type.name}.#{field.name}` changed"\
|
275
336
|
" from `#{old_argument.type}` to `#{new_argument.type}`"
|
276
337
|
end
|
338
|
+
|
339
|
+
def path
|
340
|
+
[type.name, field.name, old_argument.name].join('.')
|
341
|
+
end
|
277
342
|
end
|
278
343
|
|
279
344
|
class DirectiveArgumentTypeChanged < AbstractChange
|
@@ -299,6 +364,10 @@ module GraphQL
|
|
299
364
|
"Type for argument `#{new_argument.name}` on directive `#{directive.name}` changed"\
|
300
365
|
" from `#{old_argument.type}` to `#{new_argument.type}`"
|
301
366
|
end
|
367
|
+
|
368
|
+
def path
|
369
|
+
["@#{directive.name}", old_argument.name].join('.')
|
370
|
+
end
|
302
371
|
end
|
303
372
|
|
304
373
|
class SchemaMutationTypeChanged < AbstractChange
|
@@ -313,6 +382,10 @@ module GraphQL
|
|
313
382
|
def message
|
314
383
|
"Schema mutation root has changed from `#{old_schema.mutation}` to `#{new_schema.mutation}`"
|
315
384
|
end
|
385
|
+
|
386
|
+
def path
|
387
|
+
# TODO
|
388
|
+
end
|
316
389
|
end
|
317
390
|
|
318
391
|
class SchemaSubscriptionTypeChanged < AbstractChange
|
@@ -327,6 +400,10 @@ module GraphQL
|
|
327
400
|
def message
|
328
401
|
"Schema subscription type has changed from `#{old_schema.subscription}` to `#{new_schema.subscription}`"
|
329
402
|
end
|
403
|
+
|
404
|
+
def path
|
405
|
+
# TODO
|
406
|
+
end
|
330
407
|
end
|
331
408
|
|
332
409
|
# Dangerous Changes
|
@@ -353,6 +430,10 @@ module GraphQL
|
|
353
430
|
" from `#{old_argument.default_value}` to `#{new_argument.default_value}`"
|
354
431
|
end
|
355
432
|
end
|
433
|
+
|
434
|
+
def path
|
435
|
+
[type.name, field.name, old_argument.name].join('.')
|
436
|
+
end
|
356
437
|
end
|
357
438
|
|
358
439
|
class InputFieldDefaultChanged < AbstractChange
|
@@ -372,6 +453,10 @@ module GraphQL
|
|
372
453
|
"Input field `#{input_type.name}.#{old_field.name}` default changed"\
|
373
454
|
" from `#{old_field.default_value}` to `#{new_field.default_value}`"
|
374
455
|
end
|
456
|
+
|
457
|
+
def path
|
458
|
+
[input_type.name, old_field.name].join(".")
|
459
|
+
end
|
375
460
|
end
|
376
461
|
|
377
462
|
class DirectiveArgumentDefaultChanged < AbstractChange
|
@@ -391,6 +476,10 @@ module GraphQL
|
|
391
476
|
"Default value for argument `#{new_argument.name}` on directive `#{directive.name}` changed"\
|
392
477
|
" from `#{old_argument.default_value}` to `#{new_argument.default_value}`"
|
393
478
|
end
|
479
|
+
|
480
|
+
def path
|
481
|
+
["@#{directive.name}", new_argument.name].join(".")
|
482
|
+
end
|
394
483
|
end
|
395
484
|
|
396
485
|
class EnumValueAdded < AbstractChange
|
@@ -408,6 +497,10 @@ module GraphQL
|
|
408
497
|
def message
|
409
498
|
"Enum value `#{enum_value.name}` was added to enum `#{enum_type.name}`"
|
410
499
|
end
|
500
|
+
|
501
|
+
def path
|
502
|
+
[enum_type.name, enum_value.name].join(".")
|
503
|
+
end
|
411
504
|
end
|
412
505
|
|
413
506
|
class UnionMemberAdded < AbstractChange
|
@@ -425,6 +518,10 @@ module GraphQL
|
|
425
518
|
def message
|
426
519
|
"Union member `#{union_member.name}` was added to Union type `#{union_type.name}`"
|
427
520
|
end
|
521
|
+
|
522
|
+
def path
|
523
|
+
union_type.name
|
524
|
+
end
|
428
525
|
end
|
429
526
|
|
430
527
|
class ObjectTypeInterfaceAdded < AbstractChange
|
@@ -442,6 +539,10 @@ module GraphQL
|
|
442
539
|
def message
|
443
540
|
"`#{object_type.name}` object implements `#{interface.name}` interface"
|
444
541
|
end
|
542
|
+
|
543
|
+
def path
|
544
|
+
object_type.name
|
545
|
+
end
|
445
546
|
end
|
446
547
|
|
447
548
|
# Mostly Non-Breaking Changes
|
@@ -463,6 +564,10 @@ module GraphQL
|
|
463
564
|
def message
|
464
565
|
"Input field `#{field.name}` was added to input object type `#{input_object_type.name}`"
|
465
566
|
end
|
567
|
+
|
568
|
+
def path
|
569
|
+
[input_object_type.name, field.name].join(".")
|
570
|
+
end
|
466
571
|
end
|
467
572
|
|
468
573
|
class FieldArgumentAdded < AbstractChange
|
@@ -483,6 +588,10 @@ module GraphQL
|
|
483
588
|
def message
|
484
589
|
"Argument `#{argument.name}: #{argument.type}` added to field `#{type.name}.#{field.name}`"
|
485
590
|
end
|
591
|
+
|
592
|
+
def path
|
593
|
+
[type.name, field.name, argument.name].join(".")
|
594
|
+
end
|
486
595
|
end
|
487
596
|
|
488
597
|
class TypeAdded < AbstractChange
|
@@ -496,6 +605,10 @@ module GraphQL
|
|
496
605
|
def message
|
497
606
|
"Type `#{type.name}` was added"
|
498
607
|
end
|
608
|
+
|
609
|
+
def path
|
610
|
+
type.name
|
611
|
+
end
|
499
612
|
end
|
500
613
|
|
501
614
|
class DirectiveAdded < AbstractChange
|
@@ -509,6 +622,10 @@ module GraphQL
|
|
509
622
|
def message
|
510
623
|
"Directive `#{directive.name}` was added"
|
511
624
|
end
|
625
|
+
|
626
|
+
def path
|
627
|
+
"@#{directive.name}"
|
628
|
+
end
|
512
629
|
end
|
513
630
|
|
514
631
|
class TypeDescriptionChanged < AbstractChange
|
@@ -523,6 +640,10 @@ module GraphQL
|
|
523
640
|
def message
|
524
641
|
"Description `#{old_type.description}` on type `#{old_type.name}` has changed to `#{new_type.description}`"
|
525
642
|
end
|
643
|
+
|
644
|
+
def path
|
645
|
+
old_type.name
|
646
|
+
end
|
526
647
|
end
|
527
648
|
|
528
649
|
class EnumValueDescriptionChanged < AbstractChange
|
@@ -539,6 +660,10 @@ module GraphQL
|
|
539
660
|
"Description for enum value `#{enum.name}.#{new_enum_value.name}` changed from " \
|
540
661
|
"`#{old_enum_value.description}` to `#{new_enum_value.description}`"
|
541
662
|
end
|
663
|
+
|
664
|
+
def path
|
665
|
+
[enum.name, old_enum_value.name].join(".")
|
666
|
+
end
|
542
667
|
end
|
543
668
|
|
544
669
|
class EnumValueDeprecated < AbstractChange
|
@@ -560,6 +685,10 @@ module GraphQL
|
|
560
685
|
" `#{new_enum_value.deprecation_reason}`"
|
561
686
|
end
|
562
687
|
end
|
688
|
+
|
689
|
+
def path
|
690
|
+
[enum.name, old_enum_value.name].join(".")
|
691
|
+
end
|
563
692
|
end
|
564
693
|
|
565
694
|
class InputFieldDescriptionChanged < AbstractChange
|
@@ -576,6 +705,10 @@ module GraphQL
|
|
576
705
|
"Input field `#{input_type.name}.#{old_field.name}` description changed"\
|
577
706
|
" from `#{old_field.description}` to `#{new_field.description}`"
|
578
707
|
end
|
708
|
+
|
709
|
+
def path
|
710
|
+
[input_type.name, old_field.name].join(".")
|
711
|
+
end
|
579
712
|
end
|
580
713
|
|
581
714
|
class DirectiveDescriptionChanged < AbstractChange
|
@@ -591,6 +724,10 @@ module GraphQL
|
|
591
724
|
"Directive `#{new_directive.name}` description changed"\
|
592
725
|
" from `#{old_directive.description}` to `#{new_directive.description}`"
|
593
726
|
end
|
727
|
+
|
728
|
+
def path
|
729
|
+
"@#{old_directive.name}"
|
730
|
+
end
|
594
731
|
end
|
595
732
|
|
596
733
|
class FieldDescriptionChanged < AbstractChange
|
@@ -607,6 +744,10 @@ module GraphQL
|
|
607
744
|
"Field `#{type.name}.#{old_field.name}` description changed"\
|
608
745
|
" from `#{old_field.description}` to `#{new_field.description}`"
|
609
746
|
end
|
747
|
+
|
748
|
+
def path
|
749
|
+
[type.name, old_field.name].join(".")
|
750
|
+
end
|
610
751
|
end
|
611
752
|
|
612
753
|
class FieldArgumentDescriptionChanged < AbstractChange
|
@@ -624,6 +765,10 @@ module GraphQL
|
|
624
765
|
"Description for argument `#{new_argument.name}` on field `#{type.name}.#{field.name}` changed"\
|
625
766
|
" from `#{old_argument.description}` to `#{new_argument.description}`"
|
626
767
|
end
|
768
|
+
|
769
|
+
def path
|
770
|
+
[type.name, field.name, old_argument.name].join(".")
|
771
|
+
end
|
627
772
|
end
|
628
773
|
|
629
774
|
class DirectiveArgumentDescriptionChanged < AbstractChange
|
@@ -640,6 +785,10 @@ module GraphQL
|
|
640
785
|
"Description for argument `#{new_argument.name}` on directive `#{directive.name}` changed"\
|
641
786
|
" from `#{old_argument.description}` to `#{new_argument.description}`"
|
642
787
|
end
|
788
|
+
|
789
|
+
def path
|
790
|
+
["@#{directive.name}", old_argument.name].join(".")
|
791
|
+
end
|
643
792
|
end
|
644
793
|
|
645
794
|
class FieldDeprecationChanged < AbstractChange
|
@@ -656,6 +805,10 @@ module GraphQL
|
|
656
805
|
"Deprecation reason on field `#{type.name}.#{new_field.name}` has changed "\
|
657
806
|
"from `#{old_field.deprecation_reason}` to `#{new_field.deprecation_reason}`"
|
658
807
|
end
|
808
|
+
|
809
|
+
def path
|
810
|
+
[type.name, old_field.name].join(".")
|
811
|
+
end
|
659
812
|
end
|
660
813
|
|
661
814
|
class FieldAdded < AbstractChange
|
@@ -671,6 +824,9 @@ module GraphQL
|
|
671
824
|
"Field `#{field.name}` was added to object type `#{object_type.name}`"
|
672
825
|
end
|
673
826
|
|
827
|
+
def path
|
828
|
+
[object_type.name, field.name].join(".")
|
829
|
+
end
|
674
830
|
end
|
675
831
|
|
676
832
|
class DirectiveLocationAdded < AbstractChange
|
@@ -685,6 +841,10 @@ module GraphQL
|
|
685
841
|
def message
|
686
842
|
"Location `#{location}` was added to directive `#{directive.name}`"
|
687
843
|
end
|
844
|
+
|
845
|
+
def path
|
846
|
+
"@#{directive.name}"
|
847
|
+
end
|
688
848
|
end
|
689
849
|
|
690
850
|
# TODO
|
@@ -49,8 +49,8 @@ module GraphQL
|
|
49
49
|
def each_common_argument(&block)
|
50
50
|
intersection = old_arguments.keys & new_arguments.keys
|
51
51
|
intersection.each do |common_arg|
|
52
|
-
old_arg =
|
53
|
-
new_arg =
|
52
|
+
old_arg = old_directive.arguments[common_arg]
|
53
|
+
new_arg = new_directive.arguments[common_arg]
|
54
54
|
|
55
55
|
block.call(old_arg, new_arg)
|
56
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-schema_comparator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc-Andre Giroux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|