@coldtea/pr-lens-schema 0.1.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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -0
  3. package/dist/apply.d.ts +42 -0
  4. package/dist/apply.d.ts.map +1 -0
  5. package/dist/apply.js +315 -0
  6. package/dist/apply.js.map +1 -0
  7. package/dist/config.d.ts +58 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +61 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/errors.d.ts +24 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +12 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/examples/baseline.d.ts +18 -0
  16. package/dist/examples/baseline.d.ts.map +1 -0
  17. package/dist/examples/baseline.js +433 -0
  18. package/dist/examples/baseline.js.map +1 -0
  19. package/dist/examples/index.d.ts +1194 -0
  20. package/dist/examples/index.d.ts.map +1 -0
  21. package/dist/examples/index.js +20 -0
  22. package/dist/examples/index.js.map +1 -0
  23. package/dist/examples/minimal.d.ts +4 -0
  24. package/dist/examples/minimal.d.ts.map +1 -0
  25. package/dist/examples/minimal.js +25 -0
  26. package/dist/examples/minimal.js.map +1 -0
  27. package/dist/examples/postmark-refactor.d.ts +16 -0
  28. package/dist/examples/postmark-refactor.d.ts.map +1 -0
  29. package/dist/examples/postmark-refactor.js +468 -0
  30. package/dist/examples/postmark-refactor.js.map +1 -0
  31. package/dist/graph.d.ts +568 -0
  32. package/dist/graph.d.ts.map +1 -0
  33. package/dist/graph.js +266 -0
  34. package/dist/graph.js.map +1 -0
  35. package/dist/index.d.ts +12 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +12 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/integrity.d.ts +20 -0
  40. package/dist/integrity.d.ts.map +1 -0
  41. package/dist/integrity.js +167 -0
  42. package/dist/integrity.js.map +1 -0
  43. package/dist/manifest.d.ts +65 -0
  44. package/dist/manifest.d.ts.map +1 -0
  45. package/dist/manifest.js +60 -0
  46. package/dist/manifest.js.map +1 -0
  47. package/dist/patch.d.ts +824 -0
  48. package/dist/patch.d.ts.map +1 -0
  49. package/dist/patch.js +84 -0
  50. package/dist/patch.js.map +1 -0
  51. package/dist/primitives.d.ts +92 -0
  52. package/dist/primitives.d.ts.map +1 -0
  53. package/dist/primitives.js +120 -0
  54. package/dist/primitives.js.map +1 -0
  55. package/dist/utils.d.ts +6 -0
  56. package/dist/utils.d.ts.map +1 -0
  57. package/dist/utils.js +8 -0
  58. package/dist/utils.js.map +1 -0
  59. package/dist/validate.d.ts +18 -0
  60. package/dist/validate.d.ts.map +1 -0
  61. package/dist/validate.js +95 -0
  62. package/dist/validate.js.map +1 -0
  63. package/dist/version.d.ts +21 -0
  64. package/dist/version.d.ts.map +1 -0
  65. package/dist/version.js +24 -0
  66. package/dist/version.js.map +1 -0
  67. package/examples/broadcast-baseline.graph.json +289 -0
  68. package/examples/broadcast-baseline.patch.json +321 -0
  69. package/examples/minimal.graph.json +45 -0
  70. package/examples/postmark-refactor.graph.json +580 -0
  71. package/examples/postmark-refactor.render-manifest.json +67 -0
  72. package/examples/pr-lens.config.json +32 -0
  73. package/json-schema/config.schema.json +153 -0
  74. package/json-schema/graph-doc.schema.json +1032 -0
  75. package/json-schema/patch-doc.schema.json +1383 -0
  76. package/json-schema/render-manifest.schema.json +183 -0
  77. package/package.json +66 -0
  78. package/src/apply.ts +399 -0
  79. package/src/config.ts +69 -0
  80. package/src/errors.ts +34 -0
  81. package/src/examples/baseline.ts +437 -0
  82. package/src/examples/index.ts +25 -0
  83. package/src/examples/minimal.ts +26 -0
  84. package/src/examples/postmark-refactor.ts +480 -0
  85. package/src/graph.ts +331 -0
  86. package/src/index.ts +82 -0
  87. package/src/integrity.ts +216 -0
  88. package/src/manifest.ts +64 -0
  89. package/src/patch.ts +100 -0
  90. package/src/primitives.ts +146 -0
  91. package/src/utils.ts +7 -0
  92. package/src/validate.ts +132 -0
  93. package/src/version.ts +31 -0
@@ -0,0 +1,580 @@
1
+ {
2
+ "schemaVersion": "0.1.0",
3
+ "kind": "graph",
4
+ "generatedAt": "2026-08-19T18:24:00.000Z",
5
+ "title": "Batch broadcast sending through Postmark",
6
+ "summary": "Broadcast delivery moves from one Postmark request per recipient to batched requests of 500, with suppression filtering pulled in front of the send and the payload builder extracted into a shared library.",
7
+ "lenses": [
8
+ "architecture",
9
+ "data-flow"
10
+ ],
11
+ "provenance": {
12
+ "repo": {
13
+ "owner": "ohansemmanuel",
14
+ "name": "bestregards",
15
+ "host": "github.com"
16
+ },
17
+ "base": {
18
+ "sha": "3f5c1ab9d24e7f08c6b1a5d3e9074c2b8a6f1d40",
19
+ "ref": "main"
20
+ },
21
+ "head": {
22
+ "sha": "b71e0d4c8a92f5361de7c0b4a8f2593d6c1e8a77",
23
+ "ref": "batch-broadcast-send"
24
+ },
25
+ "pullRequest": {
26
+ "number": 128,
27
+ "title": "Send broadcasts in batches of 500",
28
+ "url": "https://github.com/ohansemmanuel/bestregards/pull/128"
29
+ },
30
+ "generator": {
31
+ "name": "pr-lens-examples",
32
+ "version": "0.1.0"
33
+ }
34
+ },
35
+ "lanes": [
36
+ {
37
+ "id": "web",
38
+ "label": "Next.js",
39
+ "subtitle": "Vercel",
40
+ "order": 0
41
+ },
42
+ {
43
+ "id": "functions",
44
+ "label": "Cloud Functions",
45
+ "subtitle": "Firebase",
46
+ "order": 1
47
+ },
48
+ {
49
+ "id": "external",
50
+ "label": "External",
51
+ "subtitle": "Postmark",
52
+ "order": 2
53
+ }
54
+ ],
55
+ "nodes": [
56
+ {
57
+ "id": "broadcast-composer",
58
+ "label": "Broadcast composer",
59
+ "kind": "ui",
60
+ "delta": "unchanged",
61
+ "lane": "web",
62
+ "subtitle": "app/broadcasts/new",
63
+ "summary": "Where an author writes a broadcast and hits send. Untouched by this change.",
64
+ "files": [
65
+ {
66
+ "path": "app/broadcasts/new/page.tsx"
67
+ }
68
+ ],
69
+ "badges": []
70
+ },
71
+ {
72
+ "id": "queue-route",
73
+ "label": "POST /api/broadcasts/queue",
74
+ "kind": "route",
75
+ "delta": "modified",
76
+ "lane": "web",
77
+ "summary": "Writes the queue document. Now stamps the recipient count and batch size the sender will use instead of leaving batching to the worker.",
78
+ "files": [
79
+ {
80
+ "path": "app/api/broadcasts/queue/route.ts",
81
+ "startLine": 24,
82
+ "endLine": 96
83
+ }
84
+ ],
85
+ "badges": [
86
+ "+38 / -12"
87
+ ]
88
+ },
89
+ {
90
+ "id": "broadcast-queue",
91
+ "label": "broadcastQueue",
92
+ "kind": "datastore",
93
+ "delta": "modified",
94
+ "lane": "functions",
95
+ "subtitle": "Firestore collection",
96
+ "summary": "Queue documents gained batchSize and suppressedCount fields, and results are now written back per batch rather than per recipient.",
97
+ "files": [
98
+ {
99
+ "path": "functions/src/broadcast/schema.ts",
100
+ "startLine": 12,
101
+ "endLine": 48
102
+ }
103
+ ],
104
+ "badges": []
105
+ },
106
+ {
107
+ "id": "send-broadcast-bulk",
108
+ "label": "sendBroadcastBulk",
109
+ "kind": "function",
110
+ "delta": "added",
111
+ "lane": "functions",
112
+ "subtitle": "onWrite trigger",
113
+ "summary": "New trigger handler. Fetches suppressions once, builds batched payloads, and posts them to Postmark in chunks of 500.",
114
+ "files": [
115
+ {
116
+ "path": "functions/src/broadcast/sendBroadcastBulk.ts",
117
+ "startLine": 1,
118
+ "endLine": 142
119
+ }
120
+ ],
121
+ "badges": [
122
+ "new"
123
+ ]
124
+ },
125
+ {
126
+ "id": "build-bulk-payload",
127
+ "label": "buildBulkPayload",
128
+ "kind": "function",
129
+ "delta": "added",
130
+ "lane": "functions",
131
+ "summary": "Turns a broadcast and its recipient slice into a Postmark batch request body.",
132
+ "files": [
133
+ {
134
+ "path": "packages/broadcast-lib/src/buildBulkPayload.ts",
135
+ "startLine": 1,
136
+ "endLine": 74
137
+ }
138
+ ],
139
+ "badges": []
140
+ },
141
+ {
142
+ "id": "get-suppressed-emails",
143
+ "label": "getSuppressedEmails",
144
+ "kind": "function",
145
+ "delta": "added",
146
+ "lane": "functions",
147
+ "summary": "Pulls the Postmark suppression dump once per broadcast so suppressed addresses are filtered before any batch is sent.",
148
+ "files": [
149
+ {
150
+ "path": "packages/broadcast-lib/src/getSuppressedEmails.ts",
151
+ "startLine": 1,
152
+ "endLine": 58
153
+ }
154
+ ],
155
+ "badges": []
156
+ },
157
+ {
158
+ "id": "broadcast-lib",
159
+ "label": "broadcast-lib",
160
+ "kind": "package",
161
+ "delta": "added",
162
+ "lane": "functions",
163
+ "subtitle": "packages/broadcast-lib",
164
+ "summary": "New shared package so the queue route and the sender agree on payload shape and batch size.",
165
+ "files": [
166
+ {
167
+ "path": "packages/broadcast-lib/src/index.ts"
168
+ }
169
+ ],
170
+ "badges": [
171
+ "new package"
172
+ ]
173
+ },
174
+ {
175
+ "id": "process-broadcast",
176
+ "label": "processBroadcast",
177
+ "kind": "function",
178
+ "delta": "removed",
179
+ "lane": "functions",
180
+ "subtitle": "onWrite trigger",
181
+ "summary": "The per-recipient loop this change replaces.",
182
+ "files": [
183
+ {
184
+ "path": "functions/src/broadcast/processBroadcast.ts",
185
+ "startLine": 1,
186
+ "endLine": 118,
187
+ "revision": "base"
188
+ }
189
+ ],
190
+ "badges": []
191
+ },
192
+ {
193
+ "id": "send-single-email",
194
+ "label": "sendSingleEmail",
195
+ "kind": "function",
196
+ "delta": "removed",
197
+ "lane": "functions",
198
+ "summary": "One Postmark request per recipient. Gone with the loop that called it.",
199
+ "files": [
200
+ {
201
+ "path": "functions/src/broadcast/sendSingleEmail.ts",
202
+ "startLine": 1,
203
+ "endLine": 46,
204
+ "revision": "base"
205
+ }
206
+ ],
207
+ "badges": []
208
+ },
209
+ {
210
+ "id": "postmark",
211
+ "label": "Postmark",
212
+ "kind": "external",
213
+ "delta": "modified",
214
+ "lane": "external",
215
+ "subtitle": "Email API",
216
+ "summary": "Same provider, different endpoints: the batch endpoint and the suppression dump replace repeated single sends.",
217
+ "files": [],
218
+ "badges": []
219
+ }
220
+ ],
221
+ "edges": [
222
+ {
223
+ "id": "composer-to-queue",
224
+ "from": "broadcast-composer",
225
+ "to": "queue-route",
226
+ "kind": "http",
227
+ "delta": "unchanged",
228
+ "label": "send broadcast",
229
+ "emphasis": "normal",
230
+ "animated": false,
231
+ "files": []
232
+ },
233
+ {
234
+ "id": "queue-to-firestore",
235
+ "from": "queue-route",
236
+ "to": "broadcast-queue",
237
+ "kind": "data",
238
+ "delta": "modified",
239
+ "label": "enqueue job",
240
+ "emphasis": "normal",
241
+ "animated": false,
242
+ "files": []
243
+ },
244
+ {
245
+ "id": "queue-to-lib",
246
+ "from": "queue-route",
247
+ "to": "broadcast-lib",
248
+ "kind": "dependency",
249
+ "delta": "added",
250
+ "label": "batch size",
251
+ "emphasis": "normal",
252
+ "animated": false,
253
+ "files": []
254
+ },
255
+ {
256
+ "id": "firestore-to-bulk",
257
+ "from": "broadcast-queue",
258
+ "to": "send-broadcast-bulk",
259
+ "kind": "event",
260
+ "delta": "added",
261
+ "label": "onWrite",
262
+ "emphasis": "normal",
263
+ "animated": false,
264
+ "files": []
265
+ },
266
+ {
267
+ "id": "firestore-to-process",
268
+ "from": "broadcast-queue",
269
+ "to": "process-broadcast",
270
+ "kind": "event",
271
+ "delta": "removed",
272
+ "label": "onWrite",
273
+ "emphasis": "normal",
274
+ "animated": false,
275
+ "files": []
276
+ },
277
+ {
278
+ "id": "process-to-single",
279
+ "from": "process-broadcast",
280
+ "to": "send-single-email",
281
+ "kind": "call",
282
+ "delta": "removed",
283
+ "label": "per recipient",
284
+ "emphasis": "normal",
285
+ "animated": false,
286
+ "files": []
287
+ },
288
+ {
289
+ "id": "single-to-postmark",
290
+ "from": "send-single-email",
291
+ "to": "postmark",
292
+ "kind": "http",
293
+ "delta": "removed",
294
+ "label": "POST /email · 1 msg/call",
295
+ "emphasis": "normal",
296
+ "animated": false,
297
+ "files": []
298
+ },
299
+ {
300
+ "id": "bulk-to-payload",
301
+ "from": "send-broadcast-bulk",
302
+ "to": "build-bulk-payload",
303
+ "kind": "call",
304
+ "delta": "added",
305
+ "emphasis": "normal",
306
+ "animated": false,
307
+ "files": []
308
+ },
309
+ {
310
+ "id": "bulk-to-suppressions",
311
+ "from": "send-broadcast-bulk",
312
+ "to": "get-suppressed-emails",
313
+ "kind": "call",
314
+ "delta": "added",
315
+ "emphasis": "normal",
316
+ "animated": false,
317
+ "files": []
318
+ },
319
+ {
320
+ "id": "bulk-to-lib",
321
+ "from": "send-broadcast-bulk",
322
+ "to": "broadcast-lib",
323
+ "kind": "dependency",
324
+ "delta": "added",
325
+ "emphasis": "normal",
326
+ "animated": false,
327
+ "files": []
328
+ },
329
+ {
330
+ "id": "suppressions-to-postmark",
331
+ "from": "get-suppressed-emails",
332
+ "to": "postmark",
333
+ "kind": "http",
334
+ "delta": "added",
335
+ "label": "GET suppression dump",
336
+ "emphasis": "normal",
337
+ "animated": true,
338
+ "files": []
339
+ },
340
+ {
341
+ "id": "bulk-to-postmark",
342
+ "from": "send-broadcast-bulk",
343
+ "to": "postmark",
344
+ "kind": "http",
345
+ "delta": "added",
346
+ "label": "500 msgs/call",
347
+ "emphasis": "hero",
348
+ "animated": true,
349
+ "summary": "The change in one edge: a broadcast to 10,000 recipients drops from 10,000 requests to 20.",
350
+ "files": []
351
+ },
352
+ {
353
+ "id": "bulk-to-firestore",
354
+ "from": "send-broadcast-bulk",
355
+ "to": "broadcast-queue",
356
+ "kind": "data",
357
+ "delta": "added",
358
+ "label": "write results",
359
+ "emphasis": "normal",
360
+ "animated": false,
361
+ "files": []
362
+ }
363
+ ],
364
+ "flows": [
365
+ {
366
+ "id": "send-pipeline",
367
+ "title": "Sending a broadcast",
368
+ "summary": "The path a queued broadcast takes now, from enqueue to per-message results.",
369
+ "delta": "modified",
370
+ "participants": [
371
+ {
372
+ "node": "queue-route",
373
+ "label": "queue route"
374
+ },
375
+ {
376
+ "node": "broadcast-queue",
377
+ "label": "Firestore"
378
+ },
379
+ {
380
+ "node": "send-broadcast-bulk",
381
+ "label": "sendBroadcastBulk"
382
+ },
383
+ {
384
+ "node": "postmark",
385
+ "label": "Postmark"
386
+ }
387
+ ],
388
+ "messages": [
389
+ {
390
+ "id": "enqueue",
391
+ "from": "queue-route",
392
+ "to": "broadcast-queue",
393
+ "label": "enqueue broadcast job",
394
+ "kind": "async",
395
+ "delta": "modified",
396
+ "animated": true,
397
+ "files": []
398
+ },
399
+ {
400
+ "id": "trigger",
401
+ "from": "broadcast-queue",
402
+ "to": "send-broadcast-bulk",
403
+ "label": "onWrite trigger",
404
+ "kind": "async",
405
+ "delta": "added",
406
+ "animated": true,
407
+ "files": []
408
+ },
409
+ {
410
+ "id": "suppressions-request",
411
+ "from": "send-broadcast-bulk",
412
+ "to": "postmark",
413
+ "label": "GET suppression dump",
414
+ "kind": "sync",
415
+ "delta": "added",
416
+ "animated": true,
417
+ "files": []
418
+ },
419
+ {
420
+ "id": "suppressions-response",
421
+ "from": "postmark",
422
+ "to": "send-broadcast-bulk",
423
+ "label": "suppressed addresses",
424
+ "kind": "return",
425
+ "delta": "added",
426
+ "animated": true,
427
+ "note": "Fetched once per broadcast, not once per recipient.",
428
+ "files": []
429
+ },
430
+ {
431
+ "id": "batch-post",
432
+ "from": "send-broadcast-bulk",
433
+ "to": "postmark",
434
+ "label": "POST /email/batch · 500 msgs",
435
+ "kind": "sync",
436
+ "delta": "added",
437
+ "animated": true,
438
+ "repeat": 4,
439
+ "note": "One request per 500 recipients; four for this 2,000-recipient broadcast.",
440
+ "files": []
441
+ },
442
+ {
443
+ "id": "batch-results",
444
+ "from": "postmark",
445
+ "to": "send-broadcast-bulk",
446
+ "label": "per-message results",
447
+ "kind": "return",
448
+ "delta": "added",
449
+ "animated": true,
450
+ "files": []
451
+ },
452
+ {
453
+ "id": "write-results",
454
+ "from": "send-broadcast-bulk",
455
+ "to": "broadcast-queue",
456
+ "label": "write results",
457
+ "kind": "async",
458
+ "delta": "added",
459
+ "animated": true,
460
+ "files": []
461
+ }
462
+ ]
463
+ }
464
+ ],
465
+ "stats": {
466
+ "filesChanged": 14,
467
+ "additions": 486,
468
+ "deletions": 212,
469
+ "chips": [
470
+ {
471
+ "label": "Postmark calls",
472
+ "value": "500× fewer",
473
+ "tone": "hero"
474
+ },
475
+ {
476
+ "label": "New",
477
+ "value": "4 units",
478
+ "tone": "added"
479
+ },
480
+ {
481
+ "label": "Retired",
482
+ "value": "2 units",
483
+ "tone": "removed"
484
+ }
485
+ ]
486
+ },
487
+ "views": [
488
+ {
489
+ "id": "overview",
490
+ "title": "Architecture — blast radius",
491
+ "lens": "architecture",
492
+ "summary": "Everything this change touches, across all three lanes.",
493
+ "scope": {
494
+ "kind": "all"
495
+ },
496
+ "defaultOpen": true,
497
+ "children": [
498
+ {
499
+ "id": "new-batch-path",
500
+ "title": "The new batch path",
501
+ "lens": "architecture",
502
+ "summary": "What replaced the per-recipient loop.",
503
+ "scope": {
504
+ "kind": "selection",
505
+ "lanes": [],
506
+ "nodes": [
507
+ "send-broadcast-bulk",
508
+ "build-bulk-payload",
509
+ "get-suppressed-emails",
510
+ "broadcast-lib",
511
+ "postmark"
512
+ ],
513
+ "edges": [
514
+ "bulk-to-payload",
515
+ "bulk-to-suppressions",
516
+ "bulk-to-lib",
517
+ "suppressions-to-postmark",
518
+ "bulk-to-postmark",
519
+ "bulk-to-firestore"
520
+ ],
521
+ "flows": []
522
+ },
523
+ "defaultOpen": false,
524
+ "children": []
525
+ },
526
+ {
527
+ "id": "retired-path",
528
+ "title": "What was retired",
529
+ "lens": "architecture",
530
+ "summary": "The single-send path, kept visible so a reviewer can confirm nothing else called it.",
531
+ "scope": {
532
+ "kind": "selection",
533
+ "lanes": [],
534
+ "nodes": [
535
+ "process-broadcast",
536
+ "send-single-email"
537
+ ],
538
+ "edges": [
539
+ "firestore-to-process",
540
+ "process-to-single",
541
+ "single-to-postmark"
542
+ ],
543
+ "flows": []
544
+ },
545
+ "defaultOpen": false,
546
+ "children": []
547
+ }
548
+ ]
549
+ },
550
+ {
551
+ "id": "send-pipeline-view",
552
+ "title": "Data flow — sending a broadcast",
553
+ "lens": "data-flow",
554
+ "scope": {
555
+ "kind": "selection",
556
+ "lanes": [],
557
+ "nodes": [],
558
+ "edges": [],
559
+ "flows": [
560
+ "send-pipeline"
561
+ ]
562
+ },
563
+ "defaultOpen": false,
564
+ "children": []
565
+ }
566
+ ],
567
+ "layout": {
568
+ "direction": "right",
569
+ "laneOrder": [
570
+ "web",
571
+ "functions",
572
+ "external"
573
+ ],
574
+ "rank": {
575
+ "queue-route": 0,
576
+ "send-broadcast-bulk": 1,
577
+ "postmark": 2
578
+ }
579
+ }
580
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "schemaVersion": "0.1.0",
3
+ "kind": "render-manifest",
4
+ "generatedAt": "2026-08-19T18:32:10.000Z",
5
+ "graph": {
6
+ "headSha": "b71e0d4c8a92f5361de7c0b4a8f2593d6c1e8a77",
7
+ "contentHash": "6a1f0b8c7d2e4359"
8
+ },
9
+ "renderer": {
10
+ "name": "@coldtea/pr-lens-renderer",
11
+ "version": "0.1.0"
12
+ },
13
+ "assets": [
14
+ {
15
+ "id": "overview-light",
16
+ "lens": "architecture",
17
+ "theme": "light",
18
+ "view": "overview",
19
+ "mediaType": "image/svg+xml",
20
+ "contentHash": "0c9d2e6b1a4f7385",
21
+ "bytes": 48213,
22
+ "width": 1280,
23
+ "height": 720,
24
+ "animated": true,
25
+ "url": "https://cdn.example.com/pr-lens/6a1f0b8c7d2e4359/overview-light-0c9d2e6b1a4f7385.svg"
26
+ },
27
+ {
28
+ "id": "overview-dark",
29
+ "lens": "architecture",
30
+ "theme": "dark",
31
+ "view": "overview",
32
+ "mediaType": "image/svg+xml",
33
+ "contentHash": "7b3e5a0c9d1f6482",
34
+ "bytes": 48477,
35
+ "width": 1280,
36
+ "height": 720,
37
+ "animated": true,
38
+ "url": "https://cdn.example.com/pr-lens/6a1f0b8c7d2e4359/overview-dark-7b3e5a0c9d1f6482.svg"
39
+ },
40
+ {
41
+ "id": "send-pipeline-light",
42
+ "lens": "data-flow",
43
+ "theme": "light",
44
+ "view": "send-pipeline-view",
45
+ "mediaType": "image/svg+xml",
46
+ "contentHash": "2f8a4c6e0b9d1375",
47
+ "bytes": 31904,
48
+ "width": 1120,
49
+ "height": 640,
50
+ "animated": true,
51
+ "url": "https://cdn.example.com/pr-lens/6a1f0b8c7d2e4359/send-pipeline-light-2f8a4c6e0b9d1375.svg"
52
+ },
53
+ {
54
+ "id": "send-pipeline-dark",
55
+ "lens": "data-flow",
56
+ "theme": "dark",
57
+ "view": "send-pipeline-view",
58
+ "mediaType": "image/svg+xml",
59
+ "contentHash": "5d1b7f3a8c0e2946",
60
+ "bytes": 32011,
61
+ "width": 1120,
62
+ "height": 640,
63
+ "animated": true,
64
+ "url": "https://cdn.example.com/pr-lens/6a1f0b8c7d2e4359/send-pipeline-dark-5d1b7f3a8c0e2946.svg"
65
+ }
66
+ ]
67
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "schemaVersion": "0.1.0",
3
+ "lenses": [
4
+ "architecture",
5
+ "data-flow"
6
+ ],
7
+ "map": {
8
+ "rename": [
9
+ {
10
+ "match": "functions/src/broadcast/sendBroadcastBulk.ts",
11
+ "to": "Broadcast sender"
12
+ }
13
+ ],
14
+ "exclude": [
15
+ "**/*.test.ts",
16
+ "functions/src/legacy/**"
17
+ ],
18
+ "lane": [
19
+ {
20
+ "match": "packages/broadcast-lib/**",
21
+ "lane": "functions"
22
+ }
23
+ ],
24
+ "group": [
25
+ {
26
+ "match": "id:build-bulk-payload",
27
+ "group": "broadcast-lib"
28
+ }
29
+ ]
30
+ },
31
+ "branding": true
32
+ }