@amplifyup/sdk 0.1.39 → 0.1.41

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.
@@ -102,6 +102,7 @@ var AWSAdapter = class {
102
102
  const eventData = {
103
103
  type: "page",
104
104
  anonymousId: properties.instanceId,
105
+ sessionId: properties.sessionId,
105
106
  userId: properties.userId,
106
107
  properties: {
107
108
  path: properties.path || properties.url,
@@ -144,6 +145,7 @@ var AWSAdapter = class {
144
145
  type: "track",
145
146
  event: eventName,
146
147
  anonymousId: properties.instanceId,
148
+ sessionId: properties.sessionId,
147
149
  userId: properties.userId,
148
150
  properties: {
149
151
  ...properties
@@ -166,6 +168,7 @@ var AWSAdapter = class {
166
168
  const eventData = {
167
169
  type: "identify",
168
170
  anonymousId: traits.instanceId,
171
+ sessionId: traits.sessionId,
169
172
  traits: {
170
173
  ...traits,
171
174
  ...identifiers ? { identifiers } : {}
@@ -184,6 +187,7 @@ var AWSAdapter = class {
184
187
  const eventData = {
185
188
  type: "set_fields",
186
189
  anonymousId: context.instanceId,
190
+ sessionId: context.sessionId,
187
191
  fields,
188
192
  traits: {
189
193
  instanceId: context.instanceId,
@@ -206,7 +210,11 @@ var AWSAdapter = class {
206
210
  // src/storage.ts
207
211
  var INSTANCE_ID_KEY = "amplifyup_instance_id";
208
212
  var USER_ID_KEY = "amplifyup_user_id";
213
+ var SESSION_ID_KEY = "amplifyup_session_id";
214
+ var SESSION_ACTIVITY_KEY = "amplifyup_session_activity";
209
215
  var ANON_COOKIE_NAME = "amplifyup_anon_id";
216
+ var SESSION_COOKIE_NAME = "amplifyup_session_id";
217
+ var SESSION_IDLE_GAP_MS = 30 * 60 * 1e3;
210
218
  function generateGuid() {
211
219
  if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
212
220
  return crypto.randomUUID();
@@ -233,9 +241,9 @@ function readCookie(name) {
233
241
  }
234
242
  return null;
235
243
  }
236
- function writeCookie(name, value) {
244
+ function writeCookie(name, value, maxAgeSeconds = 31536e3) {
237
245
  if (typeof document === "undefined") return;
238
- document.cookie = `${name}=${encodeURIComponent(value)}; Path=/; Max-Age=31536000; SameSite=Lax`;
246
+ document.cookie = `${name}=${encodeURIComponent(value)}; Path=/; Max-Age=${maxAgeSeconds}; SameSite=Lax`;
239
247
  }
240
248
  function getInstanceId() {
241
249
  if (typeof window === "undefined") {
@@ -258,6 +266,23 @@ function getUserId() {
258
266
  }
259
267
  return localStorage.getItem(USER_ID_KEY);
260
268
  }
269
+ function getSessionId() {
270
+ if (typeof window === "undefined") {
271
+ return "";
272
+ }
273
+ const now = Date.now();
274
+ const lastActivity = Number(localStorage.getItem(SESSION_ACTIVITY_KEY) || 0);
275
+ const fromCookie = readCookie(SESSION_COOKIE_NAME);
276
+ const fromLs = localStorage.getItem(SESSION_ID_KEY);
277
+ let sessionId = fromLs || fromCookie || "";
278
+ if (!sessionId || lastActivity > 0 && now - lastActivity >= SESSION_IDLE_GAP_MS) {
279
+ sessionId = generateGuid();
280
+ }
281
+ localStorage.setItem(SESSION_ID_KEY, sessionId);
282
+ localStorage.setItem(SESSION_ACTIVITY_KEY, String(now));
283
+ writeCookie(SESSION_COOKIE_NAME, sessionId, Math.floor(SESSION_IDLE_GAP_MS / 1e3));
284
+ return sessionId;
285
+ }
261
286
  function setUserId(userId) {
262
287
  if (typeof window === "undefined") {
263
288
  return;
@@ -270,7 +295,10 @@ function clearIds() {
270
295
  }
271
296
  localStorage.removeItem(INSTANCE_ID_KEY);
272
297
  localStorage.removeItem(USER_ID_KEY);
298
+ localStorage.removeItem(SESSION_ID_KEY);
299
+ localStorage.removeItem(SESSION_ACTIVITY_KEY);
273
300
  document.cookie = `${ANON_COOKIE_NAME}=; Path=/; Max-Age=0; SameSite=Lax`;
301
+ document.cookie = `${SESSION_COOKIE_NAME}=; Path=/; Max-Age=0; SameSite=Lax`;
274
302
  }
275
303
 
276
304
  // src/targets.ts
@@ -378,7 +406,6 @@ function isComposerPreview() {
378
406
  }
379
407
 
380
408
  // src/index.ts
381
- var SESSION_IDLE_GAP_MS = 30 * 60 * 1e3;
382
409
  var DWELL_ACTIVITY_IDLE_MS = 2 * 60 * 1e3;
383
410
  var DWELL_POLL_MS = 5e3;
384
411
  function readPreviewQueryOverrides() {
@@ -554,6 +581,7 @@ var AmplifyUpSDK = class {
554
581
  if (typeof window === "undefined") return;
555
582
  window.AmplifyUp = {
556
583
  getInstanceId: () => this.getInstanceId(),
584
+ getSessionId: () => this.getSessionId(),
557
585
  getUserId: () => this.getUserId(),
558
586
  getTrackingId: () => this.getTrackingId(),
559
587
  getTarget: () => this.getTarget(),
@@ -976,12 +1004,14 @@ var AmplifyUpSDK = class {
976
1004
  return;
977
1005
  }
978
1006
  const instanceId = getInstanceId();
1007
+ const sessionId = getSessionId();
979
1008
  const pageProperties = {
980
1009
  name: url,
981
1010
  path: url,
982
1011
  url: typeof window !== "undefined" ? window.location.href : url,
983
1012
  referrer: typeof document !== "undefined" ? document.referrer : void 0,
984
1013
  instanceId,
1014
+ sessionId,
985
1015
  trackingId: this.config?.trackingId,
986
1016
  // Timestamp is included in event payload
987
1017
  ...properties
@@ -1000,8 +1030,10 @@ var AmplifyUpSDK = class {
1000
1030
  return;
1001
1031
  }
1002
1032
  const instanceId = getInstanceId();
1033
+ const sessionId = getSessionId();
1003
1034
  const trackProperties = {
1004
1035
  instanceId,
1036
+ sessionId,
1005
1037
  trackingId: this.config?.trackingId,
1006
1038
  url: typeof window !== "undefined" ? window.location.href : void 0,
1007
1039
  path: properties?.path || (typeof window !== "undefined" ? window.location.pathname : void 0),
@@ -1074,8 +1106,10 @@ var AmplifyUpSDK = class {
1074
1106
  return;
1075
1107
  }
1076
1108
  const instanceId = getInstanceId();
1109
+ const sessionId = getSessionId();
1077
1110
  const identifyTraits = {
1078
1111
  instanceId,
1112
+ sessionId,
1079
1113
  trackingId: this.config?.trackingId,
1080
1114
  ...traits
1081
1115
  };
@@ -1113,6 +1147,7 @@ var AmplifyUpSDK = class {
1113
1147
  if (typeof this.adapter.setProfileFields === "function") {
1114
1148
  this.adapter.setProfileFields(fields, {
1115
1149
  instanceId: instanceId || void 0,
1150
+ sessionId: getSessionId() || void 0,
1116
1151
  trackingId: this.config?.trackingId
1117
1152
  });
1118
1153
  }
@@ -1163,6 +1198,12 @@ var AmplifyUpSDK = class {
1163
1198
  getInstanceId() {
1164
1199
  return getInstanceId();
1165
1200
  }
1201
+ /**
1202
+ * Get session id (30-minute inactivity reset).
1203
+ */
1204
+ getSessionId() {
1205
+ return getSessionId();
1206
+ }
1166
1207
  /**
1167
1208
  * Get user ID
1168
1209
  */
@@ -2694,7 +2735,10 @@ function useLiveComposerProps(layoutNodeId, props) {
2694
2735
  return;
2695
2736
  }
2696
2737
  if (!matchesNode(nodeId)) return;
2697
- setLive(nextProps);
2738
+ setLive((prev) => ({
2739
+ ...prev,
2740
+ ...nextProps
2741
+ }));
2698
2742
  };
2699
2743
  const onPatch = (event) => {
2700
2744
  const detail = event.detail || {};
@@ -2741,6 +2785,12 @@ function useAmplifyUp() {
2741
2785
  }
2742
2786
  return context;
2743
2787
  }
2788
+ function nodeRenderProps(node) {
2789
+ return {
2790
+ ...node.settings || {},
2791
+ ...node.props || {}
2792
+ };
2793
+ }
2744
2794
  var ComponentRenderBoundary = class extends Component {
2745
2795
  constructor() {
2746
2796
  super(...arguments);
@@ -3164,7 +3214,7 @@ function AmplifyRenderer({
3164
3214
  {
3165
3215
  nodeId: node.id,
3166
3216
  componentId: node.componentId,
3167
- props: node.props || {},
3217
+ props: nodeRenderProps(node),
3168
3218
  slots: slotsToPass,
3169
3219
  renderComponent
3170
3220
  }