stimulus_reflex 3.5.0.pre2 → 3.5.0.pre3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of stimulus_reflex might be problematic. Click here for more details.

Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +56 -11
  3. data/Gemfile.lock +71 -66
  4. data/README.md +4 -3
  5. data/app/channels/stimulus_reflex/channel.rb +11 -11
  6. data/lib/generators/stimulus_reflex/stimulus_reflex_generator.rb +5 -4
  7. data/lib/generators/stimulus_reflex/templates/config/initializers/stimulus_reflex.rb +5 -0
  8. data/lib/stimulus_reflex/broadcasters/broadcaster.rb +18 -17
  9. data/lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb +6 -1
  10. data/lib/stimulus_reflex/broadcasters/page_broadcaster.rb +1 -3
  11. data/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb +2 -6
  12. data/lib/stimulus_reflex/configuration.rb +2 -1
  13. data/lib/stimulus_reflex/dataset.rb +34 -0
  14. data/lib/stimulus_reflex/element.rb +12 -46
  15. data/lib/stimulus_reflex/reflex.rb +7 -2
  16. data/lib/stimulus_reflex/utils/attribute_builder.rb +17 -0
  17. data/lib/stimulus_reflex/utils/logger.rb +6 -2
  18. data/lib/stimulus_reflex/version.rb +1 -1
  19. data/lib/tasks/stimulus_reflex/install.rake +1 -1
  20. data/test/broadcasters/broadcaster_test.rb +0 -1
  21. data/test/broadcasters/broadcaster_test_case.rb +24 -0
  22. data/test/broadcasters/nothing_broadcaster_test.rb +14 -22
  23. data/test/broadcasters/page_broadcaster_test.rb +30 -32
  24. data/test/broadcasters/selector_broadcaster_test.rb +82 -88
  25. data/test/element_test.rb +73 -0
  26. data/test/generators/stimulus_reflex_generator_test.rb +8 -0
  27. data/test/reflex_test.rb +11 -0
  28. data/test/test_helper.rb +3 -1
  29. data/test/tmp/app/reflexes/demo_reflex.rb +0 -1
  30. metadata +36 -20
  31. data/package.json +0 -58
  32. data/stimulus_reflex.gemspec +0 -42
  33. data/yarn.lock +0 -4680
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83e2bc40ea2d2f8edb1e3b4aa6ca0a9ac72a1ef9aa16d55ef117ff90af37ee36
4
- data.tar.gz: 3b7d7f4bd6b4696420f4c581468cb0d62c6ac82fa5fa5762920182932d8dbeed
3
+ metadata.gz: de74a55565a28991a825bcc37db07d7e2fc9335bf68c29fec27610f311060ee4
4
+ data.tar.gz: d178376b89fa7a061c71d6346189094831bb53c143c5e99c62ab3128fb70138a
5
5
  SHA512:
6
- metadata.gz: fe9f56ae6a2423d27d244004d6098305434f40d8062c23024a650fc4796800491328dd954f69ba2f977f8c24208ab3d812b7c7144ae4d762c2bd4411a7df8f3a
7
- data.tar.gz: 90e5126b4caec44b433e54232ed0ea7e79341ed311e7d75a66cab57aa067920f682ff210a1a2600d27a0f9bedc22c9ae5447a2dc8e9dbc55990d5a24ea88b802
6
+ metadata.gz: e90fdee9c58d66893eb1af762848b0c8f81972de1198f947ca10e0224092c674b5008289cade3639568df44ab735ac1c6b95547c932d66a8ce707c6fb0a5f428
7
+ data.tar.gz: 5956987432927c7af475e524886354eda2439c8dd3793d135e8c63d1aab4a46d21edfab80a66c6315081daba07efa4f52bce33f3a5fdca8195a38c76df2e522d
data/CHANGELOG.md CHANGED
@@ -2,7 +2,44 @@
2
2
 
3
3
  ## [Unreleased](https://github.com/stimulusreflex/stimulus_reflex/tree/HEAD)
4
4
 
5
- [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v3.5.0.pre1...HEAD)
5
+ [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v3.5.0.pre2...HEAD)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Allow to skip stages in the generator [\#541](https://github.com/stimulusreflex/stimulus_reflex/issues/541)
10
+ - reverse merge params into locals [\#542](https://github.com/stimulusreflex/stimulus_reflex/pull/542) ([leastbad](https://github.com/leastbad))
11
+ - specify env headers for page morph controller [\#538](https://github.com/stimulusreflex/stimulus_reflex/pull/538) ([leastbad](https://github.com/leastbad))
12
+ - New CR wire format + reworked server message events [\#536](https://github.com/stimulusreflex/stimulus_reflex/pull/536) ([leastbad](https://github.com/leastbad))
13
+ - reflex render layout defaults to false [\#534](https://github.com/stimulusreflex/stimulus_reflex/pull/534) ([leastbad](https://github.com/leastbad))
14
+
15
+ **Closed issues:**
16
+
17
+ - Controller action being re-run is different from expected. [\#540](https://github.com/stimulusreflex/stimulus_reflex/issues/540)
18
+ - The ActionCable channel subscription for StimulusReflex gets rejected when interacting too fast [\#539](https://github.com/stimulusreflex/stimulus_reflex/issues/539)
19
+ - Stimulus reflex not working making server to stop on ruby on rails [\#533](https://github.com/stimulusreflex/stimulus_reflex/issues/533)
20
+
21
+ **Merged pull requests:**
22
+
23
+ - Bump nokogiri from 1.12.3 to 1.12.5 [\#548](https://github.com/stimulusreflex/stimulus_reflex/pull/548) ([dependabot[bot]](https://github.com/apps/dependabot))
24
+ - Add test for param behavior [\#545](https://github.com/stimulusreflex/stimulus_reflex/pull/545) ([julianrubisch](https://github.com/julianrubisch))
25
+ - Add generator options to skip reflex and stimulus [\#543](https://github.com/stimulusreflex/stimulus_reflex/pull/543) ([nachiket87](https://github.com/nachiket87))
26
+ - Fix comment [\#537](https://github.com/stimulusreflex/stimulus_reflex/pull/537) ([julianrubisch](https://github.com/julianrubisch))
27
+ - add first line of stacktrace to console.log error in dev environment [\#532](https://github.com/stimulusreflex/stimulus_reflex/pull/532) ([RolandStuder](https://github.com/RolandStuder))
28
+ - Add test for `data-reflex-dataset="descendants"` [\#531](https://github.com/stimulusreflex/stimulus_reflex/pull/531) ([assuntaw](https://github.com/assuntaw))
29
+ - Provide proxy methods boolean and numeric on Element [\#528](https://github.com/stimulusreflex/stimulus_reflex/pull/528) ([julianrubisch](https://github.com/julianrubisch))
30
+
31
+ ## [v3.5.0.pre2](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.5.0.pre2) (2021-07-21)
32
+
33
+ [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v3.5.0.pre1...v3.5.0.pre2)
34
+
35
+ **Implemented enhancements:**
36
+
37
+ - Optionally provide innerHtml and textContent on StimulusReflex::Element [\#517](https://github.com/stimulusreflex/stimulus_reflex/pull/517) ([julianrubisch](https://github.com/julianrubisch))
38
+
39
+ **Fixed bugs:**
40
+
41
+ - Sanity checker should not abort stimulus\_reflex install task [\#508](https://github.com/stimulusreflex/stimulus_reflex/issues/508)
42
+ - Improve install experience [\#510](https://github.com/stimulusreflex/stimulus_reflex/pull/510) ([leastbad](https://github.com/leastbad))
6
43
 
7
44
  **Closed issues:**
8
45
 
@@ -12,10 +49,13 @@
12
49
 
13
50
  **Merged pull requests:**
14
51
 
52
+ - Specify form selector [\#527](https://github.com/stimulusreflex/stimulus_reflex/pull/527) ([julianrubisch](https://github.com/julianrubisch))
15
53
  - Fix two minor typos [\#526](https://github.com/stimulusreflex/stimulus_reflex/pull/526) ([julianrubisch](https://github.com/julianrubisch))
16
54
  - chore: add sideEffects false to make Webpack happy [\#523](https://github.com/stimulusreflex/stimulus_reflex/pull/523) ([ParamagicDev](https://github.com/ParamagicDev))
55
+ - Morph stimulus reflex element AKA "single element page morph" [\#522](https://github.com/stimulusreflex/stimulus_reflex/pull/522) ([julianrubisch](https://github.com/julianrubisch))
17
56
  - Add localization example to ApplicationReflex template [\#521](https://github.com/stimulusreflex/stimulus_reflex/pull/521) ([erlingur](https://github.com/erlingur))
18
57
  - refactor stream\_name [\#519](https://github.com/stimulusreflex/stimulus_reflex/pull/519) ([leastbad](https://github.com/leastbad))
58
+ - Schema object with getters [\#505](https://github.com/stimulusreflex/stimulus_reflex/pull/505) ([leastbad](https://github.com/leastbad))
19
59
 
20
60
  ## [v3.5.0.pre1](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.5.0.pre1) (2021-06-02)
21
61
 
@@ -125,6 +165,7 @@
125
165
  - Extract RequestParameters class [\#451](https://github.com/stimulusreflex/stimulus_reflex/pull/451) ([julianrubisch](https://github.com/julianrubisch))
126
166
  - run changelog action not on every single push to master [\#450](https://github.com/stimulusreflex/stimulus_reflex/pull/450) ([marcoroth](https://github.com/marcoroth))
127
167
  - Extract method invocation policy [\#448](https://github.com/stimulusreflex/stimulus_reflex/pull/448) ([julianrubisch](https://github.com/julianrubisch))
168
+ - remove unnecessary gate [\#439](https://github.com/stimulusreflex/stimulus_reflex/pull/439) ([leastbad](https://github.com/leastbad))
128
169
 
129
170
  ## [v3.4.1](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.4.1) (2021-01-26)
130
171
 
@@ -137,7 +178,7 @@
137
178
  **Fixed bugs:**
138
179
 
139
180
  - life-cycle callbacks return correct element reference [\#431](https://github.com/stimulusreflex/stimulus_reflex/pull/431) ([leastbad](https://github.com/leastbad))
140
- - Bug fix: Updating changelog generator to push to master, not main [\#416](https://github.com/stimulusreflex/stimulus_reflex/pull/416) ([MikeRogers0](https://github.com/MikeRogers0))
181
+ - encode form data for chars like '&' and '=' [\#418](https://github.com/stimulusreflex/stimulus_reflex/pull/418) ([RolandStuder](https://github.com/RolandStuder))
141
182
  - Prefix dom\_id with hash/pound [\#410](https://github.com/stimulusreflex/stimulus_reflex/pull/410) ([hopsoft](https://github.com/hopsoft))
142
183
 
143
184
  **Closed issues:**
@@ -150,7 +191,6 @@
150
191
 
151
192
  **Merged pull requests:**
152
193
 
153
- - remove unnecessary gate [\#439](https://github.com/stimulusreflex/stimulus_reflex/pull/439) ([leastbad](https://github.com/leastbad))
154
194
  - Extract callbacks to module [\#427](https://github.com/stimulusreflex/stimulus_reflex/pull/427) ([julianrubisch](https://github.com/julianrubisch))
155
195
  - Fixes bug where multiple inputs with the same name lost element value [\#426](https://github.com/stimulusreflex/stimulus_reflex/pull/426) ([jonsgreen](https://github.com/jonsgreen))
156
196
  - Add general policy for CoC enforcement [\#424](https://github.com/stimulusreflex/stimulus_reflex/pull/424) ([hopsoft](https://github.com/hopsoft))
@@ -179,7 +219,7 @@
179
219
 
180
220
  **Fixed bugs:**
181
221
 
182
- - encode form data for chars like '&' and '=' [\#418](https://github.com/stimulusreflex/stimulus_reflex/pull/418) ([RolandStuder](https://github.com/RolandStuder))
222
+ - Bug fix: Updating changelog generator to push to master, not main [\#416](https://github.com/stimulusreflex/stimulus_reflex/pull/416) ([MikeRogers0](https://github.com/MikeRogers0))
183
223
  - fix up install task [\#401](https://github.com/stimulusreflex/stimulus_reflex/pull/401) ([leastbad](https://github.com/leastbad))
184
224
  - Fix multiple broadcasts from within the same reflex [\#400](https://github.com/stimulusreflex/stimulus_reflex/pull/400) ([hopsoft](https://github.com/hopsoft))
185
225
 
@@ -376,6 +416,7 @@
376
416
 
377
417
  **Merged pull requests:**
378
418
 
419
+ - fixes and tweaks to client logging subsystem [\#313](https://github.com/stimulusreflex/stimulus_reflex/pull/313) ([leastbad](https://github.com/leastbad))
379
420
  - add ready event after setupDeclarativeReflexes [\#312](https://github.com/stimulusreflex/stimulus_reflex/pull/312) ([leastbad](https://github.com/leastbad))
380
421
  - Refactor sanity checks on boot [\#311](https://github.com/stimulusreflex/stimulus_reflex/pull/311) ([excid3](https://github.com/excid3))
381
422
 
@@ -395,7 +436,6 @@
395
436
 
396
437
  **Merged pull requests:**
397
438
 
398
- - fixes and tweaks to client logging subsystem [\#313](https://github.com/stimulusreflex/stimulus_reflex/pull/313) ([leastbad](https://github.com/leastbad))
399
439
  - Support IE11 msCrypto \(\#308\) [\#310](https://github.com/stimulusreflex/stimulus_reflex/pull/310) ([chooselife22](https://github.com/chooselife22))
400
440
  - Print warning and exit if caching is disabled or npm/gem versions are mismatched [\#309](https://github.com/stimulusreflex/stimulus_reflex/pull/309) ([excid3](https://github.com/excid3))
401
441
  - ActionCable connectivity events [\#307](https://github.com/stimulusreflex/stimulus_reflex/pull/307) ([leastbad](https://github.com/leastbad))
@@ -496,7 +536,6 @@
496
536
  **Fixed bugs:**
497
537
 
498
538
  - Limit MutationObserver mutations [\#256](https://github.com/stimulusreflex/stimulus_reflex/pull/256) ([jasoncharnes](https://github.com/jasoncharnes))
499
- - Add more smarts to \_\_perform [\#235](https://github.com/stimulusreflex/stimulus_reflex/pull/235) ([hopsoft](https://github.com/hopsoft))
500
539
 
501
540
  **Closed issues:**
502
541
 
@@ -525,6 +564,7 @@
525
564
  - Revert "Add instructions for pulling the user id out of session storage" [\#239](https://github.com/stimulusreflex/stimulus_reflex/pull/239) ([leastbad](https://github.com/leastbad))
526
565
  - Add instructions for pulling the user id out of session storage [\#238](https://github.com/stimulusreflex/stimulus_reflex/pull/238) ([mtomov](https://github.com/mtomov))
527
566
  - adds params documentation [\#230](https://github.com/stimulusreflex/stimulus_reflex/pull/230) ([RolandStuder](https://github.com/RolandStuder))
567
+ - Fix calling wrong controller lifecycle methods [\#226](https://github.com/stimulusreflex/stimulus_reflex/pull/226) ([davidalejandroaguilar](https://github.com/davidalejandroaguilar))
528
568
  - Allow to pass reflex action names to reflex generator [\#224](https://github.com/stimulusreflex/stimulus_reflex/pull/224) ([marcoroth](https://github.com/marcoroth))
529
569
 
530
570
  ## [v3.2.3](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.2.3) (2020-06-15)
@@ -533,6 +573,7 @@
533
573
 
534
574
  **Fixed bugs:**
535
575
 
576
+ - Add more smarts to \_\_perform [\#235](https://github.com/stimulusreflex/stimulus_reflex/pull/235) ([hopsoft](https://github.com/hopsoft))
536
577
  - \_\_perform had a bug where it was only ever calling the first event [\#234](https://github.com/stimulusreflex/stimulus_reflex/pull/234) ([leastbad](https://github.com/leastbad))
537
578
  - merges insteads of overwrites params for reflex actions with form data [\#231](https://github.com/stimulusreflex/stimulus_reflex/pull/231) ([RolandStuder](https://github.com/RolandStuder))
538
579
 
@@ -543,7 +584,6 @@
543
584
  **Merged pull requests:**
544
585
 
545
586
  - Fix typos in the documentation [\#228](https://github.com/stimulusreflex/stimulus_reflex/pull/228) ([dlt](https://github.com/dlt))
546
- - Always commit session [\#222](https://github.com/stimulusreflex/stimulus_reflex/pull/222) ([hopsoft](https://github.com/hopsoft))
547
587
 
548
588
  ## [v3.2.2](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.2.2) (2020-06-06)
549
589
 
@@ -564,7 +604,6 @@
564
604
 
565
605
  **Merged pull requests:**
566
606
 
567
- - Fix calling wrong controller lifecycle methods [\#226](https://github.com/stimulusreflex/stimulus_reflex/pull/226) ([davidalejandroaguilar](https://github.com/davidalejandroaguilar))
568
607
  - Always commit session [\#222](https://github.com/stimulusreflex/stimulus_reflex/pull/222) ([hopsoft](https://github.com/hopsoft))
569
608
 
570
609
  ## [v3.2.2.pre0](https://github.com/stimulusreflex/stimulus_reflex/tree/v3.2.2.pre0) (2020-05-27)
@@ -671,7 +710,6 @@
671
710
  - Possible bug when about to perform cableready operations [\#166](https://github.com/stimulusreflex/stimulus_reflex/issues/166)
672
711
  - Reflex not binding to ajax loaded content [\#161](https://github.com/stimulusreflex/stimulus_reflex/issues/161)
673
712
  - Input field values sometimes remain [\#159](https://github.com/stimulusreflex/stimulus_reflex/issues/159)
674
- - remove changelog rake task [\#150](https://github.com/stimulusreflex/stimulus_reflex/pull/150) ([andrewmcodes](https://github.com/andrewmcodes))
675
713
 
676
714
  **Closed issues:**
677
715
 
@@ -721,6 +759,7 @@
721
759
  **Fixed bugs:**
722
760
 
723
761
  - Cannot read property 'removeEventListener' of undefined after updating to 3.1.0 [\#151](https://github.com/stimulusreflex/stimulus_reflex/issues/151)
762
+ - remove changelog rake task [\#150](https://github.com/stimulusreflex/stimulus_reflex/pull/150) ([andrewmcodes](https://github.com/andrewmcodes))
724
763
 
725
764
  **Closed issues:**
726
765
 
@@ -802,6 +841,10 @@
802
841
 
803
842
  [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v2.2.0...v2.2.1)
804
843
 
844
+ **Fixed bugs:**
845
+
846
+ - Cleanup and fixes around lifecycle dispatch [\#121](https://github.com/stimulusreflex/stimulus_reflex/pull/121) ([hopsoft](https://github.com/hopsoft))
847
+
805
848
  ## [v2.2.0](https://github.com/stimulusreflex/stimulus_reflex/tree/v2.2.0) (2020-02-28)
806
849
 
807
850
  [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v2.1.9...v2.2.0)
@@ -823,6 +866,10 @@
823
866
 
824
867
  [Full Changelog](https://github.com/stimulusreflex/stimulus_reflex/compare/v2.1.7...v2.1.8)
825
868
 
869
+ **Implemented enhancements:**
870
+
871
+ - More defense in the received handler [\#107](https://github.com/stimulusreflex/stimulus_reflex/pull/107) ([hopsoft](https://github.com/hopsoft))
872
+
826
873
  **Fixed bugs:**
827
874
 
828
875
  - Fix bug related to trailing slash in URL path [\#111](https://github.com/stimulusreflex/stimulus_reflex/pull/111) ([hopsoft](https://github.com/hopsoft))
@@ -865,7 +912,6 @@
865
912
 
866
913
  **Fixed bugs:**
867
914
 
868
- - Cleanup and fixes around lifecycle dispatch [\#121](https://github.com/stimulusreflex/stimulus_reflex/pull/121) ([hopsoft](https://github.com/hopsoft))
869
915
  - Use application.js as fallback file path [\#82](https://github.com/stimulusreflex/stimulus_reflex/pull/82) ([julianrubisch](https://github.com/julianrubisch))
870
916
 
871
917
  **Closed issues:**
@@ -881,7 +927,6 @@
881
927
 
882
928
  **Implemented enhancements:**
883
929
 
884
- - More defense in the received handler [\#107](https://github.com/stimulusreflex/stimulus_reflex/pull/107) ([hopsoft](https://github.com/hopsoft))
885
930
  - Add CodeFund sponsorship [\#75](https://github.com/stimulusreflex/stimulus_reflex/pull/75) ([coderberry](https://github.com/coderberry))
886
931
 
887
932
  **Fixed bugs:**
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stimulus_reflex (3.5.0.pre2)
5
- cable_ready (= 5.0.0.pre2)
4
+ stimulus_reflex (3.5.0.pre3)
5
+ cable_ready (= 5.0.0.pre4)
6
6
  nokogiri
7
7
  rack
8
8
  rails (>= 5.2)
@@ -11,60 +11,60 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- actioncable (6.1.4)
15
- actionpack (= 6.1.4)
16
- activesupport (= 6.1.4)
14
+ actioncable (6.1.4.1)
15
+ actionpack (= 6.1.4.1)
16
+ activesupport (= 6.1.4.1)
17
17
  nio4r (~> 2.0)
18
18
  websocket-driver (>= 0.6.1)
19
- actionmailbox (6.1.4)
20
- actionpack (= 6.1.4)
21
- activejob (= 6.1.4)
22
- activerecord (= 6.1.4)
23
- activestorage (= 6.1.4)
24
- activesupport (= 6.1.4)
19
+ actionmailbox (6.1.4.1)
20
+ actionpack (= 6.1.4.1)
21
+ activejob (= 6.1.4.1)
22
+ activerecord (= 6.1.4.1)
23
+ activestorage (= 6.1.4.1)
24
+ activesupport (= 6.1.4.1)
25
25
  mail (>= 2.7.1)
26
- actionmailer (6.1.4)
27
- actionpack (= 6.1.4)
28
- actionview (= 6.1.4)
29
- activejob (= 6.1.4)
30
- activesupport (= 6.1.4)
26
+ actionmailer (6.1.4.1)
27
+ actionpack (= 6.1.4.1)
28
+ actionview (= 6.1.4.1)
29
+ activejob (= 6.1.4.1)
30
+ activesupport (= 6.1.4.1)
31
31
  mail (~> 2.5, >= 2.5.4)
32
32
  rails-dom-testing (~> 2.0)
33
- actionpack (6.1.4)
34
- actionview (= 6.1.4)
35
- activesupport (= 6.1.4)
33
+ actionpack (6.1.4.1)
34
+ actionview (= 6.1.4.1)
35
+ activesupport (= 6.1.4.1)
36
36
  rack (~> 2.0, >= 2.0.9)
37
37
  rack-test (>= 0.6.3)
38
38
  rails-dom-testing (~> 2.0)
39
39
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
40
- actiontext (6.1.4)
41
- actionpack (= 6.1.4)
42
- activerecord (= 6.1.4)
43
- activestorage (= 6.1.4)
44
- activesupport (= 6.1.4)
40
+ actiontext (6.1.4.1)
41
+ actionpack (= 6.1.4.1)
42
+ activerecord (= 6.1.4.1)
43
+ activestorage (= 6.1.4.1)
44
+ activesupport (= 6.1.4.1)
45
45
  nokogiri (>= 1.8.5)
46
- actionview (6.1.4)
47
- activesupport (= 6.1.4)
46
+ actionview (6.1.4.1)
47
+ activesupport (= 6.1.4.1)
48
48
  builder (~> 3.1)
49
49
  erubi (~> 1.4)
50
50
  rails-dom-testing (~> 2.0)
51
51
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
52
- activejob (6.1.4)
53
- activesupport (= 6.1.4)
52
+ activejob (6.1.4.1)
53
+ activesupport (= 6.1.4.1)
54
54
  globalid (>= 0.3.6)
55
- activemodel (6.1.4)
56
- activesupport (= 6.1.4)
57
- activerecord (6.1.4)
58
- activemodel (= 6.1.4)
59
- activesupport (= 6.1.4)
60
- activestorage (6.1.4)
61
- actionpack (= 6.1.4)
62
- activejob (= 6.1.4)
63
- activerecord (= 6.1.4)
64
- activesupport (= 6.1.4)
55
+ activemodel (6.1.4.1)
56
+ activesupport (= 6.1.4.1)
57
+ activerecord (6.1.4.1)
58
+ activemodel (= 6.1.4.1)
59
+ activesupport (= 6.1.4.1)
60
+ activestorage (6.1.4.1)
61
+ actionpack (= 6.1.4.1)
62
+ activejob (= 6.1.4.1)
63
+ activerecord (= 6.1.4.1)
64
+ activesupport (= 6.1.4.1)
65
65
  marcel (~> 1.0.0)
66
66
  mini_mime (>= 1.1.0)
67
- activesupport (6.1.4)
67
+ activesupport (6.1.4.1)
68
68
  concurrent-ruby (~> 1.0, >= 1.0.2)
69
69
  i18n (>= 1.6, < 2)
70
70
  minitest (>= 5.1)
@@ -72,30 +72,33 @@ GEM
72
72
  zeitwerk (~> 2.3)
73
73
  ast (2.4.2)
74
74
  builder (3.2.4)
75
- cable_ready (5.0.0.pre2)
75
+ cable_ready (5.0.0.pre4)
76
76
  rails (>= 5.2)
77
77
  thread-local (>= 1.1.0)
78
78
  coderay (1.1.3)
79
79
  concurrent-ruby (1.1.9)
80
80
  crass (1.0.6)
81
81
  erubi (1.10.0)
82
- globalid (0.4.2)
83
- activesupport (>= 4.2.0)
82
+ globalid (0.5.2)
83
+ activesupport (>= 5.0)
84
84
  i18n (1.8.10)
85
85
  concurrent-ruby (~> 1.0)
86
- loofah (2.10.0)
86
+ loofah (2.12.0)
87
87
  crass (~> 1.0.2)
88
88
  nokogiri (>= 1.5.9)
89
89
  mail (2.7.1)
90
90
  mini_mime (>= 0.1.1)
91
- marcel (1.0.1)
91
+ marcel (1.0.2)
92
92
  method_source (0.9.2)
93
- mini_mime (1.1.0)
93
+ mini_mime (1.1.1)
94
94
  minitest (5.14.4)
95
- nio4r (2.5.7)
96
- nokogiri (1.11.7-arm64-darwin)
95
+ mocha (1.13.0)
96
+ nio4r (2.5.8)
97
+ nokogiri (1.12.5-arm64-darwin)
98
+ racc (~> 1.4)
99
+ nokogiri (1.12.5-x86_64-darwin)
97
100
  racc (~> 1.4)
98
- nokogiri (1.11.7-x86_64-linux)
101
+ nokogiri (1.12.5-x86_64-linux)
99
102
  racc (~> 1.4)
100
103
  parallel (1.20.1)
101
104
  parser (3.0.2.0)
@@ -109,35 +112,35 @@ GEM
109
112
  rack (2.2.3)
110
113
  rack-test (1.1.0)
111
114
  rack (>= 1.0, < 3)
112
- rails (6.1.4)
113
- actioncable (= 6.1.4)
114
- actionmailbox (= 6.1.4)
115
- actionmailer (= 6.1.4)
116
- actionpack (= 6.1.4)
117
- actiontext (= 6.1.4)
118
- actionview (= 6.1.4)
119
- activejob (= 6.1.4)
120
- activemodel (= 6.1.4)
121
- activerecord (= 6.1.4)
122
- activestorage (= 6.1.4)
123
- activesupport (= 6.1.4)
115
+ rails (6.1.4.1)
116
+ actioncable (= 6.1.4.1)
117
+ actionmailbox (= 6.1.4.1)
118
+ actionmailer (= 6.1.4.1)
119
+ actionpack (= 6.1.4.1)
120
+ actiontext (= 6.1.4.1)
121
+ actionview (= 6.1.4.1)
122
+ activejob (= 6.1.4.1)
123
+ activemodel (= 6.1.4.1)
124
+ activerecord (= 6.1.4.1)
125
+ activestorage (= 6.1.4.1)
126
+ activesupport (= 6.1.4.1)
124
127
  bundler (>= 1.15.0)
125
- railties (= 6.1.4)
128
+ railties (= 6.1.4.1)
126
129
  sprockets-rails (>= 2.0.0)
127
130
  rails-dom-testing (2.0.3)
128
131
  activesupport (>= 4.2.0)
129
132
  nokogiri (>= 1.6)
130
- rails-html-sanitizer (1.3.0)
133
+ rails-html-sanitizer (1.4.2)
131
134
  loofah (~> 2.3)
132
- railties (6.1.4)
133
- actionpack (= 6.1.4)
134
- activesupport (= 6.1.4)
135
+ railties (6.1.4.1)
136
+ actionpack (= 6.1.4.1)
137
+ activesupport (= 6.1.4.1)
135
138
  method_source
136
139
  rake (>= 0.13)
137
140
  thor (~> 1.0)
138
141
  rainbow (3.0.0)
139
142
  rake (13.0.6)
140
- redis (4.3.1)
143
+ redis (4.4.0)
141
144
  regexp_parser (2.1.1)
142
145
  rexml (3.2.5)
143
146
  rubocop (1.18.3)
@@ -179,10 +182,12 @@ GEM
179
182
 
180
183
  PLATFORMS
181
184
  arm64-darwin-20
185
+ x86_64-darwin-19
182
186
  x86_64-linux
183
187
 
184
188
  DEPENDENCIES
185
189
  bundler (~> 2.0)
190
+ mocha
186
191
  pry
187
192
  pry-nav
188
193
  rake
data/README.md CHANGED
@@ -69,13 +69,14 @@ This project strives to live up to the vision outlined in [The Rails Doctrine](h
69
69
 
70
70
  ## ✨ Demos
71
71
 
72
- - [StimulusReflex Expo](http://expo.stimulusreflex.com) - part showcase, part learning tool
73
72
  - [Build a Twitter Clone in 10 Minutes](https://youtu.be/F5hA79vKE_E) (video)
73
+ - [BeastMode](https://beastmode.leastbad.com/) - faceted search, with filtering, sorting and pagination
74
+ - [StimulusReflex Patterns](https://www.stimulusreflexpatterns.com/patterns/) - single-file SR apps hosted on Glitch
74
75
  - [BoxDrop](https://dropbox-clone-rails.herokuapp.com/) - a Dropbox-inspired [concept demo](https://github.com/marcoroth/boxdrop/)
75
76
 
76
77
  ## 👩‍👩‍👧 Discord Community
77
78
 
78
- Please join over 1300 of us on [Discord](https://discord.gg/stimulus-reflex) for support getting started, as well as active discussions around Rails, StimulusJS and CableReady.
79
+ Please join over 1500 of us on [Discord](https://discord.gg/stimulus-reflex) for support getting started, as well as active discussions around Rails, StimulusJS and CableReady.
79
80
 
80
81
  ![](https://img.shields.io/discord/629472241427415060)
81
82
 
@@ -89,7 +90,7 @@ Please note that we are not actively providing support on Stack Overflow. If you
89
90
 
90
91
  ## 🚀 Installation and upgrading
91
92
 
92
- CLI and manual setup procedures are fully detailed in the [official docs](https://docs.stimulusreflex.com/setup). For information on upgrading existing projects to v3.4, read [this](https://docs.stimulusreflex.com/setup#upgrading-to-v-3-4-0).
93
+ CLI and manual setup procedures are fully detailed in the [official docs](https://docs.stimulusreflex.com/setup). For information on upgrading existing projects to v3.4, read [this](https://docs.stimulusreflex.com/hello-world/setup#upgrading-to-v-3-4-0).
93
94
 
94
95
  ## 🙏 Contributing
95
96
 
@@ -24,15 +24,15 @@ class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.cons
24
24
 
25
25
  if reflex
26
26
  reflex.rescue_with_handler(exception)
27
- puts error_message
28
- reflex.broadcast_message subject: "error", data: data, error: exception
27
+ reflex.logger&.error error_message
28
+ reflex.error data: data, body: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
29
29
  else
30
- puts error_message
30
+ reflex.logger&.error error_message
31
31
 
32
32
  if body.to_s.include? "No route matches"
33
33
  initializer_path = Rails.root.join("config", "initializers", "stimulus_reflex.rb")
34
34
 
35
- puts <<~NOTE
35
+ reflex.logger&.warn <<~NOTE
36
36
  \e[33mNOTE: StimulusReflex failed to locate a matching route and could not re-render the page.
37
37
 
38
38
  If your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
@@ -54,22 +54,22 @@ class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.cons
54
54
  end
55
55
 
56
56
  if reflex.halted?
57
- reflex.broadcast_message subject: "halted", data: data
57
+ reflex.halted data: data
58
58
  else
59
59
  begin
60
60
  reflex.broadcast(reflex_data.selectors, data)
61
61
  rescue => exception
62
62
  reflex.rescue_with_handler(exception)
63
63
  error = exception_with_backtrace(exception)
64
- reflex.broadcast_message subject: "error", data: data, error: exception
65
- puts "\e[31mReflex failed to re-render: #{error[:message]} [#{reflex_data.url}]\e[0m\n#{error[:stack]}"
64
+ reflex.error data: data, body: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
65
+ reflex.logger&.error "\e[31mReflex failed to re-render: #{error[:message]} [#{reflex_data.url}]\e[0m\n#{error[:stack]}"
66
66
  end
67
67
  end
68
68
  ensure
69
69
  if reflex
70
70
  commit_session(reflex)
71
71
  report_failed_basic_auth(reflex) if reflex.controller?
72
- reflex.logger&.print
72
+ reflex.logger&.log_all_operations
73
73
  end
74
74
  end
75
75
  end
@@ -97,19 +97,19 @@ class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.cons
97
97
  store.commit_session reflex.request, reflex.controller.response
98
98
  rescue => exception
99
99
  error = exception_with_backtrace(exception)
100
- puts "\e[31mFailed to commit session! #{error[:message]}\e[0m\n#{error[:backtrace]}"
100
+ reflex.logger&.error "\e[31mFailed to commit session! #{error[:message]}\e[0m\n#{error[:backtrace]}"
101
101
  end
102
102
 
103
103
  def report_failed_basic_auth(reflex)
104
104
  if reflex.controller.response.status == 401
105
- puts "\e[31mReflex failed to process controller action \"#{reflex.controller.class}##{reflex.controller.action_name}\" due to HTTP basic auth. Consider adding \"unless: -> { @stimulus_reflex }\" to the before_action or method responible for authentication.\e[0m"
105
+ reflex.logger&.error "\e[31mReflex failed to process controller action \"#{reflex.controller.class}##{reflex.controller.action_name}\" due to HTTP basic auth. Consider adding \"unless: -> { @stimulus_reflex }\" to the before_action or method responible for authentication.\e[0m"
106
106
  end
107
107
  end
108
108
 
109
109
  def exception_with_backtrace(exception)
110
110
  {
111
111
  message: exception.to_s,
112
- backtrace: exception.backtrace.first,
112
+ backtrace: exception.backtrace.first.split(":in ")[0],
113
113
  stack: exception.backtrace.join("\n")
114
114
  }
115
115
  end
@@ -7,20 +7,21 @@ class StimulusReflexGenerator < Rails::Generators::NamedBase
7
7
 
8
8
  argument :name, type: :string, required: true, banner: "NAME"
9
9
  argument :actions, type: :array, default: [], banner: "action action"
10
+ class_options skip_stimulus: false, skip_app_reflex: false, skip_reflex: false, skip_app_controller: false
10
11
 
11
12
  def execute
12
13
  actions.map!(&:underscore)
13
14
 
14
15
  copy_application_files if behavior == :invoke
15
16
 
16
- template "app/reflexes/%file_name%_reflex.rb"
17
- template "app/javascript/controllers/%file_name%_controller.js"
17
+ template "app/reflexes/%file_name%_reflex.rb" unless options[:skip_reflex]
18
+ template "app/javascript/controllers/%file_name%_controller.js" unless options[:skip_stimulus]
18
19
  end
19
20
 
20
21
  private
21
22
 
22
23
  def copy_application_files
23
- template "app/reflexes/application_reflex.rb"
24
- template "app/javascript/controllers/application_controller.js"
24
+ template "app/reflexes/application_reflex.rb" unless options[:skip_app_reflex]
25
+ template "app/javascript/controllers/application_controller.js" unless options[:skip_app_controller]
25
26
  end
26
27
  end
@@ -25,6 +25,11 @@ StimulusReflex.configure do |config|
25
25
 
26
26
  # config.parent_channel = "ApplicationCable::Channel"
27
27
 
28
+ # Override the logger that the StimulusReflex uses; default is Rails' logger
29
+ # eg. Logger.new(RAILS_ROOT + "/log/reflex.log")
30
+
31
+ # config.logger = Rails.logger
32
+
28
33
  # Customize server-side Reflex logging format, with optional colorization:
29
34
  # Available tokens: session_id, session_id_full, reflex_info, operation, reflex_id, reflex_id_full, mode, selector, operation_counter, connection_id, connection_id_full, timestamp
30
35
  # Available colors: red, green, yellow, blue, magenta, cyan, white
@@ -26,33 +26,34 @@ module StimulusReflex
26
26
  false
27
27
  end
28
28
 
29
- def broadcast_message(subject:, data: {}, error: nil)
29
+ def halted(data: {})
30
30
  operations << ["document", :dispatch_event]
31
31
  cable_ready.dispatch_event(
32
- name: "stimulus-reflex:server-message",
33
- detail: {
34
- reflexId: data.delete("reflexId"),
35
- payload: payload,
36
- stimulus_reflex: data.merge(
37
- morph: to_sym,
38
- server_message: {subject: subject, body: error&.to_s}
39
- )
40
- }
41
- )
42
- cable_ready.broadcast
43
- end
44
-
45
- # abstract method to be implemented by subclasses
32
+ name: "stimulus-reflex:morph-halted",
33
+ payload: payload,
34
+ stimulus_reflex: data.merge(morph: to_sym)
35
+ ).broadcast
36
+ end
37
+
38
+ def error(data: {}, body: nil)
39
+ operations << ["document", :dispatch_event]
40
+ cable_ready.dispatch_event(
41
+ name: "stimulus-reflex:morph-error",
42
+ payload: payload,
43
+ stimulus_reflex: data.merge(morph: to_sym),
44
+ body: body&.to_s
45
+ ).broadcast
46
+ end
47
+
48
+ # abstract methods to be implemented by subclasses
46
49
  def broadcast(*args)
47
50
  raise NotImplementedError
48
51
  end
49
52
 
50
- # abstract method to be implemented by subclasses
51
53
  def to_sym
52
54
  raise NotImplementedError
53
55
  end
54
56
 
55
- # abstract method to be implemented by subclasses
56
57
  def to_s
57
58
  raise NotImplementedError
58
59
  end
@@ -3,7 +3,12 @@
3
3
  module StimulusReflex
4
4
  class NothingBroadcaster < Broadcaster
5
5
  def broadcast(_, data)
6
- broadcast_message subject: "nothing", data: data
6
+ operations << ["document", :dispatch_event]
7
+ cable_ready.dispatch_event(
8
+ name: "stimulus-reflex:morph-nothing",
9
+ payload: payload,
10
+ stimulus_reflex: data.merge(morph: to_sym)
11
+ ).broadcast
7
12
  end
8
13
 
9
14
  def nothing?
@@ -19,9 +19,7 @@ module StimulusReflex
19
19
  payload: payload,
20
20
  children_only: true,
21
21
  permanent_attribute_name: permanent_attribute_name,
22
- stimulus_reflex: data.merge({
23
- morph: to_sym
24
- })
22
+ stimulus_reflex: data.merge(morph: to_sym)
25
23
  )
26
24
  end
27
25
  cable_ready.broadcast