tessa 1.2.3 → 6.0.0.rc1

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/Gemfile +1 -0
  3. data/README.md +76 -3
  4. data/app/assets/javascripts/tessa.esm.js +212 -173
  5. data/app/assets/javascripts/tessa.js +206 -167
  6. data/app/javascript/activestorage/file_checksum.ts +76 -0
  7. data/app/javascript/tessa/index.ts +264 -0
  8. data/app/javascript/tessa/types.ts +34 -0
  9. data/config/routes.rb +0 -1
  10. data/docs/tessa-activestorage-sequence-diagram.drawio.png +0 -0
  11. data/lib/tessa/simple_form/asset_input.rb +24 -25
  12. data/lib/tessa/version.rb +1 -1
  13. data/lib/tessa.rb +0 -80
  14. data/package.json +7 -2
  15. data/rollup.config.js +5 -5
  16. data/spec/dummy/app/models/single_asset_model.rb +1 -1
  17. data/spec/dummy/app/models/single_asset_model_form.rb +3 -5
  18. data/spec/dummy/bin/rails +2 -2
  19. data/spec/dummy/bin/rake +2 -2
  20. data/spec/dummy/bin/setup +14 -6
  21. data/spec/dummy/bin/yarn +9 -3
  22. data/spec/dummy/config/application.rb +11 -9
  23. data/spec/dummy/config/boot.rb +1 -1
  24. data/spec/dummy/config/environment.rb +1 -1
  25. data/spec/dummy/config/environments/development.rb +34 -5
  26. data/spec/dummy/config/environments/production.rb +49 -10
  27. data/spec/dummy/config/environments/test.rb +28 -12
  28. data/spec/dummy/config/initializers/backtrace_silencers.rb +4 -3
  29. data/spec/dummy/config/initializers/content_security_policy.rb +5 -0
  30. data/spec/dummy/config/initializers/filter_parameter_logging.rb +3 -1
  31. data/spec/dummy/config/initializers/new_framework_defaults_6_1.rb +67 -0
  32. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  33. data/spec/dummy/config/initializers/wrap_parameters.rb +5 -0
  34. data/spec/dummy/config/locales/en.yml +1 -1
  35. data/spec/dummy/config/routes.rb +1 -1
  36. data/spec/dummy/config/storage.yml +31 -0
  37. data/spec/dummy/config.ru +2 -1
  38. data/spec/dummy/db/migrate/20230406194400_add_service_name_to_active_storage_blobs.active_storage.rb +22 -0
  39. data/spec/dummy/db/migrate/20230406194401_create_active_storage_variant_records.active_storage.rb +27 -0
  40. data/spec/dummy/db/schema.rb +15 -7
  41. data/tessa.gemspec +4 -6
  42. data/tsconfig.json +10 -0
  43. data/yarn.lock +74 -7
  44. metadata +37 -85
  45. data/app/javascript/activestorage/file_checksum.js +0 -53
  46. data/app/javascript/tessa/index.js.coffee +0 -183
  47. data/lib/tasks/tessa.rake +0 -7
  48. data/lib/tessa/active_storage/asset_wrapper.rb +0 -32
  49. data/lib/tessa/asset/failure.rb +0 -37
  50. data/lib/tessa/asset.rb +0 -47
  51. data/lib/tessa/asset_change.rb +0 -49
  52. data/lib/tessa/asset_change_set.rb +0 -49
  53. data/lib/tessa/config.rb +0 -24
  54. data/lib/tessa/controller_helpers.rb +0 -16
  55. data/lib/tessa/jobs/migrate_assets_job.rb +0 -225
  56. data/lib/tessa/model/dynamic_extensions.rb +0 -162
  57. data/lib/tessa/model/field.rb +0 -77
  58. data/lib/tessa/model.rb +0 -104
  59. data/lib/tessa/rack_upload_proxy.rb +0 -41
  60. data/lib/tessa/response_factory.rb +0 -15
  61. data/lib/tessa/upload/uploads_file.rb +0 -20
  62. data/lib/tessa/upload.rb +0 -31
  63. data/lib/tessa/view_helpers.rb +0 -23
  64. data/spec/dummy/app/models/multiple_asset_model.rb +0 -8
  65. data/spec/support/remote_call_macro.rb +0 -45
  66. data/spec/tessa/asset/failure_spec.rb +0 -48
  67. data/spec/tessa/asset_change_set_spec.rb +0 -198
  68. data/spec/tessa/asset_change_spec.rb +0 -86
  69. data/spec/tessa/asset_spec.rb +0 -196
  70. data/spec/tessa/config_spec.rb +0 -112
  71. data/spec/tessa/controller_helpers_spec.rb +0 -55
  72. data/spec/tessa/jobs/migrate_assets_job_spec.rb +0 -247
  73. data/spec/tessa/model_field_spec.rb +0 -72
  74. data/spec/tessa/model_spec.rb +0 -578
  75. data/spec/tessa/rack_upload_proxy_spec.rb +0 -83
  76. data/spec/tessa/upload/uploads_file_spec.rb +0 -72
  77. data/spec/tessa/upload_spec.rb +0 -125
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: 1.2.3
4
+ version: 6.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Powell
@@ -9,50 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-03-20 00:00:00.000000000 Z
12
+ date: 2023-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: faraday
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: virtus
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: 1.0.4
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: 1.0.4
42
14
  - !ruby/object:Gem::Dependency
43
15
  name: rake
44
16
  requirement: !ruby/object:Gem::Requirement
45
17
  requirements:
46
18
  - - "~>"
47
19
  - !ruby/object:Gem::Version
48
- version: '10.0'
20
+ version: '13'
49
21
  type: :development
50
22
  prerelease: false
51
23
  version_requirements: !ruby/object:Gem::Requirement
52
24
  requirements:
53
25
  - - "~>"
54
26
  - !ruby/object:Gem::Version
55
- version: '10.0'
27
+ version: '13'
56
28
  - !ruby/object:Gem::Dependency
57
29
  name: rspec
58
30
  requirement: !ruby/object:Gem::Requirement
@@ -101,28 +73,42 @@ dependencies:
101
73
  requirements:
102
74
  - - "~>"
103
75
  - !ruby/object:Gem::Version
104
- version: '5'
76
+ version: '6'
105
77
  type: :development
106
78
  prerelease: false
107
79
  version_requirements: !ruby/object:Gem::Requirement
108
80
  requirements:
109
81
  - - "~>"
110
82
  - !ruby/object:Gem::Version
111
- version: '5'
83
+ version: '6'
112
84
  - !ruby/object:Gem::Dependency
113
85
  name: sqlite3
114
86
  requirement: !ruby/object:Gem::Requirement
115
87
  requirements:
116
88
  - - "~>"
117
89
  - !ruby/object:Gem::Version
118
- version: 1.3.6
90
+ version: '1.4'
119
91
  type: :development
120
92
  prerelease: false
121
93
  version_requirements: !ruby/object:Gem::Requirement
122
94
  requirements:
123
95
  - - "~>"
124
96
  - !ruby/object:Gem::Version
125
- 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'
126
112
  description: Manage your assets.
127
113
  email:
128
114
  - jpowell@watermark.org
@@ -147,32 +133,17 @@ files:
147
133
  - app/assets/javascripts/.keep
148
134
  - app/assets/javascripts/tessa.esm.js
149
135
  - app/assets/javascripts/tessa.js
150
- - app/javascript/activestorage/file_checksum.js
151
- - 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
152
139
  - bin/rspec
153
140
  - config/routes.rb
154
- - lib/tasks/tessa.rake
141
+ - docs/tessa-activestorage-sequence-diagram.drawio.png
155
142
  - lib/tessa.rb
156
- - lib/tessa/active_storage/asset_wrapper.rb
157
- - lib/tessa/asset.rb
158
- - lib/tessa/asset/failure.rb
159
- - lib/tessa/asset_change.rb
160
- - lib/tessa/asset_change_set.rb
161
- - lib/tessa/config.rb
162
- - lib/tessa/controller_helpers.rb
163
143
  - lib/tessa/engine.rb
164
- - lib/tessa/jobs/migrate_assets_job.rb
165
- - lib/tessa/model.rb
166
- - lib/tessa/model/dynamic_extensions.rb
167
- - lib/tessa/model/field.rb
168
- - lib/tessa/rack_upload_proxy.rb
169
- - lib/tessa/response_factory.rb
170
144
  - lib/tessa/simple_form.rb
171
145
  - lib/tessa/simple_form/asset_input.rb
172
- - lib/tessa/upload.rb
173
- - lib/tessa/upload/uploads_file.rb
174
146
  - lib/tessa/version.rb
175
- - lib/tessa/view_helpers.rb
176
147
  - package.json
177
148
  - rollup.config.js
178
149
  - spec/dummy/.gitignore
@@ -186,7 +157,6 @@ files:
186
157
  - spec/dummy/app/helpers/application_helper.rb
187
158
  - spec/dummy/app/jobs/application_job.rb
188
159
  - spec/dummy/app/models/concerns/.keep
189
- - spec/dummy/app/models/multiple_asset_model.rb
190
160
  - spec/dummy/app/models/single_asset_model.rb
191
161
  - spec/dummy/app/models/single_asset_model_form.rb
192
162
  - spec/dummy/app/views/layouts/application.html.erb
@@ -213,6 +183,8 @@ files:
213
183
  - spec/dummy/config/initializers/filter_parameter_logging.rb
214
184
  - spec/dummy/config/initializers/inflections.rb
215
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
216
188
  - spec/dummy/config/initializers/wrap_parameters.rb
217
189
  - spec/dummy/config/locales/en.yml
218
190
  - spec/dummy/config/puma.rb
@@ -221,6 +193,8 @@ files:
221
193
  - spec/dummy/db/migrate/20220606221557_create_active_storage_tables.active_storage.rb
222
194
  - spec/dummy/db/migrate/20220606221900_create_single_asset_models.rb
223
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
224
198
  - spec/dummy/db/schema.rb
225
199
  - spec/dummy/lib/assets/.keep
226
200
  - spec/dummy/lib/tasks/.keep
@@ -237,20 +211,8 @@ files:
237
211
  - spec/dummy/vendor/.keep
238
212
  - spec/rails_helper.rb
239
213
  - spec/spec_helper.rb
240
- - spec/support/remote_call_macro.rb
241
- - spec/tessa/asset/failure_spec.rb
242
- - spec/tessa/asset_change_set_spec.rb
243
- - spec/tessa/asset_change_spec.rb
244
- - spec/tessa/asset_spec.rb
245
- - spec/tessa/config_spec.rb
246
- - spec/tessa/controller_helpers_spec.rb
247
- - spec/tessa/jobs/migrate_assets_job_spec.rb
248
- - spec/tessa/model_field_spec.rb
249
- - spec/tessa/model_spec.rb
250
- - spec/tessa/rack_upload_proxy_spec.rb
251
- - spec/tessa/upload/uploads_file_spec.rb
252
- - spec/tessa/upload_spec.rb
253
214
  - tessa.gemspec
215
+ - tsconfig.json
254
216
  - yarn.lock
255
217
  homepage: https://github.com/watermarkchurch/tessa-client
256
218
  licenses:
@@ -267,9 +229,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
267
229
  version: '2.3'
268
230
  required_rubygems_version: !ruby/object:Gem::Requirement
269
231
  requirements:
270
- - - ">="
232
+ - - ">"
271
233
  - !ruby/object:Gem::Version
272
- version: '0'
234
+ version: 1.3.1
273
235
  requirements: []
274
236
  rubygems_version: 3.0.3.1
275
237
  signing_key:
@@ -287,7 +249,6 @@ test_files:
287
249
  - spec/dummy/app/helpers/application_helper.rb
288
250
  - spec/dummy/app/jobs/application_job.rb
289
251
  - spec/dummy/app/models/concerns/.keep
290
- - spec/dummy/app/models/multiple_asset_model.rb
291
252
  - spec/dummy/app/models/single_asset_model.rb
292
253
  - spec/dummy/app/models/single_asset_model_form.rb
293
254
  - spec/dummy/app/views/layouts/application.html.erb
@@ -314,6 +275,8 @@ test_files:
314
275
  - spec/dummy/config/initializers/filter_parameter_logging.rb
315
276
  - spec/dummy/config/initializers/inflections.rb
316
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
317
280
  - spec/dummy/config/initializers/wrap_parameters.rb
318
281
  - spec/dummy/config/locales/en.yml
319
282
  - spec/dummy/config/puma.rb
@@ -322,6 +285,8 @@ test_files:
322
285
  - spec/dummy/db/migrate/20220606221557_create_active_storage_tables.active_storage.rb
323
286
  - spec/dummy/db/migrate/20220606221900_create_single_asset_models.rb
324
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
325
290
  - spec/dummy/db/schema.rb
326
291
  - spec/dummy/lib/assets/.keep
327
292
  - spec/dummy/lib/tasks/.keep
@@ -338,16 +303,3 @@ test_files:
338
303
  - spec/dummy/vendor/.keep
339
304
  - spec/rails_helper.rb
340
305
  - spec/spec_helper.rb
341
- - spec/support/remote_call_macro.rb
342
- - spec/tessa/asset/failure_spec.rb
343
- - spec/tessa/asset_change_set_spec.rb
344
- - spec/tessa/asset_change_spec.rb
345
- - spec/tessa/asset_spec.rb
346
- - spec/tessa/config_spec.rb
347
- - spec/tessa/controller_helpers_spec.rb
348
- - spec/tessa/jobs/migrate_assets_job_spec.rb
349
- - spec/tessa/model_field_spec.rb
350
- - spec/tessa/model_spec.rb
351
- - spec/tessa/rack_upload_proxy_spec.rb
352
- - spec/tessa/upload/uploads_file_spec.rb
353
- - spec/tessa/upload_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,7 +0,0 @@
1
-
2
- namespace :tessa do
3
- desc "Begins the migration of all Tessa assets to ActiveStorage."
4
- task :migrate => :environment do
5
- Tessa::MigrateAssetsJob.perform_later
6
- end
7
- 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