@marlinjai/mail-contract 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +324 -69
- package/dist/index.d.ts +324 -69
- package/dist/index.js +314 -6
- package/dist/index.mjs +310 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -144,6 +144,7 @@ __export(index_exports, {
|
|
|
144
144
|
DOCUMENT_SCHEMA_VERSIONS: () => DOCUMENT_SCHEMA_VERSIONS,
|
|
145
145
|
DOMAIN_BUYING_BLOCKS: () => DOMAIN_BUYING_BLOCKS,
|
|
146
146
|
DOMAIN_BUYING_NOT_CONFIGURED_REASON: () => DOMAIN_BUYING_NOT_CONFIGURED_REASON,
|
|
147
|
+
DOMAIN_ORDER_KINDS: () => DOMAIN_ORDER_KINDS,
|
|
147
148
|
DOMAIN_ORDER_STATES: () => DOMAIN_ORDER_STATES,
|
|
148
149
|
DOMAIN_PRICE_CHANGED_REASON: () => DOMAIN_PRICE_CHANGED_REASON,
|
|
149
150
|
DOMAIN_UNAVAILABLE_REASONS: () => DOMAIN_UNAVAILABLE_REASONS,
|
|
@@ -155,6 +156,7 @@ __export(index_exports, {
|
|
|
155
156
|
DomainOffer: () => DomainOffer,
|
|
156
157
|
DomainOrder: () => DomainOrder,
|
|
157
158
|
DomainOrderCreate: () => DomainOrderCreate,
|
|
159
|
+
DomainOrderKind: () => DomainOrderKind,
|
|
158
160
|
DomainOrderState: () => DomainOrderState,
|
|
159
161
|
DomainRegistrant: () => DomainRegistrant,
|
|
160
162
|
DomainSearchQuery: () => DomainSearchQuery,
|
|
@@ -368,6 +370,7 @@ __export(index_exports, {
|
|
|
368
370
|
QuietHours: () => QuietHours,
|
|
369
371
|
RECIPIENT_REJECTIONS: () => RECIPIENT_REJECTIONS,
|
|
370
372
|
RECIPIENT_STATUSES: () => RECIPIENT_STATUSES,
|
|
373
|
+
REGISTRY_PHONE: () => REGISTRY_PHONE,
|
|
371
374
|
REQUEST_ID_HEADER: () => REQUEST_ID_HEADER,
|
|
372
375
|
RESEND_EVENT_TYPES: () => RESEND_EVENT_TYPES,
|
|
373
376
|
RESERVED_MERGE_FIELDS: () => RESERVED_MERGE_FIELDS,
|
|
@@ -605,6 +608,7 @@ __export(index_exports, {
|
|
|
605
608
|
missingInsertionTexts: () => missingInsertionTexts,
|
|
606
609
|
missingRequiredMergeFields: () => missingRequiredMergeFields,
|
|
607
610
|
normalizeChoiceKey: () => normalizeChoiceKey,
|
|
611
|
+
normalizePhone: () => normalizePhone,
|
|
608
612
|
nowSeconds: () => nowSeconds,
|
|
609
613
|
operationsWithAccess: () => operationsWithAccess,
|
|
610
614
|
ownEntry: () => ownEntry,
|
|
@@ -3721,6 +3725,7 @@ var AUDIT_ACTIONS = [
|
|
|
3721
3725
|
"domain_order.registered",
|
|
3722
3726
|
"domain_order.ready",
|
|
3723
3727
|
"domain_order.needs_attention",
|
|
3728
|
+
"domain_order.kind_changed",
|
|
3724
3729
|
"domain_order.refunded",
|
|
3725
3730
|
"domain_order.cancelled",
|
|
3726
3731
|
// A1: automations
|
|
@@ -4648,6 +4653,292 @@ var SendingDomainUpdate = import_zod15.z.object({ from_name: SenderFields.from_n
|
|
|
4648
4653
|
|
|
4649
4654
|
// src/domains.ts
|
|
4650
4655
|
var import_zod16 = require("zod");
|
|
4656
|
+
|
|
4657
|
+
// src/phone.ts
|
|
4658
|
+
var REGISTRY_PHONE = /^\+\d{1,3}\.\d{4,14}$/;
|
|
4659
|
+
var CALLING_CODE_OF_COUNTRY = {
|
|
4660
|
+
DE: "49",
|
|
4661
|
+
AT: "43",
|
|
4662
|
+
CH: "41",
|
|
4663
|
+
LI: "423",
|
|
4664
|
+
LU: "352",
|
|
4665
|
+
NL: "31",
|
|
4666
|
+
BE: "32",
|
|
4667
|
+
FR: "33",
|
|
4668
|
+
IT: "39",
|
|
4669
|
+
ES: "34",
|
|
4670
|
+
PT: "351",
|
|
4671
|
+
IE: "353",
|
|
4672
|
+
GB: "44",
|
|
4673
|
+
DK: "45",
|
|
4674
|
+
SE: "46",
|
|
4675
|
+
NO: "47",
|
|
4676
|
+
FI: "358",
|
|
4677
|
+
IS: "354",
|
|
4678
|
+
PL: "48",
|
|
4679
|
+
CZ: "420",
|
|
4680
|
+
SK: "421",
|
|
4681
|
+
HU: "36",
|
|
4682
|
+
SI: "386",
|
|
4683
|
+
HR: "385",
|
|
4684
|
+
RO: "40",
|
|
4685
|
+
BG: "359",
|
|
4686
|
+
GR: "30",
|
|
4687
|
+
CY: "357",
|
|
4688
|
+
MT: "356",
|
|
4689
|
+
EE: "372",
|
|
4690
|
+
LV: "371",
|
|
4691
|
+
LT: "370",
|
|
4692
|
+
US: "1",
|
|
4693
|
+
CA: "1",
|
|
4694
|
+
AU: "61",
|
|
4695
|
+
NZ: "64",
|
|
4696
|
+
TR: "90",
|
|
4697
|
+
IL: "972",
|
|
4698
|
+
AE: "971",
|
|
4699
|
+
IN: "91",
|
|
4700
|
+
JP: "81",
|
|
4701
|
+
CN: "86",
|
|
4702
|
+
SG: "65",
|
|
4703
|
+
ZA: "27",
|
|
4704
|
+
BR: "55",
|
|
4705
|
+
MX: "52",
|
|
4706
|
+
UA: "380",
|
|
4707
|
+
RS: "381"
|
|
4708
|
+
};
|
|
4709
|
+
var CALLING_CODES = /* @__PURE__ */ new Set([
|
|
4710
|
+
"1",
|
|
4711
|
+
"7",
|
|
4712
|
+
"20",
|
|
4713
|
+
"27",
|
|
4714
|
+
"30",
|
|
4715
|
+
"31",
|
|
4716
|
+
"32",
|
|
4717
|
+
"33",
|
|
4718
|
+
"34",
|
|
4719
|
+
"36",
|
|
4720
|
+
"39",
|
|
4721
|
+
"40",
|
|
4722
|
+
"41",
|
|
4723
|
+
"43",
|
|
4724
|
+
"44",
|
|
4725
|
+
"45",
|
|
4726
|
+
"46",
|
|
4727
|
+
"47",
|
|
4728
|
+
"48",
|
|
4729
|
+
"49",
|
|
4730
|
+
"51",
|
|
4731
|
+
"52",
|
|
4732
|
+
"53",
|
|
4733
|
+
"54",
|
|
4734
|
+
"55",
|
|
4735
|
+
"56",
|
|
4736
|
+
"57",
|
|
4737
|
+
"58",
|
|
4738
|
+
"60",
|
|
4739
|
+
"61",
|
|
4740
|
+
"62",
|
|
4741
|
+
"63",
|
|
4742
|
+
"64",
|
|
4743
|
+
"65",
|
|
4744
|
+
"66",
|
|
4745
|
+
"81",
|
|
4746
|
+
"82",
|
|
4747
|
+
"84",
|
|
4748
|
+
"86",
|
|
4749
|
+
"90",
|
|
4750
|
+
"91",
|
|
4751
|
+
"92",
|
|
4752
|
+
"93",
|
|
4753
|
+
"94",
|
|
4754
|
+
"95",
|
|
4755
|
+
"98",
|
|
4756
|
+
"211",
|
|
4757
|
+
"212",
|
|
4758
|
+
"213",
|
|
4759
|
+
"216",
|
|
4760
|
+
"218",
|
|
4761
|
+
"220",
|
|
4762
|
+
"221",
|
|
4763
|
+
"222",
|
|
4764
|
+
"223",
|
|
4765
|
+
"224",
|
|
4766
|
+
"225",
|
|
4767
|
+
"226",
|
|
4768
|
+
"227",
|
|
4769
|
+
"228",
|
|
4770
|
+
"229",
|
|
4771
|
+
"230",
|
|
4772
|
+
"231",
|
|
4773
|
+
"232",
|
|
4774
|
+
"233",
|
|
4775
|
+
"234",
|
|
4776
|
+
"235",
|
|
4777
|
+
"236",
|
|
4778
|
+
"237",
|
|
4779
|
+
"238",
|
|
4780
|
+
"239",
|
|
4781
|
+
"240",
|
|
4782
|
+
"241",
|
|
4783
|
+
"242",
|
|
4784
|
+
"243",
|
|
4785
|
+
"244",
|
|
4786
|
+
"245",
|
|
4787
|
+
"246",
|
|
4788
|
+
"247",
|
|
4789
|
+
"248",
|
|
4790
|
+
"249",
|
|
4791
|
+
"250",
|
|
4792
|
+
"251",
|
|
4793
|
+
"252",
|
|
4794
|
+
"253",
|
|
4795
|
+
"254",
|
|
4796
|
+
"255",
|
|
4797
|
+
"256",
|
|
4798
|
+
"257",
|
|
4799
|
+
"258",
|
|
4800
|
+
"260",
|
|
4801
|
+
"261",
|
|
4802
|
+
"262",
|
|
4803
|
+
"263",
|
|
4804
|
+
"264",
|
|
4805
|
+
"265",
|
|
4806
|
+
"266",
|
|
4807
|
+
"267",
|
|
4808
|
+
"268",
|
|
4809
|
+
"269",
|
|
4810
|
+
"290",
|
|
4811
|
+
"291",
|
|
4812
|
+
"297",
|
|
4813
|
+
"298",
|
|
4814
|
+
"299",
|
|
4815
|
+
"350",
|
|
4816
|
+
"351",
|
|
4817
|
+
"352",
|
|
4818
|
+
"353",
|
|
4819
|
+
"354",
|
|
4820
|
+
"355",
|
|
4821
|
+
"356",
|
|
4822
|
+
"357",
|
|
4823
|
+
"358",
|
|
4824
|
+
"359",
|
|
4825
|
+
"370",
|
|
4826
|
+
"371",
|
|
4827
|
+
"372",
|
|
4828
|
+
"373",
|
|
4829
|
+
"374",
|
|
4830
|
+
"375",
|
|
4831
|
+
"376",
|
|
4832
|
+
"377",
|
|
4833
|
+
"378",
|
|
4834
|
+
"379",
|
|
4835
|
+
"380",
|
|
4836
|
+
"381",
|
|
4837
|
+
"382",
|
|
4838
|
+
"383",
|
|
4839
|
+
"385",
|
|
4840
|
+
"386",
|
|
4841
|
+
"387",
|
|
4842
|
+
"389",
|
|
4843
|
+
"420",
|
|
4844
|
+
"421",
|
|
4845
|
+
"423",
|
|
4846
|
+
"500",
|
|
4847
|
+
"501",
|
|
4848
|
+
"502",
|
|
4849
|
+
"503",
|
|
4850
|
+
"504",
|
|
4851
|
+
"505",
|
|
4852
|
+
"506",
|
|
4853
|
+
"507",
|
|
4854
|
+
"508",
|
|
4855
|
+
"509",
|
|
4856
|
+
"590",
|
|
4857
|
+
"591",
|
|
4858
|
+
"592",
|
|
4859
|
+
"593",
|
|
4860
|
+
"594",
|
|
4861
|
+
"595",
|
|
4862
|
+
"596",
|
|
4863
|
+
"597",
|
|
4864
|
+
"598",
|
|
4865
|
+
"599",
|
|
4866
|
+
"670",
|
|
4867
|
+
"672",
|
|
4868
|
+
"673",
|
|
4869
|
+
"674",
|
|
4870
|
+
"675",
|
|
4871
|
+
"676",
|
|
4872
|
+
"677",
|
|
4873
|
+
"678",
|
|
4874
|
+
"679",
|
|
4875
|
+
"680",
|
|
4876
|
+
"681",
|
|
4877
|
+
"682",
|
|
4878
|
+
"683",
|
|
4879
|
+
"685",
|
|
4880
|
+
"686",
|
|
4881
|
+
"687",
|
|
4882
|
+
"688",
|
|
4883
|
+
"689",
|
|
4884
|
+
"690",
|
|
4885
|
+
"691",
|
|
4886
|
+
"692",
|
|
4887
|
+
"850",
|
|
4888
|
+
"852",
|
|
4889
|
+
"853",
|
|
4890
|
+
"855",
|
|
4891
|
+
"856",
|
|
4892
|
+
"880",
|
|
4893
|
+
"886",
|
|
4894
|
+
"960",
|
|
4895
|
+
"961",
|
|
4896
|
+
"962",
|
|
4897
|
+
"963",
|
|
4898
|
+
"964",
|
|
4899
|
+
"965",
|
|
4900
|
+
"966",
|
|
4901
|
+
"967",
|
|
4902
|
+
"968",
|
|
4903
|
+
"970",
|
|
4904
|
+
"971",
|
|
4905
|
+
"972",
|
|
4906
|
+
"973",
|
|
4907
|
+
"974",
|
|
4908
|
+
"975",
|
|
4909
|
+
"976",
|
|
4910
|
+
"977",
|
|
4911
|
+
"992",
|
|
4912
|
+
"993",
|
|
4913
|
+
"994",
|
|
4914
|
+
"995",
|
|
4915
|
+
"996",
|
|
4916
|
+
"998"
|
|
4917
|
+
]);
|
|
4918
|
+
var KEEPS_LEADING_ZERO = /* @__PURE__ */ new Set(["39", "378", "379"]);
|
|
4919
|
+
function normalizePhone(raw, country) {
|
|
4920
|
+
const text = raw.trim();
|
|
4921
|
+
if (REGISTRY_PHONE.test(text)) return text;
|
|
4922
|
+
const compact = text.replace(/\(0\)/g, "").replace(/[\s\-./()]/g, "");
|
|
4923
|
+
let international;
|
|
4924
|
+
if (/^\+\d+$/.test(compact)) international = compact.slice(1);
|
|
4925
|
+
else if (/^00\d+$/.test(compact)) international = compact.slice(2);
|
|
4926
|
+
else if (/^0\d+$/.test(compact)) {
|
|
4927
|
+
const code = country ? CALLING_CODE_OF_COUNTRY[country.trim().toUpperCase()] : void 0;
|
|
4928
|
+
if (!code) return raw;
|
|
4929
|
+
return `+${code}.${KEEPS_LEADING_ZERO.has(code) ? compact : compact.slice(1)}`;
|
|
4930
|
+
} else return raw;
|
|
4931
|
+
for (const length of [1, 2, 3]) {
|
|
4932
|
+
const code = international.slice(0, length);
|
|
4933
|
+
if (CALLING_CODES.has(code)) {
|
|
4934
|
+
const rest = international.slice(length);
|
|
4935
|
+
return `+${code}.${KEEPS_LEADING_ZERO.has(code) ? rest : rest.replace(/^0/, "")}`;
|
|
4936
|
+
}
|
|
4937
|
+
}
|
|
4938
|
+
return raw;
|
|
4939
|
+
}
|
|
4940
|
+
|
|
4941
|
+
// src/domains.ts
|
|
4651
4942
|
var DomainSearchQuery = import_zod16.z.object({ q: import_zod16.z.string().trim().min(1).max(63) });
|
|
4652
4943
|
var DOMAIN_UNAVAILABLE_REASONS = ["taken", "extension_not_supported", "premium", "not_registrable"];
|
|
4653
4944
|
var DomainUnavailableReason = import_zod16.z.enum(DOMAIN_UNAVAILABLE_REASONS);
|
|
@@ -4669,20 +4960,27 @@ var DomainRegistrant = import_zod16.z.object({
|
|
|
4669
4960
|
name: import_zod16.z.string().trim().min(3).max(120).regex(/\S+\s+\S+/, "must be a first and a last name"),
|
|
4670
4961
|
organization: import_zod16.z.string().trim().min(1).max(120).nullable().optional(),
|
|
4671
4962
|
email: Email,
|
|
4672
|
-
phone: import_zod16.z.string().trim().
|
|
4963
|
+
phone: import_zod16.z.string().trim().min(1).max(40),
|
|
4673
4964
|
street: import_zod16.z.string().trim().min(3).max(200),
|
|
4674
4965
|
city: import_zod16.z.string().trim().min(1).max(100),
|
|
4675
4966
|
state: import_zod16.z.string().trim().min(1).max(100),
|
|
4676
4967
|
postal_code: import_zod16.z.string().trim().min(2).max(20),
|
|
4677
4968
|
country_code: import_zod16.z.string().trim().toUpperCase().regex(/^[A-Z]{2}$/, "must be a two-letter country code such as DE")
|
|
4678
|
-
})
|
|
4969
|
+
}).superRefine((holder, ctx) => {
|
|
4970
|
+
if (typeof holder.phone === "string" && !REGISTRY_PHONE.test(normalizePhone(holder.phone, holder.country_code))) {
|
|
4971
|
+
ctx.addIssue({ code: import_zod16.z.ZodIssueCode.custom, path: ["phone"], message: "must be a phone number with its country code, such as +49 30 1234 5678" });
|
|
4972
|
+
}
|
|
4973
|
+
}).transform((holder) => ({ ...holder, phone: normalizePhone(holder.phone, holder.country_code) }));
|
|
4679
4974
|
var MAX_DOMAIN_ORDERS_PER_DAY = 2;
|
|
4975
|
+
var DOMAIN_ORDER_KINDS = ["sending", "domain_only"];
|
|
4976
|
+
var DomainOrderKind = import_zod16.z.enum(DOMAIN_ORDER_KINDS);
|
|
4680
4977
|
var DomainOrderCreate = import_zod16.z.object({
|
|
4681
4978
|
domain: SendingDomainName,
|
|
4682
4979
|
price_cents: import_zod16.z.number().int().min(0),
|
|
4683
4980
|
registrant: DomainRegistrant,
|
|
4684
|
-
|
|
4685
|
-
|
|
4981
|
+
kind: DomainOrderKind.default("sending"),
|
|
4982
|
+
from_name: import_zod16.z.string().trim().min(1).max(120).optional(),
|
|
4983
|
+
from_local_part: import_zod16.z.string().trim().toLowerCase().regex(/^[a-z0-9](?:[a-z0-9._+-]{0,62}[a-z0-9])?$/, "must be the part before the @, such as hello").optional(),
|
|
4686
4984
|
/**
|
|
4687
4985
|
* Where Stripe returns to after paying, and after leaving the payment. The
|
|
4688
4986
|
* service adds `domain_order=<order id>` to both, so the page coming back
|
|
@@ -4693,6 +4991,10 @@ var DomainOrderCreate = import_zod16.z.object({
|
|
|
4693
4991
|
cancel_url: import_zod16.z.string().url(),
|
|
4694
4992
|
/** The buyer accepted the terms of service (which cover bought domains) of this version. */
|
|
4695
4993
|
accept_terms: AcceptTerms
|
|
4994
|
+
}).superRefine((order, ctx) => {
|
|
4995
|
+
if (order.kind !== "sending") return;
|
|
4996
|
+
if (!order.from_name) ctx.addIssue({ code: import_zod16.z.ZodIssueCode.custom, path: ["from_name"], message: "is needed for a domain mail is sent from" });
|
|
4997
|
+
if (!order.from_local_part) ctx.addIssue({ code: import_zod16.z.ZodIssueCode.custom, path: ["from_local_part"], message: "is needed for a domain mail is sent from" });
|
|
4696
4998
|
});
|
|
4697
4999
|
var DOMAIN_ORDER_STATES = [
|
|
4698
5000
|
"awaiting_payment",
|
|
@@ -4715,8 +5017,10 @@ var DomainOrder = import_zod16.z.object({
|
|
|
4715
5017
|
/** Stripe's payment page while `awaiting_payment`; null otherwise. */
|
|
4716
5018
|
checkout_url: import_zod16.z.string().url().nullable(),
|
|
4717
5019
|
registrant_name: import_zod16.z.string(),
|
|
4718
|
-
|
|
4719
|
-
|
|
5020
|
+
kind: DomainOrderKind,
|
|
5021
|
+
/** The sender, for a `sending` order; null for `domain_only`. */
|
|
5022
|
+
from_name: import_zod16.z.string().nullable(),
|
|
5023
|
+
from_email: Email.nullable(),
|
|
4720
5024
|
/** The sending domain once `ready`. */
|
|
4721
5025
|
sending_domain_id: Id.nullable(),
|
|
4722
5026
|
/** When the paid year ends, once registered. */
|
|
@@ -7005,6 +7309,7 @@ function matchRoute(method, pathname) {
|
|
|
7005
7309
|
DOCUMENT_SCHEMA_VERSIONS,
|
|
7006
7310
|
DOMAIN_BUYING_BLOCKS,
|
|
7007
7311
|
DOMAIN_BUYING_NOT_CONFIGURED_REASON,
|
|
7312
|
+
DOMAIN_ORDER_KINDS,
|
|
7008
7313
|
DOMAIN_ORDER_STATES,
|
|
7009
7314
|
DOMAIN_PRICE_CHANGED_REASON,
|
|
7010
7315
|
DOMAIN_UNAVAILABLE_REASONS,
|
|
@@ -7016,6 +7321,7 @@ function matchRoute(method, pathname) {
|
|
|
7016
7321
|
DomainOffer,
|
|
7017
7322
|
DomainOrder,
|
|
7018
7323
|
DomainOrderCreate,
|
|
7324
|
+
DomainOrderKind,
|
|
7019
7325
|
DomainOrderState,
|
|
7020
7326
|
DomainRegistrant,
|
|
7021
7327
|
DomainSearchQuery,
|
|
@@ -7229,6 +7535,7 @@ function matchRoute(method, pathname) {
|
|
|
7229
7535
|
QuietHours,
|
|
7230
7536
|
RECIPIENT_REJECTIONS,
|
|
7231
7537
|
RECIPIENT_STATUSES,
|
|
7538
|
+
REGISTRY_PHONE,
|
|
7232
7539
|
REQUEST_ID_HEADER,
|
|
7233
7540
|
RESEND_EVENT_TYPES,
|
|
7234
7541
|
RESERVED_MERGE_FIELDS,
|
|
@@ -7466,6 +7773,7 @@ function matchRoute(method, pathname) {
|
|
|
7466
7773
|
missingInsertionTexts,
|
|
7467
7774
|
missingRequiredMergeFields,
|
|
7468
7775
|
normalizeChoiceKey,
|
|
7776
|
+
normalizePhone,
|
|
7469
7777
|
nowSeconds,
|
|
7470
7778
|
operationsWithAccess,
|
|
7471
7779
|
ownEntry,
|