@posthog/core 1.24.5 → 1.25.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.
- package/dist/posthog-core.d.ts.map +1 -1
- package/dist/posthog-core.js +17 -7
- package/dist/posthog-core.mjs +17 -7
- package/package.json +1 -1
- package/src/posthog-core.ts +31 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EAGxB,yBAAyB,EAKzB,sBAAsB,EAGvB,MAAM,SAAS,CAAA;AAYhB,OAAO,EAAiC,wBAAwB,EAAE,MAAM,SAAS,CAAA;AACjF,OAAO,EAAY,oBAAoB,EAAuB,MAAM,0BAA0B,CAAA;AAK9F,UAAU,iBAAiB;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AAOD,8BAAsB,WAAY,SAAQ,oBAAoB;IAE5D,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,WAAW,CAAC,CAA+B;IAGnD,SAAS,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAA;IAClF,SAAS,CAAC,6BAA6B,EAAE,MAAM,CAAA;IAC/C,OAAO,CAAC,wBAAwB,CAAuB;IACvD,SAAS,CAAC,YAAY,EAAE,sBAAsB,CAAK;IAInD,OAAO,CAAC,oBAAoB,CAAC,CAAqB;IAGlD,SAAS,CAAC,eAAe,EAAE,QAAQ,GAAG,iBAAiB,GAAG,OAAO,CAAA;IAGjE,SAAS,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAO;gBAE3C,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAexD,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAmDrE,OAAO,CAAC,UAAU;IAMlB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAI3D,KAAK,CAAC,gBAAgB,CAAC,EAAE,wBAAwB,EAAE,GAAG,IAAI;IAoB1D,SAAS,CAAC,wBAAwB,IAAI,sBAAsB;IAgB5D,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;;;;OAUG;IACH,YAAY,IAAI,MAAM;IAyBtB,cAAc,IAAI,IAAI;IAQtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,IAAI,MAAM;IAaxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI;IAO5D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI5C;;SAEK;IAEL,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAkDzG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IA8BlG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAa1B,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,yBAAyB,EAAE,EACrC,UAAU,GAAE,sBAA2B,EACvC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAiBP;;SAEK;IAEL,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAsB5C,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;
|
|
1
|
+
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"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"}
|
package/dist/posthog-core.js
CHANGED
|
@@ -240,10 +240,12 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
240
240
|
}
|
|
241
241
|
group(groupType, groupKey, groupProperties, options) {
|
|
242
242
|
this.wrap(()=>{
|
|
243
|
+
const existingGroups = this.props.$groups || {};
|
|
244
|
+
const isNewGroup = existingGroups[groupType] !== groupKey;
|
|
243
245
|
this.groups({
|
|
244
246
|
[groupType]: groupKey
|
|
245
247
|
});
|
|
246
|
-
if (groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);
|
|
248
|
+
if (isNewGroup || groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);
|
|
247
249
|
});
|
|
248
250
|
}
|
|
249
251
|
groupIdentify(groupType, groupKey, groupProperties, options) {
|
|
@@ -257,9 +259,18 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
257
259
|
setPersonPropertiesForFlags(properties, reloadFeatureFlags = true) {
|
|
258
260
|
this.wrap(()=>{
|
|
259
261
|
const existingProperties = this.getPersistedProperty(external_types_js_namespaceObject.PostHogPersistedProperty.PersonProperties) || {};
|
|
262
|
+
const propsToSet = properties?.['$set'] || (properties?.['$set_once'] ? {} : properties);
|
|
263
|
+
const propsToSetOnce = properties?.['$set_once'];
|
|
264
|
+
const setOnceProps = {};
|
|
265
|
+
if (propsToSetOnce) {
|
|
266
|
+
for(const key in propsToSetOnce)if (Object.prototype.hasOwnProperty.call(propsToSetOnce, key)) {
|
|
267
|
+
if (!(key in existingProperties)) setOnceProps[key] = propsToSetOnce[key];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
260
270
|
this.setPersistedProperty(external_types_js_namespaceObject.PostHogPersistedProperty.PersonProperties, {
|
|
261
271
|
...existingProperties,
|
|
262
|
-
...
|
|
272
|
+
...setOnceProps,
|
|
273
|
+
...propsToSet
|
|
263
274
|
});
|
|
264
275
|
if (reloadFeatureFlags) this.reloadFeatureFlags();
|
|
265
276
|
});
|
|
@@ -726,11 +737,10 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
726
737
|
if (!this._requirePersonProcessing('posthog.setPersonProperties')) return;
|
|
727
738
|
const hash = (0, index_js_namespaceObject.getPersonPropertiesHash)(this.getDistinctId(), userPropertiesToSet, userPropertiesToSetOnce);
|
|
728
739
|
if (this._cachedPersonProperties === hash) return void this._logger.info('A duplicate setPersonProperties call was made with the same properties. It has been ignored.');
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
};
|
|
733
|
-
this.setPersonPropertiesForFlags(mergedProperties, reloadFeatureFlags);
|
|
740
|
+
this.setPersonPropertiesForFlags({
|
|
741
|
+
$set: userPropertiesToSet || {},
|
|
742
|
+
$set_once: userPropertiesToSetOnce || {}
|
|
743
|
+
}, reloadFeatureFlags);
|
|
734
744
|
this.capture('$set', {
|
|
735
745
|
$set: userPropertiesToSet || {},
|
|
736
746
|
$set_once: userPropertiesToSetOnce || {}
|
package/dist/posthog-core.mjs
CHANGED
|
@@ -212,10 +212,12 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
212
212
|
}
|
|
213
213
|
group(groupType, groupKey, groupProperties, options) {
|
|
214
214
|
this.wrap(()=>{
|
|
215
|
+
const existingGroups = this.props.$groups || {};
|
|
216
|
+
const isNewGroup = existingGroups[groupType] !== groupKey;
|
|
215
217
|
this.groups({
|
|
216
218
|
[groupType]: groupKey
|
|
217
219
|
});
|
|
218
|
-
if (groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);
|
|
220
|
+
if (isNewGroup || groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);
|
|
219
221
|
});
|
|
220
222
|
}
|
|
221
223
|
groupIdentify(groupType, groupKey, groupProperties, options) {
|
|
@@ -229,9 +231,18 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
229
231
|
setPersonPropertiesForFlags(properties, reloadFeatureFlags = true) {
|
|
230
232
|
this.wrap(()=>{
|
|
231
233
|
const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};
|
|
234
|
+
const propsToSet = properties?.['$set'] || (properties?.['$set_once'] ? {} : properties);
|
|
235
|
+
const propsToSetOnce = properties?.['$set_once'];
|
|
236
|
+
const setOnceProps = {};
|
|
237
|
+
if (propsToSetOnce) {
|
|
238
|
+
for(const key in propsToSetOnce)if (Object.prototype.hasOwnProperty.call(propsToSetOnce, key)) {
|
|
239
|
+
if (!(key in existingProperties)) setOnceProps[key] = propsToSetOnce[key];
|
|
240
|
+
}
|
|
241
|
+
}
|
|
232
242
|
this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, {
|
|
233
243
|
...existingProperties,
|
|
234
|
-
...
|
|
244
|
+
...setOnceProps,
|
|
245
|
+
...propsToSet
|
|
235
246
|
});
|
|
236
247
|
if (reloadFeatureFlags) this.reloadFeatureFlags();
|
|
237
248
|
});
|
|
@@ -698,11 +709,10 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
698
709
|
if (!this._requirePersonProcessing('posthog.setPersonProperties')) return;
|
|
699
710
|
const hash = getPersonPropertiesHash(this.getDistinctId(), userPropertiesToSet, userPropertiesToSetOnce);
|
|
700
711
|
if (this._cachedPersonProperties === hash) return void this._logger.info('A duplicate setPersonProperties call was made with the same properties. It has been ignored.');
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
};
|
|
705
|
-
this.setPersonPropertiesForFlags(mergedProperties, reloadFeatureFlags);
|
|
712
|
+
this.setPersonPropertiesForFlags({
|
|
713
|
+
$set: userPropertiesToSet || {},
|
|
714
|
+
$set_once: userPropertiesToSetOnce || {}
|
|
715
|
+
}, reloadFeatureFlags);
|
|
706
716
|
this.capture('$set', {
|
|
707
717
|
$set: userPropertiesToSet || {},
|
|
708
718
|
$set_once: userPropertiesToSetOnce || {}
|
package/package.json
CHANGED
package/src/posthog-core.ts
CHANGED
|
@@ -443,11 +443,17 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
443
443
|
options?: PostHogCaptureOptions
|
|
444
444
|
): void {
|
|
445
445
|
this.wrap(() => {
|
|
446
|
+
const existingGroups = (this.props.$groups as PostHogGroupProperties) || {}
|
|
447
|
+
const isNewGroup = existingGroups[groupType] !== groupKey
|
|
448
|
+
|
|
446
449
|
this.groups({
|
|
447
450
|
[groupType]: groupKey,
|
|
448
451
|
})
|
|
449
452
|
|
|
450
|
-
|
|
453
|
+
// Send $groupidentify when the group is new/changed OR when properties
|
|
454
|
+
// are provided. Skip only when the group already exists with the same
|
|
455
|
+
// key and no new properties are being set.
|
|
456
|
+
if (isNewGroup || groupProperties) {
|
|
451
457
|
this.groupIdentify(groupType, groupKey, groupProperties, options)
|
|
452
458
|
}
|
|
453
459
|
})
|
|
@@ -475,13 +481,31 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
475
481
|
***/
|
|
476
482
|
setPersonPropertiesForFlags(properties: { [type: string]: JsonType }, reloadFeatureFlags = true): void {
|
|
477
483
|
this.wrap(() => {
|
|
478
|
-
// Get persisted person properties
|
|
479
484
|
const existingProperties =
|
|
480
485
|
this.getPersistedProperty<Record<string, JsonType>>(PostHogPersistedProperty.PersonProperties) || {}
|
|
481
486
|
|
|
487
|
+
// If the caller passes { $set, $set_once }, split them apart so we can apply $set_once
|
|
488
|
+
// semantics (skip keys that already exist). Otherwise treat all properties as $set for
|
|
489
|
+
// backward compatibility with the public API.
|
|
490
|
+
const propsToSet =
|
|
491
|
+
(properties?.['$set'] as Record<string, JsonType>) || (!properties?.['$set_once'] ? properties : {})
|
|
492
|
+
const propsToSetOnce = properties?.['$set_once'] as Record<string, JsonType> | undefined
|
|
493
|
+
|
|
494
|
+
const setOnceProps: Record<string, JsonType> = {}
|
|
495
|
+
if (propsToSetOnce) {
|
|
496
|
+
for (const key in propsToSetOnce) {
|
|
497
|
+
if (Object.prototype.hasOwnProperty.call(propsToSetOnce, key)) {
|
|
498
|
+
if (!(key in existingProperties)) {
|
|
499
|
+
setOnceProps[key] = propsToSetOnce[key]
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
482
505
|
this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.PersonProperties, {
|
|
483
506
|
...existingProperties,
|
|
484
|
-
...
|
|
507
|
+
...setOnceProps,
|
|
508
|
+
...propsToSet,
|
|
485
509
|
})
|
|
486
510
|
|
|
487
511
|
if (reloadFeatureFlags) {
|
|
@@ -1359,9 +1383,10 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
1359
1383
|
}
|
|
1360
1384
|
|
|
1361
1385
|
// Update person properties for feature flags evaluation
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1386
|
+
this.setPersonPropertiesForFlags(
|
|
1387
|
+
{ $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} },
|
|
1388
|
+
reloadFeatureFlags
|
|
1389
|
+
)
|
|
1365
1390
|
|
|
1366
1391
|
this.capture('$set', { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} })
|
|
1367
1392
|
|