turbo_reflex 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +10 -17
  3. data/README.md +1 -6
  4. data/app/assets/builds/turbo_reflex.js +1 -1
  5. data/app/assets/builds/turbo_reflex.js.map +4 -4
  6. data/app/controllers/concerns/turbo_reflex/controller.rb +12 -108
  7. data/app/javascript/activity.js +20 -0
  8. data/app/javascript/delegates.js +27 -0
  9. data/app/javascript/drivers/form.js +12 -0
  10. data/app/javascript/drivers/frame.js +11 -0
  11. data/app/javascript/drivers/index.js +63 -0
  12. data/app/javascript/drivers/window.js +50 -0
  13. data/app/javascript/elements.js +29 -50
  14. data/app/javascript/index.js +72 -0
  15. data/app/javascript/lifecycle.js +45 -0
  16. data/app/javascript/logger.js +34 -0
  17. data/app/javascript/renderer.js +23 -0
  18. data/app/javascript/schema.js +6 -0
  19. data/app/javascript/turbo.js +42 -0
  20. data/app/javascript/urls.js +9 -0
  21. data/app/javascript/uuids.js +10 -0
  22. data/lib/turbo_reflex/base.rb +59 -9
  23. data/lib/turbo_reflex/engine.rb +1 -9
  24. data/lib/turbo_reflex/runner.rb +202 -0
  25. data/lib/turbo_reflex/version.rb +1 -1
  26. data/package.json +5 -4
  27. data/turbo_reflex.gemspec +1 -0
  28. data/yarn.lock +135 -135
  29. metadata +31 -11
  30. data/app/controllers/turbo_reflex/turbo_reflexes_controller.rb +0 -12
  31. data/app/helpers/turbo_reflex/turbo_reflex_helper.rb +0 -9
  32. data/app/javascript/event_registry.js +0 -34
  33. data/app/javascript/frame_sources.js +0 -28
  34. data/app/javascript/lifecycle_events.js +0 -24
  35. data/app/javascript/security.js +0 -7
  36. data/app/javascript/turbo_reflex.js +0 -111
  37. data/config/routes.rb +0 -5
  38. data/lib/turbo_reflex/errors.rb +0 -6
data/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "turbo_reflex",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Reflexes for Turbo Frames that help you build robust reactive applications",
5
- "main": "app/javascript/turbo_reflex.js",
5
+ "main": "app/javascript/index.js",
6
6
  "repository": "https://github.com/hopsoft/turbo_reflex",
7
7
  "author": "Nate Hopkins (hopsoft) <natehop@gmail.com>",
8
8
  "license": "MIT",
9
9
  "peerDependencies": {
10
- "@hotwired/turbo-rails": ">= 7.1"
10
+ "@hotwired/turbo-rails": ">= 7.1",
11
+ "turbo_ready": ">= 0.1"
11
12
  },
12
13
  "devDependencies": {
13
14
  "esbuild": "^0.15.7",
@@ -17,6 +18,6 @@
17
18
  "rustywind": "^0.15.1"
18
19
  },
19
20
  "scripts": {
20
- "build": "esbuild app/javascript/turbo_reflex.js --bundle --minify --sourcemap --format=esm --outfile=app/assets/builds/turbo_reflex.js"
21
+ "build": "esbuild app/javascript/index.js --bundle --minify --sourcemap --format=esm --outfile=app/assets/builds/turbo_reflex.js"
21
22
  }
22
23
  }
data/turbo_reflex.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency "rails", ">= 6.1"
22
22
  s.add_dependency "turbo-rails", ">= 1.1"
23
+ s.add_dependency "turbo_ready", ">= 0.1"
23
24
 
24
25
  s.add_development_dependency "capybara"
25
26
  s.add_development_dependency "cuprite"
data/yarn.lock CHANGED
@@ -49,15 +49,15 @@
49
49
  dependencies:
50
50
  regenerator-runtime "^0.13.4"
51
51
 
52
- "@esbuild/android-arm@0.15.9":
53
- version "0.15.9"
54
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.9.tgz#7e1221604ab88ed5021ead74fa8cca4405e1e431"
55
- integrity sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==
52
+ "@esbuild/android-arm@0.15.10":
53
+ version "0.15.10"
54
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.10.tgz#a5f9432eb221afc243c321058ef25fe899886892"
55
+ integrity sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==
56
56
 
57
- "@esbuild/linux-loong64@0.15.9":
58
- version "0.15.9"
59
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz#b658a97babf1f40783354af7039b84c3fdfc3fc3"
60
- integrity sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==
57
+ "@esbuild/linux-loong64@0.15.10":
58
+ version "0.15.10"
59
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz#78a42897c2cf8db9fd5f1811f7590393b77774c7"
60
+ integrity sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==
61
61
 
62
62
  "@eslint/eslintrc@^1.3.2":
63
63
  version "1.3.2"
@@ -95,9 +95,9 @@
95
95
  integrity sha512-DwS94K+M0vtG+cymxH0rslJr09qpdjyOLdCjmpKcG/nNiZQfMA1ybAaFEmwk9UaVlUG9STENFeQwyrLevJB+7g==
96
96
 
97
97
  "@humanwhocodes/config-array@^0.10.5":
98
- version "0.10.5"
99
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.5.tgz#bb679745224745fff1e9a41961c1d45a49f81c04"
100
- integrity sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==
98
+ version "0.10.7"
99
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
100
+ integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==
101
101
  dependencies:
102
102
  "@humanwhocodes/object-schema" "^1.2.1"
103
103
  debug "^4.1.1"
@@ -682,133 +682,133 @@ error-ex@^1.3.1:
682
682
  dependencies:
683
683
  is-arrayish "^0.2.1"
684
684
 
685
- esbuild-android-64@0.15.9:
686
- version "0.15.9"
687
- resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz#4a7eb320ca8d3a305f14792061fd9614ccebb7c0"
688
- integrity sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==
689
-
690
- esbuild-android-arm64@0.15.9:
691
- version "0.15.9"
692
- resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz#c948e5686df20857ad361ec67e070d40d7cab985"
693
- integrity sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==
694
-
695
- esbuild-darwin-64@0.15.9:
696
- version "0.15.9"
697
- resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz#25f564fa4b39c1cec84dc46bce5634fdbce1d5e4"
698
- integrity sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==
699
-
700
- esbuild-darwin-arm64@0.15.9:
701
- version "0.15.9"
702
- resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz#60faea3ed95d15239536aa88d06bb82b29278a86"
703
- integrity sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==
704
-
705
- esbuild-freebsd-64@0.15.9:
706
- version "0.15.9"
707
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz#0339ef1c90a919175e7816788224517896657a0e"
708
- integrity sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==
709
-
710
- esbuild-freebsd-arm64@0.15.9:
711
- version "0.15.9"
712
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz#32abfc0be3ae3dd38e5a86a9beadbbcf592f1b57"
713
- integrity sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==
714
-
715
- esbuild-linux-32@0.15.9:
716
- version "0.15.9"
717
- resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz#93581348a4da7ed2b29bc5539f2605ad7fcee77b"
718
- integrity sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==
719
-
720
- esbuild-linux-64@0.15.9:
721
- version "0.15.9"
722
- resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz#0d171e7946c95d0d3ed4826026af2c5632d7dcc4"
723
- integrity sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==
724
-
725
- esbuild-linux-arm64@0.15.9:
726
- version "0.15.9"
727
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz#9838795a3720cbe736d3bc20621bd366eac22f24"
728
- integrity sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==
729
-
730
- esbuild-linux-arm@0.15.9:
731
- version "0.15.9"
732
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz#dce96cd817bc7376f6af3967649c4ab1f2f79506"
733
- integrity sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==
734
-
735
- esbuild-linux-mips64le@0.15.9:
736
- version "0.15.9"
737
- resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz#0335a0739e61aa97cb9b4a018e3facfcca9cdcfd"
738
- integrity sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==
739
-
740
- esbuild-linux-ppc64le@0.15.9:
741
- version "0.15.9"
742
- resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz#18482afb95b8a705e2da0a59d7131bff221281f9"
743
- integrity sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==
744
-
745
- esbuild-linux-riscv64@0.15.9:
746
- version "0.15.9"
747
- resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz#03b6f9708272c117006b9ce1c9ae8aab91b5a5b6"
748
- integrity sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==
749
-
750
- esbuild-linux-s390x@0.15.9:
751
- version "0.15.9"
752
- resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz#65fb645623d575780f155f0ee52935e62f9cca4f"
753
- integrity sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==
754
-
755
- esbuild-netbsd-64@0.15.9:
756
- version "0.15.9"
757
- resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz#7894297bb9e11f3d2f6f31efecd1be4e181f0d54"
758
- integrity sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==
759
-
760
- esbuild-openbsd-64@0.15.9:
761
- version "0.15.9"
762
- resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz#0f9d4c6b6772ae50d491d68ad4cc028300dda7c0"
763
- integrity sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==
764
-
765
- esbuild-sunos-64@0.15.9:
766
- version "0.15.9"
767
- resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz#c32b7ce574b08f814de810ce7c1e34b843768126"
768
- integrity sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==
769
-
770
- esbuild-windows-32@0.15.9:
771
- version "0.15.9"
772
- resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz#37a8f7cfccdb2177cd46613a1a1e1fcb419d36df"
773
- integrity sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==
774
-
775
- esbuild-windows-64@0.15.9:
776
- version "0.15.9"
777
- resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz#5fe1e76fc13dd7f520febecaea110b6f1649c7b2"
778
- integrity sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==
779
-
780
- esbuild-windows-arm64@0.15.9:
781
- version "0.15.9"
782
- resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz#98504428f7ba7d2cfc11940be68ee1139173fdce"
783
- integrity sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==
685
+ esbuild-android-64@0.15.10:
686
+ version "0.15.10"
687
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz#8a59a84acbf2eca96996cadc35642cf055c494f0"
688
+ integrity sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==
689
+
690
+ esbuild-android-arm64@0.15.10:
691
+ version "0.15.10"
692
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz#f453851dc1d8c5409a38cf7613a33852faf4915d"
693
+ integrity sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==
694
+
695
+ esbuild-darwin-64@0.15.10:
696
+ version "0.15.10"
697
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz#778bd29c8186ff47b176c8af58c08cf0fb8e6b86"
698
+ integrity sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==
699
+
700
+ esbuild-darwin-arm64@0.15.10:
701
+ version "0.15.10"
702
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz#b30bbefb46dc3c5d4708b0435e52f6456578d6df"
703
+ integrity sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==
704
+
705
+ esbuild-freebsd-64@0.15.10:
706
+ version "0.15.10"
707
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz#ab301c5f6ded5110dbdd611140bef1a7c2e99236"
708
+ integrity sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==
709
+
710
+ esbuild-freebsd-arm64@0.15.10:
711
+ version "0.15.10"
712
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz#a5b09b867a6ff49110f52343b6f12265db63d43f"
713
+ integrity sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==
714
+
715
+ esbuild-linux-32@0.15.10:
716
+ version "0.15.10"
717
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz#5282fe9915641caf9c8070e4ba2c3e16d358f837"
718
+ integrity sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==
719
+
720
+ esbuild-linux-64@0.15.10:
721
+ version "0.15.10"
722
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz#f3726e85a00149580cb19f8abfabcbb96f5d52bb"
723
+ integrity sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==
724
+
725
+ esbuild-linux-arm64@0.15.10:
726
+ version "0.15.10"
727
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz#2f0056e9d5286edb0185b56655caa8c574d8dbe7"
728
+ integrity sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==
729
+
730
+ esbuild-linux-arm@0.15.10:
731
+ version "0.15.10"
732
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz#40a9270da3c8ffa32cf72e24a79883e323dff08d"
733
+ integrity sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==
734
+
735
+ esbuild-linux-mips64le@0.15.10:
736
+ version "0.15.10"
737
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz#90ce1c4ee0202edb4ac69807dea77f7e5804abc4"
738
+ integrity sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==
739
+
740
+ esbuild-linux-ppc64le@0.15.10:
741
+ version "0.15.10"
742
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz#782837ae7bd5b279178106c9dd801755a21fabdf"
743
+ integrity sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==
744
+
745
+ esbuild-linux-riscv64@0.15.10:
746
+ version "0.15.10"
747
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz#d7420d806ece5174f24f4634303146f915ab4207"
748
+ integrity sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==
749
+
750
+ esbuild-linux-s390x@0.15.10:
751
+ version "0.15.10"
752
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz#21fdf0cb3494a7fb520a71934e4dffce67fe47be"
753
+ integrity sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==
754
+
755
+ esbuild-netbsd-64@0.15.10:
756
+ version "0.15.10"
757
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz#6c06b3107e3df53de381e6299184d4597db0440f"
758
+ integrity sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==
759
+
760
+ esbuild-openbsd-64@0.15.10:
761
+ version "0.15.10"
762
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz#4daef5f5d8e74bbda53b65160029445d582570cf"
763
+ integrity sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==
764
+
765
+ esbuild-sunos-64@0.15.10:
766
+ version "0.15.10"
767
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz#5fe7bef267a02f322fd249a8214d0274937388a7"
768
+ integrity sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==
769
+
770
+ esbuild-windows-32@0.15.10:
771
+ version "0.15.10"
772
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz#48e3dde25ab0135579a288b30ab6ddef6d1f0b28"
773
+ integrity sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==
774
+
775
+ esbuild-windows-64@0.15.10:
776
+ version "0.15.10"
777
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz#387a9515bef3fee502d277a5d0a2db49a4ecda05"
778
+ integrity sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==
779
+
780
+ esbuild-windows-arm64@0.15.10:
781
+ version "0.15.10"
782
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz#5a6fcf2fa49e895949bf5495cf088ab1b43ae879"
783
+ integrity sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==
784
784
 
785
785
  esbuild@^0.15.7:
786
- version "0.15.9"
787
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.9.tgz#33fb18b67b85004b6f7616bec955ca4b3e58935d"
788
- integrity sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==
786
+ version "0.15.10"
787
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.10.tgz#85c2f8446e9b1fe04fae68daceacba033eedbd42"
788
+ integrity sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==
789
789
  optionalDependencies:
790
- "@esbuild/android-arm" "0.15.9"
791
- "@esbuild/linux-loong64" "0.15.9"
792
- esbuild-android-64 "0.15.9"
793
- esbuild-android-arm64 "0.15.9"
794
- esbuild-darwin-64 "0.15.9"
795
- esbuild-darwin-arm64 "0.15.9"
796
- esbuild-freebsd-64 "0.15.9"
797
- esbuild-freebsd-arm64 "0.15.9"
798
- esbuild-linux-32 "0.15.9"
799
- esbuild-linux-64 "0.15.9"
800
- esbuild-linux-arm "0.15.9"
801
- esbuild-linux-arm64 "0.15.9"
802
- esbuild-linux-mips64le "0.15.9"
803
- esbuild-linux-ppc64le "0.15.9"
804
- esbuild-linux-riscv64 "0.15.9"
805
- esbuild-linux-s390x "0.15.9"
806
- esbuild-netbsd-64 "0.15.9"
807
- esbuild-openbsd-64 "0.15.9"
808
- esbuild-sunos-64 "0.15.9"
809
- esbuild-windows-32 "0.15.9"
810
- esbuild-windows-64 "0.15.9"
811
- esbuild-windows-arm64 "0.15.9"
790
+ "@esbuild/android-arm" "0.15.10"
791
+ "@esbuild/linux-loong64" "0.15.10"
792
+ esbuild-android-64 "0.15.10"
793
+ esbuild-android-arm64 "0.15.10"
794
+ esbuild-darwin-64 "0.15.10"
795
+ esbuild-darwin-arm64 "0.15.10"
796
+ esbuild-freebsd-64 "0.15.10"
797
+ esbuild-freebsd-arm64 "0.15.10"
798
+ esbuild-linux-32 "0.15.10"
799
+ esbuild-linux-64 "0.15.10"
800
+ esbuild-linux-arm "0.15.10"
801
+ esbuild-linux-arm64 "0.15.10"
802
+ esbuild-linux-mips64le "0.15.10"
803
+ esbuild-linux-ppc64le "0.15.10"
804
+ esbuild-linux-riscv64 "0.15.10"
805
+ esbuild-linux-s390x "0.15.10"
806
+ esbuild-netbsd-64 "0.15.10"
807
+ esbuild-openbsd-64 "0.15.10"
808
+ esbuild-sunos-64 "0.15.10"
809
+ esbuild-windows-32 "0.15.10"
810
+ esbuild-windows-64 "0.15.10"
811
+ esbuild-windows-arm64 "0.15.10"
812
812
 
813
813
  escape-string-regexp@2.0.0:
814
814
  version "2.0.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
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: 2022-09-27 00:00:00.000000000 Z
11
+ date: 2022-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: turbo_ready
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: capybara
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -326,24 +340,30 @@ files:
326
340
  - app/assets/images/turbo-reflex-logo-light.webp
327
341
  - app/assets/images/turbo-reflex-mark.webp
328
342
  - app/controllers/concerns/turbo_reflex/controller.rb
329
- - app/controllers/turbo_reflex/turbo_reflexes_controller.rb
330
- - app/helpers/turbo_reflex/turbo_reflex_helper.rb
343
+ - app/javascript/activity.js
344
+ - app/javascript/delegates.js
345
+ - app/javascript/drivers/form.js
346
+ - app/javascript/drivers/frame.js
347
+ - app/javascript/drivers/index.js
348
+ - app/javascript/drivers/window.js
331
349
  - app/javascript/elements.js
332
- - app/javascript/event_registry.js
333
- - app/javascript/frame_sources.js
334
- - app/javascript/lifecycle_events.js
335
- - app/javascript/security.js
336
- - app/javascript/turbo_reflex.js
350
+ - app/javascript/index.js
351
+ - app/javascript/lifecycle.js
352
+ - app/javascript/logger.js
353
+ - app/javascript/renderer.js
354
+ - app/javascript/schema.js
355
+ - app/javascript/turbo.js
356
+ - app/javascript/urls.js
357
+ - app/javascript/uuids.js
337
358
  - bin/loc
338
359
  - bin/standardize
339
360
  - bin/test
340
- - config/routes.rb
341
361
  - docker-compose.yml
342
362
  - fly.toml
343
363
  - lib/turbo_reflex.rb
344
364
  - lib/turbo_reflex/base.rb
345
365
  - lib/turbo_reflex/engine.rb
346
- - lib/turbo_reflex/errors.rb
366
+ - lib/turbo_reflex/runner.rb
347
367
  - lib/turbo_reflex/sanitizer.rb
348
368
  - lib/turbo_reflex/version.rb
349
369
  - package.json
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class TurboReflex::TurboReflexesController < ActionController::Base
4
- include TurboReflex::Controller
5
-
6
- def show
7
- return head(:ok) unless turbo_reflex_instance&.turbo_streams.present?
8
- render html: view_context.turbo_reflex_frame_tag do
9
- turbo_reflex_instance.turbo_streams.map(&:to_s).join
10
- end
11
- end
12
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TurboReflex::TurboReflexHelper
4
- include Turbo::FramesHelper
5
-
6
- def turbo_reflex_frame_tag(&block)
7
- turbo_frame_tag("turbo-reflex-frame", data: {turbo_reflex_src: turbo_reflex_path}, &block)
8
- end
9
- end
@@ -1,34 +0,0 @@
1
- const registeredEvents = {}
2
- let eventListener
3
-
4
- function registerEventListener (fn) {
5
- eventListener = fn
6
- }
7
-
8
- function registerEvent (eventName, tagNames) {
9
- registeredEvents[eventName] = tagNames
10
- document.addEventListener(eventName, eventListener, true)
11
- }
12
-
13
- function isRegisteredEvent (eventName, tagName) {
14
- tagName = tagName.toLowerCase()
15
- return (
16
- registeredEvents[eventName].includes(tagName) ||
17
- (!Object.values(registeredEvents)
18
- .flat()
19
- .includes(tagName) &&
20
- registeredEvents[eventName].includes('*'))
21
- )
22
- }
23
-
24
- function logRegisteredEvents () {
25
- console.log(registeredEvents)
26
- }
27
-
28
- export {
29
- registerEventListener,
30
- registerEvent,
31
- registeredEvents,
32
- isRegisteredEvent,
33
- logRegisteredEvents
34
- }
@@ -1,28 +0,0 @@
1
- import LifecycleEvents from './lifecycle_events'
2
- const frameSources = {}
3
-
4
- // fires after receiving a turbo HTTP response
5
- addEventListener('turbo:before-fetch-response', event => {
6
- const frame = event.target
7
- frameSources[frame.id] = frame.src
8
-
9
- const { turboReflexActive, turboReflexElementId } = frame.dataset
10
- if (!turboReflexActive) return
11
-
12
- const element = document.getElementById(turboReflexElementId)
13
- delete frame.dataset.turboReflexActive
14
- delete frame.dataset.turboReflexElementId
15
-
16
- LifecycleEvents.dispatch(LifecycleEvents.finish, element || document, {
17
- frame,
18
- element: element || 'Unknown! Missing id attribute.'
19
- })
20
- })
21
-
22
- // fires when a frame element is navigated and finishes loading
23
- addEventListener('turbo:frame-load', event => {
24
- const frame = event.target
25
- frame.dataset.turboReflexSrc =
26
- frameSources[frame.id] || frame.src || frame.dataset.turboReflexSrc
27
- delete frameSources[frame.id]
28
- })
@@ -1,24 +0,0 @@
1
- const events = {
2
- beforeStart: 'turbo-reflex:before-start',
3
- start: 'turbo-reflex:start',
4
- finish: 'turbo-reflex:finish',
5
- error: 'turbo-reflex:error',
6
- missingFrameId: 'turbo-reflex:missing-frame-id',
7
- missingFrame: 'turbo-reflex:missing-frame',
8
- missingFrameSrc: 'turbo-reflex:missing-frame-src'
9
- }
10
-
11
- function dispatch (name, target = document, detail = {}) {
12
- const event = new CustomEvent(name, {
13
- detail,
14
- cancelable: true,
15
- bubbles: true
16
- })
17
- target.dispatchEvent(event)
18
- }
19
-
20
- function logEventNames () {
21
- Object.values(events).forEach(name => console.log(name))
22
- }
23
-
24
- export default { ...events, dispatch, logEventNames }
@@ -1,7 +0,0 @@
1
- const Security = {
2
- get token () {
3
- return document.getElementById('turbo-reflex-token').getAttribute('content')
4
- }
5
- }
6
-
7
- export default Security
@@ -1,111 +0,0 @@
1
- import './frame_sources'
2
- import Security from './security'
3
- import LifecycleEvents from './lifecycle_events'
4
- import {
5
- findClosestReflex,
6
- findClosestFrame,
7
- findFrameId,
8
- findFrame,
9
- findFrameSrc,
10
- buildAttributePayload
11
- } from './elements'
12
- import {
13
- registerEventListener,
14
- registerEvent,
15
- registeredEvents,
16
- isRegisteredEvent,
17
- logRegisteredEvents
18
- } from './event_registry'
19
-
20
- // fires before making a turbo HTTP request
21
- addEventListener('turbo:before-fetch-request', event => {
22
- const frame = event.target
23
- const { turboReflexActive } = frame.dataset
24
- if (!turboReflexActive) return
25
- const { fetchOptions } = event.detail
26
- fetchOptions.headers['Turbo-Reflex'] = Security.token
27
- })
28
-
29
- function buildURL (urlString) {
30
- const a = document.createElement('a')
31
- a.href = urlString
32
- return new URL(a)
33
- }
34
-
35
- function invokeFormReflex (form, payload = {}) {
36
- payload.token = Security.token
37
- const input = document.createElement('input')
38
- input.type = 'hidden'
39
- input.name = 'turbo_reflex'
40
- input.value = JSON.stringify(payload)
41
- form.appendChild(input)
42
- }
43
-
44
- function invokeReflex (event) {
45
- let element, frameId, frame, frameSrc
46
- try {
47
- element = findClosestReflex(event.target)
48
- if (!element) return
49
-
50
- if (!isRegisteredEvent(event.type, element.tagName)) return
51
-
52
- LifecycleEvents.dispatch(LifecycleEvents.beforeStart, element, { element })
53
-
54
- frameId = findFrameId(element)
55
- if (!frameId) return
56
-
57
- frame = findFrame(frameId)
58
- if (!frame) return
59
-
60
- frameSrc = findFrameSrc(frame)
61
- if (!frameSrc) return
62
-
63
- const payload = {
64
- frameId: frameId,
65
- element: buildAttributePayload(element)
66
- }
67
-
68
- LifecycleEvents.dispatch(LifecycleEvents.start, element, {
69
- element,
70
- frameId,
71
- frame,
72
- frameSrc,
73
- payload
74
- })
75
- frame.dataset.turboReflexActive = true
76
- frame.dataset.turboReflexElementId = element.id
77
-
78
- if (element.tagName.toLowerCase() === 'form')
79
- return invokeFormReflex(element, payload)
80
-
81
- event.preventDefault()
82
- const frameURL = buildURL(frameSrc)
83
- frameURL.searchParams.set('turbo_reflex', JSON.stringify(payload))
84
- frame.src = frameURL.toString()
85
- } catch (error) {
86
- console.error(
87
- `TurboReflex encountered an unexpected error!`,
88
- { element, frameId, frame, frameSrc, target: event.target },
89
- error
90
- )
91
- LifecycleEvents.dispatch(LifecycleEvents.error, element || document, {
92
- element,
93
- frameId,
94
- frame,
95
- frameSrc,
96
- error
97
- })
98
- }
99
- }
100
-
101
- // wire things up and setup default events
102
- registerEventListener(invokeReflex)
103
- registerEvent('change', ['input', 'select', 'textarea'])
104
- registerEvent('submit', ['form'])
105
- registerEvent('click', ['*'])
106
-
107
- export default {
108
- registerEvent,
109
- logRegisteredEvents,
110
- logLifecycleEventNames: LifecycleEvents.logEventNames
111
- }
data/config/routes.rb DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Rails.application.routes.draw do
4
- match "turbo_reflex", to: "turbo_reflex/turbo_reflexes#show", via: :all, as: :turbo_reflex
5
- end