turbo_boost-commands 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

@@ -1,9 +1,6 @@
1
- function v4 () {
1
+ function v4() {
2
2
  return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
3
- (
4
- c ^
5
- (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
6
- ).toString(16)
3
+ (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
7
4
  )
8
5
  }
9
6
 
@@ -21,7 +21,7 @@ class TurboBoost::Commands::AttributeSet
21
21
  name.delete_prefix!("#{prefix}_") unless prefix.blank?
22
22
 
23
23
  # type casting
24
- value = value.to_i if value.is_a?(String) && value.match?(/\A\d+\z/)
24
+ value = value.to_i if value.is_a?(String) && value.match?(/\A-?\d+\z/)
25
25
  value = value == "true" if value.is_a?(String) && value.match?(/\A(true|false)\z/i)
26
26
 
27
27
  instance_variable_set "@#{name}", value
@@ -19,7 +19,7 @@ module TurboBoost::Commands
19
19
  class Engine < ::Rails::Engine
20
20
  config.turbo_boost_commands = ActiveSupport::OrderedOptions.new
21
21
  config.turbo_boost_commands[:max_cookie_size] = ActionDispatch::Cookies::MAX_COOKIE_SIZE / 3
22
- config.turbo_boost_commands[:validate_client_token] = true
22
+ config.turbo_boost_commands[:validate_client_token] = false
23
23
 
24
24
  # must opt-in to state overrides
25
25
  config.turbo_boost_commands[:apply_client_state_overrides] = false
@@ -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.13"
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.13
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-08-09 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 }