tessa 2.0 → 6.0.0.rc2

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.
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