react_on_rails 11.0.3 → 12.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +320 -0
  3. data/.eslintignore +2 -1
  4. data/.eslintrc +30 -2
  5. data/.github/FUNDING.yml +1 -0
  6. data/.gitignore +3 -1
  7. data/.prettierignore +10 -0
  8. data/.prettierrc +23 -0
  9. data/.release-it.json +3 -0
  10. data/.rubocop.yml +39 -11
  11. data/.travis.yml +11 -22
  12. data/CHANGELOG.md +209 -4
  13. data/CONTRIBUTING.md +64 -84
  14. data/Gemfile +3 -5
  15. data/KUDOS.md +4 -1
  16. data/{docs/LICENSE.md → LICENSE.md} +1 -1
  17. data/PROJECTS.md +7 -1
  18. data/REACT-ON-RAILS-PRO-LICENSE +95 -0
  19. data/README.md +233 -634
  20. data/Rakefile +1 -5
  21. data/SUMMARY.md +42 -29
  22. data/book.json +5 -5
  23. data/docs/additional-reading/asset-pipeline.md +8 -16
  24. data/docs/additional-reading/convert-rails-5-api-only-app.md +19 -0
  25. data/docs/additional-reading/credits.md +10 -0
  26. data/docs/additional-reading/images.md +1 -1
  27. data/docs/additional-reading/rails-engine-integration.md +7 -0
  28. data/docs/additional-reading/rails_view_rendering_from_inline_javascript.md +2 -1
  29. data/docs/additional-reading/react-helmet.md +30 -10
  30. data/docs/additional-reading/react-router.md +52 -75
  31. data/docs/additional-reading/server-rendering-tips.md +14 -11
  32. data/docs/additional-reading/upgrade-webpacker-v3-to-v4.md +10 -0
  33. data/docs/additional-reading/webpack.md +2 -2
  34. data/docs/api/javascript-api.md +24 -4
  35. data/docs/api/redux-store-api.md +102 -0
  36. data/docs/api/view-helpers-api.md +133 -0
  37. data/docs/articles.md +20 -0
  38. data/docs/basics/client-vs-server-rendering.md +23 -0
  39. data/docs/basics/configuration.md +145 -61
  40. data/docs/basics/deployment.md +4 -0
  41. data/docs/basics/{generator.md → generator-details.md} +5 -8
  42. data/docs/basics/heroku-deployment.md +24 -0
  43. data/docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md +49 -0
  44. data/docs/basics/i18n.md +45 -23
  45. data/docs/basics/installation-into-an-existing-rails-app.md +59 -0
  46. data/docs/basics/minitest-configuration.md +31 -0
  47. data/docs/basics/react-server-rendering.md +29 -0
  48. data/docs/{additional-reading → basics}/recommended-project-structure.md +38 -10
  49. data/docs/basics/render-functions-and-railscontext.md +205 -0
  50. data/docs/basics/rspec-configuration.md +73 -0
  51. data/docs/basics/upgrading-react-on-rails.md +74 -3
  52. data/docs/basics/webpack-configuration.md +50 -0
  53. data/docs/contributor-info/errors-with-hooks.md +45 -0
  54. data/docs/contributor-info/pull-requests.md +44 -0
  55. data/docs/misc/doctrine.md +2 -2
  56. data/docs/{additional-reading → outdated}/code-splitting.md +19 -9
  57. data/docs/outdated/how-react-on-rails-works.md +44 -0
  58. data/docs/{basics/installation-overview.md → outdated/manual-installation-overview.md} +8 -13
  59. data/docs/{additional-reading → outdated}/rails-assets-relative-paths.md +3 -3
  60. data/docs/{additional-reading → outdated}/rails-assets.md +5 -13
  61. data/docs/testimonials/hvmn.md +25 -0
  62. data/docs/testimonials/resortpass.md +13 -0
  63. data/docs/testimonials/testimonials.md +28 -0
  64. data/docs/tutorial.md +182 -44
  65. data/jest.config.js +4 -0
  66. data/lib/generators/USAGE +1 -1
  67. data/lib/generators/react_on_rails/base_generator.rb +2 -2
  68. data/lib/generators/react_on_rails/dev_tests_generator.rb +3 -2
  69. data/lib/generators/react_on_rails/generator_helper.rb +4 -6
  70. data/lib/generators/react_on_rails/install_generator.rb +2 -0
  71. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +3 -1
  72. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +26 -0
  73. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +20 -40
  74. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +4 -1
  75. data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +4 -8
  76. data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/store/helloWorldStore.js +1 -3
  77. data/lib/react_on_rails/configuration.rb +171 -100
  78. data/lib/react_on_rails/error.rb +2 -0
  79. data/lib/react_on_rails/git_utils.rb +2 -0
  80. data/lib/react_on_rails/{react_on_rails_helper.rb → helper.rb} +133 -161
  81. data/lib/react_on_rails/json_output.rb +1 -1
  82. data/lib/react_on_rails/json_parse_error.rb +28 -0
  83. data/lib/react_on_rails/locales/base.rb +150 -0
  84. data/lib/react_on_rails/locales/to_js.rb +37 -0
  85. data/lib/react_on_rails/locales/to_json.rb +27 -0
  86. data/lib/react_on_rails/prerender_error.rb +56 -18
  87. data/lib/react_on_rails/react_component/render_options.rb +31 -3
  88. data/lib/react_on_rails/server_rendering_js_code.rb +42 -0
  89. data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +93 -63
  90. data/lib/react_on_rails/server_rendering_pool.rb +1 -16
  91. data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +7 -8
  92. data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +17 -0
  93. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +10 -6
  94. data/lib/react_on_rails/test_helper.rb +18 -7
  95. data/lib/react_on_rails/utils.rb +65 -25
  96. data/lib/react_on_rails/version.rb +1 -1
  97. data/lib/react_on_rails/version_checker.rb +5 -1
  98. data/lib/react_on_rails/version_syntax_converter.rb +14 -12
  99. data/lib/react_on_rails/webpacker_utils.rb +44 -10
  100. data/lib/react_on_rails.rb +7 -2
  101. data/lib/tasks/assets.rake +33 -46
  102. data/lib/tasks/locale.rake +4 -2
  103. data/package-scripts.yml +49 -0
  104. data/package.json +49 -40
  105. data/rakelib/dummy_apps.rake +1 -9
  106. data/rakelib/example_type.rb +3 -1
  107. data/rakelib/examples.rake +3 -0
  108. data/rakelib/lint.rake +2 -7
  109. data/rakelib/node_package.rake +2 -2
  110. data/rakelib/release.rake +4 -8
  111. data/rakelib/run_rspec.rake +5 -18
  112. data/react_on_rails.gemspec +5 -6
  113. data/tsconfig.json +14 -0
  114. data/webpackConfigLoader.js +5 -4
  115. data/yarn.lock +7645 -1821
  116. metadata +70 -60
  117. data/Gemfile.rails32 +0 -74
  118. data/docs/additional-reading/babel.md +0 -5
  119. data/docs/additional-reading/caching-and-performance.md +0 -4
  120. data/docs/additional-reading/heroku-deployment.md +0 -92
  121. data/docs/additional-reading/hot-reloading-rails-development.md +0 -57
  122. data/docs/additional-reading/node-server-rendering.md +0 -5
  123. data/docs/additional-reading/rspec-configuration.md +0 -56
  124. data/docs/api/ruby-api-hot-reload-view-helpers.md +0 -44
  125. data/docs/api/ruby-api.md +0 -8
  126. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +0 -12
  127. data/lib/react_on_rails/assets_precompile.rb +0 -150
  128. data/lib/react_on_rails/locales_to_js.rb +0 -134
  129. /data/docs/{misc → outdated}/rails3.md +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5616765e73089b791e60e49c47a99c4217ae4e47
4
- data.tar.gz: d6895eb29b7b04697c80f07a28ea47b716a6b1ea
2
+ SHA256:
3
+ metadata.gz: 2c578e181f0adc62b6f89f1e258bf21dd515bf2f86b57034467f6026ba2bf63c
4
+ data.tar.gz: e3a8a7076f7c73871178114a077ec29850e6639340e8ff331d046fb491ac10e8
5
5
  SHA512:
6
- metadata.gz: 7a03e79ec545f01d2cf7568f9cf403b1e53f88d9a3d6697d47b84005235f5c3d374c122264d7b8572d2b4da8c9a73a1f0955bdd4dae61adf6b7133b1861a5c5e
7
- data.tar.gz: 0f210aa98d8eef9c46f31d406006f959925eb5ce0ceb09a5853088137db99d9eaa5a2dfa7d82e7fcbdab31d66d09f5c697981b0b719a5a586ca1abb9ed9521c3
6
+ metadata.gz: 19cebcb75b776a5f08936cc39aef164089a6ccc3ea36d792cc6fb7f0e53805e535eeb71f295826e371f74b75312d326172d26e1dc97cc640651914c5b222cfa1
7
+ data.tar.gz: 67dec37920284002de78660438c0f38f463a5317bbd7c7a17d2896fa4d4d7ff0044e11705ad247a7f1d3f2eb2abf90f8fd3115dc0ac496926701beb74236043c
@@ -0,0 +1,320 @@
1
+ version: 2
2
+
3
+ aliases:
4
+ - &docker-image
5
+ - image: circleci/ruby:2.6-node-browsers
6
+
7
+ # Print critical data and executables versions.
8
+ - &print-system-info
9
+ name: Print system information
10
+ command: |
11
+ echo "Linux release: "; cat /etc/issue
12
+ echo "Current user: "; whoami
13
+ echo "Current directory: "; pwd
14
+ echo "Ruby version: "; ruby -v
15
+ echo "Node version: "; node -v
16
+ echo "Yarn version: "; yarn --version
17
+ echo "Bundler version: "; bundle --version
18
+ - &lint-js
19
+ name: Linting of JS
20
+ command: yarn start lint
21
+
22
+ - &lint-ruby
23
+ name: Linting of Ruby
24
+ command: bundle exec rubocop
25
+
26
+ - &format
27
+ name: Check formatting
28
+ command: yarn start format.listDifferent
29
+
30
+ # Install/update Node modules for renderer package unless existing set of modules is satisfying Yarn.
31
+ - &install-package-node-modules
32
+ name: Install Node modules with Yarn for renderer package
33
+ command: |
34
+ yarn install --no-progress --no-emoji
35
+ yarn run eslint -v
36
+ sudo yarn global add yalc
37
+
38
+ # Install/update Node modules for dummy app unless existing set of modules is satisfying Yarn.
39
+ - &install-dummy-app-node-modules
40
+ name: Install Node modules with Yarn for dummy app
41
+ command: cd spec/dummy && yarn install --no-progress --no-emoji
42
+
43
+ # Setup yarn links for react-on-rails
44
+ - &install-yalc-publish
45
+ name: yalc publish for react-on-rails
46
+ command: yalc publish
47
+
48
+ - &install-yalc-add-react-on-rails
49
+ name: yalc add react-on-rails
50
+ command: cd spec/dummy && yalc add react-on-rails
51
+
52
+ # Install ruby gems unless existing set of gems is satisfying bundler.
53
+ - &install-dummy-app-ruby-gems
54
+ name: Install Ruby Gems for dummy app
55
+ command: |
56
+ gem install bundler
57
+ echo "Bundler version: "; bundle --version
58
+ cd spec/dummy && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
59
+
60
+ # Install ruby gems unless existing set of gems is satisfying bundler.
61
+ - &install-package-ruby-gems
62
+ name: Install Ruby Gems for package
63
+ command: |
64
+ gem install bundler
65
+ echo "Bundler version: "; bundle --version
66
+ bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
67
+
68
+ # Restore node_modules dir from cache using yarn.lock checksum as a key.
69
+ - &restore-package-node-modules-cache
70
+ name: Restore cached node_modules directory
71
+ keys:
72
+ - v4-package-node-modules-cache-{{ checksum "yarn.lock" }}
73
+
74
+ # Restore spec/dummy/node_modules dir from cache using yarn.lock checksum as a key.
75
+ - &restore-dummy-app-node-modules-cache
76
+ name: Restore cached spec/dummy/node_modules directory
77
+ keys:
78
+ - v4-dummy-app-node-modules-cache-{{ checksum "spec/dummy/yarn.lock" }}
79
+
80
+ # Restore vendor/bundle dir from cache using Gemfile.lock checksum as a key.
81
+ - &restore-dummy-app-gem-cache
82
+ name: Restore cached Ruby Gems for dummy app
83
+ keys:
84
+ - v4-dummy-app-gem-cache-{{ checksum "spec/dummy/Gemfile.lock" }}
85
+
86
+ # Restore vendor/bundle dir from cache using react_on_rails.gemspec checksum as a key.
87
+ - &restore-package-gem-cache
88
+ name: Restore cached Ruby Gems for package
89
+ keys:
90
+ - v4-package-app-gem-cache-{{ checksum "react_on_rails.gemspec" }}
91
+
92
+ # NOTE: Sometimes CI generated docker images are not updated in time to keep up with the minimum required
93
+ # by chromedriver versions of Chrome. Just bump here Chrome version if chromedriver raises errors
94
+ - &install-latest-chrome
95
+ name: Ensure minimum required Chrome version
96
+ command: |
97
+ echo -e "Installed $(google-chrome --version)\n"
98
+ MINIMUM_REQUIRED_CHROME_VERSION=75
99
+ INSTALLED_CHROME_MAJOR_VERSION="$(google-chrome --version | tr ' .' '\t' | cut -f3)"
100
+ if [[ $INSTALLED_CHROME_MAJOR_VERSION < $MINIMUM_REQUIRED_CHROME_VERSION ]]; then
101
+ wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
102
+ sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
103
+ sudo apt-get update
104
+ sudo apt-get install google-chrome-stable
105
+ echo -e "\nInstalled $(google-chrome --version)"
106
+ fi
107
+
108
+ jobs:
109
+ # Lint all
110
+ lint-js-and-ruby:
111
+ docker: *docker-image
112
+ steps:
113
+ - checkout
114
+ - run: *print-system-info
115
+ - restore_cache: *restore-package-node-modules-cache
116
+ - restore_cache: *restore-package-gem-cache
117
+ - run: *install-package-ruby-gems
118
+ - run: *lint-ruby
119
+ - run: *lint-js
120
+ - run: *format
121
+
122
+ prettier:
123
+ docker: *docker-image
124
+ parallelism: 1
125
+ steps:
126
+ - checkout
127
+ - restore_cache: *restore-package-node-modules-cache
128
+ - run:
129
+ name: prettier
130
+ command: yarn start format.listDifferent
131
+
132
+ # Install Node modules for Renderer package with Yarn and save them to chache.
133
+ install-package-node-packages:
134
+ docker: *docker-image
135
+ steps:
136
+ - checkout
137
+ - run: *print-system-info
138
+ - restore_cache: *restore-package-node-modules-cache
139
+ - run: *install-package-node-modules
140
+ - save_cache:
141
+ name: Save root node_modules to cache
142
+ key: v4-package-node-modules-cache-{{ checksum "yarn.lock" }}
143
+ paths:
144
+ - node_modules
145
+
146
+
147
+ # Install Node modules for dummy app with Yarn and save them to cache.
148
+ install-dummy-app-node-packages:
149
+ docker: *docker-image
150
+ steps:
151
+ - checkout
152
+ - run: *print-system-info
153
+ - restore_cache: *restore-dummy-app-node-modules-cache
154
+ - run: *install-package-node-modules
155
+ - run: *install-yalc-publish
156
+ - run: *install-yalc-add-react-on-rails
157
+ - run: *install-dummy-app-node-modules
158
+ - save_cache:
159
+ name: Save spec/dummy/node_modules to cache
160
+ key: v4-dummy-app-node-modules-cache-{{ checksum "spec/dummy/yarn.lock" }}
161
+ paths:
162
+ - spec/dummy/node_modules
163
+ - spec/dummy/node_modules
164
+
165
+ # Install Ruby gems for package with Bundler and save them to cache.
166
+ install-package-ruby-gems:
167
+ docker: *docker-image
168
+ steps:
169
+ - checkout
170
+ - run: *print-system-info
171
+ - restore_cache: *restore-package-gem-cache
172
+ - run: *install-package-ruby-gems
173
+ - save_cache:
174
+ name: Save dummy app ruby gems to cache
175
+ key: v4-package-app-gem-cache-{{ checksum "react_on_rails.gemspec" }}
176
+ paths:
177
+ - vendor/bundle
178
+
179
+ # Install Ruby gems for dummy app with Bundler and save them to cache.
180
+ install-dummy-app-ruby-gems:
181
+ docker: *docker-image
182
+ steps:
183
+ - checkout
184
+ - run: *print-system-info
185
+ - restore_cache: *restore-dummy-app-gem-cache
186
+ - run: *install-dummy-app-ruby-gems
187
+ - save_cache:
188
+ name: Save dummy app ruby gems to cache
189
+ key: v4-dummy-app-gem-cache-{{ checksum "spec/dummy/Gemfile.lock" }}
190
+ paths:
191
+ - spec/dummy/vendor/bundle
192
+
193
+ # Build client and server bundles for dummy app with Webpack and save them to cache.
194
+ # NOTE: keeping around this cache in case we have multiple rspec suites in the future to tests
195
+ # different node renderers.
196
+ build-dummy-app-webpack-test-bundles:
197
+ docker: *docker-image
198
+ steps:
199
+ - checkout
200
+ - run: *print-system-info
201
+ - run: *install-package-node-modules
202
+ - run: *install-yalc-publish
203
+ - restore_cache: *restore-dummy-app-node-modules-cache
204
+ - run: *install-yalc-add-react-on-rails
205
+ - run: *install-dummy-app-node-modules
206
+ - run: *install-dummy-app-ruby-gems
207
+ - run:
208
+ name: Build test bundles for dummy app
209
+ command: cd spec/dummy && yarn run build:test
210
+ - save_cache:
211
+ name: Save test webpack bundles to cache (for build number checksum used by rspec job)
212
+ key: v4-dummy-app-webpack-bundle-{{ .Revision }}
213
+ paths:
214
+ - spec/dummy/public/webpack
215
+ # Run JS unit tests for Renderer package.
216
+ package-js-tests:
217
+ docker: *docker-image
218
+ steps:
219
+ - checkout
220
+ - run: *print-system-info
221
+ - restore_cache: *restore-package-node-modules-cache
222
+ - run: *install-package-node-modules
223
+ - run:
224
+ name: Run JS unit tests for Renderer package
225
+ command: yarn test
226
+
227
+ rspec-package-specs:
228
+ docker: *docker-image
229
+ steps:
230
+ - checkout
231
+ - run: *print-system-info
232
+ - restore_cache: *restore-package-gem-cache
233
+ - run: *install-package-ruby-gems
234
+ - run:
235
+ name: Run rspec tests
236
+ command: |
237
+ bundle exec rspec spec/react_on_rails
238
+ - store_test_results:
239
+ path: ~/rspec
240
+ - store_artifacts:
241
+ path: log/test.log
242
+
243
+ main:
244
+ docker: *docker-image
245
+ steps:
246
+ - checkout
247
+ - run: *print-system-info
248
+ - restore_cache: *restore-package-gem-cache
249
+ - restore_cache: *restore-dummy-app-gem-cache
250
+ - restore_cache:
251
+ name: Restore cached webpack bundles for dummy app
252
+ key: v4-dummy-app-webpack-bundle-{{ .Revision }}
253
+ - restore_cache: *restore-dummy-app-node-modules-cache
254
+ - restore_cache: *restore-package-node-modules-cache
255
+ - run: *install-package-node-modules
256
+ - run: *install-yalc-publish
257
+ - run: *install-yalc-add-react-on-rails
258
+ - run: *install-package-ruby-gems
259
+ - run: *install-dummy-app-ruby-gems
260
+ - run: *install-latest-chrome
261
+ - run:
262
+ name: Touch webpack bundles
263
+ command: touch spec/dummy/public/webpack/test/*
264
+ - run:
265
+ name: Install yalc globally
266
+ command: sudo yarn global add yalc
267
+ - run:
268
+ name: Prep for CI
269
+ # TODO -- need to leverage Circle CI containers
270
+ command: |
271
+ bundle exec rake prepare_for_ci
272
+ - run:
273
+ name: Main CI
274
+ # TODO -- need to leverage Circle CI containers
275
+ command: |
276
+ bundle exec rake run_rspec:all_dummy
277
+ - store_test_results:
278
+ path: ~/rspec
279
+ - store_artifacts:
280
+ path: spec/dummy/tmp/capybara
281
+ - store_artifacts:
282
+ path: spec/dummy/log/test.log
283
+ - store_artifacts:
284
+ path: spec/dummy/yarn-error.log
285
+
286
+ workflows:
287
+ version: 2
288
+ build-and-test:
289
+ jobs:
290
+ - install-package-node-packages
291
+ - install-package-ruby-gems
292
+ - install-dummy-app-node-packages
293
+ - install-dummy-app-ruby-gems
294
+ - lint-js-and-ruby:
295
+ requires:
296
+ - install-package-node-packages
297
+ - install-package-ruby-gems
298
+ - prettier:
299
+ filters:
300
+ branches:
301
+ ignore: master
302
+ requires:
303
+ - install-package-node-packages
304
+ - build-dummy-app-webpack-test-bundles:
305
+ requires:
306
+ - install-dummy-app-node-packages
307
+ - package-js-tests:
308
+ requires:
309
+ - install-package-node-packages
310
+ - rspec-package-specs:
311
+ requires:
312
+ - install-package-ruby-gems
313
+ - build-dummy-app-webpack-test-bundles
314
+ - install-dummy-app-ruby-gems
315
+ - main:
316
+ requires:
317
+ - install-package-ruby-gems
318
+ - install-dummy-app-ruby-gems
319
+ - install-package-node-packages
320
+ - build-dummy-app-webpack-test-bundles
data/.eslintignore CHANGED
@@ -2,7 +2,6 @@ node_modules
2
2
  coverage
3
3
  spec/react_on_rails/dummy-for-generators
4
4
  spec/dummy
5
- spec/dummy_no_webpacker
6
5
  node_package/lib/
7
6
  node_package/tests/node_modules
8
7
  node_package/webpack.config.js
@@ -14,3 +13,5 @@ node_package/webpack.config.js
14
13
  **/coverage/**
15
14
  **/cable.js
16
15
  **/public/packs*/*
16
+ gen-examples
17
+ bundle/
data/.eslintrc CHANGED
@@ -1,8 +1,11 @@
1
1
  ---
2
- extends: eslint-config-shakacode
2
+ extends:
3
+ - eslint-config-shakacode
4
+ - prettier
5
+ - prettier/react
3
6
 
4
7
  plugins:
5
- - react
8
+ - prettier
6
9
 
7
10
  globals:
8
11
  __DEBUG_SERVER_ERRORS__: true
@@ -12,9 +15,31 @@ env:
12
15
  browser: true
13
16
  node: true
14
17
  mocha: true
18
+ jest: true
19
+
20
+ overrides:
21
+ - files: ["**/*.ts", "**/*.tsx"]
22
+ parser: "@typescript-eslint/parser"
23
+ parserOptions:
24
+ ecmaVersion: 2018
25
+ sourceType: module
26
+ project: "./tsconfig.json"
27
+ extends:
28
+ - eslint:recommended
29
+ - plugin:@typescript-eslint/eslint-recommended
30
+ - plugin:@typescript-eslint/recommended
31
+ plugins:
32
+ - "@typescript-eslint"
33
+ rules:
34
+ "@typescript-eslint/no-namespace": 0
15
35
 
16
36
  rules:
17
37
  no-console: 0
38
+ function-paren-newline: 0
39
+ object-curly-newline: 0
40
+ no-restricted-syntax: ["error", "SequenceExpression"]
41
+ # https://stackoverflow.com/a/59268871/5241481
42
+ import/extensions: ['error', 'ignorePackages', {"js": 'never',"ts": "never"}]
18
43
 
19
44
  # https://github.com/benmosher/eslint-plugin-import/issues/340
20
45
  import/no-extraneous-dependencies: 0
@@ -22,3 +47,6 @@ rules:
22
47
  settings:
23
48
  import/core-modules:
24
49
  - react-redux
50
+ import/resolver:
51
+ node:
52
+ extensions: [".js", ".ts", ".d.ts"]
@@ -0,0 +1 @@
1
+ github: [shakacode]
data/.gitignore CHANGED
@@ -1,7 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
3
  /Gemfile.lock
4
- /Gemfile.rails32.lock
5
4
  /_yardoc/
6
5
  /coverage/
7
6
  /doc/
@@ -32,3 +31,6 @@ npm-debug.*
32
31
  /gen-examples
33
32
 
34
33
  .DS_Store
34
+
35
+ .yalc
36
+ yalc.lock
data/.prettierignore ADDED
@@ -0,0 +1,10 @@
1
+ node_modules/
2
+ package.json
3
+ tmp/
4
+ coverage/
5
+ **/app/assets/webpack/
6
+ spec/dummy/public
7
+ gen-examples/examples/*
8
+ node_package/lib/*
9
+ spec/react_on_rails/dummy-for-generators/app/javascript/bundles/HelloWorld/*
10
+ bundle/
data/.prettierrc ADDED
@@ -0,0 +1,23 @@
1
+ printWidth: 110
2
+ tabWidth: 2
3
+ useTabs: false
4
+ semi: true
5
+ singleQuote: true
6
+ trailingComma: all
7
+ bracketSpacing: true
8
+ jsxBracketSameLine: false
9
+ parser: flow
10
+
11
+ extends:
12
+ - tslint-config-prettier
13
+
14
+ overrides:
15
+ - files: "*.@(css|scss)"
16
+ options:
17
+ parser: css
18
+ singleQuote: false
19
+ printWidth: 120
20
+ - files: "*.@(json)"
21
+ options:
22
+ parser: json
23
+ printWidth: 100
data/.release-it.json ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "requireCleanWorkingDir": false
3
+ }
data/.rubocop.yml CHANGED
@@ -3,11 +3,13 @@
3
3
 
4
4
  AllCops:
5
5
  DisplayCopNames: true
6
- TargetRubyVersion: 2.1
6
+ TargetRubyVersion: 2.5
7
7
 
8
8
  Include:
9
9
  - '**/Rakefile'
10
10
  - '**/config.ru'
11
+ - 'Gemfile'
12
+ - '**/*.rb'
11
13
 
12
14
  Exclude:
13
15
  - 'vendor/**/*'
@@ -25,12 +27,8 @@ AllCops:
25
27
  - 'spec/react_on_rails/dummy-for-generators/**/*'
26
28
  - 'spec/dummy/Procfile.*'
27
29
  - 'spec/dummy/bin/**/*'
28
- - 'spec/dummy/client/node_modules/**/*'
29
- - 'spec/dummy/client/node_modules/**/.*'
30
- - 'spec/dummy_no_webpacker/Procfile.*'
31
- - 'spec/dummy_no_webpacker/bin/**/*'
32
- - 'spec/dummy_no_webpacker/client/node_modules/**/*'
33
- - 'spec/dummy_no_webpacker/client/node_modules/**/.*'
30
+ - 'spec/dummy/node_modules/**/*'
31
+ - 'spec/dummy/node_modules/**/.*'
34
32
  - 'gen-examples/examples/**/.*'
35
33
  - 'gen-examples/examples/**/*'
36
34
 
@@ -38,13 +36,12 @@ Naming/FileName:
38
36
  Exclude:
39
37
  - 'Gemfile'
40
38
  - 'spec/dummy/Gemfile'
41
- - 'spec/dummy_no_webpacker/Gemfile'
42
39
 
43
40
  # Turn off until we require 2.3 ruby
44
41
  Style/SafeNavigation:
45
42
  Enabled: false
46
43
 
47
- Metrics/LineLength:
44
+ Layout/LineLength:
48
45
  Max: 120
49
46
 
50
47
  Style/StringLiterals:
@@ -53,11 +50,20 @@ Style/StringLiterals:
53
50
  Style/Documentation:
54
51
  Enabled: false
55
52
 
53
+ Style/HashEachMethods:
54
+ Enabled: true
55
+
56
+ Style/HashTransformKeys:
57
+ Enabled: true
58
+
59
+ Style/HashTransformValues:
60
+ Enabled: true
61
+
56
62
  Lint/AssignmentInCondition:
57
63
  Exclude:
58
64
  - 'spec/dummy/bin/spring'
59
65
 
60
- Lint/HandleExceptions:
66
+ Lint/SuppressedException:
61
67
  Exclude:
62
68
  - 'spec/dummy/bin/rails'
63
69
  - 'spec/dummy/bin/rake'
@@ -84,9 +90,31 @@ Metrics/MethodLength:
84
90
  Metrics/ModuleLength:
85
91
  Max: 180
86
92
 
93
+ Naming/RescuedExceptionsVariableName:
94
+ Enabled: false
95
+
87
96
  Style/GlobalVars:
88
97
  Exclude:
89
98
  - 'spec/dummy/config/environments/development.rb'
90
99
 
91
100
  Style/FrozenStringLiteralComment:
92
- EnforcedStyle: when_needed
101
+ EnforcedStyle: always
102
+
103
+ Layout/EmptyLinesAroundAttributeAccessor:
104
+ Enabled: true
105
+
106
+ Layout/SpaceAroundMethodCallOperator:
107
+ Enabled: true
108
+
109
+ Lint/RaiseException:
110
+ Enabled: true
111
+
112
+ Lint/StructNewOverride:
113
+ Enabled: true
114
+
115
+ Style/ExponentialNotation:
116
+ Enabled: true
117
+
118
+ Style/SlicingWithRange:
119
+ Enabled: true
120
+
data/.travis.yml CHANGED
@@ -3,11 +3,10 @@ sudo: required
3
3
  language: ruby
4
4
 
5
5
  rvm:
6
- # Rails 5 requires 2.2
7
- - 2.3.1
8
- - 2.4.1
9
- - 2.5.0
10
- - 2.2.6
6
+ - 2.5.3
7
+ - 2.6.5
8
+ - 2.7.0
9
+
11
10
  services:
12
11
  - docker
13
12
 
@@ -19,7 +18,6 @@ cache:
19
18
 
20
19
  gemfile:
21
20
  - spec/dummy/Gemfile
22
- - spec/dummy_no_webpacker/Gemfile.rails32
23
21
 
24
22
  env:
25
23
  global:
@@ -36,14 +34,16 @@ before_install:
36
34
  - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen scn 1600x1200x16"
37
35
 
38
36
  install:
39
- - travis_retry gem install bundler
40
- - travis_retry nvm install node 8.0.0
37
+ - travis_retry gem install bundler -v '>2'
38
+ - travis_retry nvm install 13.9.0
41
39
  - node -v
42
- - travis_retry npm i -g yarn@0.27.5
43
- - travis_retry yarn global add babel-cli
40
+ - travis_retry npm i -g yarn
44
41
  - travis_retry bundle install
42
+ - travis_retry yarn global add yalc
43
+ - travis_retry yalc publish
44
+ - travis_retry cd spec/dummy && yalc add react-on-rails
45
45
  - travis_retry yarn
46
- - travis_retry yarn run build
46
+ - travis_retry cd ../.. && yarn run build
47
47
  - bundle exec rake prepare_for_ci
48
48
 
49
49
  before_script:
@@ -52,17 +52,6 @@ before_script:
52
52
  script:
53
53
  - bundle exec rake
54
54
 
55
- matrix:
56
- exclude:
57
- - gemfile: spec/dummy_no_webpacker/Gemfile.rails32
58
- rvm: 2.3.1
59
- - gemfile: spec/dummy_no_webpacker/Gemfile.rails32
60
- rvm: 2.4.1
61
- - gemfile: spec/dummy_no_webpacker/Gemfile.rails32
62
- rvm: 2.5.0
63
- - gemfile: spec/dummy/Gemfile
64
- rvm: 2.2.6
65
-
66
55
  notifications:
67
56
  slack:
68
57
  secure: LfcUk4AJ4vAxWwRIyw4tFh8QNbYefMwfG/oLfsN3CdRMWMOtCOHR1GGsRhAOlfVVJ/FvHqVqWj5gK7z7CaO5Uvl7rD3/zJ8QzExKx/iH9yWj55iIPuKLzwFNnBwRpFW/cqyU2lFPPRxGD50BUn3c+qybkuSqtKZ6qtTowwqlxLa5iyM3N95aZp7MEIKCP7cPcnHfLbJyP8wBpotp/rtw62eXM2HIRJJwgjcp+n+My7VFR9DnBXNFf6R91aZHM4U4cHHDbu15HFtH8honVrzK1JQdyqMNHga+j04dFuaS7z9Q369/hsELMOBp/227+Pz7ZRfWZFK4UASguOvyeX7RmGTRpTuWLm1XJeUzfsPZVROecaSVQBve+U7F12yKqilt97QlvRXn2EGyBILqvxtFNNR4S9kgAf72/6EFgiM1TKq7i9zy6lVOnagU2+7amq7UeopX1uoFsUfNKMR7YbgV1WjF0IK95UP0b0/7ZOJlPYgi5zzkQi129qAFWSMmxGk+ZpsttHh/tjJtvAh0A3mHq/zb5w4ub/MbSyZqeDUNgGj72QArOWUFSAStQT1ybsVLeDoKPgOvVq7OV1D64rpcHjBXcqOCit8tDZ+TqkFhcYJo2cITSaqE4zJXn+4F5s7So5O8CyfKYQq+kFJCooYGmfgTUckJpGl7eIvKmL4TN9Q=