@apex-inc/capacitor-plugin 0.3.9 → 2.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.
Files changed (73) hide show
  1. package/README.md +5 -5
  2. package/android/build.gradle +4 -2
  3. package/android/src/main/AndroidManifest.xml +35 -3
  4. package/android/src/main/java/inc/apex/capacitor/ApexCapacitorPlugin.kt +404 -7
  5. package/android/src/main/java/inc/apex/capacitor/ApexEvents.kt +122 -0
  6. package/android/src/main/java/inc/apex/capacitor/ApexFirebaseMessagingService.kt +99 -0
  7. package/android/src/main/java/inc/apex/capacitor/NativeBatchSender.kt +260 -0
  8. package/dist/batch-sender.d.ts +16 -4
  9. package/dist/batch-sender.d.ts.map +1 -1
  10. package/dist/batch-sender.js +29 -4
  11. package/dist/batch-sender.js.map +1 -1
  12. package/dist/cart-helpers.d.ts +63 -0
  13. package/dist/cart-helpers.d.ts.map +1 -0
  14. package/dist/cart-helpers.js +50 -0
  15. package/dist/cart-helpers.js.map +1 -0
  16. package/dist/definitions.d.ts +150 -5
  17. package/dist/definitions.d.ts.map +1 -1
  18. package/dist/esm/batch-sender.d.ts +16 -4
  19. package/dist/esm/batch-sender.d.ts.map +1 -1
  20. package/dist/esm/batch-sender.js +29 -4
  21. package/dist/esm/batch-sender.js.map +1 -1
  22. package/dist/esm/cart-helpers.d.ts +63 -0
  23. package/dist/esm/cart-helpers.d.ts.map +1 -0
  24. package/dist/esm/cart-helpers.js +44 -0
  25. package/dist/esm/cart-helpers.js.map +1 -0
  26. package/dist/esm/definitions.d.ts +150 -5
  27. package/dist/esm/definitions.d.ts.map +1 -1
  28. package/dist/esm/events.d.ts +85 -0
  29. package/dist/esm/events.d.ts.map +1 -0
  30. package/dist/esm/events.js +96 -0
  31. package/dist/esm/events.js.map +1 -0
  32. package/dist/esm/index.d.ts +5 -6
  33. package/dist/esm/index.d.ts.map +1 -1
  34. package/dist/esm/index.js +20 -2
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/offline-queue.d.ts +15 -0
  37. package/dist/esm/offline-queue.d.ts.map +1 -1
  38. package/dist/esm/offline-queue.js +35 -0
  39. package/dist/esm/offline-queue.js.map +1 -1
  40. package/dist/esm/screen-view.d.ts +18 -0
  41. package/dist/esm/screen-view.d.ts.map +1 -0
  42. package/dist/esm/screen-view.js +28 -0
  43. package/dist/esm/screen-view.js.map +1 -0
  44. package/dist/esm/web.d.ts +29 -1
  45. package/dist/esm/web.d.ts.map +1 -1
  46. package/dist/esm/web.js +167 -2
  47. package/dist/esm/web.js.map +1 -1
  48. package/dist/events.d.ts +85 -0
  49. package/dist/events.d.ts.map +1 -0
  50. package/dist/events.js +99 -0
  51. package/dist/events.js.map +1 -0
  52. package/dist/index.d.ts +5 -6
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +28 -3
  55. package/dist/index.js.map +1 -1
  56. package/dist/offline-queue.d.ts +15 -0
  57. package/dist/offline-queue.d.ts.map +1 -1
  58. package/dist/offline-queue.js +35 -0
  59. package/dist/offline-queue.js.map +1 -1
  60. package/dist/screen-view.d.ts +18 -0
  61. package/dist/screen-view.d.ts.map +1 -0
  62. package/dist/screen-view.js +31 -0
  63. package/dist/screen-view.js.map +1 -0
  64. package/dist/web.d.ts +29 -1
  65. package/dist/web.d.ts.map +1 -1
  66. package/dist/web.js +167 -2
  67. package/dist/web.js.map +1 -1
  68. package/ios/Sources/ApexCapacitorPlugin/ApexEvents.swift +124 -0
  69. package/ios/Sources/ApexCapacitorPlugin/BatchSender.swift +24 -6
  70. package/ios/Sources/ApexCapacitorPlugin/OfflineQueue.swift +19 -0
  71. package/ios/Sources/ApexCapacitorPlugin/PushNotificationManager.swift +47 -0
  72. package/ios/Sources/ApexCapacitorPluginBridge/ApexCapacitorPlugin.swift +288 -28
  73. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ /**
2
+ * MOBX-006 — screen-tracking convenience helper.
3
+ *
4
+ * The install-step copy promises "app_open and screen_view fire
5
+ * automatically"; `app_open` is auto-fired by `initialize()` (web.ts),
6
+ * and this helper is the one-liner apps drop into their navigation
7
+ * layer (router listener, `useEffect` on route change, etc.) so
8
+ * `screen_view` events land in the spec's canonical shape
9
+ * (`screen_name` / `previous_screen` — see `apex-spec/events.ts`).
10
+ *
11
+ * Delegates to `Apex.track()` so the offline queue / batch sender /
12
+ * session manager paths stay unchanged.
13
+ */
14
+ /** Track a mobile screen render (the native equivalent of `page_view`). */
15
+ export declare function trackScreenView(screenName: string, opts?: {
16
+ previousScreen?: string;
17
+ }): Promise<void>;
18
+ //# sourceMappingURL=screen-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-view.d.ts","sourceRoot":"","sources":["../../src/screen-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,2EAA2E;AAC3E,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * MOBX-006 — screen-tracking convenience helper.
3
+ *
4
+ * The install-step copy promises "app_open and screen_view fire
5
+ * automatically"; `app_open` is auto-fired by `initialize()` (web.ts),
6
+ * and this helper is the one-liner apps drop into their navigation
7
+ * layer (router listener, `useEffect` on route change, etc.) so
8
+ * `screen_view` events land in the spec's canonical shape
9
+ * (`screen_name` / `previous_screen` — see `apex-spec/events.ts`).
10
+ *
11
+ * Delegates to `Apex.track()` so the offline queue / batch sender /
12
+ * session manager paths stay unchanged.
13
+ */
14
+ import { Apex } from "./index";
15
+ import { ApexEvents } from "./events";
16
+ /** Track a mobile screen render (the native equivalent of `page_view`). */
17
+ export async function trackScreenView(screenName, opts) {
18
+ await Apex.track({
19
+ type: ApexEvents.ScreenView,
20
+ data: {
21
+ screen_name: screenName,
22
+ ...(opts?.previousScreen
23
+ ? { previous_screen: opts.previousScreen }
24
+ : {}),
25
+ },
26
+ });
27
+ }
28
+ //# sourceMappingURL=screen-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-view.js","sourceRoot":"","sources":["../../src/screen-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,IAAkC;IAElC,MAAM,IAAI,CAAC,KAAK,CAAC;QACf,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B,IAAI,EAAE;YACJ,WAAW,EAAE,UAAU;YACvB,GAAG,CAAC,IAAI,EAAE,cAAc;gBACtB,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAC;AACL,CAAC"}
package/dist/esm/web.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * in separate files so unit tests can cover them without DOM mocking.
12
12
  */
13
13
  import { WebPlugin } from "@capacitor/core";
14
- import type { AdvertisingIdResult, ApexCapacitorPlugin, ApexEvent, AttStatus, DeviceInfo, FlushResult, InitializeOptions, PushRegistrationResult, QueueStatus, SessionInfo, SkanCoarseValue, VariantAssignmentResult } from "./definitions";
14
+ import type { AdvertisingIdResult, ApexCapacitorPlugin, ApexEvent, AttStatus, DeviceInfo, FlushResult, IdentifyOptions, InitializeOptions, PushRegistrationResult, QueueStatus, SessionInfo, SkanCoarseValue, VariantAssignmentResult } from "./definitions";
15
15
  export declare class ApexCapacitorWeb extends WebPlugin implements ApexCapacitorPlugin {
16
16
  private queue?;
17
17
  private session?;
@@ -20,6 +20,18 @@ export declare class ApexCapacitorWeb extends WebPlugin implements ApexCapacitor
20
20
  private testMode;
21
21
  private debug;
22
22
  private initialized;
23
+ /** Workspace-bound SDK key forwarded as `x-apex-api-key`. */
24
+ private apiKey?;
25
+ /** Resolved API base URL — also used by identify(). */
26
+ private apiBaseUrl;
27
+ /** Workspace key from initialize — used by identify(). */
28
+ private workspaceKey?;
29
+ /**
30
+ * MOBX-006 — has an `app_open` (manual or auto) been tracked by
31
+ * this instance? Set synchronously at the top of `track()` so a
32
+ * manual fire in the same tick beats the deferred auto-fire below.
33
+ */
34
+ private appOpenTracked;
23
35
  initialize(options: InitializeOptions): Promise<void>;
24
36
  requestTrackingAuthorization(): Promise<{
25
37
  status: AttStatus;
@@ -43,6 +55,22 @@ export declare class ApexCapacitorWeb extends WebPlugin implements ApexCapacitor
43
55
  setVisitorId(options: {
44
56
  visitorId: string;
45
57
  }): Promise<void>;
58
+ /**
59
+ * Phase 2-SDK (council-revised plan). Posts to
60
+ * `${apiBaseUrl}/api/identity/stitch` with the current visitorId,
61
+ * the supplied email, optional userId + traits, and the workspace-
62
+ * bound API key (when set). The server stamps the resulting Contact
63
+ * `verifiedAt = now` and runs the verified-mode downstream pipeline
64
+ * (affiliate stamping, scoring, journey dispatch).
65
+ *
66
+ * Failures are surfaced as thrown errors so the caller can decide
67
+ * whether to retry. Network failures specifically should be
68
+ * recoverable — the SDK does not currently retry identify because
69
+ * promoting on the second attempt is identical to promoting on the
70
+ * first; merchants typically wire identify behind a one-shot
71
+ * boundary (signup-complete hook, auth-state-change listener).
72
+ */
73
+ identify(options: IdentifyOptions): Promise<void>;
46
74
  updateConversionValue(_options: {
47
75
  fineValue: number;
48
76
  coarseValue?: SkanCoarseValue;
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,eAAe,EACf,uBAAuB,EACxB,MAAM,eAAe,CAAC;AAQvB,qBAAa,gBAAiB,SAAQ,SAAU,YAAW,mBAAmB;IAC5E,OAAO,CAAC,KAAK,CAAC,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAEtB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCrD,4BAA4B,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IAI9D,iBAAiB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IAIzD;;;;OAIG;IACG,4BAA4B,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI/D,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIhD,kBAAkB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAI1D,YAAY,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAO9C,YAAY,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,qBAAqB,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,eAAe,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIX,kBAAkB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAOrD,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAiBpC,YAAY,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAM9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ/C;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA2E;IAE5F,UAAU,CAAC,OAAO,EAAE;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqD9B,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CtC,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IASpC,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAMlC,WAAW,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,iBAAiB;CAK1B"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
package/dist/esm/web.js CHANGED
@@ -16,12 +16,81 @@ import { generateEventId, isValidEventId } from "./event-id";
16
16
  import { IndexedDBStorage, InMemoryStorage, OfflineQueue } from "./offline-queue";
17
17
  import { SessionManager } from "./session-manager";
18
18
  const VISITOR_ID_KEY = "apex.visitorId";
19
+ /** Copies `fields` onto `target`, skipping `undefined` values. */
20
+ function assignDefined(target, fields) {
21
+ for (const [key, value] of Object.entries(fields)) {
22
+ if (value !== undefined)
23
+ target[key] = value;
24
+ }
25
+ }
26
+ /**
27
+ * MOBX-006 (plugin/spec parity) — workspace the typed `purchase` /
28
+ * `subscription` contexts into the event's `data` bag using the Apex
29
+ * Spec's snake_case field names (the `in_app_purchase` /
30
+ * `subscription_event` shapes in `apex-spec/events.ts`).
31
+ *
32
+ * Why: the server's wiring detection, journey triggers, and template
33
+ * variables all read the snake_case spec fields from `data`
34
+ * (`order_id`, `value`, `currency`, `product_id`, …). The typed
35
+ * contexts are persisted verbatim under `event.purchase` /
36
+ * `event.subscription`, but nothing translated their camelCase fields
37
+ * into the data bag — so a developer using the typed contract got an
38
+ * event that LOOKED right but never matched the spec's field shapes.
39
+ *
40
+ * Precedence: anything the developer explicitly set in `data` wins —
41
+ * we only fill fields they did not provide.
42
+ */
43
+ function projectTypedContextsIntoData(event) {
44
+ const projected = {};
45
+ const p = event.purchase;
46
+ if (p) {
47
+ assignDefined(projected, {
48
+ // The spec's `in_app_purchase` has no dedicated transaction
49
+ // field as the order identity, so the store transaction id is
50
+ // the best stable order id; fall back to the product id.
51
+ order_id: p.transactionId ?? p.productId,
52
+ value: p.amount,
53
+ currency: p.currency,
54
+ product_id: p.productId,
55
+ // Not part of the typed contract, but projected when a caller
56
+ // passes it through anyway (the context is open at runtime).
57
+ product_name: p.productName,
58
+ transaction_id: p.transactionId,
59
+ is_restored: p.isRestored,
60
+ });
61
+ }
62
+ const s = event.subscription;
63
+ if (s) {
64
+ assignDefined(projected, {
65
+ product_id: s.productId,
66
+ action: s.action,
67
+ amount: s.amount,
68
+ currency: s.currency,
69
+ period_type: s.periodType,
70
+ transaction_id: s.transactionId,
71
+ expires_at: s.expiresAt,
72
+ is_trial: s.isTrial,
73
+ });
74
+ }
75
+ if (Object.keys(projected).length === 0)
76
+ return event.data;
77
+ // Explicit developer-set data wins over projected fields.
78
+ return { ...projected, ...(event.data ?? {}) };
79
+ }
19
80
  export class ApexCapacitorWeb extends WebPlugin {
20
81
  constructor() {
21
82
  super(...arguments);
22
83
  this.testMode = false;
23
84
  this.debug = false;
24
85
  this.initialized = false;
86
+ /** Resolved API base URL — also used by identify(). */
87
+ this.apiBaseUrl = "https://app.apex.inc";
88
+ /**
89
+ * MOBX-006 — has an `app_open` (manual or auto) been tracked by
90
+ * this instance? Set synchronously at the top of `track()` so a
91
+ * manual fire in the same tick beats the deferred auto-fire below.
92
+ */
93
+ this.appOpenTracked = false;
25
94
  /**
26
95
  * In-memory assignment cache. Keyed by experimentId; entry contains the
27
96
  * result and the fetch timestamp. Never exceeds this set within a session.
@@ -33,6 +102,15 @@ export class ApexCapacitorWeb extends WebPlugin {
33
102
  return;
34
103
  this.testMode = options.testMode ?? false;
35
104
  this.debug = options.debug ?? false;
105
+ this.apiKey = options.apiKey;
106
+ // `projectKey` is the deprecated permanent alias (2026-06 rename).
107
+ this.workspaceKey = options.workspaceKey ?? options.projectKey ?? "";
108
+ if (!this.workspaceKey) {
109
+ throw new Error("Apex.initialize: `workspaceKey` is required");
110
+ }
111
+ if (options.apiUrl) {
112
+ this.apiBaseUrl = options.apiUrl.replace(/\/+$/, "");
113
+ }
36
114
  const storage = typeof indexedDB !== "undefined" ? new IndexedDBStorage() : new InMemoryStorage();
37
115
  this.queue = new OfflineQueue({
38
116
  storage,
@@ -49,12 +127,35 @@ export class ApexCapacitorWeb extends WebPlugin {
49
127
  });
50
128
  this.sender = new BatchSender({
51
129
  apiUrl: options.apiUrl,
52
- projectKey: options.projectKey,
130
+ workspaceKey: options.workspaceKey,
53
131
  platformHeader: "web",
132
+ apiKey: this.apiKey,
54
133
  debug: this.debug,
55
134
  });
56
135
  this.visitorId = this.loadOrCreateVisitorId();
57
136
  this.initialized = true;
137
+ // MOBX-006 — auto-fire one `app_open` (source: "launch") per page
138
+ // load. The install-step copy promises "app_open and screen_view
139
+ // fire automatically"; before this, only apps that wired the call
140
+ // themselves ever lit up the lifecycle signal. Idempotency:
141
+ // • instance flag (`appOpenTracked`) + the memoized web-impl
142
+ // factory in index.ts → at most one auto fire per page load;
143
+ // • `initialize()` early-returns when already initialized, so
144
+ // repeat init calls can't re-arm the timer;
145
+ // • the fire is deferred one macrotask so an app that fires its
146
+ // own app_open right after `await initialize()` wins — their
147
+ // track() sets the flag synchronously and we skip ours.
148
+ // Skipped outside a window context (SSR / Node): without a
149
+ // foregrounded UI there is no "app open" to report.
150
+ if (typeof window !== "undefined") {
151
+ setTimeout(() => {
152
+ if (this.appOpenTracked)
153
+ return;
154
+ void this.track({ type: "app_open", data: { source: "launch" } }).catch(() => {
155
+ /* best-effort — never throw from a timer */
156
+ });
157
+ }, 0);
158
+ }
58
159
  }
59
160
  async requestTrackingAuthorization() {
60
161
  return { status: "authorized" };
@@ -86,6 +187,55 @@ export class ApexCapacitorWeb extends WebPlugin {
86
187
  this.visitorId = options.visitorId;
87
188
  this.saveVisitorId(options.visitorId);
88
189
  }
190
+ /**
191
+ * Phase 2-SDK (council-revised plan). Posts to
192
+ * `${apiBaseUrl}/api/identity/stitch` with the current visitorId,
193
+ * the supplied email, optional userId + traits, and the workspace-
194
+ * bound API key (when set). The server stamps the resulting Contact
195
+ * `verifiedAt = now` and runs the verified-mode downstream pipeline
196
+ * (affiliate stamping, scoring, journey dispatch).
197
+ *
198
+ * Failures are surfaced as thrown errors so the caller can decide
199
+ * whether to retry. Network failures specifically should be
200
+ * recoverable — the SDK does not currently retry identify because
201
+ * promoting on the second attempt is identical to promoting on the
202
+ * first; merchants typically wire identify behind a one-shot
203
+ * boundary (signup-complete hook, auth-state-change listener).
204
+ */
205
+ async identify(options) {
206
+ this.ensureInitialized();
207
+ const email = options.email?.trim();
208
+ if (!email) {
209
+ throw new Error("Apex.identify: `email` is required.");
210
+ }
211
+ const visitorId = this.visitorId ?? this.loadOrCreateVisitorId();
212
+ const url = `${this.apiBaseUrl}/api/identity/stitch`;
213
+ const headers = {
214
+ "Content-Type": "application/json",
215
+ "x-apex-source": "sdk",
216
+ };
217
+ if (this.apiKey)
218
+ headers["x-apex-api-key"] = this.apiKey;
219
+ if (this.workspaceKey)
220
+ headers["x-apex-workspace"] = this.workspaceKey;
221
+ const body = {
222
+ visitorId,
223
+ email,
224
+ workspaceKey: this.workspaceKey,
225
+ ...(options.userId ? { userId: options.userId } : {}),
226
+ ...(options.traits ? { metadata: options.traits } : {}),
227
+ timestamp: new Date().toISOString(),
228
+ };
229
+ const res = await fetch(url, {
230
+ method: "POST",
231
+ headers,
232
+ body: JSON.stringify(body),
233
+ });
234
+ if (!res.ok) {
235
+ const detail = await res.text().catch(() => "");
236
+ throw new Error(`Apex.identify: server rejected (HTTP ${res.status}) ${detail}`.trim());
237
+ }
238
+ }
89
239
  async updateConversionValue(_options) {
90
240
  // No-op on web / non-iOS.
91
241
  }
@@ -108,6 +258,9 @@ export class ApexCapacitorWeb extends WebPlugin {
108
258
  bundleId: typeof location !== "undefined" ? location.host : "web",
109
259
  timezone: tz,
110
260
  locale,
261
+ // Web events never get a `releaseChannel` — they don't represent a
262
+ // native build at all. The dashboard build filter is mobile-scoped
263
+ // and skips web events entirely (see `audienceOf()` server-side).
111
264
  };
112
265
  }
113
266
  async startSession() {
@@ -137,7 +290,7 @@ export class ApexCapacitorWeb extends WebPlugin {
137
290
  }
138
291
  // The SDK calls the unified assign endpoint so it receives the rich
139
292
  // mobile-surface payload alongside the variant key.
140
- const apiUrl = this.sender?.getApiUrl() ?? "https://api.apex.inc";
293
+ const apiUrl = this.sender?.getApiUrl() ?? "https://app.apex.inc";
141
294
  const url = `${apiUrl.replace(/\/$/, "")}/api/experiments/${encodeURIComponent(experimentId)}/assign?unified=true&source=sdk`;
142
295
  try {
143
296
  const res = await fetch(url, {
@@ -177,6 +330,8 @@ export class ApexCapacitorWeb extends WebPlugin {
177
330
  }
178
331
  async track(event) {
179
332
  this.ensureInitialized();
333
+ if (event.type === "app_open")
334
+ this.appOpenTracked = true;
180
335
  const sessionSnapshot = this.session.recordActivity();
181
336
  // Mirror the iOS/Android native plugins: stamp testMode, platform,
182
337
  // visitorId, and timestamp at the TOP LEVEL of every event (not
@@ -196,6 +351,12 @@ export class ApexCapacitorWeb extends WebPlugin {
196
351
  // The native plugins fixed this in MMP-205 / MMP-207. The web
197
352
  // fallback was missed at the time and silently broke browser-
198
353
  // based dogfooding (Vite dev, browser preview).
354
+ // MMP-081 — web fallback always stamps `capacitor-webview` so the
355
+ // server can flag merchants who installed the Capacitor plugin but
356
+ // didn't wire the native plugin. The Mobile Measurement dashboard
357
+ // surfaces a warning when a workspace's mobile events are
358
+ // disproportionately `capacitor-webview` (loses IDFA, store
359
+ // receipts, install referrer, deep links).
199
360
  const stamped = {
200
361
  ...event,
201
362
  id: event.id ?? generateEventId(),
@@ -203,7 +364,11 @@ export class ApexCapacitorWeb extends WebPlugin {
203
364
  sessionId: event.sessionId ?? sessionSnapshot.sessionId,
204
365
  visitorId: event.visitorId ?? this.visitorId,
205
366
  platform: event.platform ?? "web",
367
+ clientType: event.clientType ?? "capacitor-webview",
206
368
  testMode: event.testMode ?? (this.testMode ? true : undefined),
369
+ // MOBX-006 — mirror the typed purchase/subscription contexts
370
+ // into `data` under the spec's snake_case names (see helper).
371
+ data: projectTypedContextsIntoData(event),
207
372
  };
208
373
  if (stamped.id && !isValidEventId(stamped.id)) {
209
374
  // Developer mis-set id — overwrite rather than fail the track() call.
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Apex Spec — canonical event name constants for `@apex-inc/capacitor-plugin`.
3
+ *
4
+ * Hand-authored from the registry at `app/src/lib/core/apex-spec/events.ts`.
5
+ * Kept in sync via the parity test at
6
+ * `app/src/lib/core/apex-spec/__tests__/sdk-parity.test.ts` — that test fails
7
+ * CI if a canonical name is added/renamed/removed in the registry without a
8
+ * matching update here.
9
+ *
10
+ * Usage:
11
+ *
12
+ * ```ts
13
+ * import { Apex, ApexEvents } from "@apex-inc/capacitor-plugin";
14
+ *
15
+ * await Apex.track({ type: ApexEvents.AddToCart, data: { product_id: "sku_123", value: 49 } });
16
+ * ```
17
+ *
18
+ * Each constant is the unversioned canonical name as the developer writes it
19
+ * in `track()` calls. Versions are an internal storage primitive; the SDK
20
+ * never carries a version field.
21
+ */
22
+ export declare const ApexEvents: {
23
+ readonly AddToCart: "add_to_cart";
24
+ readonly RemoveFromCart: "remove_from_cart";
25
+ readonly ProductView: "product_view";
26
+ readonly AddToWishlist: "add_to_wishlist";
27
+ readonly CheckoutStarted: "checkout_started";
28
+ readonly InAppPurchase: "in_app_purchase";
29
+ readonly PurchaseRefunded: "purchase_refunded";
30
+ readonly SubscriptionEvent: "subscription_event";
31
+ readonly OrderPlaced: "order_placed";
32
+ readonly FirstSaleCompleted: "first_sale_completed";
33
+ readonly PriceDropped: "price_dropped";
34
+ readonly RestockDue: "restock_due";
35
+ readonly ReviewRequestDue: "review_request_due";
36
+ readonly UserSignedUp: "user_signed_up";
37
+ readonly UserSignedIn: "user_signed_in";
38
+ readonly UserSignedOut: "user_signed_out";
39
+ readonly UserIdentified: "user_identified";
40
+ readonly AppInstall: "app_install";
41
+ readonly AppOpen: "app_open";
42
+ readonly AppBackground: "app_background";
43
+ readonly AppUninstall: "app_uninstall";
44
+ readonly AppReinstall: "app_reinstall";
45
+ readonly SessionStart: "session_start";
46
+ readonly SessionEnd: "session_end";
47
+ readonly PageView: "page_view";
48
+ readonly Pageview: "pageview";
49
+ readonly ScreenView: "screen_view";
50
+ readonly Search: "search";
51
+ readonly Share: "share";
52
+ readonly ContentView: "content_view";
53
+ readonly FormSubmit: "form_submit";
54
+ readonly Click: "click";
55
+ readonly Engagement: "engagement";
56
+ readonly Heartbeat: "heartbeat";
57
+ readonly RageClick: "rage_click";
58
+ readonly DeadClick: "dead_click";
59
+ readonly GoalConversion: "goal_conversion";
60
+ readonly OnboardingStepCompleted: "onboarding_step_completed";
61
+ readonly OnboardingCompleted: "onboarding_completed";
62
+ readonly Activated: "activated";
63
+ readonly PushReceived: "push_received";
64
+ readonly PushOpened: "push_opened";
65
+ readonly EmailOpened: "email_opened";
66
+ readonly EmailClicked: "email_clicked";
67
+ readonly InAppMessageSeen: "in_app_message_seen";
68
+ readonly InAppMessageClicked: "in_app_message_clicked";
69
+ readonly DeepLinkOpen: "deep_link_open";
70
+ readonly Reattribution: "reattribution";
71
+ readonly Reengagement: "reengagement";
72
+ readonly SmartBannerImpression: "smart_banner_impression";
73
+ readonly SmartBannerClick: "smart_banner_click";
74
+ readonly SmartBannerDismiss: "smart_banner_dismiss";
75
+ readonly Custom: "custom";
76
+ readonly LifecycleTransition: "lifecycle_transition";
77
+ readonly JsError: "js_error";
78
+ };
79
+ export type ApexEventName = (typeof ApexEvents)[keyof typeof ApexEvents];
80
+ /**
81
+ * Apex Spec semver this SDK implements. Bumped together with
82
+ * `APEX_SPEC_VERSION` in `app/src/lib/core/apex-spec/events.ts`.
83
+ */
84
+ export declare const APEX_SPEC_VERSION = "1.1.0";
85
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Eb,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAC"}
package/dist/events.js ADDED
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * Apex Spec — canonical event name constants for `@apex-inc/capacitor-plugin`.
4
+ *
5
+ * Hand-authored from the registry at `app/src/lib/core/apex-spec/events.ts`.
6
+ * Kept in sync via the parity test at
7
+ * `app/src/lib/core/apex-spec/__tests__/sdk-parity.test.ts` — that test fails
8
+ * CI if a canonical name is added/renamed/removed in the registry without a
9
+ * matching update here.
10
+ *
11
+ * Usage:
12
+ *
13
+ * ```ts
14
+ * import { Apex, ApexEvents } from "@apex-inc/capacitor-plugin";
15
+ *
16
+ * await Apex.track({ type: ApexEvents.AddToCart, data: { product_id: "sku_123", value: 49 } });
17
+ * ```
18
+ *
19
+ * Each constant is the unversioned canonical name as the developer writes it
20
+ * in `track()` calls. Versions are an internal storage primitive; the SDK
21
+ * never carries a version field.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.APEX_SPEC_VERSION = exports.ApexEvents = void 0;
25
+ exports.ApexEvents = {
26
+ // Commerce
27
+ AddToCart: "add_to_cart",
28
+ RemoveFromCart: "remove_from_cart",
29
+ ProductView: "product_view",
30
+ AddToWishlist: "add_to_wishlist",
31
+ CheckoutStarted: "checkout_started",
32
+ InAppPurchase: "in_app_purchase",
33
+ PurchaseRefunded: "purchase_refunded",
34
+ SubscriptionEvent: "subscription_event",
35
+ OrderPlaced: "order_placed",
36
+ FirstSaleCompleted: "first_sale_completed",
37
+ // Marketing (merchant-fired triggers)
38
+ PriceDropped: "price_dropped",
39
+ RestockDue: "restock_due",
40
+ ReviewRequestDue: "review_request_due",
41
+ // Identity
42
+ UserSignedUp: "user_signed_up",
43
+ UserSignedIn: "user_signed_in",
44
+ UserSignedOut: "user_signed_out",
45
+ UserIdentified: "user_identified",
46
+ // Lifecycle
47
+ AppInstall: "app_install",
48
+ AppOpen: "app_open",
49
+ AppBackground: "app_background",
50
+ AppUninstall: "app_uninstall",
51
+ AppReinstall: "app_reinstall",
52
+ // Session
53
+ SessionStart: "session_start",
54
+ SessionEnd: "session_end",
55
+ // Engagement
56
+ PageView: "page_view",
57
+ Pageview: "pageview",
58
+ ScreenView: "screen_view",
59
+ Search: "search",
60
+ Share: "share",
61
+ ContentView: "content_view",
62
+ FormSubmit: "form_submit",
63
+ Click: "click",
64
+ Engagement: "engagement",
65
+ Heartbeat: "heartbeat",
66
+ RageClick: "rage_click",
67
+ DeadClick: "dead_click",
68
+ GoalConversion: "goal_conversion",
69
+ OnboardingStepCompleted: "onboarding_step_completed",
70
+ // Product (PLG lifecycle outcomes)
71
+ OnboardingCompleted: "onboarding_completed",
72
+ Activated: "activated",
73
+ // Communication
74
+ PushReceived: "push_received",
75
+ PushOpened: "push_opened",
76
+ EmailOpened: "email_opened",
77
+ EmailClicked: "email_clicked",
78
+ InAppMessageSeen: "in_app_message_seen",
79
+ InAppMessageClicked: "in_app_message_clicked",
80
+ // Deep link
81
+ DeepLinkOpen: "deep_link_open",
82
+ // Attribution
83
+ Reattribution: "reattribution",
84
+ Reengagement: "reengagement",
85
+ // Smart banner
86
+ SmartBannerImpression: "smart_banner_impression",
87
+ SmartBannerClick: "smart_banner_click",
88
+ SmartBannerDismiss: "smart_banner_dismiss",
89
+ // System
90
+ Custom: "custom",
91
+ LifecycleTransition: "lifecycle_transition",
92
+ JsError: "js_error",
93
+ };
94
+ /**
95
+ * Apex Spec semver this SDK implements. Bumped together with
96
+ * `APEX_SPEC_VERSION` in `app/src/lib/core/apex-spec/events.ts`.
97
+ */
98
+ exports.APEX_SPEC_VERSION = "1.1.0";
99
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEU,QAAA,UAAU,GAAG;IACxB,WAAW;IACX,SAAS,EAAE,aAAa;IACxB,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,iBAAiB;IAChC,eAAe,EAAE,kBAAkB;IACnC,aAAa,EAAE,iBAAiB;IAChC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,WAAW,EAAE,cAAc;IAC3B,kBAAkB,EAAE,sBAAsB;IAE1C,sCAAsC;IACtC,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,oBAAoB;IAEtC,WAAW;IACX,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,iBAAiB;IAEjC,YAAY;IACZ,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAE7B,UAAU;IACV,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IAEzB,aAAa;IACb,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,aAAa;IACzB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,cAAc,EAAE,iBAAiB;IACjC,uBAAuB,EAAE,2BAA2B;IAEpD,mCAAmC;IACnC,mBAAmB,EAAE,sBAAsB;IAC3C,SAAS,EAAE,WAAW;IAEtB,gBAAgB;IAChB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,gBAAgB,EAAE,qBAAqB;IACvC,mBAAmB,EAAE,wBAAwB;IAE7C,YAAY;IACZ,YAAY,EAAE,gBAAgB;IAE9B,cAAc;IACd,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAE5B,eAAe;IACf,qBAAqB,EAAE,yBAAyB;IAChD,gBAAgB,EAAE,oBAAoB;IACtC,kBAAkB,EAAE,sBAAsB;IAE1C,SAAS;IACT,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,sBAAsB;IAC3C,OAAO,EAAE,UAAU;CACX,CAAC;AAIX;;;GAGG;AACU,QAAA,iBAAiB,GAAG,OAAO,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,16 +7,11 @@
7
7
  * ```ts
8
8
  * import { Apex } from "@apex-inc/capacitor-plugin";
9
9
  *
10
- * await Apex.initialize({ projectKey: "prj_..." });
10
+ * await Apex.initialize({ workspaceKey: "prj_..." });
11
11
  * await Apex.track({ type: "app_open" });
12
12
  * ```
13
13
  */
14
14
  import type { ApexCapacitorPlugin } from "./definitions";
15
- /**
16
- * Capacitor plugin proxy. In a native app, calls route through the bridge to
17
- * the iOS (Swift) or Android (Kotlin) implementation. In a web context
18
- * (browser or Capacitor PWA), the web fallback in `./web.ts` takes over.
19
- */
20
15
  export declare const Apex: ApexCapacitorPlugin;
21
16
  export * from "./definitions";
22
17
  export { OfflineQueue, InMemoryStorage, IndexedDBStorage } from "./offline-queue";
@@ -26,4 +21,8 @@ export type { SessionManagerOptions, SessionSnapshot } from "./session-manager";
26
21
  export { BatchSender } from "./batch-sender";
27
22
  export type { BatchSenderOptions, FlushResult as BatchFlushResult } from "./batch-sender";
28
23
  export { generateEventId, isValidEventId } from "./event-id";
24
+ export { ApexEvents, APEX_SPEC_VERSION } from "./events";
25
+ export type { ApexEventName } from "./events";
26
+ export { trackCartAdd, trackCartRemove, trackCartSnapshot, trackCheckoutCompleted, type CartLine, } from "./cart-helpers";
27
+ export { trackScreenView } from "./screen-view";
29
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,mBAKlB,CAAC;AAGF,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAgBzD,eAAO,MAAM,IAAI,EAAE,mBAQlB,CAAC;AAGF,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}