@remit/electrodb-entities 0.0.19 → 0.0.20

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 (6) hide show
  1. package/index.cjs +1255 -1235
  2. package/index.d.cts +245 -229
  3. package/index.d.mts +245 -229
  4. package/index.d.ts +245 -229
  5. package/index.mjs +1254 -1234
  6. package/package.json +1 -1
package/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FilterAnchor = exports.MessageLabel = exports.CalendarEventIndex = exports.CalendarObject = exports.CalendarCollection = exports.BodyPartContent = exports.BodyPartStorage = exports.RawMessageStorage = exports.BodyPartParameter = exports.SenderSignerStanding = exports.Envelope = exports.MessageFlagPush = exports.MessagePlacementMove = exports.MessageFlag = exports.MailboxLock = exports.MailboxFlag = exports.MailboxSpecialUseEntry = exports.MailboxAttributeEntry = exports.AccountSetting = exports.ConfigImport = exports.EnvelopeAddress = exports.MessageReference = exports.BodyPart = exports.Message = exports.Address = exports.OutboxAttachment = exports.OutboxMessage = exports.ThreadMessage = exports.OrganizeJobRequest = exports.Label = exports.Filter = exports.Mailbox = exports.Account = exports.AccountConfig = exports.Quarantine = exports.AccountExportRequest = void 0;
3
+ exports.FilterAnchor = exports.MessageLabel = exports.CalendarEventIndex = exports.BodyPartContent = exports.BodyPartStorage = exports.RawMessageStorage = exports.BodyPartParameter = exports.SenderSignerStanding = exports.Envelope = exports.MessageFlagPush = exports.MessagePlacementMove = exports.MessageFlag = exports.MailboxLock = exports.MailboxFlag = exports.MailboxSpecialUseEntry = exports.MailboxAttributeEntry = exports.AccountSetting = exports.ConfigImport = exports.EnvelopeAddress = exports.MessageReference = exports.BodyPart = exports.Message = exports.Address = exports.OutboxAttachment = exports.OutboxMessage = exports.ThreadMessage = exports.CalendarObject = exports.CalendarCollection = exports.OrganizeJobRequest = exports.Label = exports.Filter = exports.Mailbox = exports.Account = exports.AccountConfig = exports.Quarantine = exports.AccountExportRequest = void 0;
4
4
  const electrodb_1 = require("electrodb");
5
5
  exports.AccountExportRequest = {
6
6
  attributes: {
@@ -1384,167 +1384,264 @@ exports.OrganizeJobRequest = {
1384
1384
  version: "1"
1385
1385
  }
1386
1386
  };
1387
- exports.ThreadMessage = {
1387
+ exports.CalendarCollection = {
1388
1388
  attributes: {
1389
- threadMessageId: {
1389
+ calendarId: {
1390
1390
  type: "string",
1391
1391
  required: true,
1392
1392
  validate: value => {
1393
1393
  if (typeof value === "string" && value.length < 25)
1394
- throw new Error("'threadMessageId' must be at least 25 characters");
1394
+ throw new Error("'calendarId' must be at least 25 characters");
1395
1395
  if (typeof value === "string" && value.length > 25)
1396
- throw new Error("'threadMessageId' must be at most 25 characters");
1396
+ throw new Error("'calendarId' must be at most 25 characters");
1397
1397
  return true;
1398
1398
  }
1399
1399
  },
1400
- threadId: {
1400
+ accountConfigId: {
1401
1401
  type: "string",
1402
1402
  required: true,
1403
1403
  validate: value => {
1404
1404
  if (typeof value === "string" && value.length < 25)
1405
- throw new Error("'threadId' must be at least 25 characters");
1405
+ throw new Error("'accountConfigId' must be at least 25 characters");
1406
1406
  if (typeof value === "string" && value.length > 25)
1407
- throw new Error("'threadId' must be at most 25 characters");
1407
+ throw new Error("'accountConfigId' must be at most 25 characters");
1408
1408
  return true;
1409
1409
  }
1410
1410
  },
1411
- messageId: {
1411
+ urlSegment: {
1412
1412
  type: "string",
1413
1413
  required: true,
1414
1414
  validate: value => {
1415
- if (typeof value === "string" && value.length < 25)
1416
- throw new Error("'messageId' must be at least 25 characters");
1417
- if (typeof value === "string" && value.length > 25)
1418
- throw new Error("'messageId' must be at most 25 characters");
1415
+ if (typeof value === "string" && value.length > 64)
1416
+ throw new Error("'urlSegment' must be at most 64 characters");
1419
1417
  return true;
1420
1418
  }
1421
1419
  },
1422
- accountConfigId: {
1420
+ displayName: {
1423
1421
  type: "string",
1424
1422
  required: true,
1425
1423
  validate: value => {
1426
- if (typeof value === "string" && value.length < 25)
1427
- throw new Error("'accountConfigId' must be at least 25 characters");
1428
- if (typeof value === "string" && value.length > 25)
1429
- throw new Error("'accountConfigId' must be at most 25 characters");
1424
+ if (typeof value === "string" && value.length > 140)
1425
+ throw new Error("'displayName' must be at most 140 characters");
1430
1426
  return true;
1431
1427
  }
1432
1428
  },
1433
- mailboxId: {
1429
+ color: {
1430
+ type: ["Cal1", "Cal2", "Cal3", "Cal4", "Cal5", "Cal6"],
1431
+ required: true,
1432
+ default: "Cal1"
1433
+ },
1434
+ componentSet: {
1435
+ type: ["VeventOnly"],
1436
+ required: true,
1437
+ default: "VeventOnly"
1438
+ },
1439
+ source: {
1440
+ type: ["Default", "UserCreated", "MailDerived"],
1441
+ required: true,
1442
+ default: "UserCreated"
1443
+ },
1444
+ timezone: {
1434
1445
  type: "string",
1435
1446
  required: true,
1447
+ default: "",
1436
1448
  validate: value => {
1437
- if (typeof value === "string" && value.length < 25)
1438
- throw new Error("'mailboxId' must be at least 25 characters");
1439
- if (typeof value === "string" && value.length > 25)
1440
- throw new Error("'mailboxId' must be at most 25 characters");
1449
+ if (typeof value === "string" && value.length > 64)
1450
+ throw new Error("'timezone' must be at most 64 characters");
1441
1451
  return true;
1442
1452
  }
1443
1453
  },
1444
- uid: {
1454
+ syncSequence: {
1445
1455
  type: "number",
1446
1456
  required: true,
1457
+ default: 0,
1447
1458
  validate: value => {
1448
- if (typeof value === "number" && value < 1)
1449
- throw new Error("'uid' must be at least 1");
1450
1459
  if (typeof value === "number" && !Number.isInteger(value))
1451
- throw new Error("'uid' must be an integer");
1460
+ throw new Error("'syncSequence' must be an integer");
1452
1461
  return true;
1453
1462
  }
1454
1463
  },
1455
- messageIdHeader: {
1456
- type: "string",
1457
- required: false
1464
+ createdAt: {
1465
+ type: "number",
1466
+ readOnly: true,
1467
+ required: true,
1468
+ default: () => Date.now(),
1469
+ set: () => Date.now()
1458
1470
  },
1459
- inReplyTo: {
1471
+ updatedAt: {
1472
+ type: "number",
1473
+ watch: "*",
1474
+ required: true,
1475
+ default: () => Date.now(),
1476
+ set: () => Date.now()
1477
+ }
1478
+ },
1479
+ indexes: {
1480
+ byUrlSegment: {
1481
+ pk: {
1482
+ field: "gsi0pk",
1483
+ composite: ["accountConfigId"]
1484
+ },
1485
+ sk: {
1486
+ field: "gsi0sk",
1487
+ composite: ["urlSegment"]
1488
+ },
1489
+ index: "gsi0"
1490
+ },
1491
+ Calendar: {
1492
+ pk: {
1493
+ field: "pk",
1494
+ composite: ["accountConfigId"]
1495
+ },
1496
+ sk: {
1497
+ field: "sk",
1498
+ composite: ["calendarId"]
1499
+ }
1500
+ }
1501
+ },
1502
+ model: {
1503
+ entity: "calendar",
1504
+ service: "remit",
1505
+ version: "1"
1506
+ }
1507
+ };
1508
+ exports.CalendarObject = {
1509
+ attributes: {
1510
+ calendarObjectId: {
1460
1511
  type: "string",
1461
- required: false
1512
+ required: true,
1513
+ validate: value => {
1514
+ if (typeof value === "string" && value.length < 25)
1515
+ throw new Error("'calendarObjectId' must be at least 25 characters");
1516
+ if (typeof value === "string" && value.length > 25)
1517
+ throw new Error("'calendarObjectId' must be at most 25 characters");
1518
+ return true;
1519
+ }
1462
1520
  },
1463
- referenceOrder: {
1464
- type: "number",
1521
+ calendarId: {
1522
+ type: "string",
1465
1523
  required: true,
1466
1524
  validate: value => {
1467
- if (typeof value === "number" && value < 0)
1468
- throw new Error("'referenceOrder' must be at least 0");
1469
- if (typeof value === "number" && !Number.isInteger(value))
1470
- throw new Error("'referenceOrder' must be an integer");
1525
+ if (typeof value === "string" && value.length < 25)
1526
+ throw new Error("'calendarId' must be at least 25 characters");
1527
+ if (typeof value === "string" && value.length > 25)
1528
+ throw new Error("'calendarId' must be at most 25 characters");
1471
1529
  return true;
1472
1530
  }
1473
1531
  },
1474
- fromEmail: {
1532
+ resourceName: {
1475
1533
  type: "string",
1476
- required: false
1534
+ required: true,
1535
+ validate: value => {
1536
+ if (typeof value === "string" && value.length > 256)
1537
+ throw new Error("'resourceName' must be at most 256 characters");
1538
+ return true;
1539
+ }
1477
1540
  },
1478
- fromName: {
1541
+ icalUid: {
1479
1542
  type: "string",
1480
- required: false
1543
+ required: true,
1544
+ validate: value => {
1545
+ if (typeof value === "string" && value.length > 512)
1546
+ throw new Error("'icalUid' must be at most 512 characters");
1547
+ return true;
1548
+ }
1481
1549
  },
1482
- subject: {
1550
+ icalData: {
1483
1551
  type: "string",
1484
- required: false
1552
+ required: true
1485
1553
  },
1486
- listId: {
1554
+ etag: {
1487
1555
  type: "string",
1488
- required: false,
1556
+ required: true,
1489
1557
  validate: value => {
1490
- if (typeof value === "string" && value.length > 256)
1491
- throw new Error("'listId' must be at most 256 characters");
1558
+ if (typeof value === "string" && value.length > 64)
1559
+ throw new Error("'etag' must be at most 64 characters");
1492
1560
  return true;
1493
1561
  }
1494
1562
  },
1495
- internalDate: {
1563
+ sequence: {
1496
1564
  type: "number",
1497
1565
  required: true,
1566
+ default: 0,
1498
1567
  validate: value => {
1499
1568
  if (typeof value === "number" && !Number.isInteger(value))
1500
- throw new Error("'internalDate' must be an integer");
1569
+ throw new Error("'sequence' must be an integer");
1501
1570
  return true;
1502
1571
  }
1503
1572
  },
1504
- sentDate: {
1573
+ syncSequence: {
1505
1574
  type: "number",
1506
1575
  required: true,
1576
+ default: 0,
1507
1577
  validate: value => {
1508
1578
  if (typeof value === "number" && !Number.isInteger(value))
1509
- throw new Error("'sentDate' must be an integer");
1579
+ throw new Error("'syncSequence' must be an integer");
1510
1580
  return true;
1511
1581
  }
1512
1582
  },
1513
- isRead: {
1514
- type: "boolean",
1515
- required: true
1583
+ summary: {
1584
+ type: "string",
1585
+ required: true,
1586
+ validate: value => {
1587
+ if (typeof value === "string" && value.length > 512)
1588
+ throw new Error("'summary' must be at most 512 characters");
1589
+ return true;
1590
+ }
1516
1591
  },
1517
- hasAttachment: {
1518
- type: "boolean",
1519
- required: true
1592
+ dtStart: {
1593
+ type: "string",
1594
+ required: true,
1595
+ validate: value => {
1596
+ if (typeof value === "string" && value.length > 64)
1597
+ throw new Error("'dtStart' must be at most 64 characters");
1598
+ return true;
1599
+ }
1520
1600
  },
1521
- star: {
1522
- type: ["none", "yellow", "orange", "red", "purple", "blue", "teal", "green", "yellow_bang", "red_bang", "purple_question", "blue_info", "orange_guillemet", "green_check", "yellow_check", "blue_star"],
1601
+ dtEnd: {
1602
+ type: "string",
1523
1603
  required: true,
1524
- default: "none"
1604
+ validate: value => {
1605
+ if (typeof value === "string" && value.length > 64)
1606
+ throw new Error("'dtEnd' must be at most 64 characters");
1607
+ return true;
1608
+ }
1525
1609
  },
1526
- hasStars: {
1610
+ allDay: {
1527
1611
  type: "boolean",
1528
- required: true
1612
+ required: true,
1613
+ default: false
1529
1614
  },
1530
- isDeleted: {
1615
+ zoneCertainty: {
1616
+ type: ["Local", "Explicit", "Ambiguous"],
1617
+ required: true,
1618
+ default: "Explicit"
1619
+ },
1620
+ status: {
1621
+ type: ["Confirmed", "Tentative", "Cancelled"],
1622
+ required: true,
1623
+ default: "Confirmed"
1624
+ },
1625
+ transparency: {
1626
+ type: ["Opaque", "Transparent"],
1627
+ required: true,
1628
+ default: "Opaque"
1629
+ },
1630
+ hasRecurrence: {
1531
1631
  type: "boolean",
1532
- required: true
1632
+ required: true,
1633
+ default: false
1533
1634
  },
1534
- snippet: {
1635
+ expandedThrough: {
1535
1636
  type: "string",
1536
- required: false,
1637
+ required: true,
1638
+ default: "",
1537
1639
  validate: value => {
1538
- if (typeof value === "string" && value.length > 256)
1539
- throw new Error("'snippet' must be at most 256 characters");
1640
+ if (typeof value === "string" && value.length > 64)
1641
+ throw new Error("'expandedThrough' must be at most 64 characters");
1540
1642
  return true;
1541
1643
  }
1542
1644
  },
1543
- category: {
1544
- type: ["uncategorized", "personal", "newsletter", "marketing", "automated", "transactional", "social"],
1545
- required: true,
1546
- default: "uncategorized"
1547
- },
1548
1645
  createdAt: {
1549
1646
  type: "number",
1550
1647
  readOnly: true,
@@ -1561,18 +1658,234 @@ exports.ThreadMessage = {
1561
1658
  }
1562
1659
  },
1563
1660
  indexes: {
1564
- byMailboxAndReadStatus: {
1661
+ bySyncSequence: {
1565
1662
  pk: {
1566
- field: "pk",
1567
- composite: ["accountConfigId"]
1663
+ field: "gsi1pk",
1664
+ composite: ["calendarId"]
1568
1665
  },
1569
1666
  sk: {
1570
- field: "lsi5sk",
1571
- composite: ["mailboxId", "isRead", "sentDate"]
1667
+ field: "gsi1sk",
1668
+ composite: ["syncSequence"]
1572
1669
  },
1573
- index: "lsi5"
1670
+ index: "gsi1"
1574
1671
  },
1575
- byStarred: {
1672
+ byUid: {
1673
+ pk: {
1674
+ field: "gsi0pk",
1675
+ composite: ["calendarId"]
1676
+ },
1677
+ sk: {
1678
+ field: "gsi0sk",
1679
+ composite: ["icalUid"]
1680
+ },
1681
+ index: "gsi0"
1682
+ },
1683
+ CalendarObject: {
1684
+ pk: {
1685
+ field: "pk",
1686
+ composite: ["calendarId"]
1687
+ },
1688
+ sk: {
1689
+ field: "sk",
1690
+ composite: ["calendarObjectId"]
1691
+ }
1692
+ }
1693
+ },
1694
+ model: {
1695
+ entity: "calendarObject",
1696
+ service: "remit",
1697
+ version: "1"
1698
+ }
1699
+ };
1700
+ exports.ThreadMessage = {
1701
+ attributes: {
1702
+ threadMessageId: {
1703
+ type: "string",
1704
+ required: true,
1705
+ validate: value => {
1706
+ if (typeof value === "string" && value.length < 25)
1707
+ throw new Error("'threadMessageId' must be at least 25 characters");
1708
+ if (typeof value === "string" && value.length > 25)
1709
+ throw new Error("'threadMessageId' must be at most 25 characters");
1710
+ return true;
1711
+ }
1712
+ },
1713
+ threadId: {
1714
+ type: "string",
1715
+ required: true,
1716
+ validate: value => {
1717
+ if (typeof value === "string" && value.length < 25)
1718
+ throw new Error("'threadId' must be at least 25 characters");
1719
+ if (typeof value === "string" && value.length > 25)
1720
+ throw new Error("'threadId' must be at most 25 characters");
1721
+ return true;
1722
+ }
1723
+ },
1724
+ messageId: {
1725
+ type: "string",
1726
+ required: true,
1727
+ validate: value => {
1728
+ if (typeof value === "string" && value.length < 25)
1729
+ throw new Error("'messageId' must be at least 25 characters");
1730
+ if (typeof value === "string" && value.length > 25)
1731
+ throw new Error("'messageId' must be at most 25 characters");
1732
+ return true;
1733
+ }
1734
+ },
1735
+ accountConfigId: {
1736
+ type: "string",
1737
+ required: true,
1738
+ validate: value => {
1739
+ if (typeof value === "string" && value.length < 25)
1740
+ throw new Error("'accountConfigId' must be at least 25 characters");
1741
+ if (typeof value === "string" && value.length > 25)
1742
+ throw new Error("'accountConfigId' must be at most 25 characters");
1743
+ return true;
1744
+ }
1745
+ },
1746
+ mailboxId: {
1747
+ type: "string",
1748
+ required: true,
1749
+ validate: value => {
1750
+ if (typeof value === "string" && value.length < 25)
1751
+ throw new Error("'mailboxId' must be at least 25 characters");
1752
+ if (typeof value === "string" && value.length > 25)
1753
+ throw new Error("'mailboxId' must be at most 25 characters");
1754
+ return true;
1755
+ }
1756
+ },
1757
+ uid: {
1758
+ type: "number",
1759
+ required: true,
1760
+ validate: value => {
1761
+ if (typeof value === "number" && value < 1)
1762
+ throw new Error("'uid' must be at least 1");
1763
+ if (typeof value === "number" && !Number.isInteger(value))
1764
+ throw new Error("'uid' must be an integer");
1765
+ return true;
1766
+ }
1767
+ },
1768
+ messageIdHeader: {
1769
+ type: "string",
1770
+ required: false
1771
+ },
1772
+ inReplyTo: {
1773
+ type: "string",
1774
+ required: false
1775
+ },
1776
+ referenceOrder: {
1777
+ type: "number",
1778
+ required: true,
1779
+ validate: value => {
1780
+ if (typeof value === "number" && value < 0)
1781
+ throw new Error("'referenceOrder' must be at least 0");
1782
+ if (typeof value === "number" && !Number.isInteger(value))
1783
+ throw new Error("'referenceOrder' must be an integer");
1784
+ return true;
1785
+ }
1786
+ },
1787
+ fromEmail: {
1788
+ type: "string",
1789
+ required: false
1790
+ },
1791
+ fromName: {
1792
+ type: "string",
1793
+ required: false
1794
+ },
1795
+ subject: {
1796
+ type: "string",
1797
+ required: false
1798
+ },
1799
+ listId: {
1800
+ type: "string",
1801
+ required: false,
1802
+ validate: value => {
1803
+ if (typeof value === "string" && value.length > 256)
1804
+ throw new Error("'listId' must be at most 256 characters");
1805
+ return true;
1806
+ }
1807
+ },
1808
+ internalDate: {
1809
+ type: "number",
1810
+ required: true,
1811
+ validate: value => {
1812
+ if (typeof value === "number" && !Number.isInteger(value))
1813
+ throw new Error("'internalDate' must be an integer");
1814
+ return true;
1815
+ }
1816
+ },
1817
+ sentDate: {
1818
+ type: "number",
1819
+ required: true,
1820
+ validate: value => {
1821
+ if (typeof value === "number" && !Number.isInteger(value))
1822
+ throw new Error("'sentDate' must be an integer");
1823
+ return true;
1824
+ }
1825
+ },
1826
+ isRead: {
1827
+ type: "boolean",
1828
+ required: true
1829
+ },
1830
+ hasAttachment: {
1831
+ type: "boolean",
1832
+ required: true
1833
+ },
1834
+ star: {
1835
+ type: ["none", "yellow", "orange", "red", "purple", "blue", "teal", "green", "yellow_bang", "red_bang", "purple_question", "blue_info", "orange_guillemet", "green_check", "yellow_check", "blue_star"],
1836
+ required: true,
1837
+ default: "none"
1838
+ },
1839
+ hasStars: {
1840
+ type: "boolean",
1841
+ required: true
1842
+ },
1843
+ isDeleted: {
1844
+ type: "boolean",
1845
+ required: true
1846
+ },
1847
+ snippet: {
1848
+ type: "string",
1849
+ required: false,
1850
+ validate: value => {
1851
+ if (typeof value === "string" && value.length > 256)
1852
+ throw new Error("'snippet' must be at most 256 characters");
1853
+ return true;
1854
+ }
1855
+ },
1856
+ category: {
1857
+ type: ["uncategorized", "personal", "newsletter", "marketing", "automated", "transactional", "social"],
1858
+ required: true,
1859
+ default: "uncategorized"
1860
+ },
1861
+ createdAt: {
1862
+ type: "number",
1863
+ readOnly: true,
1864
+ required: true,
1865
+ default: () => Date.now(),
1866
+ set: () => Date.now()
1867
+ },
1868
+ updatedAt: {
1869
+ type: "number",
1870
+ watch: "*",
1871
+ required: true,
1872
+ default: () => Date.now(),
1873
+ set: () => Date.now()
1874
+ }
1875
+ },
1876
+ indexes: {
1877
+ byMailboxAndReadStatus: {
1878
+ pk: {
1879
+ field: "pk",
1880
+ composite: ["accountConfigId"]
1881
+ },
1882
+ sk: {
1883
+ field: "lsi5sk",
1884
+ composite: ["mailboxId", "isRead", "sentDate"]
1885
+ },
1886
+ index: "lsi5"
1887
+ },
1888
+ byStarred: {
1576
1889
  pk: {
1577
1890
  field: "pk",
1578
1891
  composite: ["accountConfigId"]
@@ -2671,510 +2984,22 @@ exports.Message = {
2671
2984
  },
2672
2985
  placementDecidedAt: {
2673
2986
  type: "number",
2674
- required: false,
2675
- validate: value => {
2676
- if (typeof value === "number" && !Number.isInteger(value))
2677
- throw new Error("'placementDecidedAt' must be an integer");
2678
- return true;
2679
- }
2680
- },
2681
- spamReport: {
2682
- type: "map",
2683
- properties: {
2684
- reportedAt: {
2685
- type: "number",
2686
- required: true
2687
- }
2688
- },
2689
- required: false
2690
- },
2691
- createdAt: {
2692
- type: "number",
2693
- readOnly: true,
2694
- required: true,
2695
- default: () => Date.now(),
2696
- set: () => Date.now()
2697
- },
2698
- updatedAt: {
2699
- type: "number",
2700
- watch: "*",
2701
- required: true,
2702
- default: () => Date.now(),
2703
- set: () => Date.now()
2704
- }
2705
- },
2706
- indexes: {
2707
- byMessageId: {
2708
- pk: {
2709
- field: "gsi2pk",
2710
- composite: ["messageId"]
2711
- },
2712
- sk: {
2713
- field: "gsi2sk",
2714
- composite: []
2715
- },
2716
- index: "gsi2",
2717
- collection: "messageData"
2718
- },
2719
- byMailboxId: {
2720
- pk: {
2721
- field: "gsi0pk",
2722
- composite: ["mailboxId"]
2723
- },
2724
- sk: {
2725
- field: "gsi0sk",
2726
- composite: ["uid"]
2727
- },
2728
- index: "gsi0",
2729
- collection: "message"
2730
- },
2731
- Message: {
2732
- pk: {
2733
- field: "pk",
2734
- composite: ["messageId"]
2735
- },
2736
- sk: {
2737
- field: "sk",
2738
- composite: []
2739
- }
2740
- }
2741
- },
2742
- model: {
2743
- entity: "message",
2744
- service: "remit",
2745
- version: "1"
2746
- }
2747
- };
2748
- exports.BodyPart = {
2749
- attributes: {
2750
- bodyPartId: {
2751
- type: "string",
2752
- required: true,
2753
- validate: value => {
2754
- if (typeof value === "string" && value.length < 25)
2755
- throw new Error("'bodyPartId' must be at least 25 characters");
2756
- if (typeof value === "string" && value.length > 25)
2757
- throw new Error("'bodyPartId' must be at most 25 characters");
2758
- return true;
2759
- }
2760
- },
2761
- messageId: {
2762
- type: "string",
2763
- required: true,
2764
- validate: value => {
2765
- if (typeof value === "string" && value.length < 25)
2766
- throw new Error("'messageId' must be at least 25 characters");
2767
- if (typeof value === "string" && value.length > 25)
2768
- throw new Error("'messageId' must be at most 25 characters");
2769
- return true;
2770
- }
2771
- },
2772
- parentBodyPartId: {
2773
- type: "string",
2774
- required: false,
2775
- validate: value => {
2776
- if (typeof value === "string" && value.length < 25)
2777
- throw new Error("'parentBodyPartId' must be at least 25 characters");
2778
- if (typeof value === "string" && value.length > 25)
2779
- throw new Error("'parentBodyPartId' must be at most 25 characters");
2780
- return true;
2781
- }
2782
- },
2783
- partPath: {
2784
- type: "string",
2785
- required: true,
2786
- validate: value => {
2787
- if (typeof value === "string" && value.length < 1)
2788
- throw new Error("'partPath' must be at least 1 characters");
2789
- return true;
2790
- }
2791
- },
2792
- mediaType: {
2793
- type: ["TEXT", "IMAGE", "AUDIO", "VIDEO", "APPLICATION", "MULTIPART", "MESSAGE"],
2794
- required: true
2795
- },
2796
- mediaSubtype: {
2797
- type: "string",
2798
- required: true,
2799
- validate: value => {
2800
- if (typeof value === "string" && value.length < 1)
2801
- throw new Error("'mediaSubtype' must be at least 1 characters");
2802
- return true;
2803
- }
2804
- },
2805
- contentId: {
2806
- type: "string",
2807
- required: false
2808
- },
2809
- contentDescription: {
2810
- type: "string",
2811
- required: false
2812
- },
2813
- transferEncoding: {
2814
- type: ["7BIT", "8BIT", "BINARY", "BASE64", "QUOTED-PRINTABLE"],
2815
- required: true
2816
- },
2817
- sizeOctets: {
2818
- type: "number",
2819
- required: true,
2820
- validate: value => {
2821
- if (typeof value === "number" && value < 0)
2822
- throw new Error("'sizeOctets' must be at least 0");
2823
- if (typeof value === "number" && !Number.isInteger(value))
2824
- throw new Error("'sizeOctets' must be an integer");
2825
- return true;
2826
- }
2827
- },
2828
- lineCount: {
2829
- type: "number",
2830
- required: false,
2831
- validate: value => {
2832
- if (typeof value === "number" && !Number.isInteger(value))
2833
- throw new Error("'lineCount' must be an integer");
2834
- return true;
2835
- }
2836
- },
2837
- md5Hash: {
2838
- type: "string",
2839
- required: false
2840
- },
2841
- disposition: {
2842
- type: ["inline", "attachment"],
2843
- required: false
2844
- },
2845
- dispositionFilename: {
2846
- type: "string",
2847
- required: false
2848
- },
2849
- language: {
2850
- type: "string",
2851
- required: false
2852
- },
2853
- location: {
2854
- type: "string",
2855
- required: false
2856
- },
2857
- isMultipart: {
2858
- type: "boolean",
2859
- required: true
2860
- },
2861
- multipartSubtype: {
2862
- type: ["mixed", "alternative", "digest", "parallel", "related", "signed", "encrypted", "form-data", "report"],
2863
- required: false
2864
- },
2865
- createdAt: {
2866
- type: "number",
2867
- readOnly: true,
2868
- required: true,
2869
- default: () => Date.now(),
2870
- set: () => Date.now()
2871
- },
2872
- updatedAt: {
2873
- type: "number",
2874
- watch: "*",
2875
- required: true,
2876
- default: () => Date.now(),
2877
- set: () => Date.now()
2878
- }
2879
- },
2880
- indexes: {
2881
- byMessageId: {
2882
- pk: {
2883
- field: "gsi2pk",
2884
- composite: ["messageId"]
2885
- },
2886
- sk: {
2887
- field: "gsi2sk",
2888
- composite: ["bodyPartId"]
2889
- },
2890
- index: "gsi2",
2891
- collection: "messageData"
2892
- },
2893
- BodyPart: {
2894
- pk: {
2895
- field: "pk",
2896
- composite: ["bodyPartId"]
2897
- },
2898
- sk: {
2899
- field: "sk",
2900
- composite: []
2901
- }
2902
- }
2903
- },
2904
- model: {
2905
- entity: "bodyPart",
2906
- service: "remit",
2907
- version: "1"
2908
- }
2909
- };
2910
- exports.MessageReference = {
2911
- attributes: {
2912
- messageReferenceId: {
2913
- type: "string",
2914
- required: true,
2915
- validate: value => {
2916
- if (typeof value === "string" && value.length < 25)
2917
- throw new Error("'messageReferenceId' must be at least 25 characters");
2918
- if (typeof value === "string" && value.length > 25)
2919
- throw new Error("'messageReferenceId' must be at most 25 characters");
2920
- return true;
2921
- }
2922
- },
2923
- messageId: {
2924
- type: "string",
2925
- required: true,
2926
- validate: value => {
2927
- if (typeof value === "string" && value.length < 25)
2928
- throw new Error("'messageId' must be at least 25 characters");
2929
- if (typeof value === "string" && value.length > 25)
2930
- throw new Error("'messageId' must be at most 25 characters");
2931
- return true;
2932
- }
2933
- },
2934
- envelopeId: {
2935
- type: "string",
2936
- required: true,
2937
- validate: value => {
2938
- if (typeof value === "string" && value.length < 25)
2939
- throw new Error("'envelopeId' must be at least 25 characters");
2940
- if (typeof value === "string" && value.length > 25)
2941
- throw new Error("'envelopeId' must be at most 25 characters");
2942
- return true;
2943
- }
2944
- },
2945
- messageIdValue: {
2946
- type: "string",
2947
- required: true
2948
- },
2949
- referenceType: {
2950
- type: ["in_reply_to", "references"],
2951
- required: true
2952
- },
2953
- referenceOrder: {
2954
- type: "number",
2955
- required: true,
2956
- validate: value => {
2957
- if (typeof value === "number" && value < 0)
2958
- throw new Error("'referenceOrder' must be at least 0");
2959
- if (typeof value === "number" && !Number.isInteger(value))
2960
- throw new Error("'referenceOrder' must be an integer");
2961
- return true;
2962
- }
2963
- },
2964
- createdAt: {
2965
- type: "number",
2966
- readOnly: true,
2967
- required: true,
2968
- default: () => Date.now(),
2969
- set: () => Date.now()
2970
- },
2971
- updatedAt: {
2972
- type: "number",
2973
- watch: "*",
2974
- required: true,
2975
- default: () => Date.now(),
2976
- set: () => Date.now()
2977
- }
2978
- },
2979
- indexes: {
2980
- byMessageId: {
2981
- pk: {
2982
- field: "gsi2pk",
2983
- composite: ["messageId"]
2984
- },
2985
- sk: {
2986
- field: "gsi2sk",
2987
- composite: ["messageReferenceId"]
2988
- },
2989
- index: "gsi2",
2990
- collection: "messageData"
2991
- },
2992
- MessageReference: {
2993
- pk: {
2994
- field: "pk",
2995
- composite: ["messageReferenceId"]
2996
- },
2997
- sk: {
2998
- field: "sk",
2999
- composite: []
3000
- }
3001
- }
3002
- },
3003
- model: {
3004
- entity: "messageReference",
3005
- service: "remit",
3006
- version: "1"
3007
- }
3008
- };
3009
- exports.EnvelopeAddress = {
3010
- attributes: {
3011
- envelopeAddressId: {
3012
- type: "string",
3013
- required: true,
3014
- validate: value => {
3015
- if (typeof value === "string" && value.length < 25)
3016
- throw new Error("'envelopeAddressId' must be at least 25 characters");
3017
- if (typeof value === "string" && value.length > 25)
3018
- throw new Error("'envelopeAddressId' must be at most 25 characters");
3019
- return true;
3020
- }
3021
- },
3022
- messageId: {
3023
- type: "string",
3024
- required: true,
3025
- validate: value => {
3026
- if (typeof value === "string" && value.length < 25)
3027
- throw new Error("'messageId' must be at least 25 characters");
3028
- if (typeof value === "string" && value.length > 25)
3029
- throw new Error("'messageId' must be at most 25 characters");
3030
- return true;
3031
- }
3032
- },
3033
- addressId: {
3034
- type: "string",
3035
- required: true,
3036
- validate: value => {
3037
- if (typeof value === "string" && value.length < 25)
3038
- throw new Error("'addressId' must be at least 25 characters");
3039
- if (typeof value === "string" && value.length > 25)
3040
- throw new Error("'addressId' must be at most 25 characters");
3041
- return true;
3042
- }
3043
- },
3044
- displayName: {
3045
- type: "string",
3046
- required: false
3047
- },
3048
- normalizedEmail: {
3049
- type: "string",
3050
- required: true
3051
- },
3052
- addressRole: {
3053
- type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3054
- required: true
3055
- },
3056
- addressOrder: {
3057
- type: "number",
3058
- required: true,
3059
- validate: value => {
3060
- if (typeof value === "number" && value < 0)
3061
- throw new Error("'addressOrder' must be at least 0");
3062
- if (typeof value === "number" && !Number.isInteger(value))
3063
- throw new Error("'addressOrder' must be an integer");
3064
- return true;
3065
- }
3066
- },
3067
- createdAt: {
3068
- type: "number",
3069
- readOnly: true,
3070
- required: true,
3071
- default: () => Date.now(),
3072
- set: () => Date.now()
3073
- },
3074
- updatedAt: {
3075
- type: "number",
3076
- watch: "*",
3077
- required: true,
3078
- default: () => Date.now(),
3079
- set: () => Date.now()
3080
- }
3081
- },
3082
- indexes: {
3083
- byMessageId: {
3084
- pk: {
3085
- field: "gsi2pk",
3086
- composite: ["messageId"]
3087
- },
3088
- sk: {
3089
- field: "gsi2sk",
3090
- composite: ["envelopeAddressId"]
3091
- },
3092
- index: "gsi2",
3093
- collection: "messageData"
3094
- },
3095
- EnvelopeAddress: {
3096
- pk: {
3097
- field: "pk",
3098
- composite: ["envelopeAddressId"]
3099
- },
3100
- sk: {
3101
- field: "sk",
3102
- composite: []
3103
- }
3104
- }
3105
- },
3106
- model: {
3107
- entity: "envelopeAddress",
3108
- service: "remit",
3109
- version: "1"
3110
- }
3111
- };
3112
- exports.ConfigImport = {
3113
- attributes: {
3114
- importId: {
3115
- type: "string",
3116
- required: true,
3117
- validate: value => {
3118
- if (typeof value === "string" && value.length < 25)
3119
- throw new Error("'importId' must be at least 25 characters");
3120
- if (typeof value === "string" && value.length > 25)
3121
- throw new Error("'importId' must be at most 25 characters");
3122
- return true;
3123
- }
3124
- },
3125
- accountConfigId: {
3126
- type: "string",
3127
- required: true,
3128
- validate: value => {
3129
- if (typeof value === "string" && value.length < 25)
3130
- throw new Error("'accountConfigId' must be at least 25 characters");
3131
- if (typeof value === "string" && value.length > 25)
3132
- throw new Error("'accountConfigId' must be at most 25 characters");
3133
- return true;
3134
- }
3135
- },
3136
- schemaVersion: {
3137
- type: "number",
3138
- required: true,
3139
- validate: value => {
3140
- if (typeof value === "number" && !Number.isInteger(value))
3141
- throw new Error("'schemaVersion' must be an integer");
3142
- return true;
3143
- }
3144
- },
3145
- state: {
3146
- type: ["Pending", "Complete"],
3147
- required: true,
3148
- default: "Pending"
3149
- },
3150
- document: {
3151
- type: (0, electrodb_1.CustomAttributeType)("any"),
3152
- required: true
2987
+ required: false,
2988
+ validate: value => {
2989
+ if (typeof value === "number" && !Number.isInteger(value))
2990
+ throw new Error("'placementDecidedAt' must be an integer");
2991
+ return true;
2992
+ }
3153
2993
  },
3154
- unresolvedRefs: {
3155
- type: "list",
3156
- items: {
3157
- type: "map",
3158
- properties: {
3159
- kind: {
3160
- type: ["FolderRole", "MailboxOverride", "FilterAction"],
3161
- required: true
3162
- },
3163
- accountId: {
3164
- type: "string",
3165
- required: true
3166
- },
3167
- folderPath: {
3168
- type: "string",
3169
- required: true
3170
- },
3171
- target: {
3172
- type: "string",
3173
- required: true
3174
- }
2994
+ spamReport: {
2995
+ type: "map",
2996
+ properties: {
2997
+ reportedAt: {
2998
+ type: "number",
2999
+ required: true
3175
3000
  }
3176
3001
  },
3177
- required: true
3002
+ required: false
3178
3003
  },
3179
3004
  createdAt: {
3180
3005
  type: "number",
@@ -3183,16 +3008,6 @@ exports.ConfigImport = {
3183
3008
  default: () => Date.now(),
3184
3009
  set: () => Date.now()
3185
3010
  },
3186
- completedAt: {
3187
- type: "number",
3188
- required: true,
3189
- default: 0,
3190
- validate: value => {
3191
- if (typeof value === "number" && !Number.isInteger(value))
3192
- throw new Error("'completedAt' must be an integer");
3193
- return true;
3194
- }
3195
- },
3196
3011
  updatedAt: {
3197
3012
  type: "number",
3198
3013
  watch: "*",
@@ -3202,21 +3017,34 @@ exports.ConfigImport = {
3202
3017
  }
3203
3018
  },
3204
3019
  indexes: {
3205
- byAccountConfigId: {
3020
+ byMessageId: {
3021
+ pk: {
3022
+ field: "gsi2pk",
3023
+ composite: ["messageId"]
3024
+ },
3025
+ sk: {
3026
+ field: "gsi2sk",
3027
+ composite: []
3028
+ },
3029
+ index: "gsi2",
3030
+ collection: "messageData"
3031
+ },
3032
+ byMailboxId: {
3206
3033
  pk: {
3207
3034
  field: "gsi0pk",
3208
- composite: ["accountConfigId"]
3035
+ composite: ["mailboxId"]
3209
3036
  },
3210
3037
  sk: {
3211
3038
  field: "gsi0sk",
3212
- composite: ["createdAt"]
3039
+ composite: ["uid"]
3213
3040
  },
3214
- index: "gsi0"
3041
+ index: "gsi0",
3042
+ collection: "message"
3215
3043
  },
3216
- ConfigImport: {
3044
+ Message: {
3217
3045
  pk: {
3218
3046
  field: "pk",
3219
- composite: ["importId"]
3047
+ composite: ["messageId"]
3220
3048
  },
3221
3049
  sk: {
3222
3050
  field: "sk",
@@ -3225,43 +3053,128 @@ exports.ConfigImport = {
3225
3053
  }
3226
3054
  },
3227
3055
  model: {
3228
- entity: "configImport",
3056
+ entity: "message",
3229
3057
  service: "remit",
3230
3058
  version: "1"
3231
3059
  }
3232
3060
  };
3233
- exports.AccountSetting = {
3061
+ exports.BodyPart = {
3234
3062
  attributes: {
3235
- accountSettingId: {
3063
+ bodyPartId: {
3236
3064
  type: "string",
3237
3065
  required: true,
3238
3066
  validate: value => {
3239
3067
  if (typeof value === "string" && value.length < 25)
3240
- throw new Error("'accountSettingId' must be at least 25 characters");
3068
+ throw new Error("'bodyPartId' must be at least 25 characters");
3241
3069
  if (typeof value === "string" && value.length > 25)
3242
- throw new Error("'accountSettingId' must be at most 25 characters");
3070
+ throw new Error("'bodyPartId' must be at most 25 characters");
3243
3071
  return true;
3244
3072
  }
3245
3073
  },
3246
- accountConfigId: {
3074
+ messageId: {
3247
3075
  type: "string",
3248
3076
  required: true,
3249
3077
  validate: value => {
3250
3078
  if (typeof value === "string" && value.length < 25)
3251
- throw new Error("'accountConfigId' must be at least 25 characters");
3079
+ throw new Error("'messageId' must be at least 25 characters");
3252
3080
  if (typeof value === "string" && value.length > 25)
3253
- throw new Error("'accountConfigId' must be at most 25 characters");
3081
+ throw new Error("'messageId' must be at most 25 characters");
3254
3082
  return true;
3255
3083
  }
3256
3084
  },
3257
- name: {
3085
+ parentBodyPartId: {
3086
+ type: "string",
3087
+ required: false,
3088
+ validate: value => {
3089
+ if (typeof value === "string" && value.length < 25)
3090
+ throw new Error("'parentBodyPartId' must be at least 25 characters");
3091
+ if (typeof value === "string" && value.length > 25)
3092
+ throw new Error("'parentBodyPartId' must be at most 25 characters");
3093
+ return true;
3094
+ }
3095
+ },
3096
+ partPath: {
3258
3097
  type: "string",
3098
+ required: true,
3099
+ validate: value => {
3100
+ if (typeof value === "string" && value.length < 1)
3101
+ throw new Error("'partPath' must be at least 1 characters");
3102
+ return true;
3103
+ }
3104
+ },
3105
+ mediaType: {
3106
+ type: ["TEXT", "IMAGE", "AUDIO", "VIDEO", "APPLICATION", "MULTIPART", "MESSAGE"],
3259
3107
  required: true
3260
3108
  },
3261
- value: {
3262
- type: (0, electrodb_1.CustomAttributeType)("any"),
3109
+ mediaSubtype: {
3110
+ type: "string",
3111
+ required: true,
3112
+ validate: value => {
3113
+ if (typeof value === "string" && value.length < 1)
3114
+ throw new Error("'mediaSubtype' must be at least 1 characters");
3115
+ return true;
3116
+ }
3117
+ },
3118
+ contentId: {
3119
+ type: "string",
3120
+ required: false
3121
+ },
3122
+ contentDescription: {
3123
+ type: "string",
3124
+ required: false
3125
+ },
3126
+ transferEncoding: {
3127
+ type: ["7BIT", "8BIT", "BINARY", "BASE64", "QUOTED-PRINTABLE"],
3128
+ required: true
3129
+ },
3130
+ sizeOctets: {
3131
+ type: "number",
3132
+ required: true,
3133
+ validate: value => {
3134
+ if (typeof value === "number" && value < 0)
3135
+ throw new Error("'sizeOctets' must be at least 0");
3136
+ if (typeof value === "number" && !Number.isInteger(value))
3137
+ throw new Error("'sizeOctets' must be an integer");
3138
+ return true;
3139
+ }
3140
+ },
3141
+ lineCount: {
3142
+ type: "number",
3143
+ required: false,
3144
+ validate: value => {
3145
+ if (typeof value === "number" && !Number.isInteger(value))
3146
+ throw new Error("'lineCount' must be an integer");
3147
+ return true;
3148
+ }
3149
+ },
3150
+ md5Hash: {
3151
+ type: "string",
3152
+ required: false
3153
+ },
3154
+ disposition: {
3155
+ type: ["inline", "attachment"],
3156
+ required: false
3157
+ },
3158
+ dispositionFilename: {
3159
+ type: "string",
3160
+ required: false
3161
+ },
3162
+ language: {
3163
+ type: "string",
3164
+ required: false
3165
+ },
3166
+ location: {
3167
+ type: "string",
3168
+ required: false
3169
+ },
3170
+ isMultipart: {
3171
+ type: "boolean",
3263
3172
  required: true
3264
3173
  },
3174
+ multipartSubtype: {
3175
+ type: ["mixed", "alternative", "digest", "parallel", "related", "signed", "encrypted", "form-data", "report"],
3176
+ required: false
3177
+ },
3265
3178
  createdAt: {
3266
3179
  type: "number",
3267
3180
  readOnly: true,
@@ -3278,21 +3191,22 @@ exports.AccountSetting = {
3278
3191
  }
3279
3192
  },
3280
3193
  indexes: {
3281
- byAccountConfigId: {
3194
+ byMessageId: {
3282
3195
  pk: {
3283
- field: "gsi0pk",
3284
- composite: ["accountConfigId"]
3196
+ field: "gsi2pk",
3197
+ composite: ["messageId"]
3285
3198
  },
3286
3199
  sk: {
3287
- field: "gsi0sk",
3288
- composite: ["name"]
3200
+ field: "gsi2sk",
3201
+ composite: ["bodyPartId"]
3289
3202
  },
3290
- index: "gsi0"
3203
+ index: "gsi2",
3204
+ collection: "messageData"
3291
3205
  },
3292
- AccountSetting: {
3206
+ BodyPart: {
3293
3207
  pk: {
3294
3208
  field: "pk",
3295
- composite: ["accountSettingId"]
3209
+ composite: ["bodyPartId"]
3296
3210
  },
3297
3211
  sk: {
3298
3212
  field: "sk",
@@ -3301,57 +3215,97 @@ exports.AccountSetting = {
3301
3215
  }
3302
3216
  },
3303
3217
  model: {
3304
- entity: "accountSetting",
3218
+ entity: "bodyPart",
3305
3219
  service: "remit",
3306
3220
  version: "1"
3307
3221
  }
3308
3222
  };
3309
- exports.MailboxAttributeEntry = {
3223
+ exports.MessageReference = {
3310
3224
  attributes: {
3311
- mailboxAttributeId: {
3225
+ messageReferenceId: {
3312
3226
  type: "string",
3313
3227
  required: true,
3314
3228
  validate: value => {
3315
3229
  if (typeof value === "string" && value.length < 25)
3316
- throw new Error("'mailboxAttributeId' must be at least 25 characters");
3230
+ throw new Error("'messageReferenceId' must be at least 25 characters");
3317
3231
  if (typeof value === "string" && value.length > 25)
3318
- throw new Error("'mailboxAttributeId' must be at most 25 characters");
3232
+ throw new Error("'messageReferenceId' must be at most 25 characters");
3319
3233
  return true;
3320
3234
  }
3321
3235
  },
3322
- mailboxId: {
3236
+ messageId: {
3323
3237
  type: "string",
3324
3238
  required: true,
3325
3239
  validate: value => {
3326
3240
  if (typeof value === "string" && value.length < 25)
3327
- throw new Error("'mailboxId' must be at least 25 characters");
3241
+ throw new Error("'messageId' must be at least 25 characters");
3328
3242
  if (typeof value === "string" && value.length > 25)
3329
- throw new Error("'mailboxId' must be at most 25 characters");
3243
+ throw new Error("'messageId' must be at most 25 characters");
3330
3244
  return true;
3331
3245
  }
3332
3246
  },
3333
- attributeName: {
3334
- type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3247
+ envelopeId: {
3248
+ type: "string",
3249
+ required: true,
3250
+ validate: value => {
3251
+ if (typeof value === "string" && value.length < 25)
3252
+ throw new Error("'envelopeId' must be at least 25 characters");
3253
+ if (typeof value === "string" && value.length > 25)
3254
+ throw new Error("'envelopeId' must be at most 25 characters");
3255
+ return true;
3256
+ }
3257
+ },
3258
+ messageIdValue: {
3259
+ type: "string",
3260
+ required: true
3261
+ },
3262
+ referenceType: {
3263
+ type: ["in_reply_to", "references"],
3335
3264
  required: true
3265
+ },
3266
+ referenceOrder: {
3267
+ type: "number",
3268
+ required: true,
3269
+ validate: value => {
3270
+ if (typeof value === "number" && value < 0)
3271
+ throw new Error("'referenceOrder' must be at least 0");
3272
+ if (typeof value === "number" && !Number.isInteger(value))
3273
+ throw new Error("'referenceOrder' must be an integer");
3274
+ return true;
3275
+ }
3276
+ },
3277
+ createdAt: {
3278
+ type: "number",
3279
+ readOnly: true,
3280
+ required: true,
3281
+ default: () => Date.now(),
3282
+ set: () => Date.now()
3283
+ },
3284
+ updatedAt: {
3285
+ type: "number",
3286
+ watch: "*",
3287
+ required: true,
3288
+ default: () => Date.now(),
3289
+ set: () => Date.now()
3336
3290
  }
3337
3291
  },
3338
3292
  indexes: {
3339
- byMailboxId: {
3293
+ byMessageId: {
3340
3294
  pk: {
3341
- field: "gsi1pk",
3342
- composite: ["mailboxId"]
3295
+ field: "gsi2pk",
3296
+ composite: ["messageId"]
3343
3297
  },
3344
3298
  sk: {
3345
- field: "gsi1sk",
3346
- composite: ["mailboxAttributeId"]
3299
+ field: "gsi2sk",
3300
+ composite: ["messageReferenceId"]
3347
3301
  },
3348
- index: "gsi1",
3349
- collection: "mailbox"
3302
+ index: "gsi2",
3303
+ collection: "messageData"
3350
3304
  },
3351
- MailboxAttributeEntry: {
3305
+ MessageReference: {
3352
3306
  pk: {
3353
3307
  field: "pk",
3354
- composite: ["mailboxAttributeId"]
3308
+ composite: ["messageReferenceId"]
3355
3309
  },
3356
3310
  sk: {
3357
3311
  field: "sk",
@@ -3360,120 +3314,101 @@ exports.MailboxAttributeEntry = {
3360
3314
  }
3361
3315
  },
3362
3316
  model: {
3363
- entity: "mailboxAttributeEntry",
3317
+ entity: "messageReference",
3364
3318
  service: "remit",
3365
3319
  version: "1"
3366
3320
  }
3367
3321
  };
3368
- exports.MailboxSpecialUseEntry = {
3322
+ exports.EnvelopeAddress = {
3369
3323
  attributes: {
3370
- mailboxSpecialUseId: {
3324
+ envelopeAddressId: {
3371
3325
  type: "string",
3372
3326
  required: true,
3373
3327
  validate: value => {
3374
3328
  if (typeof value === "string" && value.length < 25)
3375
- throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3329
+ throw new Error("'envelopeAddressId' must be at least 25 characters");
3376
3330
  if (typeof value === "string" && value.length > 25)
3377
- throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3331
+ throw new Error("'envelopeAddressId' must be at most 25 characters");
3378
3332
  return true;
3379
3333
  }
3380
3334
  },
3381
- mailboxId: {
3335
+ messageId: {
3382
3336
  type: "string",
3383
3337
  required: true,
3384
3338
  validate: value => {
3385
3339
  if (typeof value === "string" && value.length < 25)
3386
- throw new Error("'mailboxId' must be at least 25 characters");
3340
+ throw new Error("'messageId' must be at least 25 characters");
3387
3341
  if (typeof value === "string" && value.length > 25)
3388
- throw new Error("'mailboxId' must be at most 25 characters");
3342
+ throw new Error("'messageId' must be at most 25 characters");
3389
3343
  return true;
3390
3344
  }
3391
3345
  },
3392
- specialUse: {
3393
- type: ["All", "Archive", "Drafts", "Flagged", "Junk", "Sent", "Trash", "Important"],
3394
- required: true
3395
- }
3396
- },
3397
- indexes: {
3398
- byMailboxId: {
3399
- pk: {
3400
- field: "gsi1pk",
3401
- composite: ["mailboxId"]
3402
- },
3403
- sk: {
3404
- field: "gsi1sk",
3405
- composite: ["mailboxSpecialUseId"]
3406
- },
3407
- index: "gsi1",
3408
- collection: "mailbox"
3409
- },
3410
- MailboxSpecialUseEntry: {
3411
- pk: {
3412
- field: "pk",
3413
- composite: ["mailboxSpecialUseId"]
3414
- },
3415
- sk: {
3416
- field: "sk",
3417
- composite: []
3418
- }
3419
- }
3420
- },
3421
- model: {
3422
- entity: "mailboxSpecialUseEntry",
3423
- service: "remit",
3424
- version: "1"
3425
- }
3426
- };
3427
- exports.MailboxFlag = {
3428
- attributes: {
3429
- mailboxFlagId: {
3346
+ addressId: {
3430
3347
  type: "string",
3431
3348
  required: true,
3432
3349
  validate: value => {
3433
3350
  if (typeof value === "string" && value.length < 25)
3434
- throw new Error("'mailboxFlagId' must be at least 25 characters");
3351
+ throw new Error("'addressId' must be at least 25 characters");
3435
3352
  if (typeof value === "string" && value.length > 25)
3436
- throw new Error("'mailboxFlagId' must be at most 25 characters");
3353
+ throw new Error("'addressId' must be at most 25 characters");
3437
3354
  return true;
3438
3355
  }
3439
3356
  },
3440
- mailboxId: {
3357
+ displayName: {
3358
+ type: "string",
3359
+ required: false
3360
+ },
3361
+ normalizedEmail: {
3441
3362
  type: "string",
3363
+ required: true
3364
+ },
3365
+ addressRole: {
3366
+ type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3367
+ required: true
3368
+ },
3369
+ addressOrder: {
3370
+ type: "number",
3442
3371
  required: true,
3443
3372
  validate: value => {
3444
- if (typeof value === "string" && value.length < 25)
3445
- throw new Error("'mailboxId' must be at least 25 characters");
3446
- if (typeof value === "string" && value.length > 25)
3447
- throw new Error("'mailboxId' must be at most 25 characters");
3373
+ if (typeof value === "number" && value < 0)
3374
+ throw new Error("'addressOrder' must be at least 0");
3375
+ if (typeof value === "number" && !Number.isInteger(value))
3376
+ throw new Error("'addressOrder' must be an integer");
3448
3377
  return true;
3449
3378
  }
3450
3379
  },
3451
- flagName: {
3452
- type: (0, electrodb_1.CustomAttributeType)("any"),
3453
- required: true
3380
+ createdAt: {
3381
+ type: "number",
3382
+ readOnly: true,
3383
+ required: true,
3384
+ default: () => Date.now(),
3385
+ set: () => Date.now()
3454
3386
  },
3455
- isPermanent: {
3456
- type: "boolean",
3457
- required: true
3387
+ updatedAt: {
3388
+ type: "number",
3389
+ watch: "*",
3390
+ required: true,
3391
+ default: () => Date.now(),
3392
+ set: () => Date.now()
3458
3393
  }
3459
3394
  },
3460
3395
  indexes: {
3461
- byMailboxId: {
3396
+ byMessageId: {
3462
3397
  pk: {
3463
- field: "gsi1pk",
3464
- composite: ["mailboxId"]
3398
+ field: "gsi2pk",
3399
+ composite: ["messageId"]
3465
3400
  },
3466
3401
  sk: {
3467
- field: "gsi1sk",
3468
- composite: ["mailboxFlagId"]
3402
+ field: "gsi2sk",
3403
+ composite: ["envelopeAddressId"]
3469
3404
  },
3470
- index: "gsi1",
3471
- collection: "mailbox"
3405
+ index: "gsi2",
3406
+ collection: "messageData"
3472
3407
  },
3473
- MailboxFlag: {
3408
+ EnvelopeAddress: {
3474
3409
  pk: {
3475
3410
  field: "pk",
3476
- composite: ["mailboxFlagId"]
3411
+ composite: ["envelopeAddressId"]
3477
3412
  },
3478
3413
  sk: {
3479
3414
  field: "sk",
@@ -3482,150 +3417,163 @@ exports.MailboxFlag = {
3482
3417
  }
3483
3418
  },
3484
3419
  model: {
3485
- entity: "mailboxFlag",
3420
+ entity: "envelopeAddress",
3486
3421
  service: "remit",
3487
3422
  version: "1"
3488
3423
  }
3489
3424
  };
3490
- exports.MailboxLock = {
3425
+ exports.ConfigImport = {
3491
3426
  attributes: {
3492
- mailboxId: {
3493
- type: "string",
3494
- required: true,
3495
- validate: value => {
3496
- if (typeof value === "string" && value.length < 25)
3497
- throw new Error("'mailboxId' must be at least 25 characters");
3498
- if (typeof value === "string" && value.length > 25)
3499
- throw new Error("'mailboxId' must be at most 25 characters");
3500
- return true;
3501
- }
3502
- },
3503
- eventName: {
3504
- type: "string",
3505
- required: true
3506
- },
3507
- accountId: {
3427
+ importId: {
3508
3428
  type: "string",
3509
3429
  required: true,
3510
3430
  validate: value => {
3511
3431
  if (typeof value === "string" && value.length < 25)
3512
- throw new Error("'accountId' must be at least 25 characters");
3432
+ throw new Error("'importId' must be at least 25 characters");
3513
3433
  if (typeof value === "string" && value.length > 25)
3514
- throw new Error("'accountId' must be at most 25 characters");
3434
+ throw new Error("'importId' must be at most 25 characters");
3515
3435
  return true;
3516
3436
  }
3517
3437
  },
3518
- lockId: {
3438
+ accountConfigId: {
3519
3439
  type: "string",
3520
3440
  required: true,
3521
3441
  validate: value => {
3522
3442
  if (typeof value === "string" && value.length < 25)
3523
- throw new Error("'lockId' must be at least 25 characters");
3443
+ throw new Error("'accountConfigId' must be at least 25 characters");
3524
3444
  if (typeof value === "string" && value.length > 25)
3525
- throw new Error("'lockId' must be at most 25 characters");
3445
+ throw new Error("'accountConfigId' must be at most 25 characters");
3526
3446
  return true;
3527
3447
  }
3528
3448
  },
3529
- acquiredAt: {
3449
+ schemaVersion: {
3530
3450
  type: "number",
3531
3451
  required: true,
3532
3452
  validate: value => {
3533
3453
  if (typeof value === "number" && !Number.isInteger(value))
3534
- throw new Error("'acquiredAt' must be an integer");
3454
+ throw new Error("'schemaVersion' must be an integer");
3535
3455
  return true;
3536
3456
  }
3537
3457
  },
3538
- lockedBy: {
3539
- type: "string",
3458
+ state: {
3459
+ type: ["Pending", "Complete"],
3460
+ required: true,
3461
+ default: "Pending"
3462
+ },
3463
+ document: {
3464
+ type: (0, electrodb_1.CustomAttributeType)("any"),
3540
3465
  required: true
3541
3466
  },
3542
- ttl: {
3467
+ unresolvedRefs: {
3468
+ type: "list",
3469
+ items: {
3470
+ type: "map",
3471
+ properties: {
3472
+ kind: {
3473
+ type: ["FolderRole", "MailboxOverride", "FilterAction"],
3474
+ required: true
3475
+ },
3476
+ accountId: {
3477
+ type: "string",
3478
+ required: true
3479
+ },
3480
+ folderPath: {
3481
+ type: "string",
3482
+ required: true
3483
+ },
3484
+ target: {
3485
+ type: "string",
3486
+ required: true
3487
+ }
3488
+ }
3489
+ },
3490
+ required: true
3491
+ },
3492
+ createdAt: {
3493
+ type: "number",
3494
+ readOnly: true,
3495
+ required: true,
3496
+ default: () => Date.now(),
3497
+ set: () => Date.now()
3498
+ },
3499
+ completedAt: {
3543
3500
  type: "number",
3544
3501
  required: true,
3502
+ default: 0,
3545
3503
  validate: value => {
3546
3504
  if (typeof value === "number" && !Number.isInteger(value))
3547
- throw new Error("'ttl' must be an integer");
3505
+ throw new Error("'completedAt' must be an integer");
3548
3506
  return true;
3549
3507
  }
3508
+ },
3509
+ updatedAt: {
3510
+ type: "number",
3511
+ watch: "*",
3512
+ required: true,
3513
+ default: () => Date.now(),
3514
+ set: () => Date.now()
3550
3515
  }
3551
3516
  },
3552
3517
  indexes: {
3553
- allLocks: {
3554
- pk: {
3555
- field: "gsi2pk",
3556
- composite: []
3557
- },
3558
- sk: {
3559
- field: "gsi2sk",
3560
- composite: ["acquiredAt"]
3561
- },
3562
- index: "gsi2",
3563
- collection: "locks"
3564
- },
3565
- byAccountId: {
3518
+ byAccountConfigId: {
3566
3519
  pk: {
3567
- field: "gsi1pk",
3568
- composite: ["accountId"]
3520
+ field: "gsi0pk",
3521
+ composite: ["accountConfigId"]
3569
3522
  },
3570
3523
  sk: {
3571
- field: "gsi1sk",
3572
- composite: ["mailboxId", "eventName"]
3524
+ field: "gsi0sk",
3525
+ composite: ["createdAt"]
3573
3526
  },
3574
- index: "gsi1"
3527
+ index: "gsi0"
3575
3528
  },
3576
- MailboxLock: {
3529
+ ConfigImport: {
3577
3530
  pk: {
3578
3531
  field: "pk",
3579
- composite: ["mailboxId"]
3532
+ composite: ["importId"]
3580
3533
  },
3581
3534
  sk: {
3582
3535
  field: "sk",
3583
- composite: ["eventName"]
3536
+ composite: []
3584
3537
  }
3585
3538
  }
3586
3539
  },
3587
3540
  model: {
3588
- entity: "mailboxLock",
3541
+ entity: "configImport",
3589
3542
  service: "remit",
3590
3543
  version: "1"
3591
3544
  }
3592
3545
  };
3593
- exports.MessageFlag = {
3546
+ exports.AccountSetting = {
3594
3547
  attributes: {
3595
- messageFlagId: {
3548
+ accountSettingId: {
3596
3549
  type: "string",
3597
3550
  required: true,
3598
3551
  validate: value => {
3599
3552
  if (typeof value === "string" && value.length < 25)
3600
- throw new Error("'messageFlagId' must be at least 25 characters");
3553
+ throw new Error("'accountSettingId' must be at least 25 characters");
3601
3554
  if (typeof value === "string" && value.length > 25)
3602
- throw new Error("'messageFlagId' must be at most 25 characters");
3555
+ throw new Error("'accountSettingId' must be at most 25 characters");
3603
3556
  return true;
3604
3557
  }
3605
3558
  },
3606
- messageId: {
3559
+ accountConfigId: {
3607
3560
  type: "string",
3608
3561
  required: true,
3609
3562
  validate: value => {
3610
3563
  if (typeof value === "string" && value.length < 25)
3611
- throw new Error("'messageId' must be at least 25 characters");
3564
+ throw new Error("'accountConfigId' must be at least 25 characters");
3612
3565
  if (typeof value === "string" && value.length > 25)
3613
- throw new Error("'messageId' must be at most 25 characters");
3566
+ throw new Error("'accountConfigId' must be at most 25 characters");
3614
3567
  return true;
3615
3568
  }
3616
3569
  },
3617
- flagName: {
3618
- type: (0, electrodb_1.CustomAttributeType)("any"),
3570
+ name: {
3571
+ type: "string",
3619
3572
  required: true
3620
3573
  },
3621
- setAt: {
3622
- type: "number",
3623
- required: true,
3624
- validate: value => {
3625
- if (typeof value === "number" && !Number.isInteger(value))
3626
- throw new Error("'setAt' must be an integer");
3627
- return true;
3628
- }
3574
+ value: {
3575
+ type: (0, electrodb_1.CustomAttributeType)("any"),
3576
+ required: true
3629
3577
  },
3630
3578
  createdAt: {
3631
3579
  type: "number",
@@ -3643,22 +3591,21 @@ exports.MessageFlag = {
3643
3591
  }
3644
3592
  },
3645
3593
  indexes: {
3646
- byMessageId: {
3594
+ byAccountConfigId: {
3647
3595
  pk: {
3648
- field: "gsi2pk",
3649
- composite: ["messageId"]
3596
+ field: "gsi0pk",
3597
+ composite: ["accountConfigId"]
3650
3598
  },
3651
3599
  sk: {
3652
- field: "gsi2sk",
3653
- composite: ["messageFlagId"]
3600
+ field: "gsi0sk",
3601
+ composite: ["name"]
3654
3602
  },
3655
- index: "gsi2",
3656
- collection: "messageData"
3603
+ index: "gsi0"
3657
3604
  },
3658
- MessageFlag: {
3605
+ AccountSetting: {
3659
3606
  pk: {
3660
3607
  field: "pk",
3661
- composite: ["messageFlagId"]
3608
+ composite: ["accountSettingId"]
3662
3609
  },
3663
3610
  sk: {
3664
3611
  field: "sk",
@@ -3667,104 +3614,179 @@ exports.MessageFlag = {
3667
3614
  }
3668
3615
  },
3669
3616
  model: {
3670
- entity: "messageFlag",
3617
+ entity: "accountSetting",
3671
3618
  service: "remit",
3672
3619
  version: "1"
3673
3620
  }
3674
3621
  };
3675
- exports.MessagePlacementMove = {
3622
+ exports.MailboxAttributeEntry = {
3676
3623
  attributes: {
3677
- messageId: {
3624
+ mailboxAttributeId: {
3678
3625
  type: "string",
3679
3626
  required: true,
3680
3627
  validate: value => {
3681
3628
  if (typeof value === "string" && value.length < 25)
3682
- throw new Error("'messageId' must be at least 25 characters");
3629
+ throw new Error("'mailboxAttributeId' must be at least 25 characters");
3683
3630
  if (typeof value === "string" && value.length > 25)
3684
- throw new Error("'messageId' must be at most 25 characters");
3631
+ throw new Error("'mailboxAttributeId' must be at most 25 characters");
3685
3632
  return true;
3686
3633
  }
3687
3634
  },
3688
- accountId: {
3635
+ mailboxId: {
3689
3636
  type: "string",
3690
3637
  required: true,
3691
3638
  validate: value => {
3692
3639
  if (typeof value === "string" && value.length < 25)
3693
- throw new Error("'accountId' must be at least 25 characters");
3640
+ throw new Error("'mailboxId' must be at least 25 characters");
3694
3641
  if (typeof value === "string" && value.length > 25)
3695
- throw new Error("'accountId' must be at most 25 characters");
3642
+ throw new Error("'mailboxId' must be at most 25 characters");
3696
3643
  return true;
3697
3644
  }
3698
3645
  },
3699
- accountConfigId: {
3646
+ attributeName: {
3647
+ type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3648
+ required: true
3649
+ }
3650
+ },
3651
+ indexes: {
3652
+ byMailboxId: {
3653
+ pk: {
3654
+ field: "gsi1pk",
3655
+ composite: ["mailboxId"]
3656
+ },
3657
+ sk: {
3658
+ field: "gsi1sk",
3659
+ composite: ["mailboxAttributeId"]
3660
+ },
3661
+ index: "gsi1",
3662
+ collection: "mailbox"
3663
+ },
3664
+ MailboxAttributeEntry: {
3665
+ pk: {
3666
+ field: "pk",
3667
+ composite: ["mailboxAttributeId"]
3668
+ },
3669
+ sk: {
3670
+ field: "sk",
3671
+ composite: []
3672
+ }
3673
+ }
3674
+ },
3675
+ model: {
3676
+ entity: "mailboxAttributeEntry",
3677
+ service: "remit",
3678
+ version: "1"
3679
+ }
3680
+ };
3681
+ exports.MailboxSpecialUseEntry = {
3682
+ attributes: {
3683
+ mailboxSpecialUseId: {
3700
3684
  type: "string",
3701
3685
  required: true,
3702
3686
  validate: value => {
3703
3687
  if (typeof value === "string" && value.length < 25)
3704
- throw new Error("'accountConfigId' must be at least 25 characters");
3688
+ throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3705
3689
  if (typeof value === "string" && value.length > 25)
3706
- throw new Error("'accountConfigId' must be at most 25 characters");
3690
+ throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3707
3691
  return true;
3708
3692
  }
3709
3693
  },
3710
- sourceMailboxId: {
3694
+ mailboxId: {
3711
3695
  type: "string",
3712
3696
  required: true,
3713
3697
  validate: value => {
3714
3698
  if (typeof value === "string" && value.length < 25)
3715
- throw new Error("'sourceMailboxId' must be at least 25 characters");
3699
+ throw new Error("'mailboxId' must be at least 25 characters");
3716
3700
  if (typeof value === "string" && value.length > 25)
3717
- throw new Error("'sourceMailboxId' must be at most 25 characters");
3701
+ throw new Error("'mailboxId' must be at most 25 characters");
3718
3702
  return true;
3719
3703
  }
3720
3704
  },
3721
- destinationMailboxId: {
3705
+ specialUse: {
3706
+ type: ["All", "Archive", "Drafts", "Flagged", "Junk", "Sent", "Trash", "Important"],
3707
+ required: true
3708
+ }
3709
+ },
3710
+ indexes: {
3711
+ byMailboxId: {
3712
+ pk: {
3713
+ field: "gsi1pk",
3714
+ composite: ["mailboxId"]
3715
+ },
3716
+ sk: {
3717
+ field: "gsi1sk",
3718
+ composite: ["mailboxSpecialUseId"]
3719
+ },
3720
+ index: "gsi1",
3721
+ collection: "mailbox"
3722
+ },
3723
+ MailboxSpecialUseEntry: {
3724
+ pk: {
3725
+ field: "pk",
3726
+ composite: ["mailboxSpecialUseId"]
3727
+ },
3728
+ sk: {
3729
+ field: "sk",
3730
+ composite: []
3731
+ }
3732
+ }
3733
+ },
3734
+ model: {
3735
+ entity: "mailboxSpecialUseEntry",
3736
+ service: "remit",
3737
+ version: "1"
3738
+ }
3739
+ };
3740
+ exports.MailboxFlag = {
3741
+ attributes: {
3742
+ mailboxFlagId: {
3722
3743
  type: "string",
3723
3744
  required: true,
3724
3745
  validate: value => {
3725
3746
  if (typeof value === "string" && value.length < 25)
3726
- throw new Error("'destinationMailboxId' must be at least 25 characters");
3747
+ throw new Error("'mailboxFlagId' must be at least 25 characters");
3727
3748
  if (typeof value === "string" && value.length > 25)
3728
- throw new Error("'destinationMailboxId' must be at most 25 characters");
3749
+ throw new Error("'mailboxFlagId' must be at most 25 characters");
3729
3750
  return true;
3730
3751
  }
3731
3752
  },
3732
- state: {
3733
- type: ["pending", "queued", "processing", "processed"],
3753
+ mailboxId: {
3754
+ type: "string",
3734
3755
  required: true,
3735
- default: "pending"
3756
+ validate: value => {
3757
+ if (typeof value === "string" && value.length < 25)
3758
+ throw new Error("'mailboxId' must be at least 25 characters");
3759
+ if (typeof value === "string" && value.length > 25)
3760
+ throw new Error("'mailboxId' must be at most 25 characters");
3761
+ return true;
3762
+ }
3736
3763
  },
3737
- createdAt: {
3738
- type: "number",
3739
- readOnly: true,
3740
- required: true,
3741
- default: () => Date.now(),
3742
- set: () => Date.now()
3764
+ flagName: {
3765
+ type: (0, electrodb_1.CustomAttributeType)("any"),
3766
+ required: true
3743
3767
  },
3744
- updatedAt: {
3745
- type: "number",
3746
- watch: "*",
3747
- required: true,
3748
- default: () => Date.now(),
3749
- set: () => Date.now()
3768
+ isPermanent: {
3769
+ type: "boolean",
3770
+ required: true
3750
3771
  }
3751
3772
  },
3752
3773
  indexes: {
3753
- byAccountId: {
3774
+ byMailboxId: {
3754
3775
  pk: {
3755
- field: "gsi0pk",
3756
- composite: ["accountId"]
3776
+ field: "gsi1pk",
3777
+ composite: ["mailboxId"]
3757
3778
  },
3758
3779
  sk: {
3759
- field: "gsi0sk",
3760
- composite: ["messageId"]
3780
+ field: "gsi1sk",
3781
+ composite: ["mailboxFlagId"]
3761
3782
  },
3762
- index: "gsi0"
3783
+ index: "gsi1",
3784
+ collection: "mailbox"
3763
3785
  },
3764
- MessagePlacementMove: {
3786
+ MailboxFlag: {
3765
3787
  pk: {
3766
3788
  field: "pk",
3767
- composite: ["messageId"]
3789
+ composite: ["mailboxFlagId"]
3768
3790
  },
3769
3791
  sk: {
3770
3792
  field: "sk",
@@ -3773,25 +3795,25 @@ exports.MessagePlacementMove = {
3773
3795
  }
3774
3796
  },
3775
3797
  model: {
3776
- entity: "messagePlacementMove",
3798
+ entity: "mailboxFlag",
3777
3799
  service: "remit",
3778
3800
  version: "1"
3779
3801
  }
3780
3802
  };
3781
- exports.MessageFlagPush = {
3803
+ exports.MailboxLock = {
3782
3804
  attributes: {
3783
- messageId: {
3805
+ mailboxId: {
3784
3806
  type: "string",
3785
3807
  required: true,
3786
3808
  validate: value => {
3787
3809
  if (typeof value === "string" && value.length < 25)
3788
- throw new Error("'messageId' must be at least 25 characters");
3810
+ throw new Error("'mailboxId' must be at least 25 characters");
3789
3811
  if (typeof value === "string" && value.length > 25)
3790
- throw new Error("'messageId' must be at most 25 characters");
3812
+ throw new Error("'mailboxId' must be at most 25 characters");
3791
3813
  return true;
3792
3814
  }
3793
3815
  },
3794
- flagName: {
3816
+ eventName: {
3795
3817
  type: "string",
3796
3818
  required: true
3797
3819
  },
@@ -3806,102 +3828,91 @@ exports.MessageFlagPush = {
3806
3828
  return true;
3807
3829
  }
3808
3830
  },
3809
- accountConfigId: {
3831
+ lockId: {
3810
3832
  type: "string",
3811
3833
  required: true,
3812
3834
  validate: value => {
3813
3835
  if (typeof value === "string" && value.length < 25)
3814
- throw new Error("'accountConfigId' must be at least 25 characters");
3836
+ throw new Error("'lockId' must be at least 25 characters");
3815
3837
  if (typeof value === "string" && value.length > 25)
3816
- throw new Error("'accountConfigId' must be at most 25 characters");
3838
+ throw new Error("'lockId' must be at most 25 characters");
3817
3839
  return true;
3818
3840
  }
3819
3841
  },
3820
- mailboxId: {
3821
- type: "string",
3842
+ acquiredAt: {
3843
+ type: "number",
3822
3844
  required: true,
3823
3845
  validate: value => {
3824
- if (typeof value === "string" && value.length < 25)
3825
- throw new Error("'mailboxId' must be at least 25 characters");
3826
- if (typeof value === "string" && value.length > 25)
3827
- throw new Error("'mailboxId' must be at most 25 characters");
3846
+ if (typeof value === "number" && !Number.isInteger(value))
3847
+ throw new Error("'acquiredAt' must be an integer");
3828
3848
  return true;
3829
3849
  }
3830
3850
  },
3831
- operation: {
3832
- type: ["add", "remove"],
3851
+ lockedBy: {
3852
+ type: "string",
3833
3853
  required: true
3834
3854
  },
3835
- state: {
3836
- type: ["pending", "queued", "processing", "processed"],
3837
- required: true,
3838
- default: "pending"
3839
- },
3840
- createdAt: {
3841
- type: "number",
3842
- readOnly: true,
3843
- required: true,
3844
- default: () => Date.now(),
3845
- set: () => Date.now()
3846
- },
3847
- updatedAt: {
3855
+ ttl: {
3848
3856
  type: "number",
3849
- watch: "*",
3850
3857
  required: true,
3851
- default: () => Date.now(),
3852
- set: () => Date.now()
3858
+ validate: value => {
3859
+ if (typeof value === "number" && !Number.isInteger(value))
3860
+ throw new Error("'ttl' must be an integer");
3861
+ return true;
3862
+ }
3853
3863
  }
3854
3864
  },
3855
3865
  indexes: {
3856
- byMailboxId: {
3866
+ allLocks: {
3857
3867
  pk: {
3858
- field: "gsi1pk",
3859
- composite: ["mailboxId"]
3868
+ field: "gsi2pk",
3869
+ composite: []
3860
3870
  },
3861
3871
  sk: {
3862
- field: "gsi1sk",
3863
- composite: ["messageId", "flagName"]
3872
+ field: "gsi2sk",
3873
+ composite: ["acquiredAt"]
3864
3874
  },
3865
- index: "gsi1"
3875
+ index: "gsi2",
3876
+ collection: "locks"
3866
3877
  },
3867
3878
  byAccountId: {
3868
3879
  pk: {
3869
- field: "gsi0pk",
3880
+ field: "gsi1pk",
3870
3881
  composite: ["accountId"]
3871
3882
  },
3872
3883
  sk: {
3873
- field: "gsi0sk",
3874
- composite: ["messageId", "flagName"]
3884
+ field: "gsi1sk",
3885
+ composite: ["mailboxId", "eventName"]
3875
3886
  },
3876
- index: "gsi0"
3887
+ index: "gsi1"
3877
3888
  },
3878
- MessageFlagPush: {
3889
+ MailboxLock: {
3879
3890
  pk: {
3880
3891
  field: "pk",
3881
- composite: ["messageId"]
3892
+ composite: ["mailboxId"]
3882
3893
  },
3883
3894
  sk: {
3884
3895
  field: "sk",
3885
- composite: ["flagName"]
3896
+ composite: ["eventName"]
3886
3897
  }
3887
3898
  }
3888
3899
  },
3889
3900
  model: {
3890
- entity: "messageFlagPush",
3901
+ entity: "mailboxLock",
3891
3902
  service: "remit",
3892
3903
  version: "1"
3893
3904
  }
3894
3905
  };
3895
- exports.Envelope = {
3906
+ exports.MessageFlag = {
3896
3907
  attributes: {
3897
- envelopeId: {
3908
+ messageFlagId: {
3898
3909
  type: "string",
3899
3910
  required: true,
3900
3911
  validate: value => {
3901
3912
  if (typeof value === "string" && value.length < 25)
3902
- throw new Error("'envelopeId' must be at least 25 characters");
3913
+ throw new Error("'messageFlagId' must be at least 25 characters");
3903
3914
  if (typeof value === "string" && value.length > 25)
3904
- throw new Error("'envelopeId' must be at most 25 characters");
3915
+ throw new Error("'messageFlagId' must be at most 25 characters");
3905
3916
  return true;
3906
3917
  }
3907
3918
  },
@@ -3916,27 +3927,19 @@ exports.Envelope = {
3916
3927
  return true;
3917
3928
  }
3918
3929
  },
3919
- dateValue: {
3930
+ flagName: {
3931
+ type: (0, electrodb_1.CustomAttributeType)("any"),
3932
+ required: true
3933
+ },
3934
+ setAt: {
3920
3935
  type: "number",
3921
3936
  required: true,
3922
3937
  validate: value => {
3923
3938
  if (typeof value === "number" && !Number.isInteger(value))
3924
- throw new Error("'dateValue' must be an integer");
3939
+ throw new Error("'setAt' must be an integer");
3925
3940
  return true;
3926
3941
  }
3927
3942
  },
3928
- dateRaw: {
3929
- type: "string",
3930
- required: true
3931
- },
3932
- subject: {
3933
- type: "string",
3934
- required: false
3935
- },
3936
- messageIdValue: {
3937
- type: "string",
3938
- required: false
3939
- },
3940
3943
  createdAt: {
3941
3944
  type: "number",
3942
3945
  readOnly: true,
@@ -3960,15 +3963,15 @@ exports.Envelope = {
3960
3963
  },
3961
3964
  sk: {
3962
3965
  field: "gsi2sk",
3963
- composite: ["envelopeId"]
3966
+ composite: ["messageFlagId"]
3964
3967
  },
3965
3968
  index: "gsi2",
3966
3969
  collection: "messageData"
3967
3970
  },
3968
- Envelope: {
3971
+ MessageFlag: {
3969
3972
  pk: {
3970
3973
  field: "pk",
3971
- composite: ["envelopeId"]
3974
+ composite: ["messageFlagId"]
3972
3975
  },
3973
3976
  sk: {
3974
3977
  field: "sk",
@@ -3977,79 +3980,72 @@ exports.Envelope = {
3977
3980
  }
3978
3981
  },
3979
3982
  model: {
3980
- entity: "envelope",
3983
+ entity: "messageFlag",
3981
3984
  service: "remit",
3982
3985
  version: "1"
3983
3986
  }
3984
3987
  };
3985
- exports.SenderSignerStanding = {
3988
+ exports.MessagePlacementMove = {
3986
3989
  attributes: {
3987
- accountConfigId: {
3990
+ messageId: {
3988
3991
  type: "string",
3989
3992
  required: true,
3990
3993
  validate: value => {
3991
3994
  if (typeof value === "string" && value.length < 25)
3992
- throw new Error("'accountConfigId' must be at least 25 characters");
3995
+ throw new Error("'messageId' must be at least 25 characters");
3993
3996
  if (typeof value === "string" && value.length > 25)
3994
- throw new Error("'accountConfigId' must be at most 25 characters");
3997
+ throw new Error("'messageId' must be at most 25 characters");
3995
3998
  return true;
3996
3999
  }
3997
4000
  },
3998
- senderKey: {
4001
+ accountId: {
3999
4002
  type: "string",
4000
4003
  required: true,
4001
4004
  validate: value => {
4002
- if (typeof value === "string" && value.length > 256)
4003
- throw new Error("'senderKey' must be at most 256 characters");
4005
+ if (typeof value === "string" && value.length < 25)
4006
+ throw new Error("'accountId' must be at least 25 characters");
4007
+ if (typeof value === "string" && value.length > 25)
4008
+ throw new Error("'accountId' must be at most 25 characters");
4004
4009
  return true;
4005
4010
  }
4006
4011
  },
4007
- signerDomain: {
4012
+ accountConfigId: {
4008
4013
  type: "string",
4009
4014
  required: true,
4010
4015
  validate: value => {
4011
- if (typeof value === "string" && value.length > 256)
4012
- throw new Error("'signerDomain' must be at most 256 characters");
4013
- return true;
4014
- }
4015
- },
4016
- messageCount: {
4017
- type: "number",
4018
- required: true,
4019
- default: 0,
4020
- validate: value => {
4021
- if (typeof value === "number" && !Number.isInteger(value))
4022
- throw new Error("'messageCount' must be an integer");
4016
+ if (typeof value === "string" && value.length < 25)
4017
+ throw new Error("'accountConfigId' must be at least 25 characters");
4018
+ if (typeof value === "string" && value.length > 25)
4019
+ throw new Error("'accountConfigId' must be at most 25 characters");
4023
4020
  return true;
4024
4021
  }
4025
4022
  },
4026
- firstSeenAt: {
4027
- type: "number",
4023
+ sourceMailboxId: {
4024
+ type: "string",
4028
4025
  required: true,
4029
4026
  validate: value => {
4030
- if (typeof value === "number" && !Number.isInteger(value))
4031
- throw new Error("'firstSeenAt' must be an integer");
4027
+ if (typeof value === "string" && value.length < 25)
4028
+ throw new Error("'sourceMailboxId' must be at least 25 characters");
4029
+ if (typeof value === "string" && value.length > 25)
4030
+ throw new Error("'sourceMailboxId' must be at most 25 characters");
4032
4031
  return true;
4033
4032
  }
4034
4033
  },
4035
- lastSeenAt: {
4036
- type: "number",
4034
+ destinationMailboxId: {
4035
+ type: "string",
4037
4036
  required: true,
4038
4037
  validate: value => {
4039
- if (typeof value === "number" && !Number.isInteger(value))
4040
- throw new Error("'lastSeenAt' must be an integer");
4038
+ if (typeof value === "string" && value.length < 25)
4039
+ throw new Error("'destinationMailboxId' must be at least 25 characters");
4040
+ if (typeof value === "string" && value.length > 25)
4041
+ throw new Error("'destinationMailboxId' must be at most 25 characters");
4041
4042
  return true;
4042
4043
  }
4043
4044
  },
4044
- userAffirmedAt: {
4045
- type: "number",
4045
+ state: {
4046
+ type: ["pending", "queued", "processing", "processed"],
4046
4047
  required: true,
4047
- default: 0,
4048
- validate: value => {
4049
- if (typeof value === "number" && !Number.isInteger(value))
4050
- throw new Error("'userAffirmedAt' must be an integer");
4051
- return true;
4052
- }
4048
+ default: "pending"
4053
4049
  },
4054
4050
  createdAt: {
4055
4051
  type: "number",
@@ -4067,71 +4063,93 @@ exports.SenderSignerStanding = {
4067
4063
  }
4068
4064
  },
4069
4065
  indexes: {
4070
- SenderSignerStanding: {
4066
+ byAccountId: {
4067
+ pk: {
4068
+ field: "gsi0pk",
4069
+ composite: ["accountId"]
4070
+ },
4071
+ sk: {
4072
+ field: "gsi0sk",
4073
+ composite: ["messageId"]
4074
+ },
4075
+ index: "gsi0"
4076
+ },
4077
+ MessagePlacementMove: {
4071
4078
  pk: {
4072
4079
  field: "pk",
4073
- composite: ["accountConfigId"]
4080
+ composite: ["messageId"]
4074
4081
  },
4075
4082
  sk: {
4076
4083
  field: "sk",
4077
- composite: ["senderKey", "signerDomain"]
4084
+ composite: []
4078
4085
  }
4079
4086
  }
4080
4087
  },
4081
4088
  model: {
4082
- entity: "senderSignerStanding",
4089
+ entity: "messagePlacementMove",
4083
4090
  service: "remit",
4084
4091
  version: "1"
4085
4092
  }
4086
4093
  };
4087
- exports.BodyPartParameter = {
4094
+ exports.MessageFlagPush = {
4088
4095
  attributes: {
4089
- bodyPartParameterId: {
4096
+ messageId: {
4090
4097
  type: "string",
4091
4098
  required: true,
4092
4099
  validate: value => {
4093
4100
  if (typeof value === "string" && value.length < 25)
4094
- throw new Error("'bodyPartParameterId' must be at least 25 characters");
4101
+ throw new Error("'messageId' must be at least 25 characters");
4095
4102
  if (typeof value === "string" && value.length > 25)
4096
- throw new Error("'bodyPartParameterId' must be at most 25 characters");
4103
+ throw new Error("'messageId' must be at most 25 characters");
4097
4104
  return true;
4098
4105
  }
4099
4106
  },
4100
- messageId: {
4107
+ flagName: {
4108
+ type: "string",
4109
+ required: true
4110
+ },
4111
+ accountId: {
4101
4112
  type: "string",
4102
4113
  required: true,
4103
4114
  validate: value => {
4104
4115
  if (typeof value === "string" && value.length < 25)
4105
- throw new Error("'messageId' must be at least 25 characters");
4116
+ throw new Error("'accountId' must be at least 25 characters");
4106
4117
  if (typeof value === "string" && value.length > 25)
4107
- throw new Error("'messageId' must be at most 25 characters");
4118
+ throw new Error("'accountId' must be at most 25 characters");
4108
4119
  return true;
4109
4120
  }
4110
4121
  },
4111
- bodyPartId: {
4122
+ accountConfigId: {
4112
4123
  type: "string",
4113
4124
  required: true,
4114
4125
  validate: value => {
4115
4126
  if (typeof value === "string" && value.length < 25)
4116
- throw new Error("'bodyPartId' must be at least 25 characters");
4127
+ throw new Error("'accountConfigId' must be at least 25 characters");
4117
4128
  if (typeof value === "string" && value.length > 25)
4118
- throw new Error("'bodyPartId' must be at most 25 characters");
4129
+ throw new Error("'accountConfigId' must be at most 25 characters");
4119
4130
  return true;
4120
4131
  }
4121
4132
  },
4122
- parameterName: {
4133
+ mailboxId: {
4123
4134
  type: "string",
4124
4135
  required: true,
4125
4136
  validate: value => {
4126
- if (typeof value === "string" && value.length < 1)
4127
- throw new Error("'parameterName' must be at least 1 characters");
4137
+ if (typeof value === "string" && value.length < 25)
4138
+ throw new Error("'mailboxId' must be at least 25 characters");
4139
+ if (typeof value === "string" && value.length > 25)
4140
+ throw new Error("'mailboxId' must be at most 25 characters");
4128
4141
  return true;
4129
4142
  }
4130
4143
  },
4131
- parameterValue: {
4132
- type: "string",
4144
+ operation: {
4145
+ type: ["add", "remove"],
4133
4146
  required: true
4134
4147
  },
4148
+ state: {
4149
+ type: ["pending", "queued", "processing", "processed"],
4150
+ required: true,
4151
+ default: "pending"
4152
+ },
4135
4153
  createdAt: {
4136
4154
  type: "number",
4137
4155
  readOnly: true,
@@ -4148,114 +4166,89 @@ exports.BodyPartParameter = {
4148
4166
  }
4149
4167
  },
4150
4168
  indexes: {
4151
- byMessageId: {
4169
+ byMailboxId: {
4152
4170
  pk: {
4153
- field: "gsi2pk",
4154
- composite: ["messageId"]
4171
+ field: "gsi1pk",
4172
+ composite: ["mailboxId"]
4155
4173
  },
4156
4174
  sk: {
4157
- field: "gsi2sk",
4158
- composite: ["bodyPartParameterId"]
4175
+ field: "gsi1sk",
4176
+ composite: ["messageId", "flagName"]
4159
4177
  },
4160
- index: "gsi2",
4161
- collection: "messageData"
4178
+ index: "gsi1"
4162
4179
  },
4163
- BodyPartParameter: {
4180
+ byAccountId: {
4181
+ pk: {
4182
+ field: "gsi0pk",
4183
+ composite: ["accountId"]
4184
+ },
4185
+ sk: {
4186
+ field: "gsi0sk",
4187
+ composite: ["messageId", "flagName"]
4188
+ },
4189
+ index: "gsi0"
4190
+ },
4191
+ MessageFlagPush: {
4164
4192
  pk: {
4165
4193
  field: "pk",
4166
- composite: ["bodyPartParameterId"]
4194
+ composite: ["messageId"]
4167
4195
  },
4168
4196
  sk: {
4169
4197
  field: "sk",
4170
- composite: []
4198
+ composite: ["flagName"]
4171
4199
  }
4172
4200
  }
4173
4201
  },
4174
4202
  model: {
4175
- entity: "bodyPartParameter",
4203
+ entity: "messageFlagPush",
4176
4204
  service: "remit",
4177
4205
  version: "1"
4178
4206
  }
4179
4207
  };
4180
- exports.RawMessageStorage = {
4208
+ exports.Envelope = {
4181
4209
  attributes: {
4182
- rawStorageId: {
4183
- type: "string",
4184
- required: true,
4185
- validate: value => {
4186
- if (typeof value === "string" && value.length < 25)
4187
- throw new Error("'rawStorageId' must be at least 25 characters");
4188
- if (typeof value === "string" && value.length > 25)
4189
- throw new Error("'rawStorageId' must be at most 25 characters");
4190
- return true;
4191
- }
4192
- },
4193
- messageId: {
4194
- type: "string",
4195
- required: true,
4196
- validate: value => {
4197
- if (typeof value === "string" && value.length < 25)
4198
- throw new Error("'messageId' must be at least 25 characters");
4199
- if (typeof value === "string" && value.length > 25)
4200
- throw new Error("'messageId' must be at most 25 characters");
4201
- return true;
4202
- }
4203
- },
4204
- storageType: {
4205
- type: ["s3", "filesystem", "inline", "database"],
4206
- required: true
4207
- },
4208
- storageLocation: {
4209
- type: "string",
4210
- required: true
4211
- },
4212
- storageKey: {
4210
+ envelopeId: {
4213
4211
  type: "string",
4214
- required: true
4215
- },
4216
- sizeBytes: {
4217
- type: "number",
4218
4212
  required: true,
4219
4213
  validate: value => {
4220
- if (typeof value === "number" && value < 0)
4221
- throw new Error("'sizeBytes' must be at least 0");
4222
- if (typeof value === "number" && !Number.isInteger(value))
4223
- throw new Error("'sizeBytes' must be an integer");
4214
+ if (typeof value === "string" && value.length < 25)
4215
+ throw new Error("'envelopeId' must be at least 25 characters");
4216
+ if (typeof value === "string" && value.length > 25)
4217
+ throw new Error("'envelopeId' must be at most 25 characters");
4224
4218
  return true;
4225
4219
  }
4226
4220
  },
4227
- checksumSha256: {
4221
+ messageId: {
4228
4222
  type: "string",
4229
4223
  required: true,
4230
4224
  validate: value => {
4231
- if (typeof value === "string" && value.length < 64)
4232
- throw new Error("'checksumSha256' must be at least 64 characters");
4233
- if (typeof value === "string" && value.length > 64)
4234
- throw new Error("'checksumSha256' must be at most 64 characters");
4225
+ if (typeof value === "string" && value.length < 25)
4226
+ throw new Error("'messageId' must be at least 25 characters");
4227
+ if (typeof value === "string" && value.length > 25)
4228
+ throw new Error("'messageId' must be at most 25 characters");
4235
4229
  return true;
4236
4230
  }
4237
4231
  },
4238
- contentEncoding: {
4239
- type: ["none", "gzip", "zstd"],
4240
- required: true
4241
- },
4242
- storedAt: {
4232
+ dateValue: {
4243
4233
  type: "number",
4244
4234
  required: true,
4245
4235
  validate: value => {
4246
4236
  if (typeof value === "number" && !Number.isInteger(value))
4247
- throw new Error("'storedAt' must be an integer");
4237
+ throw new Error("'dateValue' must be an integer");
4248
4238
  return true;
4249
4239
  }
4250
4240
  },
4251
- expiresAt: {
4252
- type: "number",
4253
- required: false,
4254
- validate: value => {
4255
- if (typeof value === "number" && !Number.isInteger(value))
4256
- throw new Error("'expiresAt' must be an integer");
4257
- return true;
4258
- }
4241
+ dateRaw: {
4242
+ type: "string",
4243
+ required: true
4244
+ },
4245
+ subject: {
4246
+ type: "string",
4247
+ required: false
4248
+ },
4249
+ messageIdValue: {
4250
+ type: "string",
4251
+ required: false
4259
4252
  },
4260
4253
  createdAt: {
4261
4254
  type: "number",
@@ -4280,15 +4273,15 @@ exports.RawMessageStorage = {
4280
4273
  },
4281
4274
  sk: {
4282
4275
  field: "gsi2sk",
4283
- composite: ["rawStorageId"]
4276
+ composite: ["envelopeId"]
4284
4277
  },
4285
4278
  index: "gsi2",
4286
4279
  collection: "messageData"
4287
4280
  },
4288
- RawMessageStorage: {
4281
+ Envelope: {
4289
4282
  pk: {
4290
4283
  field: "pk",
4291
- composite: ["rawStorageId"]
4284
+ composite: ["envelopeId"]
4292
4285
  },
4293
4286
  sk: {
4294
4287
  field: "sk",
@@ -4297,98 +4290,77 @@ exports.RawMessageStorage = {
4297
4290
  }
4298
4291
  },
4299
4292
  model: {
4300
- entity: "rawMessageStorage",
4293
+ entity: "envelope",
4301
4294
  service: "remit",
4302
4295
  version: "1"
4303
4296
  }
4304
4297
  };
4305
- exports.BodyPartStorage = {
4298
+ exports.SenderSignerStanding = {
4306
4299
  attributes: {
4307
- bodyPartStorageId: {
4300
+ accountConfigId: {
4308
4301
  type: "string",
4309
4302
  required: true,
4310
4303
  validate: value => {
4311
4304
  if (typeof value === "string" && value.length < 25)
4312
- throw new Error("'bodyPartStorageId' must be at least 25 characters");
4305
+ throw new Error("'accountConfigId' must be at least 25 characters");
4313
4306
  if (typeof value === "string" && value.length > 25)
4314
- throw new Error("'bodyPartStorageId' must be at most 25 characters");
4307
+ throw new Error("'accountConfigId' must be at most 25 characters");
4315
4308
  return true;
4316
4309
  }
4317
4310
  },
4318
- messageId: {
4311
+ senderKey: {
4319
4312
  type: "string",
4320
4313
  required: true,
4321
4314
  validate: value => {
4322
- if (typeof value === "string" && value.length < 25)
4323
- throw new Error("'messageId' must be at least 25 characters");
4324
- if (typeof value === "string" && value.length > 25)
4325
- throw new Error("'messageId' must be at most 25 characters");
4315
+ if (typeof value === "string" && value.length > 256)
4316
+ throw new Error("'senderKey' must be at most 256 characters");
4326
4317
  return true;
4327
4318
  }
4328
4319
  },
4329
- bodyPartId: {
4320
+ signerDomain: {
4330
4321
  type: "string",
4331
4322
  required: true,
4332
4323
  validate: value => {
4333
- if (typeof value === "string" && value.length < 25)
4334
- throw new Error("'bodyPartId' must be at least 25 characters");
4335
- if (typeof value === "string" && value.length > 25)
4336
- throw new Error("'bodyPartId' must be at most 25 characters");
4324
+ if (typeof value === "string" && value.length > 256)
4325
+ throw new Error("'signerDomain' must be at most 256 characters");
4337
4326
  return true;
4338
4327
  }
4339
4328
  },
4340
- storageType: {
4341
- type: ["s3", "filesystem", "inline", "database"],
4342
- required: true
4343
- },
4344
- storageLocation: {
4345
- type: "string",
4346
- required: true
4347
- },
4348
- storageKey: {
4349
- type: "string",
4350
- required: true
4351
- },
4352
- decodedSizeBytes: {
4329
+ messageCount: {
4353
4330
  type: "number",
4354
4331
  required: true,
4332
+ default: 0,
4355
4333
  validate: value => {
4356
- if (typeof value === "number" && value < 0)
4357
- throw new Error("'decodedSizeBytes' must be at least 0");
4358
4334
  if (typeof value === "number" && !Number.isInteger(value))
4359
- throw new Error("'decodedSizeBytes' must be an integer");
4335
+ throw new Error("'messageCount' must be an integer");
4360
4336
  return true;
4361
4337
  }
4362
4338
  },
4363
- checksumSha256: {
4364
- type: "string",
4339
+ firstSeenAt: {
4340
+ type: "number",
4365
4341
  required: true,
4366
4342
  validate: value => {
4367
- if (typeof value === "string" && value.length < 64)
4368
- throw new Error("'checksumSha256' must be at least 64 characters");
4369
- if (typeof value === "string" && value.length > 64)
4370
- throw new Error("'checksumSha256' must be at most 64 characters");
4343
+ if (typeof value === "number" && !Number.isInteger(value))
4344
+ throw new Error("'firstSeenAt' must be an integer");
4371
4345
  return true;
4372
4346
  }
4373
4347
  },
4374
- contentEncoding: {
4375
- type: ["none", "gzip", "zstd"],
4376
- required: true
4377
- },
4378
- isDeduped: {
4379
- type: "boolean",
4380
- required: true
4381
- },
4382
- dedupHash: {
4383
- type: "string",
4384
- required: false
4348
+ lastSeenAt: {
4349
+ type: "number",
4350
+ required: true,
4351
+ validate: value => {
4352
+ if (typeof value === "number" && !Number.isInteger(value))
4353
+ throw new Error("'lastSeenAt' must be an integer");
4354
+ return true;
4355
+ }
4385
4356
  },
4386
- storedAt: {
4357
+ userAffirmedAt: {
4387
4358
  type: "number",
4388
4359
  required: true,
4360
+ default: 0,
4389
4361
  validate: value => {
4390
4362
  if (typeof value === "number" && !Number.isInteger(value))
4391
- throw new Error("'storedAt' must be an integer");
4363
+ throw new Error("'userAffirmedAt' must be an integer");
4392
4364
  return true;
4393
4365
  }
4394
4366
  },
@@ -4408,45 +4380,33 @@ exports.BodyPartStorage = {
4408
4380
  }
4409
4381
  },
4410
4382
  indexes: {
4411
- byMessageId: {
4412
- pk: {
4413
- field: "gsi2pk",
4414
- composite: ["messageId"]
4415
- },
4416
- sk: {
4417
- field: "gsi2sk",
4418
- composite: ["bodyPartStorageId"]
4419
- },
4420
- index: "gsi2",
4421
- collection: "messageData"
4422
- },
4423
- BodyPartStorage: {
4383
+ SenderSignerStanding: {
4424
4384
  pk: {
4425
4385
  field: "pk",
4426
- composite: ["bodyPartStorageId"]
4386
+ composite: ["accountConfigId"]
4427
4387
  },
4428
4388
  sk: {
4429
4389
  field: "sk",
4430
- composite: []
4390
+ composite: ["senderKey", "signerDomain"]
4431
4391
  }
4432
4392
  }
4433
4393
  },
4434
4394
  model: {
4435
- entity: "bodyPartStorage",
4395
+ entity: "senderSignerStanding",
4436
4396
  service: "remit",
4437
4397
  version: "1"
4438
4398
  }
4439
4399
  };
4440
- exports.BodyPartContent = {
4400
+ exports.BodyPartParameter = {
4441
4401
  attributes: {
4442
- bodyPartContentId: {
4402
+ bodyPartParameterId: {
4443
4403
  type: "string",
4444
4404
  required: true,
4445
4405
  validate: value => {
4446
4406
  if (typeof value === "string" && value.length < 25)
4447
- throw new Error("'bodyPartContentId' must be at least 25 characters");
4407
+ throw new Error("'bodyPartParameterId' must be at least 25 characters");
4448
4408
  if (typeof value === "string" && value.length > 25)
4449
- throw new Error("'bodyPartContentId' must be at most 25 characters");
4409
+ throw new Error("'bodyPartParameterId' must be at most 25 characters");
4450
4410
  return true;
4451
4411
  }
4452
4412
  },
@@ -4472,21 +4432,19 @@ exports.BodyPartContent = {
4472
4432
  return true;
4473
4433
  }
4474
4434
  },
4475
- content: {
4435
+ parameterName: {
4476
4436
  type: "string",
4477
- required: true
4478
- },
4479
- contentLength: {
4480
- type: "number",
4481
4437
  required: true,
4482
4438
  validate: value => {
4483
- if (typeof value === "number" && value < 0)
4484
- throw new Error("'contentLength' must be at least 0");
4485
- if (typeof value === "number" && !Number.isInteger(value))
4486
- throw new Error("'contentLength' must be an integer");
4439
+ if (typeof value === "string" && value.length < 1)
4440
+ throw new Error("'parameterName' must be at least 1 characters");
4487
4441
  return true;
4488
4442
  }
4489
4443
  },
4444
+ parameterValue: {
4445
+ type: "string",
4446
+ required: true
4447
+ },
4490
4448
  createdAt: {
4491
4449
  type: "number",
4492
4450
  readOnly: true,
@@ -4510,15 +4468,15 @@ exports.BodyPartContent = {
4510
4468
  },
4511
4469
  sk: {
4512
4470
  field: "gsi2sk",
4513
- composite: ["bodyPartContentId"]
4471
+ composite: ["bodyPartParameterId"]
4514
4472
  },
4515
4473
  index: "gsi2",
4516
4474
  collection: "messageData"
4517
4475
  },
4518
- BodyPartContent: {
4476
+ BodyPartParameter: {
4519
4477
  pk: {
4520
4478
  field: "pk",
4521
- composite: ["bodyPartContentId"]
4479
+ composite: ["bodyPartParameterId"]
4522
4480
  },
4523
4481
  sk: {
4524
4482
  field: "sk",
@@ -4527,85 +4485,88 @@ exports.BodyPartContent = {
4527
4485
  }
4528
4486
  },
4529
4487
  model: {
4530
- entity: "bodyPartContent",
4488
+ entity: "bodyPartParameter",
4531
4489
  service: "remit",
4532
4490
  version: "1"
4533
4491
  }
4534
4492
  };
4535
- exports.CalendarCollection = {
4493
+ exports.RawMessageStorage = {
4536
4494
  attributes: {
4537
- calendarId: {
4495
+ rawStorageId: {
4538
4496
  type: "string",
4539
4497
  required: true,
4540
4498
  validate: value => {
4541
4499
  if (typeof value === "string" && value.length < 25)
4542
- throw new Error("'calendarId' must be at least 25 characters");
4500
+ throw new Error("'rawStorageId' must be at least 25 characters");
4543
4501
  if (typeof value === "string" && value.length > 25)
4544
- throw new Error("'calendarId' must be at most 25 characters");
4502
+ throw new Error("'rawStorageId' must be at most 25 characters");
4545
4503
  return true;
4546
4504
  }
4547
4505
  },
4548
- accountConfigId: {
4506
+ messageId: {
4549
4507
  type: "string",
4550
4508
  required: true,
4551
4509
  validate: value => {
4552
4510
  if (typeof value === "string" && value.length < 25)
4553
- throw new Error("'accountConfigId' must be at least 25 characters");
4511
+ throw new Error("'messageId' must be at least 25 characters");
4554
4512
  if (typeof value === "string" && value.length > 25)
4555
- throw new Error("'accountConfigId' must be at most 25 characters");
4513
+ throw new Error("'messageId' must be at most 25 characters");
4556
4514
  return true;
4557
4515
  }
4558
4516
  },
4559
- urlSegment: {
4517
+ storageType: {
4518
+ type: ["s3", "filesystem", "inline", "database"],
4519
+ required: true
4520
+ },
4521
+ storageLocation: {
4522
+ type: "string",
4523
+ required: true
4524
+ },
4525
+ storageKey: {
4560
4526
  type: "string",
4527
+ required: true
4528
+ },
4529
+ sizeBytes: {
4530
+ type: "number",
4561
4531
  required: true,
4562
4532
  validate: value => {
4563
- if (typeof value === "string" && value.length > 64)
4564
- throw new Error("'urlSegment' must be at most 64 characters");
4533
+ if (typeof value === "number" && value < 0)
4534
+ throw new Error("'sizeBytes' must be at least 0");
4535
+ if (typeof value === "number" && !Number.isInteger(value))
4536
+ throw new Error("'sizeBytes' must be an integer");
4565
4537
  return true;
4566
4538
  }
4567
4539
  },
4568
- displayName: {
4540
+ checksumSha256: {
4569
4541
  type: "string",
4570
4542
  required: true,
4571
4543
  validate: value => {
4572
- if (typeof value === "string" && value.length > 140)
4573
- throw new Error("'displayName' must be at most 140 characters");
4544
+ if (typeof value === "string" && value.length < 64)
4545
+ throw new Error("'checksumSha256' must be at least 64 characters");
4546
+ if (typeof value === "string" && value.length > 64)
4547
+ throw new Error("'checksumSha256' must be at most 64 characters");
4574
4548
  return true;
4575
4549
  }
4576
4550
  },
4577
- color: {
4578
- type: ["Cal1", "Cal2", "Cal3", "Cal4", "Cal5", "Cal6"],
4579
- required: true,
4580
- default: "Cal1"
4581
- },
4582
- componentSet: {
4583
- type: ["VeventOnly"],
4584
- required: true,
4585
- default: "VeventOnly"
4586
- },
4587
- source: {
4588
- type: ["Default", "UserCreated", "MailDerived"],
4589
- required: true,
4590
- default: "UserCreated"
4551
+ contentEncoding: {
4552
+ type: ["none", "gzip", "zstd"],
4553
+ required: true
4591
4554
  },
4592
- timezone: {
4593
- type: "string",
4555
+ storedAt: {
4556
+ type: "number",
4594
4557
  required: true,
4595
- default: "",
4596
4558
  validate: value => {
4597
- if (typeof value === "string" && value.length > 64)
4598
- throw new Error("'timezone' must be at most 64 characters");
4559
+ if (typeof value === "number" && !Number.isInteger(value))
4560
+ throw new Error("'storedAt' must be an integer");
4599
4561
  return true;
4600
4562
  }
4601
4563
  },
4602
- syncSequence: {
4564
+ expiresAt: {
4603
4565
  type: "number",
4604
- required: true,
4605
- default: 0,
4566
+ required: false,
4606
4567
  validate: value => {
4607
4568
  if (typeof value === "number" && !Number.isInteger(value))
4608
- throw new Error("'syncSequence' must be an integer");
4569
+ throw new Error("'expiresAt' must be an integer");
4609
4570
  return true;
4610
4571
  }
4611
4572
  },
@@ -4625,168 +4586,217 @@ exports.CalendarCollection = {
4625
4586
  }
4626
4587
  },
4627
4588
  indexes: {
4628
- byUrlSegment: {
4589
+ byMessageId: {
4629
4590
  pk: {
4630
- field: "gsi0pk",
4631
- composite: ["accountConfigId"]
4591
+ field: "gsi2pk",
4592
+ composite: ["messageId"]
4632
4593
  },
4633
4594
  sk: {
4634
- field: "gsi0sk",
4635
- composite: ["urlSegment"]
4595
+ field: "gsi2sk",
4596
+ composite: ["rawStorageId"]
4636
4597
  },
4637
- index: "gsi0"
4598
+ index: "gsi2",
4599
+ collection: "messageData"
4638
4600
  },
4639
- Calendar: {
4601
+ RawMessageStorage: {
4640
4602
  pk: {
4641
4603
  field: "pk",
4642
- composite: ["accountConfigId"]
4604
+ composite: ["rawStorageId"]
4643
4605
  },
4644
4606
  sk: {
4645
4607
  field: "sk",
4646
- composite: ["calendarId"]
4608
+ composite: []
4647
4609
  }
4648
4610
  }
4649
4611
  },
4650
4612
  model: {
4651
- entity: "calendar",
4613
+ entity: "rawMessageStorage",
4652
4614
  service: "remit",
4653
4615
  version: "1"
4654
4616
  }
4655
4617
  };
4656
- exports.CalendarObject = {
4618
+ exports.BodyPartStorage = {
4657
4619
  attributes: {
4658
- calendarObjectId: {
4620
+ bodyPartStorageId: {
4659
4621
  type: "string",
4660
4622
  required: true,
4661
4623
  validate: value => {
4662
4624
  if (typeof value === "string" && value.length < 25)
4663
- throw new Error("'calendarObjectId' must be at least 25 characters");
4625
+ throw new Error("'bodyPartStorageId' must be at least 25 characters");
4664
4626
  if (typeof value === "string" && value.length > 25)
4665
- throw new Error("'calendarObjectId' must be at most 25 characters");
4627
+ throw new Error("'bodyPartStorageId' must be at most 25 characters");
4666
4628
  return true;
4667
4629
  }
4668
4630
  },
4669
- calendarId: {
4631
+ messageId: {
4670
4632
  type: "string",
4671
4633
  required: true,
4672
4634
  validate: value => {
4673
4635
  if (typeof value === "string" && value.length < 25)
4674
- throw new Error("'calendarId' must be at least 25 characters");
4636
+ throw new Error("'messageId' must be at least 25 characters");
4675
4637
  if (typeof value === "string" && value.length > 25)
4676
- throw new Error("'calendarId' must be at most 25 characters");
4638
+ throw new Error("'messageId' must be at most 25 characters");
4677
4639
  return true;
4678
4640
  }
4679
4641
  },
4680
- resourceName: {
4642
+ bodyPartId: {
4681
4643
  type: "string",
4682
4644
  required: true,
4683
4645
  validate: value => {
4684
- if (typeof value === "string" && value.length > 256)
4685
- throw new Error("'resourceName' must be at most 256 characters");
4646
+ if (typeof value === "string" && value.length < 25)
4647
+ throw new Error("'bodyPartId' must be at least 25 characters");
4648
+ if (typeof value === "string" && value.length > 25)
4649
+ throw new Error("'bodyPartId' must be at most 25 characters");
4686
4650
  return true;
4687
4651
  }
4688
4652
  },
4689
- icalUid: {
4653
+ storageType: {
4654
+ type: ["s3", "filesystem", "inline", "database"],
4655
+ required: true
4656
+ },
4657
+ storageLocation: {
4658
+ type: "string",
4659
+ required: true
4660
+ },
4661
+ storageKey: {
4690
4662
  type: "string",
4663
+ required: true
4664
+ },
4665
+ decodedSizeBytes: {
4666
+ type: "number",
4691
4667
  required: true,
4692
4668
  validate: value => {
4693
- if (typeof value === "string" && value.length > 512)
4694
- throw new Error("'icalUid' must be at most 512 characters");
4669
+ if (typeof value === "number" && value < 0)
4670
+ throw new Error("'decodedSizeBytes' must be at least 0");
4671
+ if (typeof value === "number" && !Number.isInteger(value))
4672
+ throw new Error("'decodedSizeBytes' must be an integer");
4695
4673
  return true;
4696
4674
  }
4697
4675
  },
4698
- icalData: {
4699
- type: "string",
4700
- required: true
4701
- },
4702
- etag: {
4676
+ checksumSha256: {
4703
4677
  type: "string",
4704
4678
  required: true,
4705
4679
  validate: value => {
4680
+ if (typeof value === "string" && value.length < 64)
4681
+ throw new Error("'checksumSha256' must be at least 64 characters");
4706
4682
  if (typeof value === "string" && value.length > 64)
4707
- throw new Error("'etag' must be at most 64 characters");
4683
+ throw new Error("'checksumSha256' must be at most 64 characters");
4708
4684
  return true;
4709
4685
  }
4710
4686
  },
4711
- sequence: {
4687
+ contentEncoding: {
4688
+ type: ["none", "gzip", "zstd"],
4689
+ required: true
4690
+ },
4691
+ isDeduped: {
4692
+ type: "boolean",
4693
+ required: true
4694
+ },
4695
+ dedupHash: {
4696
+ type: "string",
4697
+ required: false
4698
+ },
4699
+ storedAt: {
4712
4700
  type: "number",
4713
4701
  required: true,
4714
- default: 0,
4715
4702
  validate: value => {
4716
4703
  if (typeof value === "number" && !Number.isInteger(value))
4717
- throw new Error("'sequence' must be an integer");
4704
+ throw new Error("'storedAt' must be an integer");
4718
4705
  return true;
4719
4706
  }
4720
4707
  },
4721
- syncSequence: {
4708
+ createdAt: {
4722
4709
  type: "number",
4710
+ readOnly: true,
4723
4711
  required: true,
4724
- default: 0,
4725
- validate: value => {
4726
- if (typeof value === "number" && !Number.isInteger(value))
4727
- throw new Error("'syncSequence' must be an integer");
4728
- return true;
4729
- }
4712
+ default: () => Date.now(),
4713
+ set: () => Date.now()
4730
4714
  },
4731
- summary: {
4715
+ updatedAt: {
4716
+ type: "number",
4717
+ watch: "*",
4718
+ required: true,
4719
+ default: () => Date.now(),
4720
+ set: () => Date.now()
4721
+ }
4722
+ },
4723
+ indexes: {
4724
+ byMessageId: {
4725
+ pk: {
4726
+ field: "gsi2pk",
4727
+ composite: ["messageId"]
4728
+ },
4729
+ sk: {
4730
+ field: "gsi2sk",
4731
+ composite: ["bodyPartStorageId"]
4732
+ },
4733
+ index: "gsi2",
4734
+ collection: "messageData"
4735
+ },
4736
+ BodyPartStorage: {
4737
+ pk: {
4738
+ field: "pk",
4739
+ composite: ["bodyPartStorageId"]
4740
+ },
4741
+ sk: {
4742
+ field: "sk",
4743
+ composite: []
4744
+ }
4745
+ }
4746
+ },
4747
+ model: {
4748
+ entity: "bodyPartStorage",
4749
+ service: "remit",
4750
+ version: "1"
4751
+ }
4752
+ };
4753
+ exports.BodyPartContent = {
4754
+ attributes: {
4755
+ bodyPartContentId: {
4732
4756
  type: "string",
4733
4757
  required: true,
4734
4758
  validate: value => {
4735
- if (typeof value === "string" && value.length > 512)
4736
- throw new Error("'summary' must be at most 512 characters");
4759
+ if (typeof value === "string" && value.length < 25)
4760
+ throw new Error("'bodyPartContentId' must be at least 25 characters");
4761
+ if (typeof value === "string" && value.length > 25)
4762
+ throw new Error("'bodyPartContentId' must be at most 25 characters");
4737
4763
  return true;
4738
4764
  }
4739
4765
  },
4740
- dtStart: {
4766
+ messageId: {
4741
4767
  type: "string",
4742
4768
  required: true,
4743
4769
  validate: value => {
4744
- if (typeof value === "string" && value.length > 64)
4745
- throw new Error("'dtStart' must be at most 64 characters");
4770
+ if (typeof value === "string" && value.length < 25)
4771
+ throw new Error("'messageId' must be at least 25 characters");
4772
+ if (typeof value === "string" && value.length > 25)
4773
+ throw new Error("'messageId' must be at most 25 characters");
4746
4774
  return true;
4747
4775
  }
4748
4776
  },
4749
- dtEnd: {
4777
+ bodyPartId: {
4750
4778
  type: "string",
4751
4779
  required: true,
4752
4780
  validate: value => {
4753
- if (typeof value === "string" && value.length > 64)
4754
- throw new Error("'dtEnd' must be at most 64 characters");
4781
+ if (typeof value === "string" && value.length < 25)
4782
+ throw new Error("'bodyPartId' must be at least 25 characters");
4783
+ if (typeof value === "string" && value.length > 25)
4784
+ throw new Error("'bodyPartId' must be at most 25 characters");
4755
4785
  return true;
4756
4786
  }
4757
4787
  },
4758
- allDay: {
4759
- type: "boolean",
4760
- required: true,
4761
- default: false
4762
- },
4763
- zoneCertainty: {
4764
- type: ["Local", "Explicit", "Ambiguous"],
4765
- required: true,
4766
- default: "Explicit"
4767
- },
4768
- status: {
4769
- type: ["Confirmed", "Tentative", "Cancelled"],
4770
- required: true,
4771
- default: "Confirmed"
4772
- },
4773
- transparency: {
4774
- type: ["Opaque", "Transparent"],
4775
- required: true,
4776
- default: "Opaque"
4777
- },
4778
- hasRecurrence: {
4779
- type: "boolean",
4780
- required: true,
4781
- default: false
4782
- },
4783
- expandedThrough: {
4788
+ content: {
4784
4789
  type: "string",
4790
+ required: true
4791
+ },
4792
+ contentLength: {
4793
+ type: "number",
4785
4794
  required: true,
4786
- default: "",
4787
4795
  validate: value => {
4788
- if (typeof value === "string" && value.length > 64)
4789
- throw new Error("'expandedThrough' must be at most 64 characters");
4796
+ if (typeof value === "number" && value < 0)
4797
+ throw new Error("'contentLength' must be at least 0");
4798
+ if (typeof value === "number" && !Number.isInteger(value))
4799
+ throw new Error("'contentLength' must be an integer");
4790
4800
  return true;
4791
4801
  }
4792
4802
  },
@@ -4806,41 +4816,31 @@ exports.CalendarObject = {
4806
4816
  }
4807
4817
  },
4808
4818
  indexes: {
4809
- bySyncSequence: {
4810
- pk: {
4811
- field: "gsi1pk",
4812
- composite: ["calendarId"]
4813
- },
4814
- sk: {
4815
- field: "gsi1sk",
4816
- composite: ["syncSequence"]
4817
- },
4818
- index: "gsi1"
4819
- },
4820
- byUid: {
4819
+ byMessageId: {
4821
4820
  pk: {
4822
- field: "gsi0pk",
4823
- composite: ["calendarId"]
4821
+ field: "gsi2pk",
4822
+ composite: ["messageId"]
4824
4823
  },
4825
4824
  sk: {
4826
- field: "gsi0sk",
4827
- composite: ["icalUid"]
4825
+ field: "gsi2sk",
4826
+ composite: ["bodyPartContentId"]
4828
4827
  },
4829
- index: "gsi0"
4828
+ index: "gsi2",
4829
+ collection: "messageData"
4830
4830
  },
4831
- CalendarObject: {
4831
+ BodyPartContent: {
4832
4832
  pk: {
4833
4833
  field: "pk",
4834
- composite: ["calendarId"]
4834
+ composite: ["bodyPartContentId"]
4835
4835
  },
4836
4836
  sk: {
4837
4837
  field: "sk",
4838
- composite: ["calendarObjectId"]
4838
+ composite: []
4839
4839
  }
4840
4840
  }
4841
4841
  },
4842
4842
  model: {
4843
- entity: "calendarObject",
4843
+ entity: "bodyPartContent",
4844
4844
  service: "remit",
4845
4845
  version: "1"
4846
4846
  }
@@ -4901,6 +4901,26 @@ exports.CalendarEventIndex = {
4901
4901
  required: true,
4902
4902
  default: false
4903
4903
  },
4904
+ summary: {
4905
+ type: "string",
4906
+ required: true,
4907
+ default: "",
4908
+ validate: value => {
4909
+ if (typeof value === "string" && value.length > 512)
4910
+ throw new Error("'summary' must be at most 512 characters");
4911
+ return true;
4912
+ }
4913
+ },
4914
+ status: {
4915
+ type: ["Confirmed", "Tentative", "Cancelled"],
4916
+ required: true,
4917
+ default: "Confirmed"
4918
+ },
4919
+ transparency: {
4920
+ type: ["Opaque", "Transparent"],
4921
+ required: true,
4922
+ default: "Opaque"
4923
+ },
4904
4924
  createdAt: {
4905
4925
  type: "number",
4906
4926
  readOnly: true,