cable_ready 5.0.0.pre9 → 5.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -1
  3. data/Gemfile.lock +119 -100
  4. data/README.md +12 -15
  5. data/app/assets/javascripts/cable_ready.js +465 -155
  6. data/app/assets/javascripts/cable_ready.umd.js +449 -169
  7. data/app/channels/cable_ready/stream.rb +7 -5
  8. data/app/helpers/cable_ready/view_helper.rb +58 -0
  9. data/app/jobs/cable_ready/broadcast_job.rb +15 -0
  10. data/app/models/concerns/cable_ready/updatable/collection_updatable_callbacks.rb +2 -0
  11. data/app/models/concerns/cable_ready/updatable/collections_registry.rb +31 -5
  12. data/app/models/concerns/cable_ready/updatable/model_updatable_callbacks.rb +9 -4
  13. data/app/models/concerns/cable_ready/updatable.rb +107 -39
  14. data/app/models/concerns/extend_has_many.rb +2 -0
  15. data/cable_ready.gemspec +4 -6
  16. data/lib/cable_ready/broadcaster.rb +2 -0
  17. data/lib/cable_ready/cable_car.rb +2 -0
  18. data/lib/cable_ready/channel.rb +12 -4
  19. data/lib/cable_ready/channels.rb +3 -1
  20. data/lib/cable_ready/config.rb +17 -2
  21. data/lib/cable_ready/engine.rb +33 -14
  22. data/lib/cable_ready/identifiable.rb +23 -5
  23. data/lib/cable_ready/importmap.rb +3 -1
  24. data/lib/cable_ready/installer.rb +224 -0
  25. data/lib/cable_ready/operation_builder.rb +1 -1
  26. data/lib/cable_ready/sanity_checker.rb +1 -31
  27. data/lib/cable_ready/updatable/memory_cache_debounce_adapter.rb +22 -0
  28. data/lib/cable_ready/version.rb +1 -1
  29. data/lib/cable_ready.rb +5 -8
  30. data/lib/cable_ready_helper.rb +13 -0
  31. data/lib/generators/cable_ready/channel_generator.rb +51 -12
  32. data/lib/generators/cable_ready/templates/config/initializers/cable_ready.rb +15 -6
  33. data/lib/install/action_cable.rb +144 -0
  34. data/lib/install/broadcaster.rb +109 -0
  35. data/lib/install/bundle.rb +54 -0
  36. data/lib/install/compression.rb +51 -0
  37. data/lib/install/config.rb +39 -0
  38. data/lib/install/development.rb +34 -0
  39. data/lib/install/esbuild.rb +101 -0
  40. data/lib/install/importmap.rb +96 -0
  41. data/lib/install/initializers.rb +15 -0
  42. data/lib/install/mrujs.rb +121 -0
  43. data/lib/install/npm_packages.rb +13 -0
  44. data/lib/install/shakapacker.rb +65 -0
  45. data/lib/install/spring.rb +54 -0
  46. data/lib/install/updatable.rb +34 -0
  47. data/lib/install/vite.rb +66 -0
  48. data/lib/install/webpacker.rb +93 -0
  49. data/lib/install/yarn.rb +56 -0
  50. data/lib/tasks/cable_ready/cable_ready.rake +247 -0
  51. data/package.json +36 -22
  52. data/{rollup.config.js → rollup.config.mjs} +7 -25
  53. data/web-test-runner.config.mjs +12 -0
  54. data/yarn.lock +3058 -398
  55. metadata +39 -167
  56. data/IMPLEMENTATION.md +0 -93
  57. data/LATEST +0 -1
  58. data/app/assets/javascripts/cable_ready.min.js +0 -2
  59. data/app/assets/javascripts/cable_ready.min.js.map +0 -1
  60. data/app/assets/javascripts/cable_ready.umd.min.js +0 -2
  61. data/app/assets/javascripts/cable_ready.umd.min.js.map +0 -1
  62. data/app/helpers/cable_ready_helper.rb +0 -26
  63. data/app/jobs/cable_ready_broadcast_job.rb +0 -14
  64. data/lib/generators/cable_ready/helpers_generator.rb +0 -43
  65. data/lib/generators/cable_ready/initializer_generator.rb +0 -14
  66. data/test/dummy/app/channels/application_cable/channel.rb +0 -4
  67. data/test/dummy/app/channels/application_cable/connection.rb +0 -4
  68. data/test/dummy/app/controllers/application_controller.rb +0 -2
  69. data/test/dummy/app/helpers/application_helper.rb +0 -2
  70. data/test/dummy/app/jobs/application_job.rb +0 -7
  71. data/test/dummy/app/mailers/application_mailer.rb +0 -4
  72. data/test/dummy/app/models/application_record.rb +0 -3
  73. data/test/dummy/app/models/dugong.rb +0 -4
  74. data/test/dummy/app/models/global_idable_entity.rb +0 -16
  75. data/test/dummy/app/models/post.rb +0 -4
  76. data/test/dummy/app/models/section.rb +0 -6
  77. data/test/dummy/app/models/team.rb +0 -6
  78. data/test/dummy/app/models/topic.rb +0 -4
  79. data/test/dummy/app/models/user.rb +0 -7
  80. data/test/dummy/config/application.rb +0 -22
  81. data/test/dummy/config/boot.rb +0 -5
  82. data/test/dummy/config/environment.rb +0 -5
  83. data/test/dummy/config/environments/development.rb +0 -76
  84. data/test/dummy/config/environments/production.rb +0 -120
  85. data/test/dummy/config/environments/test.rb +0 -59
  86. data/test/dummy/config/initializers/application_controller_renderer.rb +0 -8
  87. data/test/dummy/config/initializers/assets.rb +0 -12
  88. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -8
  89. data/test/dummy/config/initializers/cable_ready.rb +0 -18
  90. data/test/dummy/config/initializers/content_security_policy.rb +0 -28
  91. data/test/dummy/config/initializers/cookies_serializer.rb +0 -5
  92. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -6
  93. data/test/dummy/config/initializers/inflections.rb +0 -16
  94. data/test/dummy/config/initializers/mime_types.rb +0 -4
  95. data/test/dummy/config/initializers/permissions_policy.rb +0 -11
  96. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  97. data/test/dummy/config/puma.rb +0 -43
  98. data/test/dummy/config/routes.rb +0 -3
  99. data/test/dummy/db/migrate/20210902154139_create_users.rb +0 -9
  100. data/test/dummy/db/migrate/20210902154153_create_posts.rb +0 -10
  101. data/test/dummy/db/migrate/20210904081930_create_topics.rb +0 -9
  102. data/test/dummy/db/migrate/20210904093607_create_sections.rb +0 -9
  103. data/test/dummy/db/migrate/20210913191735_create_teams.rb +0 -8
  104. data/test/dummy/db/migrate/20210913191759_add_team_reference_to_users.rb +0 -5
  105. data/test/dummy/db/migrate/20220329222959_create_dugongs.rb +0 -8
  106. data/test/dummy/db/migrate/20220329230221_create_active_storage_tables.active_storage.rb +0 -36
  107. data/test/dummy/db/schema.rb +0 -84
  108. data/test/dummy/test/models/dugong_test.rb +0 -7
  109. data/test/dummy/test/models/post_test.rb +0 -7
  110. data/test/dummy/test/models/section_test.rb +0 -7
  111. data/test/dummy/test/models/team_test.rb +0 -7
  112. data/test/dummy/test/models/topic_test.rb +0 -7
  113. data/test/dummy/test/models/user_test.rb +0 -7
  114. data/test/lib/cable_ready/cable_car_test.rb +0 -50
  115. data/test/lib/cable_ready/compoundable_test.rb +0 -26
  116. data/test/lib/cable_ready/helper_test.rb +0 -25
  117. data/test/lib/cable_ready/identifiable_test.rb +0 -69
  118. data/test/lib/cable_ready/operation_builder_test.rb +0 -189
  119. data/test/lib/cable_ready/updatable_test.rb +0 -135
  120. data/test/lib/generators/cable_ready/channel_generator_test.rb +0 -157
  121. data/test/support/generator_test_helpers.rb +0 -28
  122. data/test/test_helper.rb +0 -18
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cable_ready",
3
- "version": "5.0.0-pre9",
3
+ "version": "5.0.0-rc1",
4
4
  "description": "CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.",
5
5
  "keywords": [
6
6
  "ruby",
@@ -13,39 +13,53 @@
13
13
  "client-side",
14
14
  "dom"
15
15
  ],
16
- "homepage": "https://cableready.stimulusreflex.com/",
17
- "bugs": {
18
- "url": "https://github.com/stimulusreflex/cable_ready/issues"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com:stimulusreflex/cable_ready.git"
23
- },
16
+ "homepage": "https://cableready.stimulusreflex.com",
17
+ "bugs": "https://github.com/stimulusreflex/cable_ready/issues",
18
+ "repository": "https://github.com/stimulusreflex/cable_ready",
24
19
  "license": "MIT",
25
20
  "author": "Nathan Hopkins <natehop@gmail.com>",
26
- "main": "./dist/cable_ready.umd.min.js",
27
- "module": "./dist/cable_ready.min.js",
21
+ "contributors": [
22
+ "Andrew Mason <andrewmcodes@protonmail.com>",
23
+ "Julian Rubisch <julian@julianrubisch.at>",
24
+ "Marco Roth <marco.roth@intergga.ch>",
25
+ "Nathan Hopkins <natehop@gmail.com>"
26
+ ],
27
+ "main": "./dist/cable_ready.js",
28
+ "module": "./dist/cable_ready.js",
29
+ "browser": "./dist/cable_ready.js",
30
+ "import": "./dist/cable_ready.js",
31
+ "unpkg": "./dist/cable_ready.umd.js",
32
+ "umd": "./dist/cable_ready.umd.js",
28
33
  "files": [
29
34
  "dist/*",
30
35
  "javascript/*"
31
36
  ],
32
37
  "scripts": {
33
- "lint": "yarn run prettier-standard:check",
34
- "format": "yarn run prettier-standard:format",
35
- "prettier-standard:check": "yarn run prettier-standard --check ./javascript/**/*.js rollup.config.js",
36
- "prettier-standard:format": "yarn run prettier-standard ./javascript/**/*.js rollup.config.js",
38
+ "lint": "yarn run format --check",
39
+ "format": "yarn run prettier-standard ./javascript/**/*.js rollup.config.mjs",
37
40
  "build": "yarn rollup -c",
38
- "watch": "yarn rollup -wc"
41
+ "watch": "yarn rollup -wc",
42
+ "test": "web-test-runner javascript/test/**/*.test.js",
43
+ "docs:dev": "vitepress dev docs",
44
+ "docs:build": "vitepress build docs && cp ./docs/_redirects ./docs/.vitepress/dist",
45
+ "docs:preview": "vitepress preview docs"
39
46
  },
40
47
  "dependencies": {
41
- "morphdom": "^2.6.1"
48
+ "morphdom": "2.6.1"
42
49
  },
43
50
  "devDependencies": {
44
- "@rollup/plugin-commonjs": "^21.0.3",
45
- "@rollup/plugin-json": "^4.1.0",
46
- "@rollup/plugin-node-resolve": "^13.1.3",
51
+ "@open-wc/testing": "^3.1.7",
52
+ "@rollup/plugin-json": "^6.0.0",
53
+ "@rollup/plugin-node-resolve": "^15.0.1",
54
+ "@rollup/plugin-terser": "^0.4.0",
55
+ "@web/dev-server-esbuild": "^0.3.3",
56
+ "@web/dev-server-rollup": "^0.3.21",
57
+ "@web/test-runner": "^0.15.1",
47
58
  "prettier-standard": "^16.4.1",
48
- "rollup": "^2.70.1",
49
- "rollup-plugin-terser": "^7.0.2"
59
+ "rollup": "^3.19.1",
60
+ "sinon": "^15.0.2",
61
+ "vite": "^4.1.4",
62
+ "vitepress": "^1.0.0-alpha.56",
63
+ "vitepress-plugin-search": "^1.0.4-alpha.19"
50
64
  }
51
65
  }
@@ -1,26 +1,19 @@
1
1
  import resolve from '@rollup/plugin-node-resolve'
2
- import commonjs from '@rollup/plugin-commonjs'
3
2
  import json from '@rollup/plugin-json'
4
- import { terser } from 'rollup-plugin-terser'
3
+ import terser from '@rollup/plugin-terser'
5
4
 
6
5
  const pretty = () => {
7
6
  return terser({
8
7
  mangle: false,
9
8
  compress: false,
10
9
  format: {
10
+ comments: 'all',
11
11
  beautify: true,
12
12
  indent_level: 2
13
13
  }
14
14
  })
15
15
  }
16
16
 
17
- const minify = () => {
18
- return terser({
19
- mangle: true,
20
- compress: true
21
- })
22
- }
23
-
24
17
  const esConfig = {
25
18
  format: 'es',
26
19
  inlineDynamicImports: true
@@ -33,31 +26,20 @@ const umdConfig = {
33
26
  globals: { morphdom: 'morphdom' }
34
27
  }
35
28
 
36
- const distFolders = ['dist/', 'app/assets/javascripts/']
29
+ const baseName = 'cable_ready'
30
+ const distFolders = ['dist', 'app/assets/javascripts']
37
31
 
38
32
  const output = distFolders
39
33
  .map(distFolder => [
40
34
  {
41
35
  ...esConfig,
42
- file: `${distFolder}/cable_ready.js`,
36
+ file: `${distFolder}/${baseName}.js`,
43
37
  plugins: [pretty()]
44
38
  },
45
- {
46
- ...esConfig,
47
- file: `${distFolder}/cable_ready.min.js`,
48
- sourcemap: true,
49
- plugins: [minify()]
50
- },
51
39
  {
52
40
  ...umdConfig,
53
- file: `${distFolder}/cable_ready.umd.js`,
41
+ file: `${distFolder}/${baseName}.umd.js`,
54
42
  plugins: [pretty()]
55
- },
56
- {
57
- ...umdConfig,
58
- file: `${distFolder}/cable_ready.umd.min.js`,
59
- sourcemap: true,
60
- plugins: [minify()]
61
43
  }
62
44
  ])
63
45
  .flat()
@@ -67,7 +49,7 @@ export default [
67
49
  external: ['morphdom'],
68
50
  input: 'javascript/index.js',
69
51
  output,
70
- plugins: [commonjs(), resolve(), json()],
52
+ plugins: [resolve(), json()],
71
53
  watch: {
72
54
  include: 'javascript/**'
73
55
  }
@@ -0,0 +1,12 @@
1
+ import rollupJson from '@rollup/plugin-json'
2
+ import { fromRollup } from '@web/dev-server-rollup'
3
+
4
+ const json = fromRollup(rollupJson)
5
+
6
+ export default {
7
+ nodeResolve: true,
8
+ mimeTypes: {
9
+ '**/*.json': 'js'
10
+ },
11
+ plugins: [json({})]
12
+ }