@aranova/tracking-react 1.0.0 → 1.2.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/client.d.mts +9 -3
- package/dist/client.d.ts +9 -3
- package/dist/client.js +549 -197
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +549 -197
- package/dist/client.mjs.map +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +217 -141
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +217 -141
- package/dist/index.mjs.map +1 -1
- package/dist/{ingest-typed-BdKmlouW.d.ts → ingest-typed-MBuMe9Pn.d.ts} +94 -2
- package/dist/{ingest-typed-Bo7WPmpU.d.mts → ingest-typed-UA13xTfI.d.mts} +94 -2
- package/dist/{phone-utils-CubQif9Z.d.mts → phone-utils-C0ds6cqZ.d.mts} +6 -0
- package/dist/{phone-utils-CubQif9Z.d.ts → phone-utils-C0ds6cqZ.d.ts} +6 -0
- package/dist/phone.d.mts +1 -1
- package/dist/phone.d.ts +1 -1
- package/dist/{sales-C7Xjsq-a.d.mts → sales-BuKD_bdo.d.mts} +1 -1
- package/dist/{sales-Bhh9mLBA.d.ts → sales-C3O_xxZ_.d.ts} +1 -1
- package/dist/sales.d.mts +2 -2
- package/dist/sales.d.ts +2 -2
- package/dist/sales.js +17 -1
- package/dist/sales.js.map +1 -1
- package/dist/sales.mjs +17 -1
- package/dist/sales.mjs.map +1 -1
- package/dist/{tracking-config-runtime-D7prdTE1.d.mts → tracking-config-runtime-C6H7ofmo.d.mts} +6 -0
- package/dist/{tracking-config-runtime-D7prdTE1.d.ts → tracking-config-runtime-C6H7ofmo.d.ts} +6 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -226,6 +226,7 @@ var TRACKING_CAPABILITIES = [
|
|
|
226
226
|
"consent_controls",
|
|
227
227
|
"conversion_goals_auto",
|
|
228
228
|
"conversion_goals_manual",
|
|
229
|
+
"cross_site_linker",
|
|
229
230
|
"cta_click_capture",
|
|
230
231
|
"form_capture",
|
|
231
232
|
"phone_click_capture",
|
|
@@ -252,6 +253,9 @@ function readDomMarkers() {
|
|
|
252
253
|
return found;
|
|
253
254
|
}
|
|
254
255
|
|
|
256
|
+
// ../tracking-core/src/cross-site-link.ts
|
|
257
|
+
import * as z from "zod/mini";
|
|
258
|
+
|
|
255
259
|
// ../tracking-core/src/tracking.ts
|
|
256
260
|
var TRACKING_COOKIE_MAX_AGE_SECONDS = 7776e3;
|
|
257
261
|
var TRACKING_PARAM_KEYS = [
|
|
@@ -496,6 +500,43 @@ function buildLandingPayloadFields(sessionId, override) {
|
|
|
496
500
|
};
|
|
497
501
|
}
|
|
498
502
|
|
|
503
|
+
// ../tracking-core/src/cross-site-link.ts
|
|
504
|
+
var LINK_PARAM = "_arv";
|
|
505
|
+
var LINK_TOKEN_TTL_MS = 5 * 60 * 1e3;
|
|
506
|
+
var FUTURE_SKEW_MS = 60 * 1e3;
|
|
507
|
+
var CARRIED_KEYS = {
|
|
508
|
+
g: "gclid",
|
|
509
|
+
w: "wbraid",
|
|
510
|
+
gb: "gbraid",
|
|
511
|
+
f: "fbclid",
|
|
512
|
+
y: "ylpcid"
|
|
513
|
+
};
|
|
514
|
+
var CARRIED_ENTRIES = Object.entries(CARRIED_KEYS);
|
|
515
|
+
var identifier = z.string().check(z.minLength(1), z.maxLength(128));
|
|
516
|
+
var optionalIdentifier = z.optional(identifier);
|
|
517
|
+
var linkTokenSchema = z.object({
|
|
518
|
+
v: identifier,
|
|
519
|
+
s: identifier,
|
|
520
|
+
// Epoch ms in base36.
|
|
521
|
+
t: z.string().check(z.regex(/^[0-9a-z]{1,12}$/)),
|
|
522
|
+
g: optionalIdentifier,
|
|
523
|
+
w: optionalIdentifier,
|
|
524
|
+
gb: optionalIdentifier,
|
|
525
|
+
f: optionalIdentifier,
|
|
526
|
+
fc: optionalIdentifier,
|
|
527
|
+
y: optionalIdentifier
|
|
528
|
+
});
|
|
529
|
+
function stripLinkParam(url) {
|
|
530
|
+
try {
|
|
531
|
+
const parsed = new URL(url, typeof window === "undefined" ? void 0 : window.location.href);
|
|
532
|
+
if (!parsed.searchParams.has(LINK_PARAM)) return url;
|
|
533
|
+
parsed.searchParams.delete(LINK_PARAM);
|
|
534
|
+
return parsed.href;
|
|
535
|
+
} catch {
|
|
536
|
+
return url;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
499
540
|
// ../tracking-core/src/payloads.ts
|
|
500
541
|
function createTrackingClientContext(surface, input = {}) {
|
|
501
542
|
return {
|
|
@@ -535,6 +576,7 @@ function createTrackingSessionUpsertPayload(trackingParams, input, context) {
|
|
|
535
576
|
};
|
|
536
577
|
}
|
|
537
578
|
function createTrackingEventCreatePayload(trackingParams, input, context) {
|
|
579
|
+
const pageUrl = input.pageUrl ?? (typeof window === "undefined" ? null : window.location.href);
|
|
538
580
|
return {
|
|
539
581
|
session_id: input.sessionId,
|
|
540
582
|
event_type: input.eventType,
|
|
@@ -545,7 +587,7 @@ function createTrackingEventCreatePayload(trackingParams, input, context) {
|
|
|
545
587
|
fbclid: trackingParams.fbclid,
|
|
546
588
|
fbc: getFbcCookie(),
|
|
547
589
|
fbp: getFbpCookie(),
|
|
548
|
-
page_url:
|
|
590
|
+
page_url: pageUrl === null ? null : stripLinkParam(pageUrl),
|
|
549
591
|
metadata: input.metadata ?? null,
|
|
550
592
|
context
|
|
551
593
|
};
|
|
@@ -657,7 +699,8 @@ function parseConversionConfig(raw) {
|
|
|
657
699
|
gtag_ids: isStringMap(obj.gtag_ids) ? obj.gtag_ids : {},
|
|
658
700
|
meta_pixel_ids: isStringMap(obj.meta_pixel_ids) ? obj.meta_pixel_ids : {},
|
|
659
701
|
services,
|
|
660
|
-
goals
|
|
702
|
+
goals,
|
|
703
|
+
linked_hostnames: Array.isArray(obj.linked_hostnames) ? obj.linked_hostnames.filter((h) => typeof h === "string" && h.length > 0) : []
|
|
661
704
|
};
|
|
662
705
|
}
|
|
663
706
|
var CACHE_PREFIX = "_aranova_cfg_";
|
|
@@ -741,6 +784,7 @@ function resolveConversionConfig(options) {
|
|
|
741
784
|
getFiring: (key) => goalsByKey.get(key)?.firing ?? null,
|
|
742
785
|
getGoal: (key) => goalsByKey.get(key) ?? null,
|
|
743
786
|
listGoals: () => [...goalsByKey.values()],
|
|
787
|
+
linkedHostnames: () => current?.linked_hostnames ?? [],
|
|
744
788
|
current: () => current,
|
|
745
789
|
isReady: () => current !== null,
|
|
746
790
|
onResolve: (listener) => {
|
|
@@ -948,7 +992,7 @@ function validateConfig(config, ref) {
|
|
|
948
992
|
function pageViewSnapshot() {
|
|
949
993
|
if (typeof window === "undefined" || typeof document === "undefined") return null;
|
|
950
994
|
return {
|
|
951
|
-
href: window.location.href,
|
|
995
|
+
href: stripLinkParam(window.location.href),
|
|
952
996
|
title: document.title || null,
|
|
953
997
|
referrer: document.referrer || null
|
|
954
998
|
};
|
|
@@ -1099,6 +1143,10 @@ var TrackingConfigRuntime = class {
|
|
|
1099
1143
|
listGoals() {
|
|
1100
1144
|
return this.current?.goals ?? [];
|
|
1101
1145
|
}
|
|
1146
|
+
/** Sibling hostnames for the linker — read from the cached object even while unconfirmed. */
|
|
1147
|
+
linkedHostnames() {
|
|
1148
|
+
return this.current?.linked_hostnames ?? [];
|
|
1149
|
+
}
|
|
1102
1150
|
async revalidateNow() {
|
|
1103
1151
|
try {
|
|
1104
1152
|
const headers = {};
|
|
@@ -1342,6 +1390,18 @@ var EVENT_SEMANTICS = {
|
|
|
1342
1390
|
category: "engagement",
|
|
1343
1391
|
outcomeRole: "engagement",
|
|
1344
1392
|
clientVisibility: "simple"
|
|
1393
|
+
},
|
|
1394
|
+
site_link_click: {
|
|
1395
|
+
label: "Left for sibling site",
|
|
1396
|
+
category: "page",
|
|
1397
|
+
outcomeRole: "navigation",
|
|
1398
|
+
clientVisibility: "detailed"
|
|
1399
|
+
},
|
|
1400
|
+
site_link_arrival: {
|
|
1401
|
+
label: "Arrived from sibling site",
|
|
1402
|
+
category: "page",
|
|
1403
|
+
outcomeRole: "navigation",
|
|
1404
|
+
clientVisibility: "simple"
|
|
1345
1405
|
}
|
|
1346
1406
|
};
|
|
1347
1407
|
function getEventSemantics(eventName) {
|
|
@@ -1583,11 +1643,11 @@ function createSalesClient(config) {
|
|
|
1583
1643
|
}
|
|
1584
1644
|
|
|
1585
1645
|
// ../tracking-core/src/resources/sales/schema.ts
|
|
1586
|
-
import * as
|
|
1646
|
+
import * as z3 from "zod/mini";
|
|
1587
1647
|
|
|
1588
1648
|
// ../tracking-core/src/resources/sales/generated/zod.gen.ts
|
|
1589
|
-
import * as
|
|
1590
|
-
var zErrorCode =
|
|
1649
|
+
import * as z2 from "zod/mini";
|
|
1650
|
+
var zErrorCode = z2.enum([
|
|
1591
1651
|
"missing_credentials",
|
|
1592
1652
|
"invalid_api_key",
|
|
1593
1653
|
"not_authenticated",
|
|
@@ -1602,9 +1662,19 @@ var zErrorCode = z.enum([
|
|
|
1602
1662
|
"bad_request",
|
|
1603
1663
|
"not_found",
|
|
1604
1664
|
"conflict",
|
|
1665
|
+
"gone",
|
|
1605
1666
|
"incompatible_payload",
|
|
1606
1667
|
"repeat_confirmation_required",
|
|
1607
1668
|
"idempotency_conflict",
|
|
1669
|
+
"slot_unavailable",
|
|
1670
|
+
"calendar_not_connected",
|
|
1671
|
+
"calendar_disconnected",
|
|
1672
|
+
"booking_not_found",
|
|
1673
|
+
"booking_not_cancellable",
|
|
1674
|
+
"booking_not_reschedulable",
|
|
1675
|
+
"manage_token_invalid",
|
|
1676
|
+
"google_error",
|
|
1677
|
+
"calendar_not_owned",
|
|
1608
1678
|
"validation_error",
|
|
1609
1679
|
"unknown_service",
|
|
1610
1680
|
"invalid_sale_properties",
|
|
@@ -1612,36 +1682,36 @@ var zErrorCode = z.enum([
|
|
|
1612
1682
|
"rate_limited",
|
|
1613
1683
|
"internal_error"
|
|
1614
1684
|
]);
|
|
1615
|
-
var zSaleItemEntitySchema =
|
|
1616
|
-
category:
|
|
1617
|
-
external_item_id:
|
|
1618
|
-
id:
|
|
1619
|
-
name:
|
|
1620
|
-
quantity:
|
|
1621
|
-
unit_cost_cents:
|
|
1622
|
-
unit_price_cents:
|
|
1685
|
+
var zSaleItemEntitySchema = z2.object({
|
|
1686
|
+
category: z2.nullable(z2.string()),
|
|
1687
|
+
external_item_id: z2.nullable(z2.string()),
|
|
1688
|
+
id: z2.uuid(),
|
|
1689
|
+
name: z2.nullable(z2.string()),
|
|
1690
|
+
quantity: z2.string().check(z2.regex(/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/)),
|
|
1691
|
+
unit_cost_cents: z2.nullable(z2.int()),
|
|
1692
|
+
unit_price_cents: z2.int()
|
|
1623
1693
|
});
|
|
1624
|
-
var zSaleItemInputSchema =
|
|
1625
|
-
category:
|
|
1626
|
-
external_item_id:
|
|
1627
|
-
name:
|
|
1628
|
-
quantity:
|
|
1629
|
-
unit_cost_cents:
|
|
1630
|
-
unit_price_cents:
|
|
1694
|
+
var zSaleItemInputSchema = z2.strictObject({
|
|
1695
|
+
category: z2.nullish(z2.string()),
|
|
1696
|
+
external_item_id: z2.nullish(z2.string()),
|
|
1697
|
+
name: z2.nullish(z2.string()),
|
|
1698
|
+
quantity: z2.string().check(z2.regex(/^\d+(\.\d{1,3})?$/)),
|
|
1699
|
+
unit_cost_cents: z2.nullish(z2.int().check(z2.gte(0))),
|
|
1700
|
+
unit_price_cents: z2.int().check(z2.gte(0))
|
|
1631
1701
|
});
|
|
1632
|
-
var zSaleServiceEntitySchema =
|
|
1633
|
-
amount_cents:
|
|
1634
|
-
id:
|
|
1635
|
-
mapped:
|
|
1636
|
-
service_id:
|
|
1637
|
-
service_key:
|
|
1638
|
-
service_label:
|
|
1702
|
+
var zSaleServiceEntitySchema = z2.object({
|
|
1703
|
+
amount_cents: z2.int(),
|
|
1704
|
+
id: z2.uuid(),
|
|
1705
|
+
mapped: z2.nullable(z2.boolean()),
|
|
1706
|
+
service_id: z2.uuid(),
|
|
1707
|
+
service_key: z2.string(),
|
|
1708
|
+
service_label: z2.string()
|
|
1639
1709
|
});
|
|
1640
|
-
var zSaleServiceInputSchema =
|
|
1641
|
-
amount_cents:
|
|
1642
|
-
service:
|
|
1710
|
+
var zSaleServiceInputSchema = z2.strictObject({
|
|
1711
|
+
amount_cents: z2.int().check(z2.gte(0)),
|
|
1712
|
+
service: z2.string()
|
|
1643
1713
|
});
|
|
1644
|
-
var zSmsAutomationState =
|
|
1714
|
+
var zSmsAutomationState = z2.enum([
|
|
1645
1715
|
"needs_check",
|
|
1646
1716
|
"failed",
|
|
1647
1717
|
"undelivered",
|
|
@@ -1653,7 +1723,7 @@ var zSmsAutomationState = z.enum([
|
|
|
1653
1723
|
"eligible",
|
|
1654
1724
|
"not_applicable"
|
|
1655
1725
|
]);
|
|
1656
|
-
var zSmsWithheldReason =
|
|
1726
|
+
var zSmsWithheldReason = z2.enum([
|
|
1657
1727
|
"automation_disabled",
|
|
1658
1728
|
"sms_disabled",
|
|
1659
1729
|
"no_phone",
|
|
@@ -1666,77 +1736,83 @@ var zSmsWithheldReason = z.enum([
|
|
|
1666
1736
|
"sender_not_ready",
|
|
1667
1737
|
"missing_review_url",
|
|
1668
1738
|
"no_handler",
|
|
1669
|
-
"dispatch_already_recorded"
|
|
1739
|
+
"dispatch_already_recorded",
|
|
1740
|
+
"text_back_disabled",
|
|
1741
|
+
"number_text_back_disabled",
|
|
1742
|
+
"number_not_active",
|
|
1743
|
+
"a2p_registration_required",
|
|
1744
|
+
"alert_recipient_cannot_receive_sms",
|
|
1745
|
+
"line_type_unresolved"
|
|
1670
1746
|
]);
|
|
1671
|
-
var zSaleSmsStatusSchema =
|
|
1672
|
-
can_send_now:
|
|
1673
|
-
last_message_at:
|
|
1674
|
-
reason_detail:
|
|
1747
|
+
var zSaleSmsStatusSchema = z2.object({
|
|
1748
|
+
can_send_now: z2._default(z2.boolean(), false),
|
|
1749
|
+
last_message_at: z2.nullable(z2.iso.datetime({ offset: true })),
|
|
1750
|
+
reason_detail: z2.nullable(z2.string()),
|
|
1675
1751
|
state: zSmsAutomationState,
|
|
1676
|
-
suppressed_by_other_sale:
|
|
1677
|
-
withheld_reason:
|
|
1752
|
+
suppressed_by_other_sale: z2._default(z2.boolean(), false),
|
|
1753
|
+
withheld_reason: z2.nullable(zSmsWithheldReason)
|
|
1678
1754
|
});
|
|
1679
|
-
var zSupportedCurrency =
|
|
1680
|
-
var zTrackingEnvironment =
|
|
1681
|
-
var zSaleCreateSchema =
|
|
1682
|
-
amount_total_cents:
|
|
1755
|
+
var zSupportedCurrency = z2.enum(["USD", "CAD"]);
|
|
1756
|
+
var zTrackingEnvironment = z2.enum(["production", "development"]);
|
|
1757
|
+
var zSaleCreateSchema = z2.strictObject({
|
|
1758
|
+
amount_total_cents: z2.nullish(z2.int().check(z2.gte(0))),
|
|
1683
1759
|
currency: zSupportedCurrency,
|
|
1684
|
-
customer_email:
|
|
1685
|
-
customer_name:
|
|
1686
|
-
customer_phone:
|
|
1687
|
-
description:
|
|
1688
|
-
environment:
|
|
1689
|
-
external_id:
|
|
1690
|
-
items:
|
|
1691
|
-
metadata:
|
|
1692
|
-
occurred_at:
|
|
1693
|
-
service:
|
|
1694
|
-
services:
|
|
1695
|
-
sms_consent:
|
|
1760
|
+
customer_email: z2.nullish(z2.email().check(z2.maxLength(320))),
|
|
1761
|
+
customer_name: z2.nullish(z2.string().check(z2.maxLength(200))),
|
|
1762
|
+
customer_phone: z2.nullish(z2.string().check(z2.maxLength(64))),
|
|
1763
|
+
description: z2.nullish(z2.string()),
|
|
1764
|
+
environment: z2._default(z2.optional(zTrackingEnvironment), "production"),
|
|
1765
|
+
external_id: z2.nullish(z2.string()),
|
|
1766
|
+
items: z2.optional(z2.array(zSaleItemInputSchema)),
|
|
1767
|
+
metadata: z2.nullish(z2.record(z2.string(), z2.unknown())),
|
|
1768
|
+
occurred_at: z2.iso.datetime({ offset: true }),
|
|
1769
|
+
service: z2.nullish(z2.string()),
|
|
1770
|
+
services: z2.nullish(z2.array(zSaleServiceInputSchema)),
|
|
1771
|
+
sms_consent: z2.nullish(z2.boolean())
|
|
1696
1772
|
});
|
|
1697
|
-
var zValidationError =
|
|
1698
|
-
ctx:
|
|
1699
|
-
input:
|
|
1700
|
-
loc:
|
|
1701
|
-
msg:
|
|
1702
|
-
type:
|
|
1773
|
+
var zValidationError = z2.object({
|
|
1774
|
+
ctx: z2.optional(z2.record(z2.string(), z2.unknown())),
|
|
1775
|
+
input: z2.optional(z2.unknown()),
|
|
1776
|
+
loc: z2.array(z2.union([z2.string(), z2.int()])),
|
|
1777
|
+
msg: z2.string(),
|
|
1778
|
+
type: z2.string()
|
|
1703
1779
|
});
|
|
1704
|
-
var zHttpValidationError =
|
|
1705
|
-
detail:
|
|
1780
|
+
var zHttpValidationError = z2.object({
|
|
1781
|
+
detail: z2.optional(z2.array(zValidationError))
|
|
1706
1782
|
});
|
|
1707
|
-
var zValidationErrorItem =
|
|
1708
|
-
loc:
|
|
1709
|
-
msg:
|
|
1710
|
-
type:
|
|
1783
|
+
var zValidationErrorItem = z2.object({
|
|
1784
|
+
loc: z2.array(z2.union([z2.string(), z2.int()])),
|
|
1785
|
+
msg: z2.string(),
|
|
1786
|
+
type: z2.string()
|
|
1711
1787
|
});
|
|
1712
|
-
var zApiErrorSchema =
|
|
1788
|
+
var zApiErrorSchema = z2.object({
|
|
1713
1789
|
code: zErrorCode,
|
|
1714
|
-
context:
|
|
1715
|
-
detail:
|
|
1716
|
-
errors:
|
|
1717
|
-
request_id:
|
|
1790
|
+
context: z2._default(z2.nullish(z2.record(z2.string(), z2.unknown())), null),
|
|
1791
|
+
detail: z2.string(),
|
|
1792
|
+
errors: z2._default(z2.nullish(z2.array(zValidationErrorItem)), null),
|
|
1793
|
+
request_id: z2._default(z2.nullish(z2.string()), null)
|
|
1718
1794
|
});
|
|
1719
|
-
var zWritebackEmailSource =
|
|
1720
|
-
var zWritebackEnrichmentStatus =
|
|
1721
|
-
var zWritebackSaleUploadCounts =
|
|
1722
|
-
failed:
|
|
1723
|
-
pending:
|
|
1724
|
-
skipped:
|
|
1725
|
-
submitted:
|
|
1726
|
-
total:
|
|
1727
|
-
uploaded:
|
|
1795
|
+
var zWritebackEmailSource = z2.enum(["NONE", "SALE", "CUSTOMER", "HARVESTED"]);
|
|
1796
|
+
var zWritebackEnrichmentStatus = z2.enum(["NONE", "MATCHED", "AMBIGUOUS"]);
|
|
1797
|
+
var zWritebackSaleUploadCounts = z2.object({
|
|
1798
|
+
failed: z2._default(z2.int(), 0),
|
|
1799
|
+
pending: z2._default(z2.int(), 0),
|
|
1800
|
+
skipped: z2._default(z2.int(), 0),
|
|
1801
|
+
submitted: z2._default(z2.int(), 0),
|
|
1802
|
+
total: z2._default(z2.int(), 0),
|
|
1803
|
+
uploaded: z2._default(z2.int(), 0)
|
|
1728
1804
|
});
|
|
1729
|
-
var zSaleWritebackStatusSchema =
|
|
1730
|
-
blocked_reason:
|
|
1731
|
-
can_dispatch:
|
|
1732
|
-
email_source:
|
|
1733
|
-
enrichment_status:
|
|
1734
|
-
gclid_attached:
|
|
1735
|
-
identifiers_sent:
|
|
1736
|
-
mapped_service_ids:
|
|
1737
|
-
matched_submit_count:
|
|
1738
|
-
needs_force:
|
|
1739
|
-
rollup:
|
|
1805
|
+
var zSaleWritebackStatusSchema = z2.object({
|
|
1806
|
+
blocked_reason: z2.nullable(z2.string()),
|
|
1807
|
+
can_dispatch: z2._default(z2.boolean(), false),
|
|
1808
|
+
email_source: z2.nullable(zWritebackEmailSource),
|
|
1809
|
+
enrichment_status: z2.nullable(zWritebackEnrichmentStatus),
|
|
1810
|
+
gclid_attached: z2._default(z2.boolean(), false),
|
|
1811
|
+
identifiers_sent: z2.nullable(z2.string()),
|
|
1812
|
+
mapped_service_ids: z2.array(z2.uuid()),
|
|
1813
|
+
matched_submit_count: z2.nullable(z2.int()),
|
|
1814
|
+
needs_force: z2._default(z2.boolean(), false),
|
|
1815
|
+
rollup: z2.enum([
|
|
1740
1816
|
"failed",
|
|
1741
1817
|
"skipped",
|
|
1742
1818
|
"pending",
|
|
@@ -1746,37 +1822,37 @@ var zSaleWritebackStatusSchema = z.object({
|
|
|
1746
1822
|
"out_of_window",
|
|
1747
1823
|
"blocked"
|
|
1748
1824
|
]),
|
|
1749
|
-
stale:
|
|
1750
|
-
uncovered_service_ids:
|
|
1825
|
+
stale: z2._default(z2.boolean(), false),
|
|
1826
|
+
uncovered_service_ids: z2.array(z2.uuid()),
|
|
1751
1827
|
uploads: zWritebackSaleUploadCounts
|
|
1752
1828
|
});
|
|
1753
|
-
var zSaleEntitySchema =
|
|
1754
|
-
amount_total_cents:
|
|
1755
|
-
business_id:
|
|
1756
|
-
business_name:
|
|
1757
|
-
created_at:
|
|
1758
|
-
currency:
|
|
1759
|
-
customer_email:
|
|
1760
|
-
customer_name:
|
|
1761
|
-
customer_name_placeholder_confirmed:
|
|
1762
|
-
customer_name_placeholder_confirmed_at:
|
|
1763
|
-
customer_phone:
|
|
1764
|
-
description:
|
|
1829
|
+
var zSaleEntitySchema = z2.object({
|
|
1830
|
+
amount_total_cents: z2.int(),
|
|
1831
|
+
business_id: z2.uuid(),
|
|
1832
|
+
business_name: z2.nullable(z2.string()),
|
|
1833
|
+
created_at: z2.iso.datetime({ offset: true }),
|
|
1834
|
+
currency: z2.string(),
|
|
1835
|
+
customer_email: z2.nullable(z2.string()),
|
|
1836
|
+
customer_name: z2.nullable(z2.string()),
|
|
1837
|
+
customer_name_placeholder_confirmed: z2._default(z2.boolean(), false),
|
|
1838
|
+
customer_name_placeholder_confirmed_at: z2.nullable(z2.iso.datetime({ offset: true })),
|
|
1839
|
+
customer_phone: z2.nullable(z2.string()),
|
|
1840
|
+
description: z2.nullable(z2.string()),
|
|
1765
1841
|
environment: zTrackingEnvironment,
|
|
1766
|
-
external_id:
|
|
1767
|
-
id:
|
|
1768
|
-
items:
|
|
1769
|
-
metadata:
|
|
1770
|
-
occurred_at:
|
|
1771
|
-
service_id:
|
|
1772
|
-
service_key:
|
|
1773
|
-
service_label:
|
|
1774
|
-
services:
|
|
1775
|
-
sms_automation:
|
|
1776
|
-
sms_consent:
|
|
1777
|
-
sms_consent_granted_at:
|
|
1778
|
-
updated_at:
|
|
1779
|
-
writeback:
|
|
1842
|
+
external_id: z2.nullable(z2.string()),
|
|
1843
|
+
id: z2.uuid(),
|
|
1844
|
+
items: z2.array(zSaleItemEntitySchema),
|
|
1845
|
+
metadata: z2.nullable(z2.record(z2.string(), z2.unknown())),
|
|
1846
|
+
occurred_at: z2.iso.datetime({ offset: true }),
|
|
1847
|
+
service_id: z2.nullable(z2.uuid()),
|
|
1848
|
+
service_key: z2.nullable(z2.string()),
|
|
1849
|
+
service_label: z2.nullable(z2.string()),
|
|
1850
|
+
services: z2.array(zSaleServiceEntitySchema),
|
|
1851
|
+
sms_automation: z2.nullable(zSaleSmsStatusSchema),
|
|
1852
|
+
sms_consent: z2._default(z2.boolean(), false),
|
|
1853
|
+
sms_consent_granted_at: z2.nullable(z2.iso.datetime({ offset: true })),
|
|
1854
|
+
updated_at: z2.iso.datetime({ offset: true }),
|
|
1855
|
+
writeback: z2.nullable(zSaleWritebackStatusSchema)
|
|
1780
1856
|
});
|
|
1781
1857
|
|
|
1782
1858
|
// ../tracking-core/src/resources/sales/schema.ts
|
|
@@ -1784,11 +1860,11 @@ var saleItemSchema = zSaleItemInputSchema;
|
|
|
1784
1860
|
var saleServiceSchema = zSaleServiceInputSchema;
|
|
1785
1861
|
var currencySchema = zSupportedCurrency;
|
|
1786
1862
|
var SUPPORTED_CURRENCIES = currencySchema.options;
|
|
1787
|
-
var centsSchema =
|
|
1788
|
-
var metadataSchema =
|
|
1789
|
-
var customerNameSchema =
|
|
1790
|
-
var customerPhoneSchema =
|
|
1791
|
-
var customerEmailSchema =
|
|
1863
|
+
var centsSchema = z3.int().check(z3.gte(0));
|
|
1864
|
+
var metadataSchema = z3.record(z3.string(), z3.unknown());
|
|
1865
|
+
var customerNameSchema = z3.string().check(z3.maxLength(200));
|
|
1866
|
+
var customerPhoneSchema = z3.string().check(z3.maxLength(64));
|
|
1867
|
+
var customerEmailSchema = z3.email().check(z3.maxLength(320));
|
|
1792
1868
|
function addIssue(ctx, path, message) {
|
|
1793
1869
|
ctx.issues.push({ code: "custom", input: ctx.value, path, message });
|
|
1794
1870
|
}
|
|
@@ -1822,24 +1898,24 @@ function refineServiceXor(val, ctx, { requireAmount }) {
|
|
|
1822
1898
|
);
|
|
1823
1899
|
}
|
|
1824
1900
|
}
|
|
1825
|
-
var saleCreateSchema =
|
|
1826
|
-
var saleUpdateSchema =
|
|
1827
|
-
description:
|
|
1828
|
-
service:
|
|
1829
|
-
services:
|
|
1830
|
-
currency:
|
|
1831
|
-
amount_total_cents:
|
|
1832
|
-
occurred_at:
|
|
1833
|
-
items:
|
|
1834
|
-
metadata:
|
|
1835
|
-
customer_name:
|
|
1901
|
+
var saleCreateSchema = z3.extend(zSaleCreateSchema, { items: z3._default(z3.array(saleItemSchema), []) }).check((ctx) => refineServiceXor(ctx.value, ctx, { requireAmount: true }));
|
|
1902
|
+
var saleUpdateSchema = z3.strictObject({
|
|
1903
|
+
description: z3.nullish(z3.string()),
|
|
1904
|
+
service: z3.nullish(z3.string()),
|
|
1905
|
+
services: z3.nullish(z3.array(saleServiceSchema)),
|
|
1906
|
+
currency: z3.optional(currencySchema),
|
|
1907
|
+
amount_total_cents: z3.optional(centsSchema),
|
|
1908
|
+
occurred_at: z3.optional(z3.iso.datetime()),
|
|
1909
|
+
items: z3.optional(z3.array(saleItemSchema)),
|
|
1910
|
+
metadata: z3.nullish(metadataSchema),
|
|
1911
|
+
customer_name: z3.nullish(customerNameSchema),
|
|
1836
1912
|
// Re-attest when changing a filler-looking name; the server clears the
|
|
1837
1913
|
// prior attestation whenever `customer_name` changes.
|
|
1838
|
-
customer_name_placeholder_confirmed:
|
|
1839
|
-
customer_phone:
|
|
1840
|
-
customer_email:
|
|
1914
|
+
customer_name_placeholder_confirmed: z3.optional(z3.boolean()),
|
|
1915
|
+
customer_phone: z3.nullish(customerPhoneSchema),
|
|
1916
|
+
customer_email: z3.nullish(customerEmailSchema),
|
|
1841
1917
|
// NOT NULL server-side: omit to leave unchanged (explicit null is rejected).
|
|
1842
|
-
sms_consent:
|
|
1918
|
+
sms_consent: z3.optional(z3.boolean())
|
|
1843
1919
|
}).check((ctx) => refineServiceXor(ctx.value, ctx, { requireAmount: false }));
|
|
1844
1920
|
var TRACKING_RANGES = ["24h", "7d", "30d"];
|
|
1845
1921
|
var NAMED_RANGES = [
|