cloudflare-email 0.2.0 → 0.4.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +109 -0
  3. data/README.md +44 -9
  4. data/app/controllers/cloudflare/email/ingress_controller.rb +15 -60
  5. data/app/controllers/cloudflare/email/management/mailboxes_controller.rb +9 -0
  6. data/app/controllers/cloudflare/email/management/styles_controller.rb +9 -0
  7. data/docs/activerecord-tenanted.md +46 -0
  8. data/docs/architecture.md +13 -3
  9. data/docs/custom-ingress.md +211 -0
  10. data/docs/delivery-events.md +9 -0
  11. data/docs/features.md +36 -5
  12. data/docs/getting-started.md +19 -8
  13. data/docs/mailboxes.md +74 -3
  14. data/docs/management-engine.md +190 -0
  15. data/docs/routing-deliveries.md +94 -0
  16. data/docs/routing-diagnostics.md +75 -0
  17. data/docs/troubleshooting.md +5 -4
  18. data/docs/upgrading-0.2.md +5 -0
  19. data/docs/upgrading-0.3.md +55 -0
  20. data/docs/verification/2026-09-11-custom-ingress.md +49 -0
  21. data/docs/verification/2026-09-12-destination-context.md +46 -0
  22. data/docs/verification/2026-09-13-action-mailbox-core.md +96 -0
  23. data/docs/verification/2026-09-13-durable-inbound-and-routing.md +71 -0
  24. data/lib/cloudflare/email/active_record/base.rb +3 -41
  25. data/lib/cloudflare/email/active_record/routing_deliveries.rb +128 -0
  26. data/lib/cloudflare/email/check_route_task.rb +21 -0
  27. data/lib/cloudflare/email/client.rb +45 -10
  28. data/lib/cloudflare/email/delivery_method.rb +2 -0
  29. data/lib/cloudflare/email/deploy_worker_task.rb +3 -3
  30. data/lib/cloudflare/email/engine.rb +6 -13
  31. data/lib/cloudflare/email/envelope.rb +4 -14
  32. data/lib/cloudflare/email/error.rb +5 -12
  33. data/lib/cloudflare/email/event_consumer.rb +12 -3
  34. data/lib/cloudflare/email/ingress.rb +126 -0
  35. data/lib/cloudflare/email/mailboxes/configuration.rb +7 -15
  36. data/lib/cloudflare/email/mailboxes/inbound_retention.rb +1 -14
  37. data/lib/cloudflare/email/mailboxes/models.rb +8 -130
  38. data/lib/cloudflare/email/mailboxes/service.rb +7 -174
  39. data/lib/cloudflare/email/mailboxes.rb +1 -0
  40. data/lib/cloudflare/email/management/adapter.rb +9 -0
  41. data/lib/cloudflare/email/management/configuration.rb +10 -0
  42. data/lib/cloudflare/email/management/engine.rb +17 -0
  43. data/lib/cloudflare/email/management/routes.rb +14 -0
  44. data/lib/cloudflare/email/management.rb +7 -0
  45. data/lib/cloudflare/email/provider_metadata.rb +77 -0
  46. data/lib/cloudflare/email/routing_analytics.rb +196 -0
  47. data/lib/cloudflare/email/routing_diagnostics.rb +206 -0
  48. data/lib/cloudflare/email/tenancy.rb +2 -73
  49. data/lib/cloudflare/email/tenant_job_context.rb +2 -85
  50. data/lib/cloudflare/email/verification.rb +17 -9
  51. data/lib/cloudflare/email/version.rb +1 -1
  52. data/lib/cloudflare/email/worker_deployer.rb +36 -5
  53. data/lib/cloudflare-email.rb +6 -0
  54. data/lib/generators/cloudflare/email/install_generator.rb +6 -5
  55. data/lib/generators/cloudflare/email/mailboxes/catch_all/catch_all_generator.rb +21 -0
  56. data/lib/generators/cloudflare/email/mailboxes/catch_all/templates/add_cloudflare_email_catch_all.rb +18 -0
  57. data/lib/generators/cloudflare/email/mailboxes/templates/create_cloudflare_email_mailboxes.rb +5 -0
  58. data/lib/generators/cloudflare/email/mailboxes/templates/create_cloudflare_email_receiving_domains.rb +1 -1
  59. data/lib/generators/cloudflare/email/routing_tracking/routing_tracking_generator.rb +28 -0
  60. data/lib/generators/cloudflare/email/routing_tracking/templates/create_cloudflare_email_routing_delivery_receipts.rb +22 -0
  61. data/lib/tasks/cloudflare_email.rake +2 -1
  62. data/lib/tasks/cloudflare_email_diagnostics.rake +11 -0
  63. data/templates/deploy-to-cloudflare/.dev.vars.example +3 -0
  64. data/templates/deploy-to-cloudflare/.gitignore +6 -0
  65. data/templates/deploy-to-cloudflare/LICENSE.txt +21 -0
  66. data/templates/deploy-to-cloudflare/README.md +104 -0
  67. data/templates/deploy-to-cloudflare/docs/domain-setup.md +198 -0
  68. data/templates/deploy-to-cloudflare/package-lock.json +2627 -0
  69. data/templates/deploy-to-cloudflare/package.json +37 -0
  70. data/templates/deploy-to-cloudflare/scripts/check-subdomains.mjs +54 -0
  71. data/templates/deploy-to-cloudflare/src/index.js +445 -0
  72. data/templates/deploy-to-cloudflare/test/durable.test.ts +193 -0
  73. data/templates/deploy-to-cloudflare/test/index.test.ts +309 -0
  74. data/templates/deploy-to-cloudflare/test/relay.test.ts +226 -0
  75. data/templates/deploy-to-cloudflare/test/subdomains.test.ts +51 -0
  76. data/templates/deploy-to-cloudflare/vitest.config.ts +8 -0
  77. data/templates/deploy-to-cloudflare/wrangler.toml +22 -0
  78. data/templates/worker/README.md +186 -15
  79. data/templates/worker/docs/domain-setup.md +198 -0
  80. data/templates/worker/docs/durable-inbound.md +149 -0
  81. data/templates/worker/package-lock.json +2 -2
  82. data/templates/worker/package.json +2 -1
  83. data/templates/worker/scripts/check-subdomains.mjs +54 -0
  84. data/templates/worker/src/index.js +331 -38
  85. data/templates/worker/test/durable.test.ts +193 -0
  86. data/templates/worker/test/index.test.ts +78 -20
  87. data/templates/worker/test/relay.test.ts +226 -0
  88. data/templates/worker/test/subdomains.test.ts +51 -0
  89. data/templates/worker/wrangler.toml +50 -0
  90. metadata +65 -3
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cole
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-09-11 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: mailbox-kit
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.1.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.1.0
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: base64
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -139,25 +153,36 @@ files:
139
153
  - README.md
140
154
  - SECURITY.md
141
155
  - app/controllers/cloudflare/email/ingress_controller.rb
156
+ - app/controllers/cloudflare/email/management/mailboxes_controller.rb
157
+ - app/controllers/cloudflare/email/management/styles_controller.rb
142
158
  - docs/activerecord-tenanted.md
143
159
  - docs/architecture.md
160
+ - docs/custom-ingress.md
144
161
  - docs/delivery-events.md
145
162
  - docs/features.md
146
163
  - docs/getting-started.md
147
164
  - docs/mailboxes.md
165
+ - docs/management-engine.md
148
166
  - docs/outbox.md
167
+ - docs/routing-deliveries.md
168
+ - docs/routing-diagnostics.md
149
169
  - docs/tenant-mailboxes-plan.md
150
170
  - docs/thread-correlation.md
151
171
  - docs/troubleshooting.md
152
172
  - docs/upgrading-0.2.md
173
+ - docs/upgrading-0.3.md
153
174
  - docs/verification/2026-09-10-followup.md
154
175
  - docs/verification/2026-09-10-install-upgrade.md
155
176
  - docs/verification/2026-09-10-live.md
156
177
  - docs/verification/2026-09-10.md
178
+ - docs/verification/2026-09-11-custom-ingress.md
157
179
  - docs/verification/2026-09-11-extraction.md
158
180
  - docs/verification/2026-09-11-outbound-ledger.md
159
181
  - docs/verification/2026-09-11-security.md
160
182
  - docs/verification/2026-09-11-tenant-mailboxes.md
183
+ - docs/verification/2026-09-12-destination-context.md
184
+ - docs/verification/2026-09-13-action-mailbox-core.md
185
+ - docs/verification/2026-09-13-durable-inbound-and-routing.md
161
186
  - examples/plain_ruby.rb
162
187
  - lib/cloudflare-email.rb
163
188
  - lib/cloudflare/email/active_record.rb
@@ -171,6 +196,8 @@ files:
171
196
  - lib/cloudflare/email/active_record/outbound_reconciliation.rb
172
197
  - lib/cloudflare/email/active_record/outbox.rb
173
198
  - lib/cloudflare/email/active_record/outbox_notifications.rb
199
+ - lib/cloudflare/email/active_record/routing_deliveries.rb
200
+ - lib/cloudflare/email/check_route_task.rb
174
201
  - lib/cloudflare/email/client.rb
175
202
  - lib/cloudflare/email/consume_events_task.rb
176
203
  - lib/cloudflare/email/credentials.rb
@@ -185,6 +212,7 @@ files:
185
212
  - lib/cloudflare/email/envelope.rb
186
213
  - lib/cloudflare/email/error.rb
187
214
  - lib/cloudflare/email/event_consumer.rb
215
+ - lib/cloudflare/email/ingress.rb
188
216
  - lib/cloudflare/email/mailboxes.rb
189
217
  - lib/cloudflare/email/mailboxes/configuration.rb
190
218
  - lib/cloudflare/email/mailboxes/events.rb
@@ -194,11 +222,19 @@ files:
194
222
  - lib/cloudflare/email/mailboxes/provider_correlation.rb
195
223
  - lib/cloudflare/email/mailboxes/service.rb
196
224
  - lib/cloudflare/email/mailboxes/shared_event_receipt.rb
225
+ - lib/cloudflare/email/management.rb
226
+ - lib/cloudflare/email/management/adapter.rb
227
+ - lib/cloudflare/email/management/configuration.rb
228
+ - lib/cloudflare/email/management/engine.rb
229
+ - lib/cloudflare/email/management/routes.rb
197
230
  - lib/cloudflare/email/message_id.rb
231
+ - lib/cloudflare/email/provider_metadata.rb
198
232
  - lib/cloudflare/email/provision_catchall_task.rb
199
233
  - lib/cloudflare/email/provision_route_task.rb
200
234
  - lib/cloudflare/email/replay_events_job.rb
201
235
  - lib/cloudflare/email/response.rb
236
+ - lib/cloudflare/email/routing_analytics.rb
237
+ - lib/cloudflare/email/routing_diagnostics.rb
202
238
  - lib/cloudflare/email/routing_provisioner.rb
203
239
  - lib/cloudflare/email/send_job.rb
204
240
  - lib/cloudflare/email/send_test.rb
@@ -210,23 +246,49 @@ files:
210
246
  - lib/cloudflare/email/version.rb
211
247
  - lib/cloudflare/email/worker_deployer.rb
212
248
  - lib/generators/cloudflare/email/install_generator.rb
249
+ - lib/generators/cloudflare/email/mailboxes/catch_all/catch_all_generator.rb
250
+ - lib/generators/cloudflare/email/mailboxes/catch_all/templates/add_cloudflare_email_catch_all.rb
213
251
  - lib/generators/cloudflare/email/mailboxes/mailboxes_generator.rb
214
252
  - lib/generators/cloudflare/email/mailboxes/templates/create_cloudflare_email_mailboxes.rb
215
253
  - lib/generators/cloudflare/email/mailboxes/templates/create_cloudflare_email_receiving_domains.rb
216
254
  - lib/generators/cloudflare/email/mailboxes/templates/create_cloudflare_email_shared_events.rb
217
255
  - lib/generators/cloudflare/email/outbox/outbox_generator.rb
218
256
  - lib/generators/cloudflare/email/outbox/templates/create_cloudflare_email_outbox.rb
257
+ - lib/generators/cloudflare/email/routing_tracking/routing_tracking_generator.rb
258
+ - lib/generators/cloudflare/email/routing_tracking/templates/create_cloudflare_email_routing_delivery_receipts.rb
219
259
  - lib/generators/cloudflare/email/templates/initializer.rb
220
260
  - lib/generators/cloudflare/email/templates/main_mailbox.rb
221
261
  - lib/generators/cloudflare/email/tracking/templates/create_cloudflare_email_event_receipts.rb
222
262
  - lib/generators/cloudflare/email/tracking/tracking_generator.rb
223
263
  - lib/tasks/cloudflare_email.rake
264
+ - lib/tasks/cloudflare_email_diagnostics.rake
265
+ - templates/deploy-to-cloudflare/.dev.vars.example
266
+ - templates/deploy-to-cloudflare/.gitignore
267
+ - templates/deploy-to-cloudflare/LICENSE.txt
268
+ - templates/deploy-to-cloudflare/README.md
269
+ - templates/deploy-to-cloudflare/docs/domain-setup.md
270
+ - templates/deploy-to-cloudflare/package-lock.json
271
+ - templates/deploy-to-cloudflare/package.json
272
+ - templates/deploy-to-cloudflare/scripts/check-subdomains.mjs
273
+ - templates/deploy-to-cloudflare/src/index.js
274
+ - templates/deploy-to-cloudflare/test/durable.test.ts
275
+ - templates/deploy-to-cloudflare/test/index.test.ts
276
+ - templates/deploy-to-cloudflare/test/relay.test.ts
277
+ - templates/deploy-to-cloudflare/test/subdomains.test.ts
278
+ - templates/deploy-to-cloudflare/vitest.config.ts
279
+ - templates/deploy-to-cloudflare/wrangler.toml
224
280
  - templates/worker/README.md
281
+ - templates/worker/docs/domain-setup.md
282
+ - templates/worker/docs/durable-inbound.md
225
283
  - templates/worker/package-lock.json
226
284
  - templates/worker/package.json
285
+ - templates/worker/scripts/check-subdomains.mjs
227
286
  - templates/worker/scripts/wrangler.mjs
228
287
  - templates/worker/src/index.js
288
+ - templates/worker/test/durable.test.ts
229
289
  - templates/worker/test/index.test.ts
290
+ - templates/worker/test/relay.test.ts
291
+ - templates/worker/test/subdomains.test.ts
230
292
  - templates/worker/vitest.config.ts
231
293
  - templates/worker/wrangler.toml
232
294
  homepage: https://github.com/cole-robertson/cloudflare-email
@@ -250,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
312
  - !ruby/object:Gem::Version
251
313
  version: '0'
252
314
  requirements: []
253
- rubygems_version: 3.6.2
315
+ rubygems_version: 3.6.9
254
316
  specification_version: 4
255
317
  summary: Cloudflare Email Service client for Ruby and Rails (ActionMailer + ActionMailbox).
256
318
  test_files: []