@datadog/openfeature-node-server 1.1.0 → 1.1.1
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/cjs/configuration/evaluateForSubject.d.ts +1 -1
- package/cjs/configuration/evaluateForSubject.d.ts.map +1 -1
- package/cjs/configuration/evaluateForSubject.js +5 -2
- package/cjs/configuration/evaluateForSubject.js.map +1 -1
- package/cjs/configuration/evaluation.d.ts.map +1 -1
- package/cjs/configuration/evaluation.js +18 -9
- package/cjs/configuration/evaluation.js.map +1 -1
- package/esm/configuration/evaluateForSubject.d.ts +1 -1
- package/esm/configuration/evaluateForSubject.d.ts.map +1 -1
- package/esm/configuration/evaluateForSubject.js +6 -3
- package/esm/configuration/evaluateForSubject.js.map +1 -1
- package/esm/configuration/evaluation.d.ts.map +1 -1
- package/esm/configuration/evaluation.js +19 -10
- package/esm/configuration/evaluation.js.map +1 -1
- package/package.json +9 -9
|
@@ -2,6 +2,6 @@ import type { FlagTypeToValue } from '@datadog/flagging-core';
|
|
|
2
2
|
import { type EvaluationContext, type FlagValueType, type Logger, type ResolutionDetails } from '@openfeature/server-sdk';
|
|
3
3
|
import { type Rule } from '../rules/rules';
|
|
4
4
|
import { type Flag } from './ufc-v1';
|
|
5
|
-
export declare function evaluateForSubject<T extends FlagValueType>(flag: Flag
|
|
5
|
+
export declare function evaluateForSubject<T extends FlagValueType>(flag: Flag, type: T, subjectKey: string | null | undefined, subjectAttributes: EvaluationContext, defaultValue: FlagTypeToValue<T>, logger: Logger): ResolutionDetails<FlagTypeToValue<T>>;
|
|
6
6
|
export declare function containsMatchingRule(rules: Rule[] | undefined, subjectAttributes: EvaluationContext, logger: Logger): boolean;
|
|
7
7
|
//# sourceMappingURL=evaluateForSubject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateForSubject.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"evaluateForSubject.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,EAGvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,KAAK,IAAI,EAA4D,MAAM,UAAU,CAAA;AAE9F,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EACxD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,MAAM,GACb,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA8FvC;AAkBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAST"}
|
|
@@ -7,9 +7,9 @@ const rules_1 = require("../rules/rules");
|
|
|
7
7
|
const matchesShard_1 = require("../shards/matchesShard");
|
|
8
8
|
const ufc_v1_1 = require("./ufc-v1");
|
|
9
9
|
function evaluateForSubject(flag, type, subjectKey, subjectAttributes, defaultValue, logger) {
|
|
10
|
-
if (!
|
|
10
|
+
if (!flag.enabled) {
|
|
11
11
|
logger.debug(`returning default assignment because flag is disabled`, {
|
|
12
|
-
flagKey: flag
|
|
12
|
+
flagKey: flag.key,
|
|
13
13
|
subjectKey,
|
|
14
14
|
});
|
|
15
15
|
return {
|
|
@@ -131,6 +131,9 @@ function selectSplitUsingSharding(splits, subjectKey, flagKey, logger) {
|
|
|
131
131
|
shards: split.shards,
|
|
132
132
|
});
|
|
133
133
|
const matches = split.shards.every((shard) => {
|
|
134
|
+
if (subjectKey == null) {
|
|
135
|
+
throw new server_sdk_1.TargetingKeyMissingError();
|
|
136
|
+
}
|
|
134
137
|
const shardMatches = (0, matchesShard_1.matchesShard)(shard, subjectKey);
|
|
135
138
|
logger.debug(`shard match result`, {
|
|
136
139
|
flagKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateForSubject.js","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evaluateForSubject.js","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"evaluation.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,EAGvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAE5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,aAAa,EAC9C,MAAM,EAAE,4BAA4B,GAAG,SAAS,EAChD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,GACb,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA4CvC"}
|
|
@@ -12,23 +12,32 @@ function evaluate(config, type, flagKey, defaultValue, context, logger) {
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
const { targetingKey: subjectKey, ...remainingContext } = context;
|
|
15
|
-
|
|
15
|
+
// Include the subjectKey as an "id" attribute for rule matching only when present
|
|
16
|
+
const subjectAttributes = {
|
|
17
|
+
...(subjectKey != null ? { id: subjectKey } : {}),
|
|
18
|
+
...remainingContext,
|
|
19
|
+
};
|
|
20
|
+
const flag = config.flags[flagKey];
|
|
21
|
+
if (!flag) {
|
|
22
|
+
logger.debug('returning default value because flag is not found', { flagKey, subjectKey });
|
|
16
23
|
return {
|
|
17
24
|
value: defaultValue,
|
|
18
|
-
reason:
|
|
19
|
-
errorCode: server_sdk_1.ErrorCode.
|
|
25
|
+
reason: server_sdk_1.StandardResolutionReasons.ERROR,
|
|
26
|
+
errorCode: server_sdk_1.ErrorCode.FLAG_NOT_FOUND,
|
|
20
27
|
};
|
|
21
28
|
}
|
|
22
|
-
// Include the subjectKey as an "id" attribute for rule matching
|
|
23
|
-
const subjectAttributes = {
|
|
24
|
-
id: subjectKey,
|
|
25
|
-
...remainingContext,
|
|
26
|
-
};
|
|
27
29
|
try {
|
|
28
|
-
const resultWithDetails = (0, evaluateForSubject_1.evaluateForSubject)(
|
|
30
|
+
const resultWithDetails = (0, evaluateForSubject_1.evaluateForSubject)(flag, type, subjectKey, subjectAttributes, defaultValue, logger);
|
|
29
31
|
return resultWithDetails;
|
|
30
32
|
}
|
|
31
33
|
catch (error) {
|
|
34
|
+
if (error instanceof server_sdk_1.TargetingKeyMissingError) {
|
|
35
|
+
return {
|
|
36
|
+
value: defaultValue,
|
|
37
|
+
reason: server_sdk_1.StandardResolutionReasons.ERROR,
|
|
38
|
+
errorCode: server_sdk_1.ErrorCode.TARGETING_KEY_MISSING,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
32
41
|
logger.error('Error evaluating flag', { error });
|
|
33
42
|
return {
|
|
34
43
|
value: defaultValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":";;AAaA,4BAmDC;AA/DD,wDAQgC;AAChC,6DAAyD;AAGzD,SAAgB,QAAQ,CACtB,MAAgD,EAChD,IAAO,EACP,OAAe,EACf,YAAgC,EAChC,OAA0B,EAC1B,MAAc;IAEd,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,sBAAS,CAAC,kBAAkB;SACxC,CAAA;IACH,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAEjE,kFAAkF;IAClF,MAAM,iBAAiB,GAAG;QACxB,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,gBAAgB;KACpB,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC1F,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,sCAAyB,CAAC,KAAK;YACvC,SAAS,EAAE,sBAAS,CAAC,cAAc;SACpC,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,IAAA,uCAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7G,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qCAAwB,EAAE,CAAC;YAC9C,OAAO;gBACL,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,sCAAyB,CAAC,KAAK;gBACvC,SAAS,EAAE,sBAAS,CAAC,qBAAqB;aAC3C,CAAA;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,sCAAyB,CAAC,KAAK;YACvC,SAAS,EAAE,sBAAS,CAAC,OAAO;SAC7B,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -2,6 +2,6 @@ import type { FlagTypeToValue } from '@datadog/flagging-core';
|
|
|
2
2
|
import { type EvaluationContext, type FlagValueType, type Logger, type ResolutionDetails } from '@openfeature/server-sdk';
|
|
3
3
|
import { type Rule } from '../rules/rules';
|
|
4
4
|
import { type Flag } from './ufc-v1';
|
|
5
|
-
export declare function evaluateForSubject<T extends FlagValueType>(flag: Flag
|
|
5
|
+
export declare function evaluateForSubject<T extends FlagValueType>(flag: Flag, type: T, subjectKey: string | null | undefined, subjectAttributes: EvaluationContext, defaultValue: FlagTypeToValue<T>, logger: Logger): ResolutionDetails<FlagTypeToValue<T>>;
|
|
6
6
|
export declare function containsMatchingRule(rules: Rule[] | undefined, subjectAttributes: EvaluationContext, logger: Logger): boolean;
|
|
7
7
|
//# sourceMappingURL=evaluateForSubject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateForSubject.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"evaluateForSubject.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,EAGvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,KAAK,IAAI,EAA4D,MAAM,UAAU,CAAA;AAE9F,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EACxD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,MAAM,GACb,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA8FvC;AAkBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAST"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ErrorCode, StandardResolutionReasons, } from '@openfeature/server-sdk';
|
|
1
|
+
import { ErrorCode, StandardResolutionReasons, TargetingKeyMissingError, } from '@openfeature/server-sdk';
|
|
2
2
|
import { matchesRule } from '../rules/rules';
|
|
3
3
|
import { matchesShard } from '../shards/matchesShard';
|
|
4
4
|
import { variantTypeToFlagValueType } from './ufc-v1';
|
|
5
5
|
export function evaluateForSubject(flag, type, subjectKey, subjectAttributes, defaultValue, logger) {
|
|
6
|
-
if (!
|
|
6
|
+
if (!flag.enabled) {
|
|
7
7
|
logger.debug(`returning default assignment because flag is disabled`, {
|
|
8
|
-
flagKey: flag
|
|
8
|
+
flagKey: flag.key,
|
|
9
9
|
subjectKey,
|
|
10
10
|
});
|
|
11
11
|
return {
|
|
@@ -127,6 +127,9 @@ function selectSplitUsingSharding(splits, subjectKey, flagKey, logger) {
|
|
|
127
127
|
shards: split.shards,
|
|
128
128
|
});
|
|
129
129
|
const matches = split.shards.every((shard) => {
|
|
130
|
+
if (subjectKey == null) {
|
|
131
|
+
throw new TargetingKeyMissingError();
|
|
132
|
+
}
|
|
130
133
|
const shardMatches = matchesShard(shard, subjectKey);
|
|
131
134
|
logger.debug(`shard match result`, {
|
|
132
135
|
flagKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateForSubject.js","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAKT,yBAAyB,
|
|
1
|
+
{"version":3,"file":"evaluateForSubject.js","sourceRoot":"","sources":["../../src/configuration/evaluateForSubject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"evaluation.d.ts","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,iBAAiB,EAGvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAE5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,aAAa,EAC9C,MAAM,EAAE,4BAA4B,GAAG,SAAS,EAChD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,GACb,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA4CvC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ErrorCode, StandardResolutionReasons, } from '@openfeature/server-sdk';
|
|
1
|
+
import { ErrorCode, StandardResolutionReasons, TargetingKeyMissingError, } from '@openfeature/server-sdk';
|
|
2
2
|
import { evaluateForSubject } from './evaluateForSubject';
|
|
3
3
|
export function evaluate(config, type, flagKey, defaultValue, context, logger) {
|
|
4
4
|
if (!config) {
|
|
@@ -9,23 +9,32 @@ export function evaluate(config, type, flagKey, defaultValue, context, logger) {
|
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
const { targetingKey: subjectKey, ...remainingContext } = context;
|
|
12
|
-
|
|
12
|
+
// Include the subjectKey as an "id" attribute for rule matching only when present
|
|
13
|
+
const subjectAttributes = {
|
|
14
|
+
...(subjectKey != null ? { id: subjectKey } : {}),
|
|
15
|
+
...remainingContext,
|
|
16
|
+
};
|
|
17
|
+
const flag = config.flags[flagKey];
|
|
18
|
+
if (!flag) {
|
|
19
|
+
logger.debug('returning default value because flag is not found', { flagKey, subjectKey });
|
|
13
20
|
return {
|
|
14
21
|
value: defaultValue,
|
|
15
|
-
reason:
|
|
16
|
-
errorCode: ErrorCode.
|
|
22
|
+
reason: StandardResolutionReasons.ERROR,
|
|
23
|
+
errorCode: ErrorCode.FLAG_NOT_FOUND,
|
|
17
24
|
};
|
|
18
25
|
}
|
|
19
|
-
// Include the subjectKey as an "id" attribute for rule matching
|
|
20
|
-
const subjectAttributes = {
|
|
21
|
-
id: subjectKey,
|
|
22
|
-
...remainingContext,
|
|
23
|
-
};
|
|
24
26
|
try {
|
|
25
|
-
const resultWithDetails = evaluateForSubject(
|
|
27
|
+
const resultWithDetails = evaluateForSubject(flag, type, subjectKey, subjectAttributes, defaultValue, logger);
|
|
26
28
|
return resultWithDetails;
|
|
27
29
|
}
|
|
28
30
|
catch (error) {
|
|
31
|
+
if (error instanceof TargetingKeyMissingError) {
|
|
32
|
+
return {
|
|
33
|
+
value: defaultValue,
|
|
34
|
+
reason: StandardResolutionReasons.ERROR,
|
|
35
|
+
errorCode: ErrorCode.TARGETING_KEY_MISSING,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
29
38
|
logger.error('Error evaluating flag', { error });
|
|
30
39
|
return {
|
|
31
40
|
value: defaultValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAKT,yBAAyB,
|
|
1
|
+
{"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/configuration/evaluation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAKT,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGzD,MAAM,UAAU,QAAQ,CACtB,MAAgD,EAChD,IAAO,EACP,OAAe,EACf,YAAgC,EAChC,OAA0B,EAC1B,MAAc;IAEd,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,SAAS,CAAC,kBAAkB;SACxC,CAAA;IACH,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAEjE,kFAAkF;IAClF,MAAM,iBAAiB,GAAG;QACxB,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,gBAAgB;KACpB,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC1F,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,yBAAyB,CAAC,KAAK;YACvC,SAAS,EAAE,SAAS,CAAC,cAAc;SACpC,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7G,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;YAC9C,OAAO;gBACL,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,yBAAyB,CAAC,KAAK;gBACvC,SAAS,EAAE,SAAS,CAAC,qBAAqB;aAC3C,CAAA;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,yBAAyB,CAAC,KAAK;YACvC,SAAS,EAAE,SAAS,CAAC,OAAO;SAC7B,CAAA;IACH,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datadog/openfeature-node-server",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Node.js server bindings for OpenFeature (wraps @datadog/flagging-core)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/DataDog/openfeature-js-client#readme",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"typecheck": "tsc --noEmit"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@datadog/flagging-core": "1.1.
|
|
39
|
+
"@datadog/flagging-core": "1.1.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@openfeature/server-sdk": ">=1.15.
|
|
42
|
+
"@openfeature/server-sdk": ">=1.15.1"
|
|
43
43
|
},
|
|
44
44
|
"peerDependenciesMeta": {
|
|
45
45
|
"@openfeature/server-sdk": {
|
|
@@ -47,14 +47,14 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@openfeature/core": "1.
|
|
51
|
-
"@openfeature/server-sdk": "1.
|
|
50
|
+
"@openfeature/core": "1.9.2",
|
|
51
|
+
"@openfeature/server-sdk": "1.20.2",
|
|
52
52
|
"@types/jest": "^30.0.0",
|
|
53
|
-
"@types/node": "^18.
|
|
54
|
-
"jest": "^30.0.
|
|
53
|
+
"@types/node": "^18.19.130",
|
|
54
|
+
"jest": "^30.0.5",
|
|
55
55
|
"npm-run-all": "^4.1.5",
|
|
56
56
|
"ts-jest": "^29.4.0",
|
|
57
|
-
"ts-loader": "^9.5.
|
|
58
|
-
"typescript": "^5.
|
|
57
|
+
"ts-loader": "^9.5.4",
|
|
58
|
+
"typescript": "^5.9.3"
|
|
59
59
|
}
|
|
60
60
|
}
|