@epztickets/common 1.86.0 → 1.88.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.
@@ -0,0 +1,5 @@
1
+ import { CLASS_CATEGORIES } from "./orientation-scheduled-event";
2
+ export type ClassCategory = (typeof CLASS_CATEGORIES)[number]["value"];
3
+ export declare const CLASS_CATEGORY_VALUES: string[];
4
+ export declare const isClassCategory: (v: unknown) => v is ClassCategory;
5
+ export declare function inferClassCategory(title?: string | null): ClassCategory | undefined;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isClassCategory = exports.CLASS_CATEGORY_VALUES = void 0;
4
+ exports.inferClassCategory = inferClassCategory;
5
+ const orientation_scheduled_event_1 = require("./orientation-scheduled-event");
6
+ exports.CLASS_CATEGORY_VALUES = orientation_scheduled_event_1.CLASS_CATEGORIES.map((c) => c.value);
7
+ const isClassCategory = (v) => typeof v === "string" && exports.CLASS_CATEGORY_VALUES.includes(v);
8
+ exports.isClassCategory = isClassCategory;
9
+ // Best-effort guess of a category from a free-text class name
10
+ // ("Salsa basics" → dance, "BJJ open mat" → martial_arts). Used when a
11
+ // booking arrives without a category (AI chat agent, older clients)
12
+ // and to estimate categories for bookings made before categories
13
+ // existed. Returns undefined when nothing matches.
14
+ const KEYWORDS = [
15
+ ["martial_arts", /\b(karate|judo|jiu[- ]?jitsu|bjj|taekwondo|tae kwon do|kung fu|boxing|kickbox\w*|mma|muay thai|self[- ]defen[cs]e|aikido|capoeira|krav maga|wrestling)\b/],
16
+ ["yoga", /\b(yoga|pilates|meditat\w*|mindful\w*|stretch\w*|wellness|breathwork|sound bath|tai chi)\b/],
17
+ ["dance", /\b(danc\w*|salsa|bachata|ballet|hip[- ]?hop|tango|merengue|cumbia|contemporary|choreo\w*|tap|jazz funk|k-?pop|twerk|ballroom|swing|flamenco|folklorico|breakdanc\w*|heels)\b/],
18
+ ["fitness", /\b(fitness|hiit|boot ?camp|crossfit|zumba|workout|strength|spin(ning)?|cardio|barre|conditioning|circuit|bootcamp|personal training|training session)\b/],
19
+ ["singing", /\b(sing\w*|vocal\w*|voice|choir|chorus|karaoke|a cappella)\b/],
20
+ ["instrumental", /\b(guitar|piano|drum\w*|violin|viola|cello|bass|band|ukulele|sax\w*|trumpet|flute|clarinet|keyboard|instrument\w*|orchestra|jam session|dj)\b/],
21
+ ["theater", /\b(theat(er|re)|acting|actor\w*|drama|improv|audition\w*|scene study|monologue|musical theat(er|re)|stage combat)\b/],
22
+ ["workshop", /\b(workshop|lecture|seminar|talk|course|training|meeting|info session|q&a|panel)\b/],
23
+ ];
24
+ function inferClassCategory(title) {
25
+ if (!title)
26
+ return undefined;
27
+ const t = title.toLowerCase();
28
+ for (const [cat, rx] of KEYWORDS)
29
+ if (rx.test(t))
30
+ return cat;
31
+ return undefined;
32
+ }
@@ -13,6 +13,7 @@ export interface OrderCreatedEvent {
13
13
  buyerLastName?: string;
14
14
  ownerUserId?: string;
15
15
  classTitle?: string;
16
+ classCategory?: string;
16
17
  ambientEnergy?: AmbientEnergy;
17
18
  noiseLevel?: number;
18
19
  timezone?: string;
@@ -0,0 +1,12 @@
1
+ import { Subjects } from "./subjects";
2
+ export declare const DEFAULT_MONTHLY_FEE_CENTS = 0;
3
+ export declare const DEFAULT_COMMISSION_RATE = 0.1;
4
+ export interface OwnerPlanUpdatedEvent {
5
+ subject: Subjects.OwnerPlanUpdated;
6
+ data: {
7
+ ownerUserId: string;
8
+ monthlyFeeCents: number;
9
+ commissionRate: number;
10
+ updatedAt: string;
11
+ };
12
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_COMMISSION_RATE = exports.DEFAULT_MONTHLY_FEE_CENTS = void 0;
4
+ // Platform default for owners without a negotiated plan:
5
+ // no monthly fee, 10% commission on bookings made through the app.
6
+ exports.DEFAULT_MONTHLY_FEE_CENTS = 0;
7
+ exports.DEFAULT_COMMISSION_RATE = 0.1;
@@ -50,7 +50,8 @@ export declare enum Subjects {
50
50
  OrientationSettingsUpdated = "events.orientation.settings-updated",
51
51
  RenterApprovalChanged = "events.orientation.renter-approval-changed",
52
52
  OrientationScheduled = "events.orientation.scheduled",
53
- OrientationUpdated = "events.orientation.updated"
53
+ OrientationUpdated = "events.orientation.updated",
54
+ OwnerPlanUpdated = "events.owner-plan.updated"
54
55
  }
55
56
  export declare enum Streams {
56
57
  Events = "events",
@@ -160,6 +160,10 @@ var Subjects;
160
160
  Subjects["RenterApprovalChanged"] = "events.orientation.renter-approval-changed";
161
161
  Subjects["OrientationScheduled"] = "events.orientation.scheduled";
162
162
  Subjects["OrientationUpdated"] = "events.orientation.updated";
163
+ // Owner pricing plan (payments owns it): monthly fee + commission
164
+ // rate, negotiated per owner. orders mirrors the commission rate to
165
+ // snapshot it onto each booking.
166
+ Subjects["OwnerPlanUpdated"] = "events.owner-plan.updated";
163
167
  })(Subjects || (exports.Subjects = Subjects = {}));
164
168
  var Streams;
165
169
  (function (Streams) {
package/build/index.d.ts CHANGED
@@ -37,6 +37,8 @@ export * from "./events/orientation-settings-updated-event";
37
37
  export * from "./events/renter-approval-changed-event";
38
38
  export * from "./events/orientation-scheduled-event";
39
39
  export * from "./events/orientation-updated-event";
40
+ export * from "./events/class-category";
41
+ export * from "./events/owner-plan-updated-event";
40
42
  export * from "./events/order-cancelled-event";
41
43
  export * from "./events/order-completed-event";
42
44
  export * from "./events/order-created-event";
package/build/index.js CHANGED
@@ -57,6 +57,8 @@ __exportStar(require("./events/orientation-settings-updated-event"), exports);
57
57
  __exportStar(require("./events/renter-approval-changed-event"), exports);
58
58
  __exportStar(require("./events/orientation-scheduled-event"), exports);
59
59
  __exportStar(require("./events/orientation-updated-event"), exports);
60
+ __exportStar(require("./events/class-category"), exports);
61
+ __exportStar(require("./events/owner-plan-updated-event"), exports);
60
62
  __exportStar(require("./events/order-cancelled-event"), exports);
61
63
  __exportStar(require("./events/order-completed-event"), exports);
62
64
  __exportStar(require("./events/order-created-event"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epztickets/common",
3
- "version": "1.86.0",
3
+ "version": "1.88.0",
4
4
  "main": "./build/index.js",
5
5
  "types": "./build/index.d.ts",
6
6
  "files": [