turbo_boost-commands 0.0.10 → 0.0.12
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.
- checksums.yaml +4 -4
- data/README.md +167 -133
- data/app/assets/builds/@turbo-boost/commands.js +1 -5
- data/app/assets/builds/@turbo-boost/commands.js.map +4 -4
- data/app/assets/builds/@turbo-boost/commands.metafile.json +1 -0
- data/app/assets/images/hopsoft.webp +0 -0
- data/app/javascript/activity.js +4 -4
- data/app/javascript/confirmation.js +33 -0
- data/app/javascript/delegates.js +6 -8
- data/app/javascript/drivers/form.js +1 -1
- data/app/javascript/drivers/frame.js +1 -1
- data/app/javascript/drivers/index.js +4 -7
- data/app/javascript/drivers/method.js +1 -1
- data/app/javascript/drivers/window.js +15 -24
- data/app/javascript/elements.js +6 -8
- data/app/javascript/events.js +9 -7
- data/app/javascript/index.js +10 -9
- data/app/javascript/lifecycle.js +4 -12
- data/app/javascript/logger.js +4 -4
- data/app/javascript/meta.js +4 -4
- data/app/javascript/renderer.js +2 -2
- data/app/javascript/schema.js +2 -1
- data/app/javascript/state/index.js +5 -5
- data/app/javascript/state/observable.js +4 -5
- data/app/javascript/turbo.js +5 -18
- data/app/javascript/urls.js +1 -1
- data/app/javascript/uuids.js +2 -5
- data/lib/turbo_boost/commands/attribute_set.rb +1 -1
- data/lib/turbo_boost/commands/engine.rb +1 -1
- data/lib/turbo_boost/commands/runner.rb +27 -4
- data/lib/turbo_boost/commands/version.rb +1 -1
- metadata +8 -20
- data/app/javascript/drivers/turbo_form.js +0 -17
@@ -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(
|
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(
|
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}
|
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
|
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
|
|
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.
|
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-
|
11
|
+
date: 2023-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0.
|
47
|
+
version: 0.0.8
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0.
|
54
|
+
version: 0.0.8
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: capybara
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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.
|
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 }
|