tessa 2.0 → 6.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -18
  3. data/app/assets/javascripts/tessa.esm.js +212 -173
  4. data/app/assets/javascripts/tessa.js +206 -167
  5. data/app/javascript/activestorage/file_checksum.ts +76 -0
  6. data/app/javascript/tessa/index.ts +264 -0
  7. data/app/javascript/tessa/types.ts +34 -0
  8. data/config/routes.rb +0 -1
  9. data/lib/tessa/simple_form/asset_input.rb +24 -25
  10. data/lib/tessa/version.rb +1 -1
  11. data/lib/tessa.rb +0 -80
  12. data/package.json +7 -2
  13. data/rollup.config.js +5 -5
  14. data/spec/dummy/app/models/single_asset_model.rb +1 -1
  15. data/spec/dummy/app/models/single_asset_model_form.rb +3 -5
  16. data/spec/dummy/bin/rails +2 -2
  17. data/spec/dummy/bin/rake +2 -2
  18. data/spec/dummy/bin/setup +14 -6
  19. data/spec/dummy/bin/yarn +9 -3
  20. data/spec/dummy/config/application.rb +11 -9
  21. data/spec/dummy/config/boot.rb +1 -1
  22. data/spec/dummy/config/environment.rb +1 -1
  23. data/spec/dummy/config/environments/development.rb +34 -5
  24. data/spec/dummy/config/environments/production.rb +49 -10
  25. data/spec/dummy/config/environments/test.rb +28 -12
  26. data/spec/dummy/config/initializers/backtrace_silencers.rb +4 -3
  27. data/spec/dummy/config/initializers/content_security_policy.rb +5 -0
  28. data/spec/dummy/config/initializers/filter_parameter_logging.rb +3 -1
  29. data/spec/dummy/config/initializers/new_framework_defaults_6_1.rb +67 -0
  30. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  31. data/spec/dummy/config/initializers/wrap_parameters.rb +5 -0
  32. data/spec/dummy/config/locales/en.yml +1 -1
  33. data/spec/dummy/config/routes.rb +1 -1
  34. data/spec/dummy/config/storage.yml +31 -0
  35. data/spec/dummy/config.ru +2 -1
  36. data/spec/dummy/db/migrate/20230406194400_add_service_name_to_active_storage_blobs.active_storage.rb +22 -0
  37. data/spec/dummy/db/migrate/20230406194401_create_active_storage_variant_records.active_storage.rb +27 -0
  38. data/spec/dummy/db/schema.rb +15 -7
  39. data/tessa.gemspec +4 -5
  40. data/tsconfig.json +10 -0
  41. data/yarn.lock +74 -7
  42. metadata +36 -74
  43. data/app/javascript/activestorage/file_checksum.js +0 -53
  44. data/app/javascript/tessa/index.js.coffee +0 -183
  45. data/lib/tasks/tessa.rake +0 -18
  46. data/lib/tessa/active_storage/asset_wrapper.rb +0 -32
  47. data/lib/tessa/asset/failure.rb +0 -37
  48. data/lib/tessa/asset.rb +0 -47
  49. data/lib/tessa/asset_change.rb +0 -49
  50. data/lib/tessa/asset_change_set.rb +0 -49
  51. data/lib/tessa/config.rb +0 -16
  52. data/lib/tessa/controller_helpers.rb +0 -16
  53. data/lib/tessa/fake_connection.rb +0 -29
  54. data/lib/tessa/jobs/migrate_assets_job.rb +0 -222
  55. data/lib/tessa/model/dynamic_extensions.rb +0 -145
  56. data/lib/tessa/model/field.rb +0 -77
  57. data/lib/tessa/model.rb +0 -94
  58. data/lib/tessa/rack_upload_proxy.rb +0 -41
  59. data/lib/tessa/response_factory.rb +0 -15
  60. data/lib/tessa/upload/uploads_file.rb +0 -18
  61. data/lib/tessa/upload.rb +0 -31
  62. data/lib/tessa/view_helpers.rb +0 -23
  63. data/spec/dummy/app/models/multiple_asset_model.rb +0 -8
  64. data/spec/support/remote_call_macro.rb +0 -40
  65. data/spec/tessa/asset/failure_spec.rb +0 -48
  66. data/spec/tessa/asset_change_set_spec.rb +0 -198
  67. data/spec/tessa/asset_change_spec.rb +0 -86
  68. data/spec/tessa/asset_spec.rb +0 -196
  69. data/spec/tessa/config_spec.rb +0 -70
  70. data/spec/tessa/controller_helpers_spec.rb +0 -55
  71. data/spec/tessa/jobs/migrate_assets_job_spec.rb +0 -247
  72. data/spec/tessa/model_field_spec.rb +0 -72
  73. data/spec/tessa/model_spec.rb +0 -325
  74. data/spec/tessa/rack_upload_proxy_spec.rb +0 -83
  75. data/spec/tessa/upload/uploads_file_spec.rb +0 -72
  76. data/spec/tessa/upload_spec.rb +0 -125
  77. data/spec/tessa_spec.rb +0 -23
data/yarn.lock CHANGED
@@ -88,6 +88,14 @@
88
88
  is-module "^1.0.0"
89
89
  resolve "^1.19.0"
90
90
 
91
+ "@rollup/plugin-typescript@^11.1.0":
92
+ version "11.1.0"
93
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz#4dd2a98475a791200d3e4dd1b8234073ad96c535"
94
+ integrity sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==
95
+ dependencies:
96
+ "@rollup/pluginutils" "^5.0.1"
97
+ resolve "^1.22.1"
98
+
91
99
  "@rollup/pluginutils@^3.1.0":
92
100
  version "3.1.0"
93
101
  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
@@ -97,6 +105,22 @@
97
105
  estree-walker "^1.0.1"
98
106
  picomatch "^2.2.2"
99
107
 
108
+ "@rollup/pluginutils@^5.0.1":
109
+ version "5.0.2"
110
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
111
+ integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
112
+ dependencies:
113
+ "@types/estree" "^1.0.0"
114
+ estree-walker "^2.0.2"
115
+ picomatch "^2.3.1"
116
+
117
+ "@types/dropzone@^5.7.4":
118
+ version "5.7.4"
119
+ resolved "https://registry.yarnpkg.com/@types/dropzone/-/dropzone-5.7.4.tgz#667e6f22fac6428db7553663fd1e31547d994161"
120
+ integrity sha512-9kLJ2YAmVRWYrHvDoa95pQzHF0HUMKcznsS7FM1Mht5Yieec+HMB6Ybfm+ocvLjvFCvgyYGFTp4nzNFxhZmo3g==
121
+ dependencies:
122
+ "@types/jquery" "*"
123
+
100
124
  "@types/estree@*":
101
125
  version "0.0.51"
102
126
  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
@@ -107,6 +131,18 @@
107
131
  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
108
132
  integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
109
133
 
134
+ "@types/estree@^1.0.0":
135
+ version "1.0.0"
136
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
137
+ integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
138
+
139
+ "@types/jquery@*", "@types/jquery@^3.5.16":
140
+ version "3.5.16"
141
+ resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.16.tgz#632131baf30951915b0317d48c98e9890bdf051d"
142
+ integrity sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==
143
+ dependencies:
144
+ "@types/sizzle" "*"
145
+
110
146
  "@types/json5@^0.0.29":
111
147
  version "0.0.29"
112
148
  resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@@ -124,6 +160,16 @@
124
160
  dependencies:
125
161
  "@types/node" "*"
126
162
 
163
+ "@types/sizzle@*":
164
+ version "2.3.3"
165
+ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
166
+ integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==
167
+
168
+ "@types/spark-md5@^3.0.2":
169
+ version "3.0.2"
170
+ resolved "https://registry.yarnpkg.com/@types/spark-md5/-/spark-md5-3.0.2.tgz#da2e8a778a20335fc4f40b6471c4b0d86b70da55"
171
+ integrity sha512-82E/lVRaqelV9qmRzzJ1PKTpyrpnT7mwdneKNJB9hUtypZDMggloDfFUCIqRRx3lYRxteCwXSq9c+W71Vf0QnQ==
172
+
127
173
  acorn-jsx@^3.0.0:
128
174
  version "3.0.1"
129
175
  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -320,11 +366,6 @@ co@^4.6.0:
320
366
  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
321
367
  integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
322
368
 
323
- coffeescript@^2.7.0:
324
- version "2.7.0"
325
- resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-2.7.0.tgz#a43ec03be6885d6d1454850ea70b9409c391279c"
326
- integrity sha512-hzWp6TUE2d/jCcN67LrW1eh5b/rSDKQK6oD6VMLlggYVUUFexgTH9z3dNYihzX4RMhze5FTUsUmOXViJKFQR/A==
327
-
328
369
  color-convert@^1.9.0:
329
370
  version "1.9.3"
330
371
  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -604,7 +645,7 @@ estree-walker@^1.0.1:
604
645
  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
605
646
  integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
606
647
 
607
- estree-walker@^2.0.1:
648
+ estree-walker@^2.0.1, estree-walker@^2.0.2:
608
649
  version "2.0.2"
609
650
  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
610
651
  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
@@ -871,6 +912,13 @@ is-callable@^1.1.4, is-callable@^1.2.4:
871
912
  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
872
913
  integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
873
914
 
915
+ is-core-module@^2.11.0:
916
+ version "2.12.0"
917
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4"
918
+ integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==
919
+ dependencies:
920
+ has "^1.0.3"
921
+
874
922
  is-core-module@^2.8.1:
875
923
  version "2.9.0"
876
924
  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
@@ -1210,7 +1258,7 @@ path-parse@^1.0.7:
1210
1258
  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1211
1259
  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1212
1260
 
1213
- picomatch@^2.2.2:
1261
+ picomatch@^2.2.2, picomatch@^2.3.1:
1214
1262
  version "2.3.1"
1215
1263
  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1216
1264
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -1296,6 +1344,15 @@ resolve@^1.1.6, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22
1296
1344
  path-parse "^1.0.7"
1297
1345
  supports-preserve-symlinks-flag "^1.0.0"
1298
1346
 
1347
+ resolve@^1.22.1:
1348
+ version "1.22.2"
1349
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
1350
+ integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
1351
+ dependencies:
1352
+ is-core-module "^2.11.0"
1353
+ path-parse "^1.0.7"
1354
+ supports-preserve-symlinks-flag "^1.0.0"
1355
+
1299
1356
  restore-cursor@^2.0.0:
1300
1357
  version "2.0.0"
1301
1358
  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -1588,6 +1645,11 @@ tsconfig-paths@^3.14.1:
1588
1645
  minimist "^1.2.6"
1589
1646
  strip-bom "^3.0.0"
1590
1647
 
1648
+ tslib@^2.5.0:
1649
+ version "2.5.0"
1650
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
1651
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
1652
+
1591
1653
  type-check@~0.3.2:
1592
1654
  version "0.3.2"
1593
1655
  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -1600,6 +1662,11 @@ typedarray@^0.0.6:
1600
1662
  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1601
1663
  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
1602
1664
 
1665
+ typescript@^5.0.4:
1666
+ version "5.0.4"
1667
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
1668
+ integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
1669
+
1603
1670
  unbox-primitive@^1.0.2:
1604
1671
  version "1.0.2"
1605
1672
  resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tessa
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.0'
4
+ version: 6.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Powell
@@ -9,36 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-02-17 00:00:00.000000000 Z
12
+ date: 2023-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: virtus
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: 1.0.4
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: 1.0.4
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: rake
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
18
  - - "~>"
33
19
  - !ruby/object:Gem::Version
34
- version: '10.0'
20
+ version: '13'
35
21
  type: :development
36
22
  prerelease: false
37
23
  version_requirements: !ruby/object:Gem::Requirement
38
24
  requirements:
39
25
  - - "~>"
40
26
  - !ruby/object:Gem::Version
41
- version: '10.0'
27
+ version: '13'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: rspec
44
30
  requirement: !ruby/object:Gem::Requirement
@@ -87,28 +73,42 @@ dependencies:
87
73
  requirements:
88
74
  - - "~>"
89
75
  - !ruby/object:Gem::Version
90
- version: '5'
76
+ version: '6'
91
77
  type: :development
92
78
  prerelease: false
93
79
  version_requirements: !ruby/object:Gem::Requirement
94
80
  requirements:
95
81
  - - "~>"
96
82
  - !ruby/object:Gem::Version
97
- version: '5'
83
+ version: '6'
98
84
  - !ruby/object:Gem::Dependency
99
85
  name: sqlite3
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - "~>"
103
89
  - !ruby/object:Gem::Version
104
- version: 1.3.6
90
+ version: '1.4'
105
91
  type: :development
106
92
  prerelease: false
107
93
  version_requirements: !ruby/object:Gem::Requirement
108
94
  requirements:
109
95
  - - "~>"
110
96
  - !ruby/object:Gem::Version
111
- version: 1.3.6
97
+ version: '1.4'
98
+ - !ruby/object:Gem::Dependency
99
+ name: listen
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
112
  description: Manage your assets.
113
113
  email:
114
114
  - jpowell@watermark.org
@@ -133,34 +133,17 @@ files:
133
133
  - app/assets/javascripts/.keep
134
134
  - app/assets/javascripts/tessa.esm.js
135
135
  - app/assets/javascripts/tessa.js
136
- - app/javascript/activestorage/file_checksum.js
137
- - app/javascript/tessa/index.js.coffee
136
+ - app/javascript/activestorage/file_checksum.ts
137
+ - app/javascript/tessa/index.ts
138
+ - app/javascript/tessa/types.ts
138
139
  - bin/rspec
139
140
  - config/routes.rb
140
141
  - docs/tessa-activestorage-sequence-diagram.drawio.png
141
- - lib/tasks/tessa.rake
142
142
  - lib/tessa.rb
143
- - lib/tessa/active_storage/asset_wrapper.rb
144
- - lib/tessa/asset.rb
145
- - lib/tessa/asset/failure.rb
146
- - lib/tessa/asset_change.rb
147
- - lib/tessa/asset_change_set.rb
148
- - lib/tessa/config.rb
149
- - lib/tessa/controller_helpers.rb
150
143
  - lib/tessa/engine.rb
151
- - lib/tessa/fake_connection.rb
152
- - lib/tessa/jobs/migrate_assets_job.rb
153
- - lib/tessa/model.rb
154
- - lib/tessa/model/dynamic_extensions.rb
155
- - lib/tessa/model/field.rb
156
- - lib/tessa/rack_upload_proxy.rb
157
- - lib/tessa/response_factory.rb
158
144
  - lib/tessa/simple_form.rb
159
145
  - lib/tessa/simple_form/asset_input.rb
160
- - lib/tessa/upload.rb
161
- - lib/tessa/upload/uploads_file.rb
162
146
  - lib/tessa/version.rb
163
- - lib/tessa/view_helpers.rb
164
147
  - package.json
165
148
  - rollup.config.js
166
149
  - spec/dummy/.gitignore
@@ -174,7 +157,6 @@ files:
174
157
  - spec/dummy/app/helpers/application_helper.rb
175
158
  - spec/dummy/app/jobs/application_job.rb
176
159
  - spec/dummy/app/models/concerns/.keep
177
- - spec/dummy/app/models/multiple_asset_model.rb
178
160
  - spec/dummy/app/models/single_asset_model.rb
179
161
  - spec/dummy/app/models/single_asset_model_form.rb
180
162
  - spec/dummy/app/views/layouts/application.html.erb
@@ -201,6 +183,8 @@ files:
201
183
  - spec/dummy/config/initializers/filter_parameter_logging.rb
202
184
  - spec/dummy/config/initializers/inflections.rb
203
185
  - spec/dummy/config/initializers/mime_types.rb
186
+ - spec/dummy/config/initializers/new_framework_defaults_6_1.rb
187
+ - spec/dummy/config/initializers/permissions_policy.rb
204
188
  - spec/dummy/config/initializers/wrap_parameters.rb
205
189
  - spec/dummy/config/locales/en.yml
206
190
  - spec/dummy/config/puma.rb
@@ -209,6 +193,8 @@ files:
209
193
  - spec/dummy/db/migrate/20220606221557_create_active_storage_tables.active_storage.rb
210
194
  - spec/dummy/db/migrate/20220606221900_create_single_asset_models.rb
211
195
  - spec/dummy/db/migrate/20220607191519_create_multiple_asset_models.rb
196
+ - spec/dummy/db/migrate/20230406194400_add_service_name_to_active_storage_blobs.active_storage.rb
197
+ - spec/dummy/db/migrate/20230406194401_create_active_storage_variant_records.active_storage.rb
212
198
  - spec/dummy/db/schema.rb
213
199
  - spec/dummy/lib/assets/.keep
214
200
  - spec/dummy/lib/tasks/.keep
@@ -225,21 +211,8 @@ files:
225
211
  - spec/dummy/vendor/.keep
226
212
  - spec/rails_helper.rb
227
213
  - spec/spec_helper.rb
228
- - spec/support/remote_call_macro.rb
229
- - spec/tessa/asset/failure_spec.rb
230
- - spec/tessa/asset_change_set_spec.rb
231
- - spec/tessa/asset_change_spec.rb
232
- - spec/tessa/asset_spec.rb
233
- - spec/tessa/config_spec.rb
234
- - spec/tessa/controller_helpers_spec.rb
235
- - spec/tessa/jobs/migrate_assets_job_spec.rb
236
- - spec/tessa/model_field_spec.rb
237
- - spec/tessa/model_spec.rb
238
- - spec/tessa/rack_upload_proxy_spec.rb
239
- - spec/tessa/upload/uploads_file_spec.rb
240
- - spec/tessa/upload_spec.rb
241
- - spec/tessa_spec.rb
242
214
  - tessa.gemspec
215
+ - tsconfig.json
243
216
  - yarn.lock
244
217
  homepage: https://github.com/watermarkchurch/tessa-client
245
218
  licenses:
@@ -256,9 +229,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
256
229
  version: '2.3'
257
230
  required_rubygems_version: !ruby/object:Gem::Requirement
258
231
  requirements:
259
- - - ">="
232
+ - - ">"
260
233
  - !ruby/object:Gem::Version
261
- version: '0'
234
+ version: 1.3.1
262
235
  requirements: []
263
236
  rubygems_version: 3.0.3.1
264
237
  signing_key:
@@ -276,7 +249,6 @@ test_files:
276
249
  - spec/dummy/app/helpers/application_helper.rb
277
250
  - spec/dummy/app/jobs/application_job.rb
278
251
  - spec/dummy/app/models/concerns/.keep
279
- - spec/dummy/app/models/multiple_asset_model.rb
280
252
  - spec/dummy/app/models/single_asset_model.rb
281
253
  - spec/dummy/app/models/single_asset_model_form.rb
282
254
  - spec/dummy/app/views/layouts/application.html.erb
@@ -303,6 +275,8 @@ test_files:
303
275
  - spec/dummy/config/initializers/filter_parameter_logging.rb
304
276
  - spec/dummy/config/initializers/inflections.rb
305
277
  - spec/dummy/config/initializers/mime_types.rb
278
+ - spec/dummy/config/initializers/new_framework_defaults_6_1.rb
279
+ - spec/dummy/config/initializers/permissions_policy.rb
306
280
  - spec/dummy/config/initializers/wrap_parameters.rb
307
281
  - spec/dummy/config/locales/en.yml
308
282
  - spec/dummy/config/puma.rb
@@ -311,6 +285,8 @@ test_files:
311
285
  - spec/dummy/db/migrate/20220606221557_create_active_storage_tables.active_storage.rb
312
286
  - spec/dummy/db/migrate/20220606221900_create_single_asset_models.rb
313
287
  - spec/dummy/db/migrate/20220607191519_create_multiple_asset_models.rb
288
+ - spec/dummy/db/migrate/20230406194400_add_service_name_to_active_storage_blobs.active_storage.rb
289
+ - spec/dummy/db/migrate/20230406194401_create_active_storage_variant_records.active_storage.rb
314
290
  - spec/dummy/db/schema.rb
315
291
  - spec/dummy/lib/assets/.keep
316
292
  - spec/dummy/lib/tasks/.keep
@@ -327,17 +303,3 @@ test_files:
327
303
  - spec/dummy/vendor/.keep
328
304
  - spec/rails_helper.rb
329
305
  - spec/spec_helper.rb
330
- - spec/support/remote_call_macro.rb
331
- - spec/tessa/asset/failure_spec.rb
332
- - spec/tessa/asset_change_set_spec.rb
333
- - spec/tessa/asset_change_spec.rb
334
- - spec/tessa/asset_spec.rb
335
- - spec/tessa/config_spec.rb
336
- - spec/tessa/controller_helpers_spec.rb
337
- - spec/tessa/jobs/migrate_assets_job_spec.rb
338
- - spec/tessa/model_field_spec.rb
339
- - spec/tessa/model_spec.rb
340
- - spec/tessa/rack_upload_proxy_spec.rb
341
- - spec/tessa/upload/uploads_file_spec.rb
342
- - spec/tessa/upload_spec.rb
343
- - spec/tessa_spec.rb
@@ -1,53 +0,0 @@
1
- import SparkMD5 from "spark-md5"
2
-
3
- const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice
4
-
5
- export class FileChecksum {
6
- static create(file, callback) {
7
- const instance = new FileChecksum(file)
8
- instance.create(callback)
9
- }
10
-
11
- constructor(file) {
12
- this.file = file
13
- this.chunkSize = 2097152 // 2MB
14
- this.chunkCount = Math.ceil(this.file.size / this.chunkSize)
15
- this.chunkIndex = 0
16
- }
17
-
18
- create(callback) {
19
- this.callback = callback
20
- this.md5Buffer = new SparkMD5.ArrayBuffer
21
- this.fileReader = new FileReader
22
- this.fileReader.addEventListener("load", event => this.fileReaderDidLoad(event))
23
- this.fileReader.addEventListener("error", event => this.fileReaderDidError(event))
24
- this.readNextChunk()
25
- }
26
-
27
- fileReaderDidLoad(event) {
28
- this.md5Buffer.append(event.target.result)
29
-
30
- if (!this.readNextChunk()) {
31
- const binaryDigest = this.md5Buffer.end(true)
32
- const base64digest = btoa(binaryDigest)
33
- this.callback(null, base64digest)
34
- }
35
- }
36
-
37
- fileReaderDidError(event) {
38
- this.callback(`Error reading ${this.file.name}`)
39
- }
40
-
41
- readNextChunk() {
42
- if (this.chunkIndex < this.chunkCount || (this.chunkIndex == 0 && this.chunkCount == 0)) {
43
- const start = this.chunkIndex * this.chunkSize
44
- const end = Math.min(start + this.chunkSize, this.file.size)
45
- const bytes = fileSlice.call(this.file, start, end)
46
- this.fileReader.readAsArrayBuffer(bytes)
47
- this.chunkIndex++
48
- return true
49
- } else {
50
- return false
51
- }
52
- }
53
- }
@@ -1,183 +0,0 @@
1
- import {FileChecksum} from '../activestorage/file_checksum'
2
-
3
- window.WCC ||= {}
4
- $ = window.jQuery
5
-
6
- Dropzone.autoDiscover = off
7
-
8
- class window.WCC.Dropzone extends window.Dropzone
9
-
10
- uploadFile: (file) ->
11
- xhr = new XMLHttpRequest
12
- file.xhr = xhr
13
-
14
- # Set in our custom accept method
15
- xhr.open file.uploadMethod, file.uploadURL, true
16
-
17
- response = null
18
-
19
- handleError = =>
20
- @_errorProcessing [file], response || @options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr
21
-
22
- updateProgress = (e) =>
23
- if e?
24
- progress = 100 * e.loaded / e.total
25
-
26
- file.upload =
27
- progress: progress
28
- total: e.total
29
- bytesSent: e.loaded
30
- else
31
- # Called when the file finished uploading
32
-
33
- allFilesFinished = yes
34
-
35
- progress = 100
36
-
37
- allFilesFinished = no unless file.upload.progress == 100 and file.upload.bytesSent == file.upload.total
38
- file.upload.progress = progress
39
- file.upload.bytesSent = file.upload.total
40
-
41
- # Nothing to do, all files already at 100%
42
- return if allFilesFinished
43
-
44
- @emit "uploadprogress", file, progress, file.upload.bytesSent
45
-
46
- xhr.onload = (e) =>
47
- return if file.status == WCC.Dropzone.CANCELED
48
- return unless xhr.readyState is 4
49
-
50
- response = xhr.responseText
51
-
52
- if xhr.getResponseHeader("content-type") and ~xhr.getResponseHeader("content-type").indexOf "application/json"
53
- try
54
- response = JSON.parse response
55
- catch e
56
- response = "Invalid JSON response from server."
57
-
58
- updateProgress()
59
-
60
- unless 200 <= xhr.status < 300
61
- handleError()
62
- else
63
- @_finished [file], response, e
64
-
65
- xhr.onerror = =>
66
- return if file.status == WCC.Dropzone.CANCELED
67
- handleError()
68
-
69
- # Some browsers do not have the .upload property
70
- progressObj = xhr.upload ? xhr
71
- progressObj.onprogress = updateProgress
72
-
73
- headers =
74
- "Accept": "application/json",
75
- "Cache-Control": "no-cache",
76
- "X-Requested-With": "XMLHttpRequest",
77
-
78
- $.extend headers, @options.headers if @options.headers
79
- $.extend headers, file.uploadHeaders if file.uploadHeaders
80
-
81
- xhr.setRequestHeader headerName, headerValue for headerName, headerValue of headers
82
-
83
- @emit "sending", file, xhr
84
-
85
- xhr.send file
86
-
87
- uploadFiles: (files) ->
88
- @uploadFile(file) for file in files
89
-
90
- WCC.Dropzone.uploadPendingWarning =
91
- "File uploads have not yet completed. If you submit the form now they will
92
- not be saved. Are you sure you want to continue?"
93
-
94
- WCC.Dropzone.prototype.defaultOptions.url = "UNUSED"
95
-
96
- WCC.Dropzone.prototype.defaultOptions.dictDefaultMessage = "Drop files or click to upload."
97
-
98
- WCC.Dropzone.prototype.defaultOptions.accept = (file, done) ->
99
- dz = $(file._removeLink).closest('.tessa-upload').first()
100
- tessaParams = dz.data('tessa-params') or {}
101
-
102
- postData =
103
- name: file.name
104
- size: file.size
105
- mime_type: file.type
106
-
107
- postData = $.extend postData, tessaParams
108
-
109
- FileChecksum.create file, (error, checksum) ->
110
- return done(error) if error
111
-
112
- postData['checksum'] = checksum
113
-
114
- $.ajax '/tessa/uploads',
115
- type: 'POST',
116
- data: postData,
117
- success: (response) ->
118
- file.uploadURL = response.upload_url
119
- file.uploadMethod = response.upload_method
120
- file.uploadHeaders = response.upload_headers
121
- file.assetID = response.asset_id
122
- done()
123
- error: (response) ->
124
- done("Failed to initiate the upload process!")
125
-
126
- window.WCC.tessaInit = (sel) ->
127
- sel = sel || 'form:has(.tessa-upload)'
128
- $(sel).each (i, form) ->
129
- $form = $(form)
130
- $form.bind 'submit', (event) ->
131
- safeToSubmit = true
132
- $form.find('.tessa-upload').each (j, dropzoneElement) ->
133
- $(dropzoneElement.dropzone.files).each (k, file) ->
134
- if file.status? and (file.status != WCC.Dropzone.SUCCESS)
135
- safeToSubmit = false
136
- if not safeToSubmit and not confirm(WCC.Dropzone.uploadPendingWarning)
137
- return false
138
-
139
- $('.tessa-upload', sel).each (i, item) ->
140
- $item = $(item)
141
- args =
142
- maxFiles: 1
143
- addRemoveLinks: true
144
-
145
- $.extend args, $item.data("dropzone-options")
146
- args.maxFiles = null if $item.hasClass("multiple")
147
- inputPrefix = $item.data("asset-field-prefix")
148
-
149
- dropzone = new WCC.Dropzone item, args
150
-
151
- $item.find('input[type="hidden"]').each (j, input) ->
152
- $input = $(input)
153
- mockFile = $input.data("meta")
154
- mockFile.accepted = true
155
- dropzone.options.addedfile.call(dropzone, mockFile)
156
- dropzone.options.thumbnail.call(dropzone, mockFile, mockFile.url)
157
- dropzone.emit("complete", mockFile)
158
- dropzone.files.push mockFile
159
-
160
- updateAction = (file) ->
161
- return unless file.assetID?
162
- inputID = "#tessa_asset_action_#{file.assetID}"
163
- actionInput = $(inputID)
164
- unless actionInput.length
165
- actionInput = $('<input type="hidden">')
166
- .attr
167
- id: inputID
168
- name: "#{inputPrefix}[#{file.assetID}][action]"
169
- .appendTo item
170
-
171
- actionInput.val file.action
172
-
173
- dropzone.on 'success', (file) ->
174
- file.action = "add"
175
- updateAction(file)
176
-
177
- dropzone.on 'removedfile', (file) ->
178
- file.action = "remove"
179
- updateAction(file)
180
-
181
-
182
- $ ->
183
- window.WCC.tessaInit()
data/lib/tasks/tessa.rake DELETED
@@ -1,18 +0,0 @@
1
-
2
- namespace :tessa do
3
- desc "Begins the migration of all Tessa assets to ActiveStorage."
4
- task :migrate => :environment do
5
- abort "Tessa::MigrateAssetsJob can no longer be performed because the Tessa connection was removed. "\
6
- "Please downgrade to tessa ~>1.0 and try again."
7
- end
8
-
9
- desc "Verifies that the migration has completed"
10
- task :verify => :environment do
11
- unless Tessa::MigrateAssetsJob.complete?
12
- state = Tessa::MigrateAssetsJob::ProcessingState.initialize_from_models
13
-
14
- abort "Tessa::MigrateAssetsJob not yet complete! #{state.count} records remain to be migrated. "\
15
- "Please downgrade to tessa ~>1.0 and try again."
16
- end
17
- end
18
- end
@@ -1,32 +0,0 @@
1
- module Tessa::ActiveStorage
2
- class AssetWrapper < SimpleDelegator
3
- def id
4
- key
5
- end
6
-
7
- def public_url
8
- Rails.application.routes.url_helpers.
9
- rails_blob_url(__getobj__, disposition: :inline)
10
- end
11
-
12
- def private_url(expires_in: 1.day)
13
- service_url(disposition: :inline, expires_in: expires_in)
14
- end
15
-
16
- def private_download_url(expires_in: 1.day)
17
- service_url(disposition: 'attachment', expires_in: expires_in)
18
- end
19
-
20
- def meta
21
- {
22
- mime_type: content_type,
23
- size: byte_size,
24
- name: filename
25
- }
26
- end
27
-
28
- def failure?
29
- false
30
- end
31
- end
32
- end