Ensure @rails/actioncable package contains complete source

Action Cable's JavaScript library can optionally be imported as an ES6 module via `import { … } from "@rails/actioncable/src"`, but that module is broken in most of the releases published on npm:

```
ERROR in ./node_modules/@rails/actioncable/src/connection.js
Module not found: Error: Can't resolve './internal' in './node_modules/@rails/actioncable/src'
 @ ./node_modules/@rails/actioncable/src/connection.js
 @ ./node_modules/@rails/actioncable/src/index.js
```

Because `internal.js` was gitignored, it would only be included if the publisher happened to have it generated locally. Committing it to version control ensures that won't happen, and gives us better visibility into changes over time.

References:
- https://github.com/rails/rails/pull/34370
- c0368ad090b79c19300a4aa133bb188b2d9ab611
This commit is contained in:
Javan Makhmali 2019-08-15 09:19:59 -04:00
parent 8ab4fd12f1
commit 55311b1596
3 changed files with 20 additions and 2 deletions

@ -1,4 +1,3 @@
/app/javascript/action_cable/internal.js
/src
/test/javascript/compiled/
/tmp/

@ -38,7 +38,7 @@ namespace :assets do
require "action_cable"
File.open(File.join(__dir__, "app/javascript/action_cable/internal.js").to_s, "w+") do |file|
file.write("export default #{JSON.generate(ActionCable::INTERNAL)}")
file.write("export default #{JSON.pretty_generate(ActionCable::INTERNAL)}\n")
end
end
end

@ -0,0 +1,19 @@
export default {
"message_types": {
"welcome": "welcome",
"disconnect": "disconnect",
"ping": "ping",
"confirmation": "confirm_subscription",
"rejection": "reject_subscription"
},
"disconnect_reasons": {
"unauthorized": "unauthorized",
"invalid_request": "invalid_request",
"server_restart": "server_restart"
},
"default_mount_path": "/cable",
"protocols": [
"actioncable-v1-json",
"actioncable-unsupported"
]
}