@bash-app/bash-common 30.255.0 → 30.256.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/utils/__tests__/eventTimezoneIana.test.js +22 -2
- package/dist/utils/__tests__/eventTimezoneIana.test.js.map +1 -1
- package/dist/utils/__tests__/ticketListUtils.test.js +44 -0
- package/dist/utils/__tests__/ticketListUtils.test.js.map +1 -1
- package/dist/utils/eventTimezoneIana.d.ts +5 -2
- package/dist/utils/eventTimezoneIana.d.ts.map +1 -1
- package/dist/utils/eventTimezoneIana.js +10 -5
- package/dist/utils/eventTimezoneIana.js.map +1 -1
- package/dist/utils/ticketListUtils.d.ts.map +1 -1
- package/dist/utils/ticketListUtils.js +2 -2
- package/dist/utils/ticketListUtils.js.map +1 -1
- package/package.json +1 -1
- package/src/utils/__tests__/eventTimezoneIana.test.ts +29 -2
- package/src/utils/__tests__/ticketListUtils.test.ts +57 -0
- package/src/utils/eventTimezoneIana.ts +11 -6
- package/src/utils/ticketListUtils.ts +2 -7
|
@@ -40,11 +40,20 @@ describe("eventTimezoneIana", () => {
|
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
describe("resolveEventTimezoneIanaForDisplay", () => {
|
|
43
|
-
it("prefers
|
|
43
|
+
it("prefers geographic inference over stored timezone when location is known", () => {
|
|
44
|
+
// Regression: an event in Utah (state: UT) had timezone: "America/New_York"
|
|
45
|
+
// stored incorrectly, causing the BashCard to show EDT instead of MDT.
|
|
46
|
+
// Geographic data should win when it has an opinion.
|
|
44
47
|
expect(resolveEventTimezoneIanaForDisplay({
|
|
45
|
-
timezone: "America/
|
|
48
|
+
timezone: "America/New_York",
|
|
46
49
|
state: "UT",
|
|
47
50
|
country: "USA",
|
|
51
|
+
})).toBe("America/Denver");
|
|
52
|
+
});
|
|
53
|
+
it("falls back to stored timezone when no geographic clues exist", () => {
|
|
54
|
+
// Online / location-less events rely entirely on the stored timezone.
|
|
55
|
+
expect(resolveEventTimezoneIanaForDisplay({
|
|
56
|
+
timezone: "America/Los_Angeles",
|
|
48
57
|
})).toBe("America/Los_Angeles");
|
|
49
58
|
});
|
|
50
59
|
it("infers from city/state when timezone is missing", () => {
|
|
@@ -55,6 +64,17 @@ describe("eventTimezoneIana", () => {
|
|
|
55
64
|
country: "United States",
|
|
56
65
|
})).toBe("America/Denver");
|
|
57
66
|
});
|
|
67
|
+
it("returns stored timezone for a Park City UT event that also has correct stored timezone", () => {
|
|
68
|
+
expect(resolveEventTimezoneIanaForDisplay({
|
|
69
|
+
timezone: "America/Denver",
|
|
70
|
+
state: "UT",
|
|
71
|
+
country: "USA",
|
|
72
|
+
city: "Park City",
|
|
73
|
+
})).toBe("America/Denver");
|
|
74
|
+
});
|
|
75
|
+
it("returns UTC when neither geographic nor stored timezone is available", () => {
|
|
76
|
+
expect(resolveEventTimezoneIanaForDisplay({})).toBe("UTC");
|
|
77
|
+
});
|
|
58
78
|
});
|
|
59
79
|
});
|
|
60
80
|
//# sourceMappingURL=eventTimezoneIana.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTimezoneIana.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/eventTimezoneIana.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AAEjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC7D,qBAAqB,CACtB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1D,gBAAgB,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC5D,iBAAiB,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3D,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3D,iBAAiB,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,MAAM,CAAC,8BAA8B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CACJ,sBAAsB,CAAC;gBACrB,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,KAAK;aACf,CAAC,CACH,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzB,MAAM,CACJ,sBAAsB,CAAC;gBACrB,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,KAAK;aACf,CAAC,CACH,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"eventTimezoneIana.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/eventTimezoneIana.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,5 +37,49 @@ describe("ticketListUtils", () => {
|
|
|
37
37
|
const decoded = ticketListStrToTicketList(plain);
|
|
38
38
|
expect(decoded.get("tier1")[0].numberOfTickets).toBe(2);
|
|
39
39
|
});
|
|
40
|
+
describe("ticketDateTime ISO round-trip (timezone-safe)", () => {
|
|
41
|
+
/**
|
|
42
|
+
* Regression: before the fix, ticketListStrToTicketList re-formatted the
|
|
43
|
+
* datetime using a locale-specific format ("5/25/2026 7:00 PM") which
|
|
44
|
+
* new Date() parses in the server's local timezone, shifting the UTC value
|
|
45
|
+
* and causing the ticket's validDate to mismatch the event startDateTime.
|
|
46
|
+
* After the fix, toISO() is used, keeping the timestamp unambiguous.
|
|
47
|
+
*/
|
|
48
|
+
test("preserves the exact UTC instant through encode → decode", () => {
|
|
49
|
+
const utcDate = "2026-05-25T01:00:00.000Z";
|
|
50
|
+
const ticketList = new Map([
|
|
51
|
+
["tier-free", [{ numberOfTickets: 1, ticketDateTime: utcDate }]],
|
|
52
|
+
]);
|
|
53
|
+
const encoded = ticketListToString(ticketList);
|
|
54
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
55
|
+
const decodedDateStr = decoded.get("tier-free")[0].ticketDateTime;
|
|
56
|
+
// The decoded string must parse back to the same UTC millisecond.
|
|
57
|
+
expect(new Date(decodedDateStr).getTime()).toBe(new Date(utcDate).getTime());
|
|
58
|
+
});
|
|
59
|
+
test("decoded ticketDateTime is a valid ISO string (not a locale string)", () => {
|
|
60
|
+
const utcDate = "2026-05-25T19:00:00.000Z";
|
|
61
|
+
const ticketList = new Map([
|
|
62
|
+
["tier-free", [{ numberOfTickets: 2, ticketDateTime: utcDate }]],
|
|
63
|
+
]);
|
|
64
|
+
const encoded = ticketListToString(ticketList);
|
|
65
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
66
|
+
const decodedDateStr = String(decoded.get("tier-free")[0].ticketDateTime);
|
|
67
|
+
// ISO strings are parseable by DateTime.fromISO; locale strings like
|
|
68
|
+
// "5/25/2026 7:00 PM" are not valid ISO and would cause NaN.
|
|
69
|
+
expect(DateTime.fromISO(decodedDateStr).isValid).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
test("round-trip is stable regardless of DST offset for Mountain-time events", () => {
|
|
72
|
+
// Park City, UT is America/Denver (UTC-6 in MDT).
|
|
73
|
+
// An 8:30 PM MDT event = 2026-05-28T02:30:00.000Z in UTC.
|
|
74
|
+
const utcDate = "2026-05-28T02:30:00.000Z";
|
|
75
|
+
const ticketList = new Map([
|
|
76
|
+
["tier-general", [{ numberOfTickets: 1, ticketDateTime: utcDate }]],
|
|
77
|
+
]);
|
|
78
|
+
const encoded = ticketListToString(ticketList);
|
|
79
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
80
|
+
const decodedDateStr = decoded.get("tier-general")[0].ticketDateTime;
|
|
81
|
+
expect(new Date(decodedDateStr).getTime()).toBe(new Date(utcDate).getTime());
|
|
82
|
+
});
|
|
83
|
+
});
|
|
40
84
|
});
|
|
41
85
|
//# sourceMappingURL=ticketListUtils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticketListUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/ticketListUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGtF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,OAAO,GAAG,0BAA0B,CAAC;IAE3C,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAmC;YAC3D;gBACE,UAAU;gBACV;oBACE,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE;oBAC/C,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE;iBAChD;aACF;YACD,CAAC,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;SAChE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAmC;YAC3D,CAAC,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;SACjE,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG,aAAa,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;QACjE,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ticketListUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/ticketListUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,8 +31,11 @@ export type ResolveEventTimezoneForDisplayArgs = InferEventTimezoneArgs & {
|
|
|
31
31
|
timezone?: string | null;
|
|
32
32
|
};
|
|
33
33
|
/**
|
|
34
|
-
* For public surfaces (e.g. BashCard): prefer
|
|
35
|
-
*
|
|
34
|
+
* For public surfaces (e.g. BashCard): prefer geographic inference when location
|
|
35
|
+
* data is available — it is more reliable than the stored timezone which may have
|
|
36
|
+
* been set by AI or defaulted incorrectly. Falls back to the stored IANA only when
|
|
37
|
+
* geographic inference produces no opinion (returns UTC). Never uses the viewer's
|
|
38
|
+
* device timezone.
|
|
36
39
|
*/
|
|
37
40
|
export declare function resolveEventTimezoneIanaForDisplay(args: ResolveEventTimezoneForDisplayArgs): string;
|
|
38
41
|
//# sourceMappingURL=eventTimezoneIana.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTimezoneIana.d.ts","sourceRoot":"","sources":["../../src/utils/eventTimezoneIana.ts"],"names":[],"mappings":"AAoEA;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIhF;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CAsGf;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,CAuEf;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAoB3E;AAED,MAAM,MAAM,kCAAkC,GAAG,sBAAsB,GAAG;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"eventTimezoneIana.d.ts","sourceRoot":"","sources":["../../src/utils/eventTimezoneIana.ts"],"names":[],"mappings":"AAoEA;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIhF;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CAsGf;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,CAuEf;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAoB3E;AAED,MAAM,MAAM,kCAAkC,GAAG,sBAAsB,GAAG;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,kCAAkC,GACvC,MAAM,CAQR"}
|
|
@@ -264,14 +264,19 @@ export function inferEventTimezoneIana(args) {
|
|
|
264
264
|
return "UTC";
|
|
265
265
|
}
|
|
266
266
|
/**
|
|
267
|
-
* For public surfaces (e.g. BashCard): prefer
|
|
268
|
-
*
|
|
267
|
+
* For public surfaces (e.g. BashCard): prefer geographic inference when location
|
|
268
|
+
* data is available — it is more reliable than the stored timezone which may have
|
|
269
|
+
* been set by AI or defaulted incorrectly. Falls back to the stored IANA only when
|
|
270
|
+
* geographic inference produces no opinion (returns UTC). Never uses the viewer's
|
|
271
|
+
* device timezone.
|
|
269
272
|
*/
|
|
270
273
|
export function resolveEventTimezoneIanaForDisplay(args) {
|
|
274
|
+
const inferred = inferEventTimezoneIana(args);
|
|
275
|
+
if (inferred !== "UTC")
|
|
276
|
+
return inferred;
|
|
271
277
|
const stored = args.timezone?.trim();
|
|
272
|
-
if (stored && isValidIanaTimezone(stored))
|
|
278
|
+
if (stored && isValidIanaTimezone(stored))
|
|
273
279
|
return stored;
|
|
274
|
-
|
|
275
|
-
return inferEventTimezoneIana(args);
|
|
280
|
+
return "UTC";
|
|
276
281
|
}
|
|
277
282
|
//# sourceMappingURL=eventTimezoneIana.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTimezoneIana.js","sourceRoot":"","sources":["../../src/utils/eventTimezoneIana.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"eventTimezoneIana.js","sourceRoot":"","sources":["../../src/utils/eventTimezoneIana.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticketListUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ticketListUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AA4C3B;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAChD,MAAM,CAsCR;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,GACpB,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAgEvC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DateTime } from "luxon";
|
|
2
2
|
import { URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM, URL_PARAMS_TICKET_LIST_DELIM, URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM, URL_PARAMS_TICKETS_DATE_DELIM, } from "../definitions.js";
|
|
3
|
-
import {
|
|
3
|
+
import { dateTimeFromDate } from "./luxonUtils.js";
|
|
4
4
|
/**
|
|
5
5
|
* Encodes a string to Base64 URL-safe format
|
|
6
6
|
* Replaces + with -, / with _, and removes = padding
|
|
@@ -119,7 +119,7 @@ export function ticketListStrToTicketList(ticketListStr) {
|
|
|
119
119
|
const ticketDateTime = DateTime.fromISO(ticketDateTimeStr);
|
|
120
120
|
let ticketDateTimeFormattedStr = undefined;
|
|
121
121
|
if (ticketDateTime.isValid) {
|
|
122
|
-
ticketDateTimeFormattedStr =
|
|
122
|
+
ticketDateTimeFormattedStr = ticketDateTime.toISO() ?? undefined;
|
|
123
123
|
}
|
|
124
124
|
ticketNumAndDatesArr.push({
|
|
125
125
|
numberOfTickets: parseInt(numberOfTickets),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticketListUtils.js","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAEL,+CAA+C,EAC/C,4BAA4B,EAC5B,sDAAsD,EACtD,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"ticketListUtils.js","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -68,13 +68,25 @@ describe("eventTimezoneIana", () => {
|
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
describe("resolveEventTimezoneIanaForDisplay", () => {
|
|
71
|
-
it("prefers
|
|
71
|
+
it("prefers geographic inference over stored timezone when location is known", () => {
|
|
72
|
+
// Regression: an event in Utah (state: UT) had timezone: "America/New_York"
|
|
73
|
+
// stored incorrectly, causing the BashCard to show EDT instead of MDT.
|
|
74
|
+
// Geographic data should win when it has an opinion.
|
|
72
75
|
expect(
|
|
73
76
|
resolveEventTimezoneIanaForDisplay({
|
|
74
|
-
timezone: "America/
|
|
77
|
+
timezone: "America/New_York",
|
|
75
78
|
state: "UT",
|
|
76
79
|
country: "USA",
|
|
77
80
|
})
|
|
81
|
+
).toBe("America/Denver");
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("falls back to stored timezone when no geographic clues exist", () => {
|
|
85
|
+
// Online / location-less events rely entirely on the stored timezone.
|
|
86
|
+
expect(
|
|
87
|
+
resolveEventTimezoneIanaForDisplay({
|
|
88
|
+
timezone: "America/Los_Angeles",
|
|
89
|
+
})
|
|
78
90
|
).toBe("America/Los_Angeles");
|
|
79
91
|
});
|
|
80
92
|
|
|
@@ -88,5 +100,20 @@ describe("eventTimezoneIana", () => {
|
|
|
88
100
|
})
|
|
89
101
|
).toBe("America/Denver");
|
|
90
102
|
});
|
|
103
|
+
|
|
104
|
+
it("returns stored timezone for a Park City UT event that also has correct stored timezone", () => {
|
|
105
|
+
expect(
|
|
106
|
+
resolveEventTimezoneIanaForDisplay({
|
|
107
|
+
timezone: "America/Denver",
|
|
108
|
+
state: "UT",
|
|
109
|
+
country: "USA",
|
|
110
|
+
city: "Park City",
|
|
111
|
+
})
|
|
112
|
+
).toBe("America/Denver");
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("returns UTC when neither geographic nor stored timezone is available", () => {
|
|
116
|
+
expect(resolveEventTimezoneIanaForDisplay({})).toBe("UTC");
|
|
117
|
+
});
|
|
91
118
|
});
|
|
92
119
|
});
|
|
@@ -44,4 +44,61 @@ describe("ticketListUtils", () => {
|
|
|
44
44
|
const decoded = ticketListStrToTicketList(plain);
|
|
45
45
|
expect(decoded.get("tier1")![0].numberOfTickets).toBe(2);
|
|
46
46
|
});
|
|
47
|
+
|
|
48
|
+
describe("ticketDateTime ISO round-trip (timezone-safe)", () => {
|
|
49
|
+
/**
|
|
50
|
+
* Regression: before the fix, ticketListStrToTicketList re-formatted the
|
|
51
|
+
* datetime using a locale-specific format ("5/25/2026 7:00 PM") which
|
|
52
|
+
* new Date() parses in the server's local timezone, shifting the UTC value
|
|
53
|
+
* and causing the ticket's validDate to mismatch the event startDateTime.
|
|
54
|
+
* After the fix, toISO() is used, keeping the timestamp unambiguous.
|
|
55
|
+
*/
|
|
56
|
+
test("preserves the exact UTC instant through encode → decode", () => {
|
|
57
|
+
const utcDate = "2026-05-25T01:00:00.000Z";
|
|
58
|
+
const ticketList = new Map<string, NumberOfTicketsForDate[]>([
|
|
59
|
+
["tier-free", [{ numberOfTickets: 1, ticketDateTime: utcDate }]],
|
|
60
|
+
]);
|
|
61
|
+
|
|
62
|
+
const encoded = ticketListToString(ticketList);
|
|
63
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
64
|
+
|
|
65
|
+
const decodedDateStr = decoded.get("tier-free")![0].ticketDateTime!;
|
|
66
|
+
// The decoded string must parse back to the same UTC millisecond.
|
|
67
|
+
expect(new Date(decodedDateStr).getTime()).toBe(
|
|
68
|
+
new Date(utcDate).getTime()
|
|
69
|
+
);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test("decoded ticketDateTime is a valid ISO string (not a locale string)", () => {
|
|
73
|
+
const utcDate = "2026-05-25T19:00:00.000Z";
|
|
74
|
+
const ticketList = new Map<string, NumberOfTicketsForDate[]>([
|
|
75
|
+
["tier-free", [{ numberOfTickets: 2, ticketDateTime: utcDate }]],
|
|
76
|
+
]);
|
|
77
|
+
|
|
78
|
+
const encoded = ticketListToString(ticketList);
|
|
79
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
80
|
+
const decodedDateStr = String(decoded.get("tier-free")![0].ticketDateTime!);
|
|
81
|
+
|
|
82
|
+
// ISO strings are parseable by DateTime.fromISO; locale strings like
|
|
83
|
+
// "5/25/2026 7:00 PM" are not valid ISO and would cause NaN.
|
|
84
|
+
expect(DateTime.fromISO(decodedDateStr).isValid).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test("round-trip is stable regardless of DST offset for Mountain-time events", () => {
|
|
88
|
+
// Park City, UT is America/Denver (UTC-6 in MDT).
|
|
89
|
+
// An 8:30 PM MDT event = 2026-05-28T02:30:00.000Z in UTC.
|
|
90
|
+
const utcDate = "2026-05-28T02:30:00.000Z";
|
|
91
|
+
const ticketList = new Map<string, NumberOfTicketsForDate[]>([
|
|
92
|
+
["tier-general", [{ numberOfTickets: 1, ticketDateTime: utcDate }]],
|
|
93
|
+
]);
|
|
94
|
+
|
|
95
|
+
const encoded = ticketListToString(ticketList);
|
|
96
|
+
const decoded = ticketListStrToTicketList(encoded);
|
|
97
|
+
const decodedDateStr = decoded.get("tier-general")![0].ticketDateTime!;
|
|
98
|
+
|
|
99
|
+
expect(new Date(decodedDateStr).getTime()).toBe(
|
|
100
|
+
new Date(utcDate).getTime()
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
47
104
|
});
|
|
@@ -317,15 +317,20 @@ export type ResolveEventTimezoneForDisplayArgs = InferEventTimezoneArgs & {
|
|
|
317
317
|
};
|
|
318
318
|
|
|
319
319
|
/**
|
|
320
|
-
* For public surfaces (e.g. BashCard): prefer
|
|
321
|
-
*
|
|
320
|
+
* For public surfaces (e.g. BashCard): prefer geographic inference when location
|
|
321
|
+
* data is available — it is more reliable than the stored timezone which may have
|
|
322
|
+
* been set by AI or defaulted incorrectly. Falls back to the stored IANA only when
|
|
323
|
+
* geographic inference produces no opinion (returns UTC). Never uses the viewer's
|
|
324
|
+
* device timezone.
|
|
322
325
|
*/
|
|
323
326
|
export function resolveEventTimezoneIanaForDisplay(
|
|
324
327
|
args: ResolveEventTimezoneForDisplayArgs
|
|
325
328
|
): string {
|
|
329
|
+
const inferred = inferEventTimezoneIana(args);
|
|
330
|
+
if (inferred !== "UTC") return inferred;
|
|
331
|
+
|
|
326
332
|
const stored = args.timezone?.trim();
|
|
327
|
-
if (stored && isValidIanaTimezone(stored))
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
return inferEventTimezoneIana(args);
|
|
333
|
+
if (stored && isValidIanaTimezone(stored)) return stored;
|
|
334
|
+
|
|
335
|
+
return "UTC";
|
|
331
336
|
}
|
|
@@ -6,12 +6,7 @@ import {
|
|
|
6
6
|
URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM,
|
|
7
7
|
URL_PARAMS_TICKETS_DATE_DELIM,
|
|
8
8
|
} from "../definitions.js";
|
|
9
|
-
import {
|
|
10
|
-
dateTimeFormat,
|
|
11
|
-
dateTimeFromDate,
|
|
12
|
-
dateTimeFromString,
|
|
13
|
-
LUXON_DATETIME_FORMAT_ISO_LIKE,
|
|
14
|
-
} from "./luxonUtils.js";
|
|
9
|
+
import { dateTimeFromDate } from "./luxonUtils.js";
|
|
15
10
|
|
|
16
11
|
/**
|
|
17
12
|
* Encodes a string to Base64 URL-safe format
|
|
@@ -160,7 +155,7 @@ export function ticketListStrToTicketList(
|
|
|
160
155
|
let ticketDateTimeFormattedStr: string | undefined = undefined;
|
|
161
156
|
|
|
162
157
|
if (ticketDateTime.isValid) {
|
|
163
|
-
ticketDateTimeFormattedStr =
|
|
158
|
+
ticketDateTimeFormattedStr = ticketDateTime.toISO() ?? undefined;
|
|
164
159
|
}
|
|
165
160
|
|
|
166
161
|
ticketNumAndDatesArr.push({
|