From 58e4f9bc1f7a30ca1fa53943180e468d33875703 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 24 Apr 2026 12:31:47 +0100 Subject: [PATCH] chore: replace `dset` dependency with a simple util --- packages/browser/package.json | 1 - packages/core/package.json | 1 - packages/core/src/context/index.ts | 2 +- packages/core/src/events/index.ts | 2 +- packages/core/src/utils/dset.ts | 17 +++++++++++++++++ yarn.lock | 9 --------- 6 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 packages/core/src/utils/dset.ts diff --git a/packages/browser/package.json b/packages/browser/package.json index 912020d17..d68172c56 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -55,7 +55,6 @@ "@segment/analytics-page-tools": "1.0.0", "@segment/analytics.js-video-plugins": "^0.2.1", "@segment/facade": "^3.4.9", - "dset": "^3.1.4", "js-cookie": "3.0.1", "node-fetch": "^2.6.7", "tslib": "^2.4.1", diff --git a/packages/core/package.json b/packages/core/package.json index 0383eb070..0104e5531 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -35,7 +35,6 @@ "dependencies": { "@lukeed/uuid": "^2.0.0", "@segment/analytics-generic-utils": "1.2.0", - "dset": "^3.1.4", "tslib": "^2.4.1" } } diff --git a/packages/core/src/context/index.ts b/packages/core/src/context/index.ts index 53c334542..df5cb3146 100644 --- a/packages/core/src/context/index.ts +++ b/packages/core/src/context/index.ts @@ -1,9 +1,9 @@ import { CoreSegmentEvent } from '../events/interfaces' import { v4 as uuid } from '@lukeed/uuid' -import { dset } from 'dset' import { CoreLogger, LogLevel, LogMessage } from '../logger' import { CoreStats, CoreMetric, NullStats } from '../stats' +import { dset } from '../utils/dset' export interface SerializedContext { id: string diff --git a/packages/core/src/events/index.ts b/packages/core/src/events/index.ts index 0f12198c1..52545aec8 100644 --- a/packages/core/src/events/index.ts +++ b/packages/core/src/events/index.ts @@ -1,5 +1,4 @@ export * from './interfaces' -import { dset } from 'dset' import { ID } from '../user' import { IntegrationsOptions, @@ -10,6 +9,7 @@ import { UserTraits, GroupTraits, } from './interfaces' +import { dset } from '../utils/dset' import { pickBy } from '../utils/pick' import type { RemoveIndexSignature } from '../utils/ts-helpers' import { validateEvent } from '../validation/assertions' diff --git a/packages/core/src/utils/dset.ts b/packages/core/src/utils/dset.ts new file mode 100644 index 000000000..9260ea860 --- /dev/null +++ b/packages/core/src/utils/dset.ts @@ -0,0 +1,17 @@ +export function dset(obj: T, path: string, val: V) { + const keys = path.split('.'); + + keys.reduce((acc: any, key, i) => { + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return {}; + } + + if (i === keys.length - 1) { + acc[key] = val; + } else { + acc[key] ??= {}; + } + + return acc[key]; + }, obj); +} diff --git a/yarn.lock b/yarn.lock index 5500f18d8..3d8c50a71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5007,7 +5007,6 @@ __metadata: dependencies: "@lukeed/uuid": ^2.0.0 "@segment/analytics-generic-utils": 1.2.0 - dset: ^3.1.4 tslib: ^2.4.1 languageName: unknown linkType: soft @@ -5048,7 +5047,6 @@ __metadata: "@types/serve-handler": ^6.1.0 circular-dependency-plugin: ^5.2.2 compression-webpack-plugin: ^8.0.1 - dset: ^3.1.4 ecma-version-validator-webpack-plugin: ^1.2.1 execa: ^4.1.0 flat: ^5.0.2 @@ -11574,13 +11572,6 @@ __metadata: languageName: node linkType: hard -"dset@npm:^3.1.4": - version: 3.1.4 - resolution: "dset@npm:3.1.4" - checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec - languageName: node - linkType: hard - "dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1"