webhookdb 1.3.1 → 1.5.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/admin-dist/assets/{index-6aebf805.js → index-9306dd28.js} +39 -39
  3. data/admin-dist/index.html +1 -1
  4. data/data/messages/templates/errors/generic_backfill.email.liquid +30 -0
  5. data/data/messages/templates/errors/icalendar_fetch.email.liquid +8 -2
  6. data/data/messages/templates/specs/with_fields.email.liquid +6 -0
  7. data/db/migrations/026_undo_integration_backfill_cursor.rb +2 -0
  8. data/db/migrations/032_remove_db_defaults.rb +2 -0
  9. data/db/migrations/043_text_search.rb +2 -0
  10. data/db/migrations/045_system_log.rb +15 -0
  11. data/db/migrations/046_indices.rb +14 -0
  12. data/db/migrations/047_sync_parallelism.rb +9 -0
  13. data/db/migrations/048_sync_stats.rb +9 -0
  14. data/db/migrations/049_error_handlers.rb +18 -0
  15. data/db/migrations/050_logged_webhook_indices.rb +25 -0
  16. data/db/migrations/051_partitioning.rb +9 -0
  17. data/integration/async_spec.rb +0 -2
  18. data/integration/service_integrations_spec.rb +0 -2
  19. data/lib/amigo/durable_job.rb +2 -2
  20. data/lib/amigo/job_in_context.rb +12 -0
  21. data/lib/webhookdb/admin.rb +6 -0
  22. data/lib/webhookdb/admin_api/data_provider.rb +1 -0
  23. data/lib/webhookdb/admin_api/entities.rb +8 -0
  24. data/lib/webhookdb/aggregate_result.rb +1 -1
  25. data/lib/webhookdb/api/entities.rb +6 -2
  26. data/lib/webhookdb/api/error_handlers.rb +104 -0
  27. data/lib/webhookdb/api/helpers.rb +25 -1
  28. data/lib/webhookdb/api/icalproxy.rb +22 -0
  29. data/lib/webhookdb/api/install.rb +2 -1
  30. data/lib/webhookdb/api/organizations.rb +6 -0
  31. data/lib/webhookdb/api/saved_queries.rb +1 -0
  32. data/lib/webhookdb/api/saved_views.rb +1 -0
  33. data/lib/webhookdb/api/service_integrations.rb +2 -1
  34. data/lib/webhookdb/api/sync_targets.rb +1 -1
  35. data/lib/webhookdb/api/system.rb +5 -0
  36. data/lib/webhookdb/api/webhook_subscriptions.rb +1 -0
  37. data/lib/webhookdb/api.rb +4 -1
  38. data/lib/webhookdb/apps.rb +4 -0
  39. data/lib/webhookdb/async/autoscaler.rb +10 -0
  40. data/lib/webhookdb/async/job.rb +4 -0
  41. data/lib/webhookdb/async/scheduled_job.rb +4 -0
  42. data/lib/webhookdb/async.rb +2 -0
  43. data/lib/webhookdb/backfiller.rb +17 -4
  44. data/lib/webhookdb/concurrent.rb +96 -0
  45. data/lib/webhookdb/connection_cache.rb +57 -10
  46. data/lib/webhookdb/console.rb +1 -1
  47. data/lib/webhookdb/customer/reset_code.rb +1 -1
  48. data/lib/webhookdb/customer.rb +5 -4
  49. data/lib/webhookdb/database_document.rb +1 -1
  50. data/lib/webhookdb/db_adapter/default_sql.rb +1 -14
  51. data/lib/webhookdb/db_adapter/partition.rb +14 -0
  52. data/lib/webhookdb/db_adapter/partitioning.rb +8 -0
  53. data/lib/webhookdb/db_adapter/pg.rb +77 -5
  54. data/lib/webhookdb/db_adapter/snowflake.rb +15 -6
  55. data/lib/webhookdb/db_adapter.rb +25 -3
  56. data/lib/webhookdb/dbutil.rb +2 -0
  57. data/lib/webhookdb/errors.rb +34 -0
  58. data/lib/webhookdb/fixtures/logged_webhooks.rb +4 -0
  59. data/lib/webhookdb/fixtures/organization_error_handlers.rb +20 -0
  60. data/lib/webhookdb/http.rb +30 -16
  61. data/lib/webhookdb/icalendar.rb +30 -9
  62. data/lib/webhookdb/jobs/amigo_test_jobs.rb +1 -1
  63. data/lib/webhookdb/jobs/backfill.rb +21 -25
  64. data/lib/webhookdb/jobs/create_mirror_table.rb +3 -4
  65. data/lib/webhookdb/jobs/deprecated_jobs.rb +3 -0
  66. data/lib/webhookdb/jobs/emailer.rb +2 -1
  67. data/lib/webhookdb/jobs/front_signalwire_message_channel_sync_inbound.rb +15 -0
  68. data/lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb +7 -2
  69. data/lib/webhookdb/jobs/icalendar_enqueue_syncs.rb +74 -11
  70. data/lib/webhookdb/jobs/icalendar_enqueue_syncs_for_urls.rb +22 -0
  71. data/lib/webhookdb/jobs/icalendar_sync.rb +21 -9
  72. data/lib/webhookdb/jobs/increase_event_handler.rb +3 -2
  73. data/lib/webhookdb/jobs/{logged_webhook_replay.rb → logged_webhooks_replay.rb} +5 -3
  74. data/lib/webhookdb/jobs/message_dispatched.rb +1 -0
  75. data/lib/webhookdb/jobs/model_event_system_log_tracker.rb +112 -0
  76. data/lib/webhookdb/jobs/monitor_metrics.rb +29 -0
  77. data/lib/webhookdb/jobs/organization_database_migration_notify.rb +32 -0
  78. data/lib/webhookdb/jobs/organization_database_migration_run.rb +4 -6
  79. data/lib/webhookdb/jobs/organization_error_handler_dispatch.rb +26 -0
  80. data/lib/webhookdb/jobs/prepare_database_connections.rb +1 -0
  81. data/lib/webhookdb/jobs/process_webhook.rb +11 -12
  82. data/lib/webhookdb/jobs/renew_watch_channel.rb +10 -10
  83. data/lib/webhookdb/jobs/replication_migration.rb +5 -2
  84. data/lib/webhookdb/jobs/reset_code_create_dispatch.rb +1 -2
  85. data/lib/webhookdb/jobs/scheduled_backfills.rb +2 -2
  86. data/lib/webhookdb/jobs/send_invite.rb +3 -2
  87. data/lib/webhookdb/jobs/send_test_webhook.rb +1 -3
  88. data/lib/webhookdb/jobs/send_webhook.rb +4 -5
  89. data/lib/webhookdb/jobs/stale_row_deleter.rb +31 -0
  90. data/lib/webhookdb/jobs/sync_target_enqueue_scheduled.rb +3 -0
  91. data/lib/webhookdb/jobs/sync_target_run_sync.rb +9 -15
  92. data/lib/webhookdb/jobs/{webhook_subscription_delivery_attempt.rb → webhook_subscription_delivery_event.rb} +5 -8
  93. data/lib/webhookdb/liquid/expose.rb +1 -1
  94. data/lib/webhookdb/liquid/filters.rb +1 -1
  95. data/lib/webhookdb/liquid/partial.rb +2 -2
  96. data/lib/webhookdb/logged_webhook/resilient.rb +3 -3
  97. data/lib/webhookdb/logged_webhook.rb +16 -2
  98. data/lib/webhookdb/message/email_transport.rb +1 -1
  99. data/lib/webhookdb/message/transport.rb +1 -1
  100. data/lib/webhookdb/message.rb +55 -4
  101. data/lib/webhookdb/messages/error_generic_backfill.rb +47 -0
  102. data/lib/webhookdb/messages/error_icalendar_fetch.rb +5 -0
  103. data/lib/webhookdb/messages/error_signalwire_send_sms.rb +2 -0
  104. data/lib/webhookdb/messages/specs.rb +16 -0
  105. data/lib/webhookdb/organization/alerting.rb +56 -6
  106. data/lib/webhookdb/organization/database_migration.rb +2 -2
  107. data/lib/webhookdb/organization/db_builder.rb +5 -4
  108. data/lib/webhookdb/organization/error_handler.rb +141 -0
  109. data/lib/webhookdb/organization.rb +76 -10
  110. data/lib/webhookdb/postgres/model.rb +1 -0
  111. data/lib/webhookdb/postgres/model_utilities.rb +2 -0
  112. data/lib/webhookdb/postgres.rb +3 -4
  113. data/lib/webhookdb/replicator/base.rb +202 -68
  114. data/lib/webhookdb/replicator/base_stale_row_deleter.rb +165 -0
  115. data/lib/webhookdb/replicator/column.rb +2 -0
  116. data/lib/webhookdb/replicator/email_octopus_contact_v1.rb +0 -1
  117. data/lib/webhookdb/replicator/fake.rb +106 -88
  118. data/lib/webhookdb/replicator/front_signalwire_message_channel_app_v1.rb +131 -61
  119. data/lib/webhookdb/replicator/github_repo_v1_mixin.rb +17 -0
  120. data/lib/webhookdb/replicator/icalendar_calendar_v1.rb +197 -32
  121. data/lib/webhookdb/replicator/icalendar_event_v1.rb +20 -44
  122. data/lib/webhookdb/replicator/icalendar_event_v1_partitioned.rb +33 -0
  123. data/lib/webhookdb/replicator/intercom_contact_v1.rb +1 -0
  124. data/lib/webhookdb/replicator/intercom_conversation_v1.rb +1 -0
  125. data/lib/webhookdb/replicator/intercom_v1_mixin.rb +49 -6
  126. data/lib/webhookdb/replicator/partitionable_mixin.rb +116 -0
  127. data/lib/webhookdb/replicator/shopify_v1_mixin.rb +1 -1
  128. data/lib/webhookdb/replicator/signalwire_message_v1.rb +31 -1
  129. data/lib/webhookdb/replicator/sponsy_v1_mixin.rb +1 -1
  130. data/lib/webhookdb/replicator/transistor_episode_stats_v1.rb +0 -1
  131. data/lib/webhookdb/replicator/transistor_episode_v1.rb +11 -5
  132. data/lib/webhookdb/replicator/webhook_request.rb +8 -0
  133. data/lib/webhookdb/replicator.rb +6 -3
  134. data/lib/webhookdb/service/helpers.rb +4 -0
  135. data/lib/webhookdb/service/middleware.rb +6 -2
  136. data/lib/webhookdb/service/view_api.rb +1 -1
  137. data/lib/webhookdb/service.rb +10 -10
  138. data/lib/webhookdb/service_integration.rb +19 -1
  139. data/lib/webhookdb/signalwire.rb +1 -1
  140. data/lib/webhookdb/spec_helpers/async.rb +0 -4
  141. data/lib/webhookdb/spec_helpers/sentry.rb +32 -0
  142. data/lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb +239 -64
  143. data/lib/webhookdb/spec_helpers.rb +1 -0
  144. data/lib/webhookdb/sync_target.rb +202 -34
  145. data/lib/webhookdb/system_log_event.rb +9 -0
  146. data/lib/webhookdb/tasks/admin.rb +1 -1
  147. data/lib/webhookdb/tasks/annotate.rb +1 -1
  148. data/lib/webhookdb/tasks/db.rb +13 -1
  149. data/lib/webhookdb/tasks/docs.rb +1 -1
  150. data/lib/webhookdb/tasks/fixture.rb +1 -1
  151. data/lib/webhookdb/tasks/message.rb +1 -1
  152. data/lib/webhookdb/tasks/regress.rb +1 -1
  153. data/lib/webhookdb/tasks/release.rb +1 -1
  154. data/lib/webhookdb/tasks/sidekiq.rb +1 -1
  155. data/lib/webhookdb/tasks/specs.rb +1 -1
  156. data/lib/webhookdb/version.rb +1 -1
  157. data/lib/webhookdb/webhook_subscription.rb +3 -4
  158. data/lib/webhookdb.rb +34 -8
  159. metadata +114 -64
  160. data/lib/webhookdb/jobs/customer_created_notify_internal.rb +0 -22
  161. data/lib/webhookdb/jobs/organization_database_migration_notify_finished.rb +0 -21
  162. data/lib/webhookdb/jobs/organization_database_migration_notify_started.rb +0 -21
  163. /data/lib/webhookdb/jobs/{logged_webhook_resilient_replay.rb → logged_webhooks_resilient_replay.rb} +0 -0
  164. /data/lib/webhookdb/jobs/{webhook_resource_notify_integrations.rb → webhookdb_resource_notify_integrations.rb} +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webhookdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WebhookDB
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-26 00:00:00.000000000 Z
11
+ date: 2025-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.1'
19
+ version: '7.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '7.1'
26
+ version: '7.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: appydays
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0.8'
33
+ version: 0.12.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0.8'
40
+ version: 0.12.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aws-sdk-pricing
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.53'
47
+ version: '1.70'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.53'
54
+ version: '1.70'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: aws-sdk-sts
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,34 +108,48 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.8'
111
+ - !ruby/object:Gem::Dependency
112
+ name: browser
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '6.2'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '6.2'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: clipboard
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '1.3'
131
+ version: '1.4'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '1.3'
138
+ version: '1.4'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: concurrent-ruby
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '1.2'
145
+ version: '1.3'
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '1.2'
152
+ version: '1.3'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: down
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -226,14 +240,28 @@ dependencies:
226
240
  requirements:
227
241
  - - "~>"
228
242
  - !ruby/object:Gem::Version
229
- version: '0.21'
243
+ version: '0.22'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '0.22'
251
+ - !ruby/object:Gem::Dependency
252
+ name: httpx
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '1.4'
230
258
  type: :runtime
231
259
  prerelease: false
232
260
  version_requirements: !ruby/object:Gem::Requirement
233
261
  requirements:
234
262
  - - "~>"
235
263
  - !ruby/object:Gem::Version
236
- version: '0.21'
264
+ version: '1.4'
237
265
  - !ruby/object:Gem::Dependency
238
266
  name: ice_cube
239
267
  requirement: !ruby/object:Gem::Requirement
@@ -254,28 +282,28 @@ dependencies:
254
282
  requirements:
255
283
  - - "~>"
256
284
  - !ruby/object:Gem::Version
257
- version: '2.7'
285
+ version: '2.10'
258
286
  type: :runtime
259
287
  prerelease: false
260
288
  version_requirements: !ruby/object:Gem::Requirement
261
289
  requirements:
262
290
  - - "~>"
263
291
  - !ruby/object:Gem::Version
264
- version: '2.7'
292
+ version: '2.10'
265
293
  - !ruby/object:Gem::Dependency
266
294
  name: liquid
267
295
  requirement: !ruby/object:Gem::Requirement
268
296
  requirements:
269
297
  - - "~>"
270
298
  - !ruby/object:Gem::Version
271
- version: '5.4'
299
+ version: '5.6'
272
300
  type: :runtime
273
301
  prerelease: false
274
302
  version_requirements: !ruby/object:Gem::Requirement
275
303
  requirements:
276
304
  - - "~>"
277
305
  - !ruby/object:Gem::Version
278
- version: '5.4'
306
+ version: '5.6'
279
307
  - !ruby/object:Gem::Dependency
280
308
  name: mail
281
309
  requirement: !ruby/object:Gem::Requirement
@@ -310,42 +338,42 @@ dependencies:
310
338
  requirements:
311
339
  - - "~>"
312
340
  - !ruby/object:Gem::Version
313
- version: '1.12'
341
+ version: '1.13'
314
342
  type: :runtime
315
343
  prerelease: false
316
344
  version_requirements: !ruby/object:Gem::Requirement
317
345
  requirements:
318
346
  - - "~>"
319
347
  - !ruby/object:Gem::Version
320
- version: '1.12'
348
+ version: '1.13'
321
349
  - !ruby/object:Gem::Dependency
322
350
  name: money
323
351
  requirement: !ruby/object:Gem::Requirement
324
352
  requirements:
325
353
  - - "~>"
326
354
  - !ruby/object:Gem::Version
327
- version: '6.16'
355
+ version: '6.19'
328
356
  type: :runtime
329
357
  prerelease: false
330
358
  version_requirements: !ruby/object:Gem::Requirement
331
359
  requirements:
332
360
  - - "~>"
333
361
  - !ruby/object:Gem::Version
334
- version: '6.16'
362
+ version: '6.19'
335
363
  - !ruby/object:Gem::Dependency
336
364
  name: nokogiri
337
365
  requirement: !ruby/object:Gem::Requirement
338
366
  requirements:
339
367
  - - "~>"
340
368
  - !ruby/object:Gem::Version
341
- version: '1.16'
369
+ version: '1.18'
342
370
  type: :runtime
343
371
  prerelease: false
344
372
  version_requirements: !ruby/object:Gem::Requirement
345
373
  requirements:
346
374
  - - "~>"
347
375
  - !ruby/object:Gem::Version
348
- version: '1.16'
376
+ version: '1.18'
349
377
  - !ruby/object:Gem::Dependency
350
378
  name: oj
351
379
  requirement: !ruby/object:Gem::Requirement
@@ -380,70 +408,70 @@ dependencies:
380
408
  requirements:
381
409
  - - "~>"
382
410
  - !ruby/object:Gem::Version
383
- version: '2.20'
411
+ version: '2.21'
384
412
  type: :runtime
385
413
  prerelease: false
386
414
  version_requirements: !ruby/object:Gem::Requirement
387
415
  requirements:
388
416
  - - "~>"
389
417
  - !ruby/object:Gem::Version
390
- version: '2.20'
418
+ version: '2.21'
391
419
  - !ruby/object:Gem::Dependency
392
420
  name: platform-api
393
421
  requirement: !ruby/object:Gem::Requirement
394
422
  requirements:
395
423
  - - "~>"
396
424
  - !ruby/object:Gem::Version
397
- version: '3.5'
425
+ version: '3.7'
398
426
  type: :runtime
399
427
  prerelease: false
400
428
  version_requirements: !ruby/object:Gem::Requirement
401
429
  requirements:
402
430
  - - "~>"
403
431
  - !ruby/object:Gem::Version
404
- version: '3.5'
432
+ version: '3.7'
405
433
  - !ruby/object:Gem::Dependency
406
434
  name: premailer
407
435
  requirement: !ruby/object:Gem::Requirement
408
436
  requirements:
409
437
  - - "~>"
410
438
  - !ruby/object:Gem::Version
411
- version: '1.21'
439
+ version: '1.27'
412
440
  type: :runtime
413
441
  prerelease: false
414
442
  version_requirements: !ruby/object:Gem::Requirement
415
443
  requirements:
416
444
  - - "~>"
417
445
  - !ruby/object:Gem::Version
418
- version: '1.21'
446
+ version: '1.27'
419
447
  - !ruby/object:Gem::Dependency
420
448
  name: pry
421
449
  requirement: !ruby/object:Gem::Requirement
422
450
  requirements:
423
451
  - - "~>"
424
452
  - !ruby/object:Gem::Version
425
- version: '0.14'
453
+ version: '0.15'
426
454
  type: :runtime
427
455
  prerelease: false
428
456
  version_requirements: !ruby/object:Gem::Requirement
429
457
  requirements:
430
458
  - - "~>"
431
459
  - !ruby/object:Gem::Version
432
- version: '0.14'
460
+ version: '0.15'
433
461
  - !ruby/object:Gem::Dependency
434
462
  name: puma
435
463
  requirement: !ruby/object:Gem::Requirement
436
464
  requirements:
437
465
  - - "~>"
438
466
  - !ruby/object:Gem::Version
439
- version: '6.4'
467
+ version: '6.5'
440
468
  type: :runtime
441
469
  prerelease: false
442
470
  version_requirements: !ruby/object:Gem::Requirement
443
471
  requirements:
444
472
  - - "~>"
445
473
  - !ruby/object:Gem::Version
446
- version: '6.4'
474
+ version: '6.5'
447
475
  - !ruby/object:Gem::Dependency
448
476
  name: rack-cors
449
477
  requirement: !ruby/object:Gem::Requirement
@@ -534,70 +562,70 @@ dependencies:
534
562
  requirements:
535
563
  - - "~>"
536
564
  - !ruby/object:Gem::Version
537
- version: '0.19'
565
+ version: '0.23'
538
566
  type: :runtime
539
567
  prerelease: false
540
568
  version_requirements: !ruby/object:Gem::Requirement
541
569
  requirements:
542
570
  - - "~>"
543
571
  - !ruby/object:Gem::Version
544
- version: '0.19'
572
+ version: '0.23'
545
573
  - !ruby/object:Gem::Dependency
546
574
  name: semantic_logger
547
575
  requirement: !ruby/object:Gem::Requirement
548
576
  requirements:
549
577
  - - "~>"
550
578
  - !ruby/object:Gem::Version
551
- version: '4.15'
579
+ version: '4.16'
552
580
  type: :runtime
553
581
  prerelease: false
554
582
  version_requirements: !ruby/object:Gem::Requirement
555
583
  requirements:
556
584
  - - "~>"
557
585
  - !ruby/object:Gem::Version
558
- version: '4.15'
586
+ version: '4.16'
559
587
  - !ruby/object:Gem::Dependency
560
588
  name: sentry-ruby
561
589
  requirement: !ruby/object:Gem::Requirement
562
590
  requirements:
563
591
  - - "~>"
564
592
  - !ruby/object:Gem::Version
565
- version: '5.17'
593
+ version: '5.22'
566
594
  type: :runtime
567
595
  prerelease: false
568
596
  version_requirements: !ruby/object:Gem::Requirement
569
597
  requirements:
570
598
  - - "~>"
571
599
  - !ruby/object:Gem::Version
572
- version: '5.17'
600
+ version: '5.22'
573
601
  - !ruby/object:Gem::Dependency
574
602
  name: sentry-sidekiq
575
603
  requirement: !ruby/object:Gem::Requirement
576
604
  requirements:
577
605
  - - "~>"
578
606
  - !ruby/object:Gem::Version
579
- version: '5.17'
607
+ version: '5.22'
580
608
  type: :runtime
581
609
  prerelease: false
582
610
  version_requirements: !ruby/object:Gem::Requirement
583
611
  requirements:
584
612
  - - "~>"
585
613
  - !ruby/object:Gem::Version
586
- version: '5.17'
614
+ version: '5.22'
587
615
  - !ruby/object:Gem::Dependency
588
616
  name: sequel
589
617
  requirement: !ruby/object:Gem::Requirement
590
618
  requirements:
591
619
  - - "~>"
592
620
  - !ruby/object:Gem::Version
593
- version: '5.75'
621
+ version: '5.88'
594
622
  type: :runtime
595
623
  prerelease: false
596
624
  version_requirements: !ruby/object:Gem::Requirement
597
625
  requirements:
598
626
  - - "~>"
599
627
  - !ruby/object:Gem::Version
600
- version: '5.75'
628
+ version: '5.88'
601
629
  - !ruby/object:Gem::Dependency
602
630
  name: sequel-annotate
603
631
  requirement: !ruby/object:Gem::Requirement
@@ -646,14 +674,14 @@ dependencies:
646
674
  requirements:
647
675
  - - "~>"
648
676
  - !ruby/object:Gem::Version
649
- version: '1.5'
677
+ version: '1.6'
650
678
  type: :runtime
651
679
  prerelease: false
652
680
  version_requirements: !ruby/object:Gem::Requirement
653
681
  requirements:
654
682
  - - "~>"
655
683
  - !ruby/object:Gem::Version
656
- version: '1.5'
684
+ version: '1.6'
657
685
  - !ruby/object:Gem::Dependency
658
686
  name: sequel-soft-deletes
659
687
  requirement: !ruby/object:Gem::Requirement
@@ -702,20 +730,14 @@ dependencies:
702
730
  requirements:
703
731
  - - "~>"
704
732
  - !ruby/object:Gem::Version
705
- version: '1.6'
706
- - - ">="
707
- - !ruby/object:Gem::Version
708
- version: 1.6.2
733
+ version: '1.9'
709
734
  type: :runtime
710
735
  prerelease: false
711
736
  version_requirements: !ruby/object:Gem::Requirement
712
737
  requirements:
713
738
  - - "~>"
714
739
  - !ruby/object:Gem::Version
715
- version: '1.6'
716
- - - ">="
717
- - !ruby/object:Gem::Version
718
- version: 1.6.2
740
+ version: '1.9'
719
741
  - !ruby/object:Gem::Dependency
720
742
  name: sidekiq-cron
721
743
  requirement: !ruby/object:Gem::Requirement
@@ -750,14 +772,14 @@ dependencies:
750
772
  requirements:
751
773
  - - "~>"
752
774
  - !ruby/object:Gem::Version
753
- version: '10.4'
775
+ version: '10.15'
754
776
  type: :runtime
755
777
  prerelease: false
756
778
  version_requirements: !ruby/object:Gem::Requirement
757
779
  requirements:
758
780
  - - "~>"
759
781
  - !ruby/object:Gem::Version
760
- version: '10.4'
782
+ version: '10.15'
761
783
  - !ruby/object:Gem::Dependency
762
784
  name: uuidx
763
785
  requirement: !ruby/object:Gem::Requirement
@@ -802,7 +824,7 @@ executables: []
802
824
  extensions: []
803
825
  extra_rdoc_files: []
804
826
  files:
805
- - admin-dist/assets/index-6aebf805.js
827
+ - admin-dist/assets/index-9306dd28.js
806
828
  - admin-dist/favicon.ico
807
829
  - admin-dist/index.html
808
830
  - admin-dist/manifest.json
@@ -817,6 +839,7 @@ files:
817
839
  - data/messages/partials/signoff.liquid
818
840
  - data/messages/replicators/url-recorder.liquid
819
841
  - data/messages/styles/v1.liquid
842
+ - data/messages/templates/errors/generic_backfill.email.liquid
820
843
  - data/messages/templates/errors/icalendar_fetch.email.liquid
821
844
  - data/messages/templates/errors/signalwire_send_sms.email.liquid
822
845
  - data/messages/templates/invite.email.liquid
@@ -828,6 +851,7 @@ files:
828
851
  - data/messages/templates/specs/basic.fake.liquid
829
852
  - data/messages/templates/specs/with_field.email.liquid
830
853
  - data/messages/templates/specs/with_field.fake.liquid
854
+ - data/messages/templates/specs/with_fields.email.liquid
831
855
  - data/messages/templates/specs/with_include.email.liquid
832
856
  - data/messages/templates/specs/with_partial.email.liquid
833
857
  - data/messages/templates/verification.email.liquid
@@ -888,6 +912,13 @@ files:
888
912
  - db/migrations/042_sint_lock.rb
889
913
  - db/migrations/043_text_search.rb
890
914
  - db/migrations/044_oauth_session_token_cache.rb
915
+ - db/migrations/045_system_log.rb
916
+ - db/migrations/046_indices.rb
917
+ - db/migrations/047_sync_parallelism.rb
918
+ - db/migrations/048_sync_stats.rb
919
+ - db/migrations/049_error_handlers.rb
920
+ - db/migrations/050_logged_webhook_indices.rb
921
+ - db/migrations/051_partitioning.rb
891
922
  - integration/async_spec.rb
892
923
  - integration/auth_spec.rb
893
924
  - integration/database_spec.rb
@@ -895,6 +926,7 @@ files:
895
926
  - integration/service_integrations_spec.rb
896
927
  - integration/system_spec.rb
897
928
  - lib/amigo/durable_job.rb
929
+ - lib/amigo/job_in_context.rb
898
930
  - lib/pry/clipboard.rb
899
931
  - lib/sequel/advisory_lock.rb
900
932
  - lib/sequel/plugins/text_searchable.rb
@@ -913,7 +945,9 @@ files:
913
945
  - lib/webhookdb/api/db.rb
914
946
  - lib/webhookdb/api/demo.rb
915
947
  - lib/webhookdb/api/entities.rb
948
+ - lib/webhookdb/api/error_handlers.rb
916
949
  - lib/webhookdb/api/helpers.rb
950
+ - lib/webhookdb/api/icalproxy.rb
917
951
  - lib/webhookdb/api/install.rb
918
952
  - lib/webhookdb/api/me.rb
919
953
  - lib/webhookdb/api/organizations.rb
@@ -939,6 +973,7 @@ files:
939
973
  - lib/webhookdb/backfill_job/service_integration_lock.rb
940
974
  - lib/webhookdb/backfiller.rb
941
975
  - lib/webhookdb/cloudflare.rb
976
+ - lib/webhookdb/concurrent.rb
942
977
  - lib/webhookdb/connection_cache.rb
943
978
  - lib/webhookdb/console.rb
944
979
  - lib/webhookdb/convertkit.rb
@@ -949,6 +984,8 @@ files:
949
984
  - lib/webhookdb/db_adapter.rb
950
985
  - lib/webhookdb/db_adapter/column_types.rb
951
986
  - lib/webhookdb/db_adapter/default_sql.rb
987
+ - lib/webhookdb/db_adapter/partition.rb
988
+ - lib/webhookdb/db_adapter/partitioning.rb
952
989
  - lib/webhookdb/db_adapter/pg.rb
953
990
  - lib/webhookdb/db_adapter/snowflake.rb
954
991
  - lib/webhookdb/dbutil.rb
@@ -957,6 +994,7 @@ files:
957
994
  - lib/webhookdb/email_octopus.rb
958
995
  - lib/webhookdb/enumerable.rb
959
996
  - lib/webhookdb/envfixer.rb
997
+ - lib/webhookdb/errors.rb
960
998
  - lib/webhookdb/fixtures.rb
961
999
  - lib/webhookdb/fixtures/backfill_jobs.rb
962
1000
  - lib/webhookdb/fixtures/customers.rb
@@ -967,6 +1005,7 @@ files:
967
1005
  - lib/webhookdb/fixtures/message_deliveries.rb
968
1006
  - lib/webhookdb/fixtures/oauth_sessions.rb
969
1007
  - lib/webhookdb/fixtures/organization_database_migrations.rb
1008
+ - lib/webhookdb/fixtures/organization_error_handlers.rb
970
1009
  - lib/webhookdb/fixtures/organization_memberships.rb
971
1010
  - lib/webhookdb/fixtures/organizations.rb
972
1011
  - lib/webhookdb/fixtures/reset_codes.rb
@@ -994,22 +1033,25 @@ files:
994
1033
  - lib/webhookdb/jobs/backfill.rb
995
1034
  - lib/webhookdb/jobs/create_mirror_table.rb
996
1035
  - lib/webhookdb/jobs/create_stripe_customer.rb
997
- - lib/webhookdb/jobs/customer_created_notify_internal.rb
998
1036
  - lib/webhookdb/jobs/demo_mode_sync_data.rb
999
1037
  - lib/webhookdb/jobs/deprecated_jobs.rb
1000
1038
  - lib/webhookdb/jobs/developer_alert_handle.rb
1001
1039
  - lib/webhookdb/jobs/durable_job_recheck_poller.rb
1002
1040
  - lib/webhookdb/jobs/emailer.rb
1041
+ - lib/webhookdb/jobs/front_signalwire_message_channel_sync_inbound.rb
1003
1042
  - lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb
1004
1043
  - lib/webhookdb/jobs/icalendar_enqueue_syncs.rb
1044
+ - lib/webhookdb/jobs/icalendar_enqueue_syncs_for_urls.rb
1005
1045
  - lib/webhookdb/jobs/icalendar_sync.rb
1006
1046
  - lib/webhookdb/jobs/increase_event_handler.rb
1007
- - lib/webhookdb/jobs/logged_webhook_replay.rb
1008
- - lib/webhookdb/jobs/logged_webhook_resilient_replay.rb
1047
+ - lib/webhookdb/jobs/logged_webhooks_replay.rb
1048
+ - lib/webhookdb/jobs/logged_webhooks_resilient_replay.rb
1009
1049
  - lib/webhookdb/jobs/message_dispatched.rb
1010
- - lib/webhookdb/jobs/organization_database_migration_notify_finished.rb
1011
- - lib/webhookdb/jobs/organization_database_migration_notify_started.rb
1050
+ - lib/webhookdb/jobs/model_event_system_log_tracker.rb
1051
+ - lib/webhookdb/jobs/monitor_metrics.rb
1052
+ - lib/webhookdb/jobs/organization_database_migration_notify.rb
1012
1053
  - lib/webhookdb/jobs/organization_database_migration_run.rb
1054
+ - lib/webhookdb/jobs/organization_error_handler_dispatch.rb
1013
1055
  - lib/webhookdb/jobs/prepare_database_connections.rb
1014
1056
  - lib/webhookdb/jobs/process_webhook.rb
1015
1057
  - lib/webhookdb/jobs/renew_watch_channel.rb
@@ -1019,11 +1061,12 @@ files:
1019
1061
  - lib/webhookdb/jobs/send_invite.rb
1020
1062
  - lib/webhookdb/jobs/send_test_webhook.rb
1021
1063
  - lib/webhookdb/jobs/send_webhook.rb
1064
+ - lib/webhookdb/jobs/stale_row_deleter.rb
1022
1065
  - lib/webhookdb/jobs/sync_target_enqueue_scheduled.rb
1023
1066
  - lib/webhookdb/jobs/sync_target_run_sync.rb
1024
1067
  - lib/webhookdb/jobs/trim_logged_webhooks.rb
1025
- - lib/webhookdb/jobs/webhook_resource_notify_integrations.rb
1026
- - lib/webhookdb/jobs/webhook_subscription_delivery_attempt.rb
1068
+ - lib/webhookdb/jobs/webhook_subscription_delivery_event.rb
1069
+ - lib/webhookdb/jobs/webhookdb_resource_notify_integrations.rb
1027
1070
  - lib/webhookdb/json.rb
1028
1071
  - lib/webhookdb/liquid/expose.rb
1029
1072
  - lib/webhookdb/liquid/filters.rb
@@ -1039,6 +1082,7 @@ files:
1039
1082
  - lib/webhookdb/message/liquid_drops.rb
1040
1083
  - lib/webhookdb/message/template.rb
1041
1084
  - lib/webhookdb/message/transport.rb
1085
+ - lib/webhookdb/messages/error_generic_backfill.rb
1042
1086
  - lib/webhookdb/messages/error_icalendar_fetch.rb
1043
1087
  - lib/webhookdb/messages/error_signalwire_send_sms.rb
1044
1088
  - lib/webhookdb/messages/invite.rb
@@ -1060,6 +1104,7 @@ files:
1060
1104
  - lib/webhookdb/organization/alerting.rb
1061
1105
  - lib/webhookdb/organization/database_migration.rb
1062
1106
  - lib/webhookdb/organization/db_builder.rb
1107
+ - lib/webhookdb/organization/error_handler.rb
1063
1108
  - lib/webhookdb/organization_membership.rb
1064
1109
  - lib/webhookdb/phone_number.rb
1065
1110
  - lib/webhookdb/plaid.rb
@@ -1078,6 +1123,7 @@ files:
1078
1123
  - lib/webhookdb/replicator/atom_single_feed_v1.rb
1079
1124
  - lib/webhookdb/replicator/aws_pricing_v1.rb
1080
1125
  - lib/webhookdb/replicator/base.rb
1126
+ - lib/webhookdb/replicator/base_stale_row_deleter.rb
1081
1127
  - lib/webhookdb/replicator/column.rb
1082
1128
  - lib/webhookdb/replicator/convertkit_broadcast_v1.rb
1083
1129
  - lib/webhookdb/replicator/convertkit_subscriber_v1.rb
@@ -1102,6 +1148,7 @@ files:
1102
1148
  - lib/webhookdb/replicator/github_repository_event_v1.rb
1103
1149
  - lib/webhookdb/replicator/icalendar_calendar_v1.rb
1104
1150
  - lib/webhookdb/replicator/icalendar_event_v1.rb
1151
+ - lib/webhookdb/replicator/icalendar_event_v1_partitioned.rb
1105
1152
  - lib/webhookdb/replicator/increase_account_number_v1.rb
1106
1153
  - lib/webhookdb/replicator/increase_account_transfer_v1.rb
1107
1154
  - lib/webhookdb/replicator/increase_account_v1.rb
@@ -1118,6 +1165,7 @@ files:
1118
1165
  - lib/webhookdb/replicator/intercom_marketplace_root_v1.rb
1119
1166
  - lib/webhookdb/replicator/intercom_v1_mixin.rb
1120
1167
  - lib/webhookdb/replicator/oauth_refresh_access_token_mixin.rb
1168
+ - lib/webhookdb/replicator/partitionable_mixin.rb
1121
1169
  - lib/webhookdb/replicator/plivo_sms_inbound_v1.rb
1122
1170
  - lib/webhookdb/replicator/postmark_inbound_message_v1.rb
1123
1171
  - lib/webhookdb/replicator/postmark_outbound_message_event_v1.rb
@@ -1178,6 +1226,7 @@ files:
1178
1226
  - lib/webhookdb/spec_helpers/integration.rb
1179
1227
  - lib/webhookdb/spec_helpers/message.rb
1180
1228
  - lib/webhookdb/spec_helpers/postgres.rb
1229
+ - lib/webhookdb/spec_helpers/sentry.rb
1181
1230
  - lib/webhookdb/spec_helpers/service.rb
1182
1231
  - lib/webhookdb/spec_helpers/shared_examples_for_columns.rb
1183
1232
  - lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb
@@ -1186,6 +1235,7 @@ files:
1186
1235
  - lib/webhookdb/stripe.rb
1187
1236
  - lib/webhookdb/subscription.rb
1188
1237
  - lib/webhookdb/sync_target.rb
1238
+ - lib/webhookdb/system_log_event.rb
1189
1239
  - lib/webhookdb/tasks.rb
1190
1240
  - lib/webhookdb/tasks/admin.rb
1191
1241
  - lib/webhookdb/tasks/annotate.rb
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "webhookdb/async/job"
4
-
5
- class Webhookdb::Jobs::CustomerCreatedNotifyInternal
6
- extend Webhookdb::Async::Job
7
-
8
- on "webhookdb.customer.created"
9
-
10
- def _perform(event)
11
- customer = self.lookup_model(Webhookdb::Customer, event)
12
- Webhookdb::DeveloperAlert.new(
13
- subsystem: "Customer Created",
14
- emoji: ":hook:",
15
- fallback: "New customer created: #{customer.inspect}",
16
- fields: [
17
- {title: "Id", value: customer.id, short: true},
18
- {title: "Email", value: customer.email, short: true},
19
- ],
20
- ).emit
21
- end
22
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "webhookdb/async/job"
4
- require "webhookdb/messages/org_database_migration_finished"
5
-
6
- class Webhookdb::Jobs::OrganizationDatabaseMigrationNotifyFinished
7
- extend Webhookdb::Async::Job
8
-
9
- on "webhookdb.organization.databasemigration.updated"
10
-
11
- def _perform(event)
12
- dbm = self.lookup_model(Webhookdb::Organization::DatabaseMigration, event)
13
- case event.payload[1]
14
- when changed(:finished_at, from: nil)
15
- Webhookdb::Idempotency.once_ever.under_key("org-dbmigration-finish-#{dbm.id}") do
16
- msg = Webhookdb::Messages::OrgDatabaseMigrationFinished.new(dbm)
17
- dbm.organization.admin_customers.each { |c| msg.dispatch_email(c) }
18
- end
19
- end
20
- end
21
- end