@posthog/core 1.18.0 → 1.19.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.
@@ -73,8 +73,8 @@ export declare abstract class PostHogCore extends PostHogCoreStateless {
73
73
  * PROPERTIES
74
74
  ***/
75
75
  setPersonPropertiesForFlags(properties: {
76
- [type: string]: string;
77
- }): void;
76
+ [type: string]: JsonType;
77
+ }, reloadFeatureFlags?: boolean): void;
78
78
  resetPersonPropertiesForFlags(): void;
79
79
  setGroupPropertiesForFlags(properties: {
80
80
  [type: string]: Record<string, string>;
@@ -223,6 +223,47 @@ export declare abstract class PostHogCore extends PostHogCoreStateless {
223
223
  * @public
224
224
  */
225
225
  createPersonProfile(): void;
226
+ /**
227
+ * Sets properties on the person profile associated with the current `distinct_id`.
228
+ * Learn more about [identifying users](https://posthog.com/docs/product-analytics/identify)
229
+ *
230
+ * {@label Identification}
231
+ *
232
+ * @remarks
233
+ * Updates user properties that are stored with the person profile in PostHog.
234
+ * If `personProfiles` is set to `identified_only` and no profile exists, this will create one.
235
+ *
236
+ * @example
237
+ * ```js
238
+ * // set user properties
239
+ * posthog.setPersonProperties({
240
+ * email: 'user@example.com',
241
+ * plan: 'premium'
242
+ * })
243
+ * ```
244
+ *
245
+ * @example
246
+ * ```js
247
+ * // set properties with $set_once
248
+ * posthog.setPersonProperties(
249
+ * { name: 'Max Hedgehog' }, // $set properties
250
+ * { initial_url: '/blog' } // $set_once properties
251
+ * )
252
+ * ```
253
+ *
254
+ * @public
255
+ *
256
+ * @param userPropertiesToSet - Optional: An object of properties to store about the user.
257
+ * These properties will overwrite any existing values for the same keys.
258
+ * @param userPropertiesToSetOnce - Optional: An object of properties to store about the user.
259
+ * If a property is previously set, this does not override that value.
260
+ * @param reloadFeatureFlags - Whether to reload feature flags after setting the properties. Defaults to true.
261
+ */
262
+ setPersonProperties(userPropertiesToSet?: {
263
+ [key: string]: JsonType;
264
+ }, userPropertiesToSetOnce?: {
265
+ [key: string]: JsonType;
266
+ }, reloadFeatureFlags?: boolean): void;
226
267
  /**
227
268
  * Override processBeforeEnqueue to run before_send hooks.
228
269
  * This runs after prepareMessage, giving users full control over the final event.
@@ -1 +1 @@
1
- {"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"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"}
@@ -249,13 +249,14 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
249
249
  super.groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties);
250
250
  });
251
251
  }
252
- setPersonPropertiesForFlags(properties) {
252
+ setPersonPropertiesForFlags(properties, reloadFeatureFlags = true) {
253
253
  this.wrap(()=>{
254
254
  const existingProperties = this.getPersistedProperty(external_types_js_namespaceObject.PostHogPersistedProperty.PersonProperties) || {};
255
255
  this.setPersistedProperty(external_types_js_namespaceObject.PostHogPersistedProperty.PersonProperties, {
256
256
  ...existingProperties,
257
257
  ...properties
258
258
  });
259
+ if (reloadFeatureFlags) this.reloadFeatureFlags();
259
260
  });
260
261
  }
261
262
  resetPersonPropertiesForFlags() {
@@ -628,6 +629,23 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
628
629
  $set_once: {}
629
630
  });
630
631
  }
632
+ setPersonProperties(userPropertiesToSet, userPropertiesToSetOnce, reloadFeatureFlags = true) {
633
+ this.wrap(()=>{
634
+ const isSetEmpty = (0, index_js_namespaceObject.isNullish)(userPropertiesToSet) || (0, index_js_namespaceObject.isEmptyObject)(userPropertiesToSet);
635
+ const isSetOnceEmpty = (0, index_js_namespaceObject.isNullish)(userPropertiesToSetOnce) || (0, index_js_namespaceObject.isEmptyObject)(userPropertiesToSetOnce);
636
+ if (isSetEmpty && isSetOnceEmpty) return;
637
+ if (!this._requirePersonProcessing('posthog.setPersonProperties')) return;
638
+ const mergedProperties = {
639
+ ...userPropertiesToSetOnce || {},
640
+ ...userPropertiesToSet || {}
641
+ };
642
+ this.setPersonPropertiesForFlags(mergedProperties, reloadFeatureFlags);
643
+ this.capture('$set', {
644
+ $set: userPropertiesToSet || {},
645
+ $set_once: userPropertiesToSetOnce || {}
646
+ });
647
+ });
648
+ }
631
649
  processBeforeEnqueue(message) {
632
650
  if (!this._beforeSend) return message;
633
651
  const timestamp = message.timestamp;
@@ -2,7 +2,7 @@ import { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagVa
2
2
  import { Compression, FeatureFlagError, PostHogPersistedProperty } from "./types.mjs";
3
3
  import { PostHogCoreStateless, QuotaLimitedFeature, maybeAdd } from "./posthog-core-stateless.mjs";
4
4
  import { uuidv7 } from "./vendor/uuidv7.mjs";
5
- import { isPlainError } from "./utils/index.mjs";
5
+ import { isEmptyObject, isNullish, isPlainError } from "./utils/index.mjs";
6
6
  class PostHogCore extends PostHogCoreStateless {
7
7
  constructor(apiKey, options){
8
8
  const disableGeoipOption = options?.disableGeoip ?? false;
@@ -221,13 +221,14 @@ class PostHogCore extends PostHogCoreStateless {
221
221
  super.groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties);
222
222
  });
223
223
  }
224
- setPersonPropertiesForFlags(properties) {
224
+ setPersonPropertiesForFlags(properties, reloadFeatureFlags = true) {
225
225
  this.wrap(()=>{
226
226
  const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};
227
227
  this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, {
228
228
  ...existingProperties,
229
229
  ...properties
230
230
  });
231
+ if (reloadFeatureFlags) this.reloadFeatureFlags();
231
232
  });
232
233
  }
233
234
  resetPersonPropertiesForFlags() {
@@ -600,6 +601,23 @@ class PostHogCore extends PostHogCoreStateless {
600
601
  $set_once: {}
601
602
  });
602
603
  }
604
+ setPersonProperties(userPropertiesToSet, userPropertiesToSetOnce, reloadFeatureFlags = true) {
605
+ this.wrap(()=>{
606
+ const isSetEmpty = isNullish(userPropertiesToSet) || isEmptyObject(userPropertiesToSet);
607
+ const isSetOnceEmpty = isNullish(userPropertiesToSetOnce) || isEmptyObject(userPropertiesToSetOnce);
608
+ if (isSetEmpty && isSetOnceEmpty) return;
609
+ if (!this._requirePersonProcessing('posthog.setPersonProperties')) return;
610
+ const mergedProperties = {
611
+ ...userPropertiesToSetOnce || {},
612
+ ...userPropertiesToSet || {}
613
+ };
614
+ this.setPersonPropertiesForFlags(mergedProperties, reloadFeatureFlags);
615
+ this.capture('$set', {
616
+ $set: userPropertiesToSet || {},
617
+ $set_once: userPropertiesToSetOnce || {}
618
+ });
619
+ });
620
+ }
603
621
  processBeforeEnqueue(message) {
604
622
  if (!this._beforeSend) return message;
605
623
  const timestamp = message.timestamp;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/core",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -30,7 +30,7 @@ import {
30
30
  import { Compression, FeatureFlagError, PostHogPersistedProperty } from './types'
31
31
  import { maybeAdd, PostHogCoreStateless, QuotaLimitedFeature } from './posthog-core-stateless'
32
32
  import { uuidv7 } from './vendor/uuidv7'
33
- import { isPlainError } from './utils'
33
+ import { isEmptyObject, isNullish, isPlainError } from './utils'
34
34
 
35
35
  export abstract class PostHogCore extends PostHogCoreStateless {
36
36
  // options
@@ -429,16 +429,20 @@ export abstract class PostHogCore extends PostHogCoreStateless {
429
429
  /***
430
430
  * PROPERTIES
431
431
  ***/
432
- setPersonPropertiesForFlags(properties: { [type: string]: string }): void {
432
+ setPersonPropertiesForFlags(properties: { [type: string]: JsonType }, reloadFeatureFlags = true): void {
433
433
  this.wrap(() => {
434
434
  // Get persisted person properties
435
435
  const existingProperties =
436
- this.getPersistedProperty<Record<string, string>>(PostHogPersistedProperty.PersonProperties) || {}
436
+ this.getPersistedProperty<Record<string, JsonType>>(PostHogPersistedProperty.PersonProperties) || {}
437
437
 
438
438
  this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.PersonProperties, {
439
439
  ...existingProperties,
440
440
  ...properties,
441
441
  })
442
+
443
+ if (reloadFeatureFlags) {
444
+ this.reloadFeatureFlags()
445
+ }
442
446
  })
443
447
  }
444
448
 
@@ -1162,6 +1166,67 @@ export abstract class PostHogCore extends PostHogCoreStateless {
1162
1166
  this.capture('$set', { $set: {}, $set_once: {} })
1163
1167
  }
1164
1168
 
1169
+ /**
1170
+ * Sets properties on the person profile associated with the current `distinct_id`.
1171
+ * Learn more about [identifying users](https://posthog.com/docs/product-analytics/identify)
1172
+ *
1173
+ * {@label Identification}
1174
+ *
1175
+ * @remarks
1176
+ * Updates user properties that are stored with the person profile in PostHog.
1177
+ * If `personProfiles` is set to `identified_only` and no profile exists, this will create one.
1178
+ *
1179
+ * @example
1180
+ * ```js
1181
+ * // set user properties
1182
+ * posthog.setPersonProperties({
1183
+ * email: 'user@example.com',
1184
+ * plan: 'premium'
1185
+ * })
1186
+ * ```
1187
+ *
1188
+ * @example
1189
+ * ```js
1190
+ * // set properties with $set_once
1191
+ * posthog.setPersonProperties(
1192
+ * { name: 'Max Hedgehog' }, // $set properties
1193
+ * { initial_url: '/blog' } // $set_once properties
1194
+ * )
1195
+ * ```
1196
+ *
1197
+ * @public
1198
+ *
1199
+ * @param userPropertiesToSet - Optional: An object of properties to store about the user.
1200
+ * These properties will overwrite any existing values for the same keys.
1201
+ * @param userPropertiesToSetOnce - Optional: An object of properties to store about the user.
1202
+ * If a property is previously set, this does not override that value.
1203
+ * @param reloadFeatureFlags - Whether to reload feature flags after setting the properties. Defaults to true.
1204
+ */
1205
+ setPersonProperties(
1206
+ userPropertiesToSet?: { [key: string]: JsonType },
1207
+ userPropertiesToSetOnce?: { [key: string]: JsonType },
1208
+ reloadFeatureFlags = true
1209
+ ): void {
1210
+ this.wrap(() => {
1211
+ const isSetEmpty = isNullish(userPropertiesToSet) || isEmptyObject(userPropertiesToSet)
1212
+ const isSetOnceEmpty = isNullish(userPropertiesToSetOnce) || isEmptyObject(userPropertiesToSetOnce)
1213
+ if (isSetEmpty && isSetOnceEmpty) {
1214
+ return
1215
+ }
1216
+
1217
+ if (!this._requirePersonProcessing('posthog.setPersonProperties')) {
1218
+ return
1219
+ }
1220
+
1221
+ // Update person properties for feature flags evaluation
1222
+ // Merge setOnce first, then set to allow overwriting
1223
+ const mergedProperties = { ...(userPropertiesToSetOnce || {}), ...(userPropertiesToSet || {}) }
1224
+ this.setPersonPropertiesForFlags(mergedProperties, reloadFeatureFlags)
1225
+
1226
+ this.capture('$set', { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} })
1227
+ })
1228
+ }
1229
+
1165
1230
  /**
1166
1231
  * Override processBeforeEnqueue to run before_send hooks.
1167
1232
  * This runs after prepareMessage, giving users full control over the final event.