@wireai/activation 0.12.2 → 0.13.2

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 (55) hide show
  1. package/AGENTS.md +3 -1
  2. package/CHANGELOG.md +259 -1
  3. package/README.md +87 -3
  4. package/dist/analytics/index.d.mts +2 -2
  5. package/dist/analytics/index.d.ts +2 -2
  6. package/dist/analytics/index.js +174 -36
  7. package/dist/analytics/index.js.map +1 -1
  8. package/dist/analytics/index.mjs +174 -37
  9. package/dist/analytics/index.mjs.map +1 -1
  10. package/dist/{currentSession-BlCeDP0f.d.mts → currentSession-ClkLjcJ0.d.mts} +456 -19
  11. package/dist/{currentSession-BxEB37xt.d.ts → currentSession-DOVZEWJl.d.ts} +456 -19
  12. package/dist/index.d.mts +197 -16
  13. package/dist/index.d.ts +197 -16
  14. package/dist/index.js +1056 -390
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +836 -193
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/questionnaire/index.js.map +1 -1
  19. package/dist/questionnaire/index.mjs.map +1 -1
  20. package/dist/reviews/index.js +20 -7
  21. package/dist/reviews/index.js.map +1 -1
  22. package/dist/reviews/index.mjs +20 -7
  23. package/dist/reviews/index.mjs.map +1 -1
  24. package/package.json +1 -1
  25. package/src/OnboardingFlow.tsx +141 -3
  26. package/src/WireOnboarding.tsx +178 -34
  27. package/src/activation/wireActivation.ts +13 -7
  28. package/src/analytics/analyticsEvent.ts +16 -1
  29. package/src/analytics/analyticsFacade.ts +11 -10
  30. package/src/analytics/currentSession.ts +6 -20
  31. package/src/analytics/eventQueue.ts +71 -1
  32. package/src/analytics/index.ts +1 -1
  33. package/src/analytics/reportClientEvent.ts +157 -38
  34. package/src/cards/PermissionCard.tsx +438 -0
  35. package/src/cards/index.ts +7 -0
  36. package/src/config/wireConfigFromEnv.ts +1 -10
  37. package/src/context/deviceId.ts +77 -16
  38. package/src/context/userContext.ts +4 -15
  39. package/src/identity/identityRecord.ts +123 -0
  40. package/src/identity/userIdentity.ts +45 -9
  41. package/src/illustrations/defaultIllustrations.tsx +44 -3
  42. package/src/index.ts +44 -4
  43. package/src/permissions/index.ts +64 -0
  44. package/src/permissions/permissionCopy.ts +87 -0
  45. package/src/permissions/permissionEvents.ts +76 -0
  46. package/src/permissions/permissionMemory.ts +88 -0
  47. package/src/permissions/placement.ts +88 -0
  48. package/src/permissions/types.ts +131 -0
  49. package/src/session/persistedSession.ts +10 -3
  50. package/src/session-analytics/useLifecycleEvents.ts +10 -1
  51. package/src/types.ts +77 -1
  52. package/src/utils/deriveAnswers.ts +6 -2
  53. package/src/utils/readProgress.ts +4 -0
  54. package/src/utils/warnInDev.ts +33 -0
  55. package/src/components/DoneBlock.tsx +0 -37
@@ -731,24 +731,30 @@ var requestStoreReview = async (store) => {
731
731
 
732
732
  // src/analytics/reportClientEvent.ts
733
733
  var makeSessionId = () => `wire_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
734
+ var toWireEvents = (events) => events.map((event) => {
735
+ if (typeof event.ts !== "number") return event;
736
+ const { ts, ...rest } = event;
737
+ if (!Number.isFinite(ts)) return rest;
738
+ try {
739
+ return { ...rest, ts: new Date(ts).toISOString() };
740
+ } catch {
741
+ return rest;
742
+ }
743
+ });
734
744
  var buildEventsRequest = (target, events) => {
735
745
  if (!(target == null ? void 0 : target.serverUrl) || events.length === 0) return null;
736
746
  try {
737
747
  const url = `${target.serverUrl.replace(/\/$/, "")}/v1/events`;
738
748
  const headers = { "Content-Type": "application/json" };
739
749
  if (target.apiKey) headers.Authorization = `Bearer ${target.apiKey}`;
740
- return { url, init: { method: "POST", headers, body: JSON.stringify({ events }) } };
750
+ const body = JSON.stringify({ events: toWireEvents(events) });
751
+ return { url, init: { method: "POST", headers, body } };
741
752
  } catch {
742
753
  return null;
743
754
  }
744
755
  };
745
756
 
746
- // src/analytics/currentSession.ts
747
- var CURRENT_SESSION_ID_SLOT = /* @__PURE__ */ Symbol.for(
748
- "@wireai/activation:currentSessionId"
749
- );
750
- var globalSlot = globalThis;
751
- var getCurrentSessionId = () => globalSlot[CURRENT_SESSION_ID_SLOT];
757
+ // src/utils/warnInDev.ts
752
758
  var warnInDev = (message) => {
753
759
  if (typeof __DEV__ !== "undefined" && __DEV__ && typeof console !== "undefined" && console.warn) {
754
760
  console.warn(message);
@@ -756,6 +762,13 @@ var warnInDev = (message) => {
756
762
  }
757
763
  return false;
758
764
  };
765
+
766
+ // src/analytics/currentSession.ts
767
+ var CURRENT_SESSION_ID_SLOT = /* @__PURE__ */ Symbol.for(
768
+ "@wireai/activation:currentSessionId"
769
+ );
770
+ var globalSlot = globalThis;
771
+ var getCurrentSessionId = () => globalSlot[CURRENT_SESSION_ID_SLOT];
759
772
  var MINT_WARNING = "[wireai] No app-open session was registered, so a session id was minted for this event (the server drops an event that has no session_id, and still answers 200). Mount useLifecycleEvents at your app root so events correlate to a real app-open.";
760
773
  var MINT_WARNED_SLOT = /* @__PURE__ */ Symbol.for(
761
774
  "@wireai/activation:currentSessionIdMintWarned"