turbo_boost-commands 0.0.11 → 0.0.12

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

Potentially problematic release.


This version of turbo_boost-commands might be problematic. Click here for more details.

@@ -3,6 +3,12 @@
3
3
  require_relative "sanitizer"
4
4
 
5
5
  class TurboBoost::Commands::Runner
6
+ SUPPORTED_MEDIA_TYPES = {
7
+ "text/html" => true,
8
+ "text/vnd.turbo-boost.html" => true,
9
+ "text/vnd.turbo-stream.html" => true
10
+ }.freeze
11
+
6
12
  attr_reader :controller, :state_manager
7
13
 
8
14
  def initialize(controller, state_manager)
@@ -171,12 +177,14 @@ class TurboBoost::Commands::Runner
171
177
  controller.request.cookie_jar
172
178
  end
173
179
 
174
- def handle_command_event(event, error: nil)
180
+ def handle_command_event(*args)
181
+ event = args.shift
182
+ options = args.extract_options!
175
183
  case event
176
184
  when :aborted
177
185
  prevent_controller_action error: error
178
186
  append_streams_to_response_body
179
- when :errored then prevent_controller_action(error: error)
187
+ when :errored then prevent_controller_action(**options)
180
188
  when :performed then prevent_controller_action if should_prevent_controller_action?
181
189
  end
182
190
  end
@@ -235,9 +243,10 @@ class TurboBoost::Commands::Runner
235
243
  end
236
244
 
237
245
  def append_error_to_response(error)
238
- message = "Error in #{command_name}! #{error.inspect} #{error.backtrace[0, 4].inspect}"
246
+ message = "Error in #{command_name}!\n#{error.inspect} #{error.backtrace[0, 4].inspect}"
239
247
  Rails.logger.error message
240
248
  append_error_event_to_response_body message
249
+ append_error_alert_to_response_body message
241
250
  end
242
251
 
243
252
  def append_streams_to_response_body
@@ -261,6 +270,20 @@ class TurboBoost::Commands::Runner
261
270
  append_to_response_body event
262
271
  end
263
272
 
273
+ def append_error_alert_to_response_body(message)
274
+ return unless Rails.env.development?
275
+ message << <<~MSG
276
+ #{message.truncate(128)}
277
+
278
+ Check the server logs for details and/or set the client `logger.level = 'error'` and check the JavaScript console.
279
+
280
+ Example:
281
+
282
+ TurboBoost.Commands.logger.level = 'error';
283
+ MSG
284
+ append_to_response_body turbo_stream.invoke(:alert, args: [message])
285
+ end
286
+
264
287
  def append_error_event_to_response_body(message)
265
288
  args = ["turbo-boost:command:server-error", {bubbles: true, cancelable: false, detail: parsed_command_params.merge(error: message)}]
266
289
  event = if command_instance&.element.try(:id).present?
@@ -276,7 +299,7 @@ class TurboBoost::Commands::Runner
276
299
  end
277
300
 
278
301
  def append_to_response_body(content)
279
- return unless controller.response.media_type == "text/html"
302
+ return unless SUPPORTED_MEDIA_TYPES[controller.response.media_type]
280
303
  sanitized_content = content_sanitizer.sanitize(content.to_s).html_safe
281
304
  return if sanitized_content.blank?
282
305
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TurboBoost
4
4
  module Commands
5
- VERSION = "0.0.11"
5
+ VERSION = "0.0.12"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo_boost-commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Hopkins (hopsoft)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-27 00:00:00.000000000 Z
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -318,20 +318,6 @@ dependencies:
318
318
  - - ">="
319
319
  - !ruby/object:Gem::Version
320
320
  version: '0'
321
- - !ruby/object:Gem::Dependency
322
- name: web-console
323
- requirement: !ruby/object:Gem::Requirement
324
- requirements:
325
- - - ">="
326
- - !ruby/object:Gem::Version
327
- version: '0'
328
- type: :development
329
- prerelease: false
330
- version_requirements: !ruby/object:Gem::Requirement
331
- requirements:
332
- - - ">="
333
- - !ruby/object:Gem::Version
334
- version: '0'
335
321
  - !ruby/object:Gem::Dependency
336
322
  name: webdrivers
337
323
  requirement: !ruby/object:Gem::Requirement
@@ -358,10 +344,12 @@ files:
358
344
  - README.md
359
345
  - app/assets/builds/@turbo-boost/commands.js
360
346
  - app/assets/builds/@turbo-boost/commands.js.map
347
+ - app/assets/builds/@turbo-boost/commands.metafile.json
361
348
  - app/assets/images/apple-touch-icon.png
362
349
  - app/assets/images/favicon-16x16.png
363
350
  - app/assets/images/favicon-32x32.png
364
351
  - app/assets/images/favicon.ico
352
+ - app/assets/images/hopsoft.webp
365
353
  - app/assets/images/turbo-boost-logo-dark-bg.webp
366
354
  - app/assets/images/turbo-boost-logo.afdesign
367
355
  - app/assets/images/turbo-boost-logo.webp
@@ -369,12 +357,12 @@ files:
369
357
  - app/controllers/concerns/turbo_boost/commands/controller.rb
370
358
  - app/helpers/turbo_boost/commands/application_helper.rb
371
359
  - app/javascript/activity.js
360
+ - app/javascript/confirmation.js
372
361
  - app/javascript/delegates.js
373
362
  - app/javascript/drivers/form.js
374
363
  - app/javascript/drivers/frame.js
375
364
  - app/javascript/drivers/index.js
376
365
  - app/javascript/drivers/method.js
377
- - app/javascript/drivers/turbo_form.js
378
366
  - app/javascript/drivers/window.js
379
367
  - app/javascript/elements.js
380
368
  - app/javascript/events.js
@@ -429,7 +417,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
429
417
  - !ruby/object:Gem::Version
430
418
  version: '0'
431
419
  requirements: []
432
- rubygems_version: 3.3.21
420
+ rubygems_version: 3.4.10
433
421
  signing_key:
434
422
  specification_version: 4
435
423
  summary: Commands to help you build robust reactive applications with Rails & Hotwire.
@@ -1,17 +0,0 @@
1
- import meta from '../meta'
2
-
3
- function invokeCommand (form, payload = {}) {
4
- payload.token = meta.token
5
- const input = document.createElement('input')
6
- input.type = 'hidden'
7
- input.name = 'turbo_boost_command'
8
- input.value = JSON.stringify(payload)
9
- form.appendChild(input)
10
-
11
- const src = payload.src
12
- payload = { ...payload }
13
- delete payload.src
14
- frame.src = urls.build(src, payload)
15
- }
16
-
17
- export default { invokeCommand }