Skip to content

Commit be05c46

Browse files
refactor: simplify type deduplication using compat.ts pattern from PR #1151
- Add src/types/compat.ts with minimal LDContext and LDEvaluationReason types compatible with both client and server SDKs (no SDK imports needed) - Merge all types back into unified CommandParams.ts and ConfigParams.ts (includes both client-specific and server-specific fields) - Delete src/client-side/types/ and src/server-side/types/ directories (no longer needed with compat types approach) - Simplify barrel exports: client.ts re-exports from index, server.ts re-exports from types/ directly - Remove @launchdarkly/js-server-sdk-common peer dependency - Add necessary casts in server-node consumer for SDK-specific types Co-Authored-By: Steven Zhang <szhang@launchdarkly.com>
1 parent 6d0ee27 commit be05c46

13 files changed

Lines changed: 210 additions & 410 deletions

File tree

packages/sdk/server-node/contract-tests/src/sdkClientEntity.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import ld, {
1414
LDContext,
1515
LDExecutionOrdering,
1616
LDMigrationError,
17+
LDMigrationStage,
1718
LDMigrationSuccess,
1819
LDOptions,
1920
LDSerialExecution,
@@ -251,12 +252,12 @@ export async function newSdkClientEntity(options: CreateInstanceParams): Promise
251252
if (pe.detail) {
252253
switch (pe.valueType) {
253254
case 'bool':
254-
return client.boolVariationDetail(pe.flagKey, context, pe.defaultValue);
255+
return client.boolVariationDetail(pe.flagKey, context, pe.defaultValue as boolean);
255256
case 'int': // Intentional fallthrough.
256257
case 'double':
257-
return client.numberVariationDetail(pe.flagKey, context, pe.defaultValue);
258+
return client.numberVariationDetail(pe.flagKey, context, pe.defaultValue as number);
258259
case 'string':
259-
return client.stringVariationDetail(pe.flagKey, context, pe.defaultValue);
260+
return client.stringVariationDetail(pe.flagKey, context, pe.defaultValue as string);
260261
default:
261262
return client.variationDetail(
262263
pe.flagKey,
@@ -268,16 +269,16 @@ export async function newSdkClientEntity(options: CreateInstanceParams): Promise
268269
switch (pe.valueType) {
269270
case 'bool':
270271
return {
271-
value: await client.boolVariation(pe.flagKey, context, pe.defaultValue),
272+
value: await client.boolVariation(pe.flagKey, context, pe.defaultValue as boolean),
272273
};
273274
case 'int': // Intentional fallthrough.
274275
case 'double':
275276
return {
276-
value: await client.numberVariation(pe.flagKey, context, pe.defaultValue),
277+
value: await client.numberVariation(pe.flagKey, context, pe.defaultValue as number),
277278
};
278279
case 'string':
279280
return {
280-
value: await client.stringVariation(pe.flagKey, context, pe.defaultValue),
281+
value: await client.stringVariation(pe.flagKey, context, pe.defaultValue as string),
281282
};
282283
default:
283284
return {
@@ -319,7 +320,7 @@ export async function newSdkClientEntity(options: CreateInstanceParams): Promise
319320
const res = await client.migrationVariation(
320321
migrationVariation.key,
321322
migrationVariation.context,
322-
migrationVariation.defaultStage,
323+
migrationVariation.defaultStage as LDMigrationStage,
323324
);
324325
return { result: res.value };
325326
}
@@ -384,7 +385,7 @@ export async function newSdkClientEntity(options: CreateInstanceParams): Promise
384385
const res = await migration.read(
385386
migrationOperation.key,
386387
migrationOperation.context,
387-
migrationOperation.defaultStage,
388+
migrationOperation.defaultStage as LDMigrationStage,
388389
migrationOperation.payload,
389390
);
390391
if (res.success) {
@@ -396,7 +397,7 @@ export async function newSdkClientEntity(options: CreateInstanceParams): Promise
396397
const res = await migration.write(
397398
migrationOperation.key,
398399
migrationOperation.context,
399-
migrationOperation.defaultStage,
400+
migrationOperation.defaultStage as LDMigrationStage,
400401
migrationOperation.payload,
401402
);
402403

packages/tooling/contract-test-utils/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,10 @@
4141
"@launchdarkly/js-client-sdk-common": "workspace:^"
4242
},
4343
"peerDependencies": {
44-
"@launchdarkly/js-server-sdk-common": "workspace:^",
4544
"@launchdarkly/node-server-sdk": "workspace:^",
4645
"got": "14.4.7"
4746
},
4847
"peerDependenciesMeta": {
49-
"@launchdarkly/js-server-sdk-common": {
50-
"optional": true
51-
},
5248
"@launchdarkly/node-server-sdk": {
5349
"optional": true
5450
},

packages/tooling/contract-test-utils/src/client-side/types/CommandParams.ts

Lines changed: 0 additions & 96 deletions
This file was deleted.

packages/tooling/contract-test-utils/src/client-side/types/ConfigParams.ts

Lines changed: 0 additions & 57 deletions
This file was deleted.

packages/tooling/contract-test-utils/src/client.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
// Re-export shared base types (no SDK dependency)
2-
export * from './types/CommandParams';
3-
export * from './types/ConfigParams';
4-
5-
// Re-export client-specific types (uses @launchdarkly/js-client-sdk-common)
6-
export * from './client-side/types/CommandParams';
7-
export * from './client-side/types/ConfigParams';
8-
9-
// Re-export shared utilities
10-
export { makeLogger } from './logging/makeLogger';
11-
export { ClientPool } from './server-side/ClientPool';
1+
// Re-export universal exports
2+
export * from './index';
123

134
// Client-side exports
145
export { default as ClientSideTestHook } from './client-side/TestHook';

packages/tooling/contract-test-utils/src/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
// Universal exports (no SDK dependency)
2-
// These types have no references to LDContext or LDEvaluationReason.
3-
// SDK-specific types are exported from ./client and ./server subpaths.
1+
// Universal exports (types use minimal compat types, no SDK dependency)
42
export * from './types/CommandParams';
53
export * from './types/ConfigParams';
64
export { makeLogger } from './logging/makeLogger';

packages/tooling/contract-test-utils/src/server-side/types/CommandParams.ts

Lines changed: 0 additions & 133 deletions
This file was deleted.

0 commit comments

Comments
 (0)