@databuddy/sdk 2.3.22 → 2.3.24
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/core/index.mjs +1 -1
- package/dist/node/index.d.mts +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.mjs +1 -1
- package/dist/react/index.d.mts +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.mjs +3 -3
- package/dist/shared/@databuddy/{sdk.DCKr2Zpd.mjs → sdk.CALvx07o.mjs} +6 -0
- package/dist/shared/@databuddy/{sdk.B6nwxnPC.d.mts → sdk.CdLp6SQb.d.mts} +4 -0
- package/dist/shared/@databuddy/{sdk.B6nwxnPC.d.ts → sdk.CdLp6SQb.d.ts} +4 -0
- package/dist/shared/@databuddy/{sdk.DBtQ5j2L.mjs → sdk.DE24-JrU.mjs} +38 -3
- package/dist/shared/@databuddy/{sdk.C8vEu9Y4.mjs → sdk.z1buNzG1.mjs} +1 -1
- package/dist/vue/index.d.mts +2 -2
- package/dist/vue/index.d.ts +2 -2
- package/dist/vue/index.mjs +3 -3
- package/package.json +1 -1
package/dist/core/index.mjs
CHANGED
package/dist/node/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as FlagsManager, f as FlagsManagerOptions, U as UserContext, d as FlagResult, b as FlagState, F as FlagsConfig } from '../shared/@databuddy/sdk.
|
|
1
|
+
import { e as FlagsManager, f as FlagsManagerOptions, U as UserContext, d as FlagResult, b as FlagState, F as FlagsConfig } from '../shared/@databuddy/sdk.CdLp6SQb.mjs';
|
|
2
2
|
|
|
3
3
|
interface Logger {
|
|
4
4
|
info(msg: string, data?: Record<string, unknown>): void;
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as FlagsManager, f as FlagsManagerOptions, U as UserContext, d as FlagResult, b as FlagState, F as FlagsConfig } from '../shared/@databuddy/sdk.
|
|
1
|
+
import { e as FlagsManager, f as FlagsManagerOptions, U as UserContext, d as FlagResult, b as FlagState, F as FlagsConfig } from '../shared/@databuddy/sdk.CdLp6SQb.js';
|
|
2
2
|
|
|
3
3
|
interface Logger {
|
|
4
4
|
info(msg: string, data?: Record<string, unknown>): void;
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as logger, i as isCacheValid, b as buildQueryParams, R as RequestBatcher, D as DEFAULT_RESULT, g as getCacheKey, a as isCacheStale, c as createCacheEntry, f as fetchAllFlags } from '../shared/@databuddy/sdk.
|
|
1
|
+
import { l as logger, i as isCacheValid, b as buildQueryParams, R as RequestBatcher, D as DEFAULT_RESULT, g as getCacheKey, a as isCacheStale, c as createCacheEntry, f as fetchAllFlags } from '../shared/@databuddy/sdk.CALvx07o.mjs';
|
|
2
2
|
|
|
3
3
|
function createLogger(debug = false) {
|
|
4
4
|
return createConsoleLogger(debug);
|
package/dist/react/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { D as DatabuddyConfig } from '../shared/@databuddy/sdk.BsF1xr6_.mjs';
|
|
2
2
|
export { c as clear, f as flush, d as getAnonymousId, e as getSessionId, g as getTracker, h as getTrackingIds, j as getTrackingParams, i as isTrackerAvailable, t as track, b as trackError } from '../shared/@databuddy/sdk.BsF1xr6_.mjs';
|
|
3
3
|
import React, { ReactNode } from 'react';
|
|
4
|
-
import { F as FlagsConfig, a as FeatureState, b as FlagState, c as FlagsContext } from '../shared/@databuddy/sdk.
|
|
4
|
+
import { F as FlagsConfig, a as FeatureState, b as FlagState, c as FlagsContext } from '../shared/@databuddy/sdk.CdLp6SQb.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* React/Next.js component that injects the Databuddy tracking script.
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { D as DatabuddyConfig } from '../shared/@databuddy/sdk.BsF1xr6_.js';
|
|
2
2
|
export { c as clear, f as flush, d as getAnonymousId, e as getSessionId, g as getTracker, h as getTrackingIds, j as getTrackingParams, i as isTrackerAvailable, t as track, b as trackError } from '../shared/@databuddy/sdk.BsF1xr6_.js';
|
|
3
3
|
import React, { ReactNode } from 'react';
|
|
4
|
-
import { F as FlagsConfig, a as FeatureState, b as FlagState, c as FlagsContext } from '../shared/@databuddy/sdk.
|
|
4
|
+
import { F as FlagsConfig, a as FeatureState, b as FlagState, c as FlagsContext } from '../shared/@databuddy/sdk.CdLp6SQb.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* React/Next.js component that injects the Databuddy tracking script.
|
package/dist/react/index.mjs
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { detectClientId } from '../core/index.mjs';
|
|
4
4
|
export { clear, flush, getAnonymousId, getSessionId, getTracker, getTrackingIds, getTrackingParams, isTrackerAvailable, track, trackError } from '../core/index.mjs';
|
|
5
|
-
import { i as isScriptInjected, c as createScript } from '../shared/@databuddy/sdk.
|
|
5
|
+
import { i as isScriptInjected, c as createScript } from '../shared/@databuddy/sdk.z1buNzG1.mjs';
|
|
6
6
|
import React, { useRef, useMemo, useEffect, useSyncExternalStore, createContext, useContext } from 'react';
|
|
7
|
-
import { B as BrowserFlagStorage, C as CoreFlagsManager } from '../shared/@databuddy/sdk.
|
|
8
|
-
import { l as logger } from '../shared/@databuddy/sdk.
|
|
7
|
+
import { B as BrowserFlagStorage, C as CoreFlagsManager } from '../shared/@databuddy/sdk.DE24-JrU.mjs';
|
|
8
|
+
import { l as logger } from '../shared/@databuddy/sdk.CALvx07o.mjs';
|
|
9
9
|
|
|
10
10
|
function Databuddy(props) {
|
|
11
11
|
const clientId = detectClientId(props.clientId);
|
|
@@ -89,6 +89,12 @@ function buildQueryParams(config, user) {
|
|
|
89
89
|
if (u?.email) {
|
|
90
90
|
params.set("email", u.email);
|
|
91
91
|
}
|
|
92
|
+
if (u?.organizationId) {
|
|
93
|
+
params.set("organizationId", u.organizationId);
|
|
94
|
+
}
|
|
95
|
+
if (u?.teamId) {
|
|
96
|
+
params.set("teamId", u.teamId);
|
|
97
|
+
}
|
|
92
98
|
if (u?.properties) {
|
|
93
99
|
params.set("properties", JSON.stringify(u.properties));
|
|
94
100
|
}
|
|
@@ -10,6 +10,10 @@ interface FlagResult {
|
|
|
10
10
|
interface UserContext {
|
|
11
11
|
userId?: string;
|
|
12
12
|
email?: string;
|
|
13
|
+
/** Organization ID for org-level rollouts (all org members get same result) */
|
|
14
|
+
organizationId?: string;
|
|
15
|
+
/** Team ID for team-level rollouts (all team members get same result) */
|
|
16
|
+
teamId?: string;
|
|
13
17
|
properties?: Record<string, unknown>;
|
|
14
18
|
}
|
|
15
19
|
/** SDK configuration */
|
|
@@ -10,6 +10,10 @@ interface FlagResult {
|
|
|
10
10
|
interface UserContext {
|
|
11
11
|
userId?: string;
|
|
12
12
|
email?: string;
|
|
13
|
+
/** Organization ID for org-level rollouts (all org members get same result) */
|
|
14
|
+
organizationId?: string;
|
|
15
|
+
/** Team ID for team-level rollouts (all team members get same result) */
|
|
16
|
+
teamId?: string;
|
|
13
17
|
properties?: Record<string, unknown>;
|
|
14
18
|
}
|
|
15
19
|
/** SDK configuration */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as logger, c as createCacheEntry, i as isCacheValid, b as buildQueryParams, R as RequestBatcher, a as isCacheStale, D as DEFAULT_RESULT, g as getCacheKey, f as fetchAllFlags } from './sdk.
|
|
1
|
+
import { l as logger, c as createCacheEntry, i as isCacheValid, b as buildQueryParams, R as RequestBatcher, a as isCacheStale, D as DEFAULT_RESULT, g as getCacheKey, f as fetchAllFlags } from './sdk.CALvx07o.mjs';
|
|
2
2
|
|
|
3
3
|
const isBrowser = typeof window !== "undefined" && typeof localStorage !== "undefined";
|
|
4
4
|
class BrowserFlagStorage {
|
|
@@ -142,6 +142,7 @@ class BrowserFlagStorage {
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
const ANONYMOUS_ID_KEY = "did";
|
|
145
146
|
class CoreFlagsManager {
|
|
146
147
|
config;
|
|
147
148
|
storage;
|
|
@@ -174,11 +175,45 @@ class CoreFlagsManager {
|
|
|
174
175
|
this.setupVisibilityListener();
|
|
175
176
|
this.initialize();
|
|
176
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Get or create anonymous ID for deterministic rollouts.
|
|
180
|
+
* Uses the same storage key as the tracker ("did") for consistency.
|
|
181
|
+
*/
|
|
182
|
+
getOrCreateAnonymousId() {
|
|
183
|
+
if (typeof localStorage === "undefined") {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
let id = localStorage.getItem(ANONYMOUS_ID_KEY);
|
|
188
|
+
if (id) {
|
|
189
|
+
return id;
|
|
190
|
+
}
|
|
191
|
+
id = `anon_${crypto.randomUUID()}`;
|
|
192
|
+
localStorage.setItem(ANONYMOUS_ID_KEY, id);
|
|
193
|
+
return id;
|
|
194
|
+
} catch {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Ensure user context has an identifier for deterministic flag evaluation.
|
|
200
|
+
* If no userId/email provided, inject anonymous ID as userId.
|
|
201
|
+
*/
|
|
202
|
+
ensureUserIdentity(user) {
|
|
203
|
+
if (user?.userId || user?.email) {
|
|
204
|
+
return user;
|
|
205
|
+
}
|
|
206
|
+
const anonymousId = this.getOrCreateAnonymousId();
|
|
207
|
+
if (!anonymousId) {
|
|
208
|
+
return user;
|
|
209
|
+
}
|
|
210
|
+
return { ...user, userId: anonymousId };
|
|
211
|
+
}
|
|
177
212
|
withDefaults(config) {
|
|
178
213
|
return {
|
|
179
214
|
clientId: config.clientId,
|
|
180
215
|
apiUrl: config.apiUrl ?? "https://api.databuddy.cc",
|
|
181
|
-
user: config.user,
|
|
216
|
+
user: this.ensureUserIdentity(config.user),
|
|
182
217
|
disabled: config.disabled ?? false,
|
|
183
218
|
debug: config.debug ?? false,
|
|
184
219
|
skipStorage: config.skipStorage ?? false,
|
|
@@ -459,7 +494,7 @@ class CoreFlagsManager {
|
|
|
459
494
|
* Update user context and refresh flags
|
|
460
495
|
*/
|
|
461
496
|
updateUser(user) {
|
|
462
|
-
this.config = { ...this.config, user };
|
|
497
|
+
this.config = { ...this.config, user: this.ensureUserIdentity(user) };
|
|
463
498
|
this.batcher?.destroy();
|
|
464
499
|
this.batcher = null;
|
|
465
500
|
this.onConfigUpdate?.(this.config);
|
package/dist/vue/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
2
|
import { App, ComputedRef } from 'vue';
|
|
3
|
-
import { F as FlagsConfig, b as FlagState, d as FlagResult } from '../shared/@databuddy/sdk.
|
|
4
|
-
export { c as FlagsContext } from '../shared/@databuddy/sdk.
|
|
3
|
+
import { F as FlagsConfig, b as FlagState, d as FlagResult } from '../shared/@databuddy/sdk.CdLp6SQb.mjs';
|
|
4
|
+
export { c as FlagsContext } from '../shared/@databuddy/sdk.CdLp6SQb.mjs';
|
|
5
5
|
|
|
6
6
|
declare const Databuddy: vue.DefineComponent<{
|
|
7
7
|
clientId?: string | undefined;
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
2
|
import { App, ComputedRef } from 'vue';
|
|
3
|
-
import { F as FlagsConfig, b as FlagState, d as FlagResult } from '../shared/@databuddy/sdk.
|
|
4
|
-
export { c as FlagsContext } from '../shared/@databuddy/sdk.
|
|
3
|
+
import { F as FlagsConfig, b as FlagState, d as FlagResult } from '../shared/@databuddy/sdk.CdLp6SQb.js';
|
|
4
|
+
export { c as FlagsContext } from '../shared/@databuddy/sdk.CdLp6SQb.js';
|
|
5
5
|
|
|
6
6
|
declare const Databuddy: vue.DefineComponent<{
|
|
7
7
|
clientId?: string | undefined;
|
package/dist/vue/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, ref, onMounted, onUnmounted, watch, reactive, watchEffect, computed } from 'vue';
|
|
2
|
-
import { i as isScriptInjected, c as createScript } from '../shared/@databuddy/sdk.
|
|
3
|
-
import { B as BrowserFlagStorage, C as CoreFlagsManager } from '../shared/@databuddy/sdk.
|
|
4
|
-
import '../shared/@databuddy/sdk.
|
|
2
|
+
import { i as isScriptInjected, c as createScript } from '../shared/@databuddy/sdk.z1buNzG1.mjs';
|
|
3
|
+
import { B as BrowserFlagStorage, C as CoreFlagsManager } from '../shared/@databuddy/sdk.DE24-JrU.mjs';
|
|
4
|
+
import '../shared/@databuddy/sdk.CALvx07o.mjs';
|
|
5
5
|
|
|
6
6
|
const Databuddy = defineComponent({
|
|
7
7
|
props: {},
|