Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions sdk/js/src/EventQueue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,10 @@ export class EventQueue<
)
}

if (!options.next?.disableAutomaticEventFlush) {
this.flushInterval = setInterval(
this.flushEvents.bind(this),
eventFlushIntervalMS,
)
}
this.flushInterval = setInterval(
this.flushEvents.bind(this),
eventFlushIntervalMS,
)

this.flushEventQueueSize = options?.flushEventQueueSize ?? 100
this.maxEventQueueSize = options?.maxEventQueueSize ?? 1000
Expand Down
1 change: 0 additions & 1 deletion sdk/js/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ export interface DevCycleOptions {
*/
next?: {
configRefreshHandler?: (lastModifiedDate?: number) => void
disableAutomaticEventFlush?: boolean
}

/**
Expand Down
3 changes: 0 additions & 3 deletions sdk/nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
"hoist-non-react-statics": "^3.3.2",
"server-only": "^0.0.1"
},
"peerDependencies": {
"next": ">=15.1.0"
},
"types": "./src/index.d.ts",
"exports": {
".": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,14 @@ export const InternalDevCycleClientsideProvider = ({
sdkPlatform: 'nextjs',
deferInitialization: true,
disableConfigCache: true,
...(isServer
? {
disableAutomaticEventLogging: true,
disableCustomEventLogging: true,
}
: {}),
next: {
configRefreshHandler: revalidateConfig,
disableAutomaticEventFlush: isServer,
},
})

Expand Down
8 changes: 1 addition & 7 deletions sdk/nextjs/src/common/types.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
DevCycleOptions,
DevCycleUser,
DevCycleEvent,
} from '@devcycle/js-client-sdk'
import { DevCycleOptions, DevCycleUser } from '@devcycle/js-client-sdk'
import { BucketedUserConfig, ConfigSource } from '@devcycle/types'

export type DevCycleNextOptions = Pick<
Expand Down Expand Up @@ -57,5 +53,3 @@ export type DevCycleServerData = {

userAgent: string | undefined
}

export type { DevCycleEvent }
6 changes: 3 additions & 3 deletions sdk/nextjs/src/server/initialize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import { getBucketedConfig, getConfigFromSource } from './bucketing'

const jsClientOptions = {
// pass next object to enable "next" mode in JS SDK
next: { disableAutomaticEventFlush: true },
next: {},
disableConfigCache: true,
disableRealtimeUpdates: true,
disableAutomaticEventLogging: false,
disableCustomEventLogging: false,
disableAutomaticEventLogging: true,
disableCustomEventLogging: true,
sdkPlatform: 'nextjs',
}

Expand Down
36 changes: 0 additions & 36 deletions sdk/nextjs/src/server/setupDevCycle.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import 'server-only'
import { initialize, validateSDKKey } from './initialize'
import {
DevCycleClient,
DevCycleEvent,
DevCycleUser,
DVCCustomDataJSON,
VariableDefinitions,
} from '@devcycle/js-client-sdk'
import { DevCycleNextOptions } from '../common/types'
import { InferredVariableType, VariableKey } from '@devcycle/types'
import { cache } from 'react'
import { after } from 'next/server'

// server-side users must always be "identified" with a user id
type ServerUser<CustomData extends DVCCustomDataJSON = DVCCustomDataJSON> =
Expand All @@ -26,20 +22,6 @@ type GetVariableValue = <
defaultValue: ValueType,
) => Promise<InferredVariableType<K, ValueType>>

// flushes events from queue once per request, after request completes
const cachedFlushEvents = cache((client: DevCycleClient) => {
try {
after(async () => {
await client.flushEvents()
})
} catch (error) {
client.logger.error(
'Event logging is not supported in this environment. ' +
'Disable custom and automatic event logging in sdk options.',
)
}
})

// allow return type inference
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export const setupDevCycle = <
Expand All @@ -65,10 +47,6 @@ export const setupDevCycle = <
userGetter,
options,
)

if (!options.disableAutomaticEventLogging) {
cachedFlushEvents(client)
}
return client.variableValue(key, defaultValue)
}

Expand All @@ -92,19 +70,6 @@ export const setupDevCycle = <
return client.allFeatures()
}

const _track = async (event: DevCycleEvent) => {
const { client } = await initialize(
serverSDKKey,
clientSDKKey,
userGetter,
options,
)
if (!options.disableCustomEventLogging) {
cachedFlushEvents(client)
}
return client.track(event)
}

const _getClientContext = () => {
const serverDataPromise = initialize(
serverSDKKey,
Expand Down Expand Up @@ -154,6 +119,5 @@ export const setupDevCycle = <
getAllVariables: _getAllVariables,
getAllFeatures: _getAllFeatures,
getClientContext: _getClientContext,
track: _track,
}
}
2 changes: 0 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2150,8 +2150,6 @@ __metadata:
class-transformer: "npm:^0.5.1"
hoist-non-react-statics: "npm:^3.3.2"
server-only: "npm:^0.0.1"
peerDependencies:
next: ">=15.1.0"
languageName: unknown
linkType: soft

Expand Down
Loading