@tuturuuu/utils 0.0.2 → 0.6.0

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 (186) hide show
  1. package/CHANGELOG.md +305 -0
  2. package/biome.json +5 -0
  3. package/jsr.json +8 -8
  4. package/package.json +63 -32
  5. package/src/__tests__/ai-temp-auth.test.ts +309 -0
  6. package/src/__tests__/api-proxy-guard.test.ts +1451 -0
  7. package/src/__tests__/app-url.test.ts +270 -0
  8. package/src/__tests__/avatar-url.test.ts +97 -0
  9. package/src/__tests__/color-helper.test.ts +179 -0
  10. package/src/__tests__/constants.test.ts +351 -0
  11. package/src/__tests__/crypto.test.ts +107 -0
  12. package/src/__tests__/date-helper.test.ts +408 -0
  13. package/src/__tests__/fixtures/task-description-full-featured.json +456 -0
  14. package/src/__tests__/format.test.ts +317 -0
  15. package/src/__tests__/html-sanitizer.test.ts +360 -0
  16. package/src/__tests__/interest-calculator.test.ts +336 -0
  17. package/src/__tests__/interest-detector.test.ts +222 -0
  18. package/src/__tests__/label-colors.test.ts +241 -0
  19. package/src/__tests__/name-helper.test.ts +158 -0
  20. package/src/__tests__/node-diff.test.ts +576 -0
  21. package/src/__tests__/notification-service.test.ts +210 -0
  22. package/src/__tests__/onboarding-helper.test.ts +331 -0
  23. package/src/__tests__/path-helper.test.ts +152 -0
  24. package/src/__tests__/permissions.test.tsx +81 -0
  25. package/src/__tests__/request-emoji-limit.test.ts +172 -0
  26. package/src/__tests__/search-helper.test.ts +51 -0
  27. package/src/__tests__/storage-display-name.test.ts +37 -0
  28. package/src/__tests__/storage-path.test.ts +238 -0
  29. package/src/__tests__/tag-utils.test.ts +205 -0
  30. package/src/__tests__/task-description-yjs-state.test.ts +581 -0
  31. package/src/__tests__/task-helper-board-api-routing.test.ts +94 -0
  32. package/src/__tests__/task-helper-create-task.test.ts +129 -0
  33. package/src/__tests__/task-helpers.test.ts +464 -0
  34. package/src/__tests__/task-overrides.test.ts +305 -0
  35. package/src/__tests__/task-reorder-cache.test.ts +74 -0
  36. package/src/__tests__/task-sort-keys.test.ts +36 -0
  37. package/src/__tests__/task-transformers.test.ts +62 -0
  38. package/src/__tests__/text-helper.test.ts +776 -0
  39. package/src/__tests__/time-helper.test.ts +70 -0
  40. package/src/__tests__/time-tracker-period.test.ts +55 -0
  41. package/src/__tests__/timezone.test.ts +117 -0
  42. package/src/__tests__/upstash-rest.test.ts +77 -0
  43. package/src/__tests__/uuid-helper.test.ts +133 -0
  44. package/src/__tests__/workspace-helper.test.ts +859 -0
  45. package/src/__tests__/workspace-limits.test.ts +255 -0
  46. package/src/__tests__/yjs-helper.test.ts +581 -0
  47. package/src/abuse-protection/__tests__/backend-rate-limit.test.ts +113 -0
  48. package/src/abuse-protection/__tests__/edge.test.ts +136 -0
  49. package/src/abuse-protection/__tests__/index.test.ts +562 -0
  50. package/src/abuse-protection/__tests__/reputation.test.ts +192 -0
  51. package/src/abuse-protection/backend-rate-limit.ts +44 -0
  52. package/src/abuse-protection/constants.ts +117 -0
  53. package/src/abuse-protection/edge.ts +223 -0
  54. package/src/abuse-protection/index.ts +1545 -0
  55. package/src/abuse-protection/reputation.ts +587 -0
  56. package/src/abuse-protection/types.ts +97 -0
  57. package/src/abuse-protection/user-agent.ts +124 -0
  58. package/src/abuse-protection/user-suspension.ts +231 -0
  59. package/src/ai-temp-auth.ts +315 -0
  60. package/src/api-proxy-guard.ts +965 -0
  61. package/src/app-url.ts +96 -0
  62. package/src/avatar-url.ts +64 -0
  63. package/src/break-duration.ts +84 -0
  64. package/src/calendar-auth-token.test.ts +37 -0
  65. package/src/calendar-auth-token.ts +19 -0
  66. package/src/calendar-sync-coordination.md +197 -0
  67. package/src/calendar-utils.test.ts +169 -0
  68. package/src/calendar-utils.ts +91 -0
  69. package/src/color-helper.ts +110 -0
  70. package/src/common/nextjs.tsx +99 -0
  71. package/src/common/scan.tsx +15 -0
  72. package/src/configs/reports.ts +160 -0
  73. package/src/constants.ts +85 -0
  74. package/src/crypto.ts +21 -0
  75. package/src/currencies.ts +97 -0
  76. package/src/date-helper.ts +313 -0
  77. package/src/editor/convert-to-task.ts +264 -0
  78. package/src/editor/index.ts +5 -0
  79. package/src/email/__tests__/client.test.ts +141 -0
  80. package/src/email/__tests__/validation.test.ts +46 -0
  81. package/src/email/client.ts +92 -0
  82. package/src/email/server.ts +128 -0
  83. package/src/email/validation.ts +11 -0
  84. package/src/encryption/__tests__/calendar-events.test.ts +411 -0
  85. package/src/encryption/__tests__/configuration.test.ts +114 -0
  86. package/src/encryption/__tests__/field-encryption.test.ts +232 -0
  87. package/src/encryption/__tests__/key-generation.test.ts +30 -0
  88. package/src/encryption/__tests__/performance-edge-cases.test.ts +187 -0
  89. package/src/encryption/__tests__/test-helpers.ts +22 -0
  90. package/src/encryption/__tests__/workspace-key-encryption.test.ts +129 -0
  91. package/src/encryption/encryption-service.ts +343 -0
  92. package/src/encryption/index.ts +25 -0
  93. package/src/encryption/types.ts +57 -0
  94. package/src/exchange-rates.ts +49 -0
  95. package/src/feature-flags/__tests__/feature-flags.test.ts +302 -0
  96. package/src/feature-flags/core.ts +322 -0
  97. package/src/feature-flags/data.ts +16 -0
  98. package/src/feature-flags/default.ts +18 -0
  99. package/src/feature-flags/index.ts +7 -0
  100. package/src/feature-flags/requestable-features.ts +79 -0
  101. package/src/feature-flags/types.ts +4 -0
  102. package/src/fetcher.ts +2 -0
  103. package/src/finance/index.ts +4 -0
  104. package/src/finance/interest-calculator.ts +456 -0
  105. package/src/finance/interest-detector.ts +141 -0
  106. package/src/finance/transform-invoice-results.ts +219 -0
  107. package/src/finance/wallet-permissions.test.ts +169 -0
  108. package/src/finance/wallet-permissions.ts +82 -0
  109. package/src/format.ts +122 -3
  110. package/src/generated/platform-build-metadata.ts +11 -0
  111. package/src/hooks/use-platform.ts +64 -0
  112. package/src/html-sanitizer.ts +155 -0
  113. package/src/internal-domains.ts +497 -0
  114. package/src/keyboard-preset.ts +109 -0
  115. package/src/label-colors.ts +213 -0
  116. package/src/launchable-apps.test.ts +126 -0
  117. package/src/launchable-apps.ts +490 -0
  118. package/src/name-helper.ts +269 -0
  119. package/src/next-config.test.ts +234 -0
  120. package/src/next-config.ts +203 -0
  121. package/src/node-diff.ts +375 -0
  122. package/src/notification-service.ts +379 -0
  123. package/src/nova/scores/__tests__/calculate.test.ts +254 -0
  124. package/src/nova/scores/calculate.ts +132 -0
  125. package/src/nova/submissions/check-permission.ts +132 -0
  126. package/src/onboarding-helper.ts +213 -0
  127. package/src/path-helper.ts +93 -0
  128. package/src/permissions.tsx +1170 -0
  129. package/src/plan-helpers.test.ts +188 -0
  130. package/src/plan-helpers.ts +80 -0
  131. package/src/platform-release.test.ts +74 -0
  132. package/src/platform-release.ts +155 -0
  133. package/src/portless.ts +124 -0
  134. package/src/priority-styles.ts +42 -0
  135. package/src/request-emoji-limit.ts +335 -0
  136. package/src/search-helper.ts +18 -0
  137. package/src/search.test.ts +89 -0
  138. package/src/search.ts +355 -0
  139. package/src/storage-display-name.ts +30 -0
  140. package/src/storage-path.ts +147 -0
  141. package/src/tag-utils.ts +159 -0
  142. package/src/task/reorder.ts +245 -0
  143. package/src/task/transformers.ts +149 -0
  144. package/src/task-date-timezone.ts +133 -0
  145. package/src/task-description-content.ts +240 -0
  146. package/src/task-helper/board.ts +193 -0
  147. package/src/task-helper/bulk-actions.ts +564 -0
  148. package/src/task-helper/personal-external-staging.ts +21 -0
  149. package/src/task-helper/recycle-bin.ts +202 -0
  150. package/src/task-helper/relationships.ts +346 -0
  151. package/src/task-helper/shared.ts +109 -0
  152. package/src/task-helper/sort-keys.ts +337 -0
  153. package/src/task-helper/task-hooks-basic.ts +342 -0
  154. package/src/task-helper/task-hooks-move.ts +264 -0
  155. package/src/task-helper/task-operations.ts +278 -0
  156. package/src/task-helper.ts +12 -0
  157. package/src/task-helpers.ts +241 -0
  158. package/src/task-list-status.ts +62 -0
  159. package/src/task-overrides.ts +82 -0
  160. package/src/task-snapshot.ts +374 -0
  161. package/src/text-diff.ts +81 -0
  162. package/src/text-helper.ts +537 -0
  163. package/src/time-helper.ts +63 -0
  164. package/src/time-tracker-period.ts +73 -0
  165. package/src/timeblock-helper.ts +418 -0
  166. package/src/timezone.ts +190 -0
  167. package/src/timezones.json +1271 -0
  168. package/src/upstash-rest.ts +56 -0
  169. package/src/user-helper.ts +296 -0
  170. package/src/uuid-helper.ts +11 -0
  171. package/src/workspace-handle.ts +10 -0
  172. package/src/workspace-helper.ts +1408 -0
  173. package/src/workspace-limits.ts +68 -0
  174. package/src/yjs-helper.ts +217 -0
  175. package/src/yjs-task-description.ts +81 -0
  176. package/tsconfig.json +3 -5
  177. package/tsconfig.typecheck.json +33 -0
  178. package/vitest.config.ts +36 -0
  179. package/dist/index.d.ts +0 -8
  180. package/dist/index.js +0 -2
  181. package/dist/index.js.map +0 -1
  182. package/dist/index.mjs +0 -2
  183. package/dist/index.mjs.map +0 -1
  184. package/eslint.config.mjs +0 -20
  185. package/rollup.config.js +0 -41
  186. package/src/index.ts +0 -1
@@ -0,0 +1,456 @@
1
+ {
2
+ "type": "doc",
3
+ "content": [
4
+ {
5
+ "type": "heading",
6
+ "attrs": { "textAlign": null, "level": 1 },
7
+ "content": [{ "type": "text", "text": "Heading 1" }]
8
+ },
9
+ {
10
+ "type": "heading",
11
+ "attrs": { "textAlign": null, "level": 2 },
12
+ "content": [{ "type": "text", "text": "Heading 2" }]
13
+ },
14
+ {
15
+ "type": "heading",
16
+ "attrs": { "textAlign": null, "level": 3 },
17
+ "content": [{ "type": "text", "text": "Heading 3" }]
18
+ },
19
+ {
20
+ "type": "paragraph",
21
+ "attrs": { "textAlign": null },
22
+ "content": [
23
+ { "type": "text", "marks": [{ "type": "bold" }], "text": "Bold" }
24
+ ]
25
+ },
26
+ {
27
+ "type": "paragraph",
28
+ "attrs": { "textAlign": null },
29
+ "content": [
30
+ { "type": "text", "marks": [{ "type": "italic" }], "text": "Italic" }
31
+ ]
32
+ },
33
+ {
34
+ "type": "paragraph",
35
+ "attrs": { "textAlign": null },
36
+ "content": [
37
+ {
38
+ "type": "text",
39
+ "marks": [{ "type": "strike" }],
40
+ "text": "Strikethrough"
41
+ }
42
+ ]
43
+ },
44
+ {
45
+ "type": "paragraph",
46
+ "attrs": { "textAlign": null },
47
+ "content": [
48
+ { "type": "text", "text": "Text" },
49
+ {
50
+ "type": "text",
51
+ "marks": [{ "type": "superscript" }],
52
+ "text": "Superscript"
53
+ },
54
+ {
55
+ "type": "text",
56
+ "marks": [{ "type": "subscript" }],
57
+ "text": "Subscript"
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "type": "paragraph",
63
+ "attrs": { "textAlign": "center" },
64
+ "content": [{ "type": "text", "text": "Align Center" }]
65
+ },
66
+ {
67
+ "type": "paragraph",
68
+ "attrs": { "textAlign": "right" },
69
+ "content": [{ "type": "text", "text": "Align Right" }]
70
+ },
71
+ {
72
+ "type": "bulletList",
73
+ "content": [
74
+ {
75
+ "type": "listItem",
76
+ "content": [
77
+ {
78
+ "type": "paragraph",
79
+ "attrs": { "textAlign": "left" },
80
+ "content": [{ "type": "text", "text": "Bullet List #1" }]
81
+ },
82
+ {
83
+ "type": "bulletList",
84
+ "content": [
85
+ {
86
+ "type": "listItem",
87
+ "content": [
88
+ {
89
+ "type": "paragraph",
90
+ "attrs": { "textAlign": "left" },
91
+ "content": [{ "type": "text", "text": "Indented" }]
92
+ }
93
+ ]
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "type": "orderedList",
103
+ "attrs": { "start": 1, "type": null },
104
+ "content": [
105
+ {
106
+ "type": "listItem",
107
+ "content": [
108
+ {
109
+ "type": "paragraph",
110
+ "attrs": { "textAlign": "left" },
111
+ "content": [{ "type": "text", "text": "Numbered List" }]
112
+ },
113
+ {
114
+ "type": "orderedList",
115
+ "attrs": { "start": 1, "type": null },
116
+ "content": [
117
+ {
118
+ "type": "listItem",
119
+ "content": [
120
+ {
121
+ "type": "paragraph",
122
+ "attrs": { "textAlign": "left" },
123
+ "content": [{ "type": "text", "text": "Indented" }]
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "type": "listItem",
129
+ "content": [
130
+ {
131
+ "type": "paragraph",
132
+ "attrs": { "textAlign": "left" },
133
+ "content": [{ "type": "text", "text": "Indented #2" }]
134
+ }
135
+ ]
136
+ }
137
+ ]
138
+ }
139
+ ]
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "type": "taskList",
145
+ "content": [
146
+ {
147
+ "type": "taskItem",
148
+ "attrs": { "checked": true },
149
+ "content": [
150
+ {
151
+ "type": "paragraph",
152
+ "attrs": { "textAlign": "left" },
153
+ "content": [{ "type": "text", "text": "Task List" }]
154
+ },
155
+ {
156
+ "type": "taskList",
157
+ "content": [
158
+ {
159
+ "type": "taskItem",
160
+ "attrs": { "checked": false },
161
+ "content": [
162
+ {
163
+ "type": "paragraph",
164
+ "attrs": { "textAlign": "left" },
165
+ "content": [
166
+ { "type": "text", "text": "Task List Indented" }
167
+ ]
168
+ }
169
+ ]
170
+ }
171
+ ]
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "type": "taskItem",
177
+ "attrs": { "checked": false },
178
+ "content": [
179
+ {
180
+ "type": "paragraph",
181
+ "attrs": { "textAlign": "left" },
182
+ "content": [{ "type": "text", "text": "Task List #2" }]
183
+ }
184
+ ]
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "type": "blockquote",
190
+ "content": [
191
+ {
192
+ "type": "paragraph",
193
+ "attrs": { "textAlign": null },
194
+ "content": [{ "type": "text", "text": "Quoted line" }]
195
+ }
196
+ ]
197
+ },
198
+ {
199
+ "type": "codeBlock",
200
+ "attrs": { "language": "javascript" },
201
+ "content": [{ "type": "text", "text": "const x = 1;" }]
202
+ },
203
+ {
204
+ "type": "paragraph",
205
+ "attrs": { "textAlign": null },
206
+ "content": [
207
+ {
208
+ "type": "text",
209
+ "marks": [{ "type": "code" }],
210
+ "text": "inline_code_sample"
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ "type": "paragraph",
216
+ "attrs": { "textAlign": "left" },
217
+ "content": [{ "type": "text", "text": "Mention Chips:" }]
218
+ },
219
+ {
220
+ "type": "paragraph",
221
+ "attrs": { "textAlign": "left" },
222
+ "content": [
223
+ {
224
+ "type": "mention",
225
+ "attrs": {
226
+ "userId": "00000000-0000-0000-0000-000000000001",
227
+ "entityId": "00000000-0000-0000-0000-000000000001",
228
+ "entityType": "user",
229
+ "displayName": "Sam",
230
+ "avatarUrl": "https://hvgmshmjolwfcbsxmyku.supabase.co/storage/v1/object/public/avatars/00000000-0000-0000-0000-000000000001/1770694181366.jpg",
231
+ "subtitle": "",
232
+ "priority": null,
233
+ "listColor": null,
234
+ "assignees": null
235
+ }
236
+ },
237
+ { "type": "text", "text": " " },
238
+ {
239
+ "type": "mention",
240
+ "attrs": {
241
+ "userId": "",
242
+ "entityId": "c5c3d44a-0a2d-4bd8-b0e3-eac23fd4ce67",
243
+ "entityType": "project",
244
+ "displayName": "asd",
245
+ "avatarUrl": "",
246
+ "subtitle": "active",
247
+ "priority": null,
248
+ "listColor": null,
249
+ "assignees": null
250
+ }
251
+ },
252
+ { "type": "text", "text": " " },
253
+ {
254
+ "type": "mention",
255
+ "attrs": {
256
+ "userId": "",
257
+ "entityId": "f69b3fa5-9479-416f-8b48-17ae855f2b8d",
258
+ "entityType": "task",
259
+ "displayName": "1",
260
+ "avatarUrl": "",
261
+ "subtitle": "New Task",
262
+ "priority": null,
263
+ "listColor": null,
264
+ "assignees": "[]"
265
+ }
266
+ },
267
+ { "type": "text", "text": " " },
268
+ {
269
+ "type": "mention",
270
+ "attrs": {
271
+ "userId": "",
272
+ "entityId": "00000000-0000-0000-0000-000000000000",
273
+ "entityType": "workspace",
274
+ "displayName": "Workspace",
275
+ "avatarUrl": "",
276
+ "subtitle": "00000000",
277
+ "priority": null,
278
+ "listColor": null,
279
+ "assignees": null
280
+ }
281
+ },
282
+ { "type": "text", "text": " " }
283
+ ]
284
+ },
285
+ {
286
+ "type": "table",
287
+ "content": [
288
+ {
289
+ "type": "tableRow",
290
+ "content": [
291
+ {
292
+ "type": "tableHeader",
293
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
294
+ "content": [
295
+ {
296
+ "type": "paragraph",
297
+ "attrs": { "textAlign": null },
298
+ "content": [{ "type": "text", "text": "Table Header" }]
299
+ }
300
+ ]
301
+ },
302
+ {
303
+ "type": "tableHeader",
304
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
305
+ "content": [
306
+ {
307
+ "type": "paragraph",
308
+ "attrs": { "textAlign": null },
309
+ "content": [{ "type": "text", "text": "Table Header #2" }]
310
+ }
311
+ ]
312
+ },
313
+ {
314
+ "type": "tableHeader",
315
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
316
+ "content": [
317
+ {
318
+ "type": "paragraph",
319
+ "attrs": { "textAlign": null },
320
+ "content": [{ "type": "text", "text": "Table Header #3" }]
321
+ }
322
+ ]
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "type": "tableRow",
328
+ "content": [
329
+ {
330
+ "type": "tableCell",
331
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
332
+ "content": [
333
+ {
334
+ "type": "paragraph",
335
+ "attrs": { "textAlign": null },
336
+ "content": [{ "type": "text", "text": "Table Cell #1" }]
337
+ }
338
+ ]
339
+ },
340
+ {
341
+ "type": "tableCell",
342
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
343
+ "content": [
344
+ {
345
+ "type": "paragraph",
346
+ "attrs": { "textAlign": null },
347
+ "content": [{ "type": "text", "text": "Table Cell #2" }]
348
+ }
349
+ ]
350
+ },
351
+ {
352
+ "type": "tableCell",
353
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
354
+ "content": [
355
+ {
356
+ "type": "paragraph",
357
+ "attrs": { "textAlign": null },
358
+ "content": [{ "type": "text", "text": "Table Cell #3" }]
359
+ }
360
+ ]
361
+ }
362
+ ]
363
+ },
364
+ {
365
+ "type": "tableRow",
366
+ "content": [
367
+ {
368
+ "type": "tableCell",
369
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
370
+ "content": [
371
+ { "type": "paragraph", "attrs": { "textAlign": null } }
372
+ ]
373
+ },
374
+ {
375
+ "type": "tableCell",
376
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
377
+ "content": [
378
+ { "type": "paragraph", "attrs": { "textAlign": null } }
379
+ ]
380
+ },
381
+ {
382
+ "type": "tableCell",
383
+ "attrs": { "colspan": 1, "rowspan": 1, "colwidth": null },
384
+ "content": [
385
+ { "type": "paragraph", "attrs": { "textAlign": null } }
386
+ ]
387
+ }
388
+ ]
389
+ }
390
+ ]
391
+ },
392
+ {
393
+ "type": "paragraph",
394
+ "attrs": { "textAlign": null },
395
+ "content": [
396
+ {
397
+ "type": "text",
398
+ "marks": [{ "type": "highlight" }],
399
+ "text": "Highlighted Text"
400
+ }
401
+ ]
402
+ },
403
+ {
404
+ "type": "paragraph",
405
+ "attrs": { "textAlign": null },
406
+ "content": [
407
+ {
408
+ "type": "text",
409
+ "marks": [
410
+ {
411
+ "type": "link",
412
+ "attrs": {
413
+ "href": "http://localhost:7803/internal/tasks/boards/56e311c8-26a6-4500-af51-5618d03110f8",
414
+ "target": "_blank",
415
+ "rel": "noopener noreferrer",
416
+ "class": "text-dynamic-cyan hover:text-dynamic-cyan/80 underline cursor-pointer transition-colors",
417
+ "title": null
418
+ }
419
+ }
420
+ ],
421
+ "text": "http://localhost:7803/internal/tasks/boards/56e311c8-26a6-4500-af51-5618d03110f8"
422
+ },
423
+ { "type": "text", "text": " " }
424
+ ]
425
+ },
426
+ {
427
+ "type": "paragraph",
428
+ "attrs": { "textAlign": null },
429
+ "content": [{ "type": "text", "text": "Image:" }]
430
+ },
431
+ {
432
+ "type": "imageResize",
433
+ "attrs": {
434
+ "src": "/api/v1/workspaces/00000000-0000-0000-0000-000000000000/storage/share?path=task-images%2F4a9a8415-c1a7-4c58-87d7-cf6c139dce7d%2F1775019342916_ad79b5aa-1c90-4b02-b49a-abcdcbfc8404_HEV85kpWEAASwK8.jpg&taskId=4a9a8415-c1a7-4c58-87d7-cf6c139dce7d",
435
+ "alt": null,
436
+ "title": null,
437
+ "width": 476,
438
+ "height": null,
439
+ "containerStyle": "position: relative; width: 321px;",
440
+ "wrapperStyle": ""
441
+ }
442
+ },
443
+ {
444
+ "type": "paragraph",
445
+ "attrs": { "textAlign": null },
446
+ "content": [{ "type": "text", "text": "Video:" }]
447
+ },
448
+ {
449
+ "type": "video",
450
+ "attrs": {
451
+ "src": "/api/v1/workspaces/00000000-0000-0000-0000-000000000000/storage/share?path=task-images%2F4a9a8415-c1a7-4c58-87d7-cf6c139dce7d%2F1775019404133_897288b0-890e-4568-b11e-1b531d8fdf8c_dt+aftv+triangle.mp4&taskId=4a9a8415-c1a7-4c58-87d7-cf6c139dce7d"
452
+ }
453
+ },
454
+ { "type": "paragraph", "attrs": { "textAlign": null } }
455
+ ]
456
+ }