@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
@@ -737,24 +737,30 @@ var requestStoreReview = async (store) => {
737
737
 
738
738
  // src/analytics/reportClientEvent.ts
739
739
  var makeSessionId = () => `wire_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
740
+ var toWireEvents = (events) => events.map((event) => {
741
+ if (typeof event.ts !== "number") return event;
742
+ const { ts, ...rest } = event;
743
+ if (!Number.isFinite(ts)) return rest;
744
+ try {
745
+ return { ...rest, ts: new Date(ts).toISOString() };
746
+ } catch {
747
+ return rest;
748
+ }
749
+ });
740
750
  var buildEventsRequest = (target, events) => {
741
751
  if (!(target == null ? void 0 : target.serverUrl) || events.length === 0) return null;
742
752
  try {
743
753
  const url = `${target.serverUrl.replace(/\/$/, "")}/v1/events`;
744
754
  const headers = { "Content-Type": "application/json" };
745
755
  if (target.apiKey) headers.Authorization = `Bearer ${target.apiKey}`;
746
- return { url, init: { method: "POST", headers, body: JSON.stringify({ events }) } };
756
+ const body = JSON.stringify({ events: toWireEvents(events) });
757
+ return { url, init: { method: "POST", headers, body } };
747
758
  } catch {
748
759
  return null;
749
760
  }
750
761
  };
751
762
 
752
- // src/analytics/currentSession.ts
753
- var CURRENT_SESSION_ID_SLOT = /* @__PURE__ */ Symbol.for(
754
- "@wireai/activation:currentSessionId"
755
- );
756
- var globalSlot = globalThis;
757
- var getCurrentSessionId = () => globalSlot[CURRENT_SESSION_ID_SLOT];
763
+ // src/utils/warnInDev.ts
758
764
  var warnInDev = (message) => {
759
765
  if (typeof __DEV__ !== "undefined" && __DEV__ && typeof console !== "undefined" && console.warn) {
760
766
  console.warn(message);
@@ -762,6 +768,13 @@ var warnInDev = (message) => {
762
768
  }
763
769
  return false;
764
770
  };
771
+
772
+ // src/analytics/currentSession.ts
773
+ var CURRENT_SESSION_ID_SLOT = /* @__PURE__ */ Symbol.for(
774
+ "@wireai/activation:currentSessionId"
775
+ );
776
+ var globalSlot = globalThis;
777
+ var getCurrentSessionId = () => globalSlot[CURRENT_SESSION_ID_SLOT];
765
778
  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.";
766
779
  var MINT_WARNED_SLOT = /* @__PURE__ */ Symbol.for(
767
780
  "@wireai/activation:currentSessionIdMintWarned"