@cqrs-ddd/pipeline-feature-flags 0.5.1 → 0.6.0
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/errors/feature-disabled.error.d.ts +2 -2
- package/dist/errors/feature-disabled.error.js +2 -2
- package/dist/feature-flag.behavior.d.ts +9 -41
- package/dist/feature-flag.behavior.d.ts.map +1 -1
- package/dist/feature-flag.behavior.js +11 -45
- package/dist/feature-flag.behavior.js.map +1 -1
- package/dist/helpers/evaluation-context.d.ts +1 -1
- package/dist/helpers/evaluation-context.js +1 -1
- package/dist/http.d.ts +2 -6
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/feature-flags-options.interface.d.ts +11 -1
- package/dist/interfaces/feature-flags-options.interface.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Thrown by {@link FeatureFlagBehavior} when a handler is gated behind a flag
|
|
3
3
|
* that resolves to disabled and no `fallback` was configured.
|
|
4
4
|
*
|
|
5
|
-
* Over HTTP,
|
|
6
|
-
* with the flag, or a plain `404 Not Found` to hide the feature.
|
|
5
|
+
* Over HTTP, `toHttpResponse` of `@cqrs-ddd/pipeline-feature-flags/http` answers
|
|
6
|
+
* `403 Forbidden` with the flag, or a plain `404 Not Found` to hide the feature.
|
|
7
7
|
*/
|
|
8
8
|
export declare class FeatureDisabledError extends Error {
|
|
9
9
|
/** The flag key that gated the request. */
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Thrown by {@link FeatureFlagBehavior} when a handler is gated behind a flag
|
|
4
4
|
* that resolves to disabled and no `fallback` was configured.
|
|
5
5
|
*
|
|
6
|
-
* Over HTTP,
|
|
7
|
-
* with the flag, or a plain `404 Not Found` to hide the feature.
|
|
6
|
+
* Over HTTP, `toHttpResponse` of `@cqrs-ddd/pipeline-feature-flags/http` answers
|
|
7
|
+
* `403 Forbidden` with the flag, or a plain `404 Not Found` to hide the feature.
|
|
8
8
|
*/
|
|
9
9
|
export class FeatureDisabledError extends Error {
|
|
10
10
|
/** The flag key that gated the request. */
|
|
@@ -1,63 +1,33 @@
|
|
|
1
1
|
import { type IPipelineBehavior, type IPipelineBehaviorContract, type IPipelineBehaviorOptionsResolver, type IPipelineContext, type NextDelegate, PIPELINE_BEHAVIOR_CONTRACT, type PipelineItemToken, type PipelineLogger } from '@cqrs-ddd/pipeline';
|
|
2
|
-
import type { Client
|
|
3
|
-
import type { FeatureFlagBehaviorOptions, FeatureFlagDecision
|
|
2
|
+
import type { Client } from '@openfeature/server-sdk';
|
|
3
|
+
import type { FeatureFlagBehaviorOptions, FeatureFlagDecision } from './interfaces/feature-flags-options.interface.js';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* The `context.items` entry recording the final boolean gate
|
|
6
6
|
* decision (`true` means the handler was allowed to execute).
|
|
7
7
|
*
|
|
8
8
|
* Use this when only the final gate result is needed. For provider variant,
|
|
9
9
|
* reason, error metadata, and targeting identity use
|
|
10
10
|
* {@link FEATURE_FLAG_DECISION_ITEM}.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* const isEnabled = context.items.get(FEATURE_FLAG_ITEM) === true;
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare const FEATURE_FLAG_ITEM: unique symbol;
|
|
18
|
-
/**
|
|
19
|
-
* Typed token for {@link FEATURE_FLAG_ITEM}: the feature flag gate decision. Reads and writes the same
|
|
20
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
12
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
21
13
|
*/
|
|
22
14
|
export declare const FEATURE_FLAG_ITEM_TOKEN: PipelineItemToken<boolean>;
|
|
23
15
|
/**
|
|
24
|
-
*
|
|
16
|
+
* The `context.items` entry recording the evaluated feature flag
|
|
25
17
|
* key string.
|
|
26
18
|
*
|
|
27
|
-
*
|
|
28
|
-
* ```ts
|
|
29
|
-
* const flagKey = context.items.get(FEATURE_FLAG_KEY_ITEM) as string | undefined;
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export declare const FEATURE_FLAG_KEY_ITEM: unique symbol;
|
|
33
|
-
/**
|
|
34
|
-
* Typed token for {@link FEATURE_FLAG_KEY_ITEM}: the evaluated feature flag key. Reads and writes the same
|
|
35
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
19
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
36
20
|
*/
|
|
37
21
|
export declare const FEATURE_FLAG_KEY_ITEM_TOKEN: PipelineItemToken<string>;
|
|
38
22
|
/**
|
|
39
|
-
*
|
|
23
|
+
* The `context.items` entry with the full
|
|
40
24
|
* {@link FeatureFlagDecision}: raw boolean value, final enabled decision,
|
|
41
25
|
* provider variant/reason/error metadata, and targeting key when available.
|
|
42
26
|
*
|
|
43
27
|
* This lets audit/logging/telemetry behaviors inspect the exact decision without
|
|
44
28
|
* evaluating the flag a second time.
|
|
45
29
|
*
|
|
46
|
-
*
|
|
47
|
-
* ```ts
|
|
48
|
-
* const decision = context.items.get(FEATURE_FLAG_DECISION_ITEM) as
|
|
49
|
-
* | FeatureFlagDecision
|
|
50
|
-
* | undefined;
|
|
51
|
-
*
|
|
52
|
-
* if (decision?.variant === 'treatment-a') {
|
|
53
|
-
* // enrich telemetry/audit metadata
|
|
54
|
-
* }
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare const FEATURE_FLAG_DECISION_ITEM: unique symbol;
|
|
58
|
-
/**
|
|
59
|
-
* Typed token for {@link FEATURE_FLAG_DECISION_ITEM}: the feature flag decision. Reads and writes the same
|
|
60
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
30
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
61
31
|
*/
|
|
62
32
|
export declare const FEATURE_FLAG_DECISION_ITEM_TOKEN: PipelineItemToken<FeatureFlagDecision>;
|
|
63
33
|
/**
|
|
@@ -127,12 +97,10 @@ export declare const FEATURE_FLAG_DECISION_ITEM_TOKEN: PipelineItemToken<Feature
|
|
|
127
97
|
*/
|
|
128
98
|
export declare class FeatureFlagBehavior implements IPipelineBehavior, IPipelineBehaviorOptionsResolver<FeatureFlagBehaviorOptions> {
|
|
129
99
|
private readonly client;
|
|
130
|
-
private readonly moduleContext?;
|
|
131
|
-
private readonly moduleTargetingKeyFactory?;
|
|
132
100
|
static readonly [PIPELINE_BEHAVIOR_CONTRACT]: IPipelineBehaviorContract;
|
|
133
101
|
private readonly logger;
|
|
134
102
|
private readonly defaults;
|
|
135
|
-
constructor(client: Client, defaults?: FeatureFlagBehaviorOptions,
|
|
103
|
+
constructor(client: Client, defaults?: FeatureFlagBehaviorOptions, logger?: PipelineLogger);
|
|
136
104
|
handle(context: IPipelineContext, next: NextDelegate): Promise<unknown>;
|
|
137
105
|
/** Evaluates the flag for this request and builds the decision that gates it. */
|
|
138
106
|
private decide;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.behavior.d.ts","sourceRoot":"","sources":["../src/feature-flag.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,0BAA0B,EAG1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"feature-flag.behavior.d.ts","sourceRoot":"","sources":["../src/feature-flag.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,0BAA0B,EAG1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,yBAAyB,CAAC;AAIzE,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,CAAC,OAAO,CACb,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,CAAC,MAAM,CACb,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC,EAAE,iBAAiB,CAAC,mBAAmB,CACb,CAAC;AAkBxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,qBAAa,mBACX,YACE,iBAAiB,EACjB,gCAAgC,CAAC,0BAA0B,CAAC;IAiD5D,OAAO,CAAC,QAAQ,CAAC,MAAM;IA/CzB,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EAAE,yBAAyB,CAyCrE;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YACmB,MAAM,EAAE,MAAM,EAC/B,QAAQ,CAAC,EAAE,0BAA0B,EACrC,MAAM,CAAC,EAAE,cAAc,EASxB;IAEK,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CA+BlB;IAED,iFAAiF;YACnE,MAAM;IAyCpB,OAAO,CAAC,WAAW;IAgBnB;;;;;;OAMG;YACW,QAAQ;IA2CtB,2EAA2E;IAC3E,uBAAuB,CACrB,OAAO,CAAC,EAAE,0BAA0B,GACnC,0BAA0B,CAE5B;CACF"}
|
|
@@ -4,64 +4,34 @@ import { FeatureDisabledError } from './errors/feature-disabled.error.js';
|
|
|
4
4
|
import { FeatureFlagEvaluationError } from './errors/feature-flag-evaluation.error.js';
|
|
5
5
|
import { buildEvaluationContext } from './helpers/evaluation-context.js';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* The `context.items` entry recording the final boolean gate
|
|
8
8
|
* decision (`true` means the handler was allowed to execute).
|
|
9
9
|
*
|
|
10
10
|
* Use this when only the final gate result is needed. For provider variant,
|
|
11
11
|
* reason, error metadata, and targeting identity use
|
|
12
12
|
* {@link FEATURE_FLAG_DECISION_ITEM}.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* ```ts
|
|
16
|
-
* const isEnabled = context.items.get(FEATURE_FLAG_ITEM) === true;
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export const FEATURE_FLAG_ITEM = Symbol('FEATURE_FLAG_ITEM');
|
|
20
|
-
/**
|
|
21
|
-
* Typed token for {@link FEATURE_FLAG_ITEM}: the feature flag gate decision. Reads and writes the same
|
|
22
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
14
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
23
15
|
*/
|
|
24
|
-
export const FEATURE_FLAG_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_ITEM'
|
|
16
|
+
export const FEATURE_FLAG_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_ITEM');
|
|
25
17
|
/**
|
|
26
|
-
*
|
|
18
|
+
* The `context.items` entry recording the evaluated feature flag
|
|
27
19
|
* key string.
|
|
28
20
|
*
|
|
29
|
-
*
|
|
30
|
-
* ```ts
|
|
31
|
-
* const flagKey = context.items.get(FEATURE_FLAG_KEY_ITEM) as string | undefined;
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export const FEATURE_FLAG_KEY_ITEM = Symbol('FEATURE_FLAG_KEY_ITEM');
|
|
35
|
-
/**
|
|
36
|
-
* Typed token for {@link FEATURE_FLAG_KEY_ITEM}: the evaluated feature flag key. Reads and writes the same
|
|
37
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
21
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
38
22
|
*/
|
|
39
|
-
export const FEATURE_FLAG_KEY_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_KEY_ITEM'
|
|
23
|
+
export const FEATURE_FLAG_KEY_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_KEY_ITEM');
|
|
40
24
|
/**
|
|
41
|
-
*
|
|
25
|
+
* The `context.items` entry with the full
|
|
42
26
|
* {@link FeatureFlagDecision}: raw boolean value, final enabled decision,
|
|
43
27
|
* provider variant/reason/error metadata, and targeting key when available.
|
|
44
28
|
*
|
|
45
29
|
* This lets audit/logging/telemetry behaviors inspect the exact decision without
|
|
46
30
|
* evaluating the flag a second time.
|
|
47
31
|
*
|
|
48
|
-
*
|
|
49
|
-
* ```ts
|
|
50
|
-
* const decision = context.items.get(FEATURE_FLAG_DECISION_ITEM) as
|
|
51
|
-
* | FeatureFlagDecision
|
|
52
|
-
* | undefined;
|
|
53
|
-
*
|
|
54
|
-
* if (decision?.variant === 'treatment-a') {
|
|
55
|
-
* // enrich telemetry/audit metadata
|
|
56
|
-
* }
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
export const FEATURE_FLAG_DECISION_ITEM = Symbol('FEATURE_FLAG_DECISION_ITEM');
|
|
60
|
-
/**
|
|
61
|
-
* Typed token for {@link FEATURE_FLAG_DECISION_ITEM}: the feature flag decision. Reads and writes the same
|
|
62
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
32
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
63
33
|
*/
|
|
64
|
-
export const FEATURE_FLAG_DECISION_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_DECISION_ITEM'
|
|
34
|
+
export const FEATURE_FLAG_DECISION_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG_DECISION_ITEM');
|
|
65
35
|
/**
|
|
66
36
|
* Pipeline behavior that gates a handler behind an OpenFeature boolean flag.
|
|
67
37
|
*
|
|
@@ -129,8 +99,6 @@ export const FEATURE_FLAG_DECISION_ITEM_TOKEN = createPipelineItem('FEATURE_FLAG
|
|
|
129
99
|
*/
|
|
130
100
|
export class FeatureFlagBehavior {
|
|
131
101
|
client;
|
|
132
|
-
moduleContext;
|
|
133
|
-
moduleTargetingKeyFactory;
|
|
134
102
|
static [PIPELINE_BEHAVIOR_CONTRACT] = {
|
|
135
103
|
validate: (context) => {
|
|
136
104
|
const options = context.effectiveOptions;
|
|
@@ -162,10 +130,8 @@ export class FeatureFlagBehavior {
|
|
|
162
130
|
};
|
|
163
131
|
logger;
|
|
164
132
|
defaults;
|
|
165
|
-
constructor(client, defaults,
|
|
133
|
+
constructor(client, defaults, logger) {
|
|
166
134
|
this.client = client;
|
|
167
|
-
this.moduleContext = moduleContext;
|
|
168
|
-
this.moduleTargetingKeyFactory = moduleTargetingKeyFactory;
|
|
169
135
|
if (typeof client?.getBooleanDetails !== 'function') {
|
|
170
136
|
throw new TypeError('FeatureFlagBehavior requires an OpenFeature client, such as the one createFeatureFlagClient() resolves.');
|
|
171
137
|
}
|
|
@@ -195,7 +161,7 @@ export class FeatureFlagBehavior {
|
|
|
195
161
|
}
|
|
196
162
|
/** Evaluates the flag for this request and builds the decision that gates it. */
|
|
197
163
|
async decide(context, flag, options) {
|
|
198
|
-
const evaluationContext = buildEvaluationContext(context,
|
|
164
|
+
const evaluationContext = buildEvaluationContext(context, options.baseContext, options.context, options.targetingKeyFactory);
|
|
199
165
|
const { details, failure } = await this.evaluate(flag, options.defaultValue ?? false, evaluationContext);
|
|
200
166
|
// A boolean true is necessary but, when allowedVariants is configured, not
|
|
201
167
|
// sufficient: the provider must also resolve one of the selected variants.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.behavior.js","sourceRoot":"","sources":["../src/feature-flag.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,kBAAkB,EAMlB,0BAA0B,EAK1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-flag.behavior.js","sourceRoot":"","sources":["../src/feature-flag.behavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import type { EvaluationContextFactory, TargetingKeyFactory } from '../interface
|
|
|
8
8
|
export declare function baseEvaluationContext(context: IPipelineContext): EvaluationContext;
|
|
9
9
|
/**
|
|
10
10
|
* Builds an evaluation context in this order:
|
|
11
|
-
* base pipeline attributes →
|
|
11
|
+
* base pipeline attributes → `baseContext` → `context` → targeting-key factory.
|
|
12
12
|
*
|
|
13
13
|
* A targeting key already provided by module/handler context is preserved when
|
|
14
14
|
* the factory returns `undefined`. A non-empty factory result wins when present.
|
|
@@ -14,7 +14,7 @@ export function baseEvaluationContext(context) {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Builds an evaluation context in this order:
|
|
17
|
-
* base pipeline attributes →
|
|
17
|
+
* base pipeline attributes → `baseContext` → `context` → targeting-key factory.
|
|
18
18
|
*
|
|
19
19
|
* A targeting key already provided by module/handler context is preserved when
|
|
20
20
|
* the factory returns `undefined`. A non-empty factory result wins when present.
|
package/dist/http.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
+
import type { HttpResponse } from '@cqrs-ddd/pipeline';
|
|
1
2
|
import type { FeatureDisabledError } from './errors/feature-disabled.error.js';
|
|
2
|
-
|
|
3
|
-
export interface HttpResponse {
|
|
4
|
-
status: number;
|
|
5
|
-
body: Record<string, unknown>;
|
|
6
|
-
headers: Record<string, string>;
|
|
7
|
-
}
|
|
3
|
+
export type { HttpResponse };
|
|
8
4
|
/**
|
|
9
5
|
* The HTTP answer for a {@link FeatureDisabledError}: `403 Forbidden` naming the flag, or
|
|
10
6
|
* with `hideFeature` a plain `404 Not Found` that does not reveal the feature exists.
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,CAkBd"}
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,sEAAsE;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAOtE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA2B,EAC3B,OAAO,GAA8B,EAAE;IAEvC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;YACnE,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB;QACD,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { FeatureDisabledError } from './errors/feature-disabled.error.js';
|
|
7
7
|
export { FeatureFlagEvaluationError } from './errors/feature-flag-evaluation.error.js';
|
|
8
|
-
export {
|
|
8
|
+
export { FEATURE_FLAG_DECISION_ITEM_TOKEN, FEATURE_FLAG_ITEM_TOKEN, FEATURE_FLAG_KEY_ITEM_TOKEN, FeatureFlagBehavior, } from './feature-flag.behavior.js';
|
|
9
9
|
export { buildFeatureFlagAttributes } from './helpers/build-attributes.js';
|
|
10
10
|
export { baseEvaluationContext, buildEvaluationContext, } from './helpers/evaluation-context.js';
|
|
11
11
|
export { type FeatureFlagIntentOptions, featureFlag, } from './helpers/feature-flag.intent.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,KAAK,wBAAwB,EAC7B,WAAW,GACZ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,iDAAiD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { FeatureDisabledError } from './errors/feature-disabled.error.js';
|
|
8
8
|
export { FeatureFlagEvaluationError } from './errors/feature-flag-evaluation.error.js';
|
|
9
|
-
export {
|
|
9
|
+
export { FEATURE_FLAG_DECISION_ITEM_TOKEN, FEATURE_FLAG_ITEM_TOKEN, FEATURE_FLAG_KEY_ITEM_TOKEN, FeatureFlagBehavior, } from './feature-flag.behavior.js';
|
|
10
10
|
export { buildFeatureFlagAttributes } from './helpers/build-attributes.js';
|
|
11
11
|
export { baseEvaluationContext, buildEvaluationContext, } from './helpers/evaluation-context.js';
|
|
12
12
|
export { featureFlag, } from './helpers/feature-flag.intent.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,WAAW,GACZ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC"}
|
|
@@ -81,10 +81,20 @@ export interface FeatureFlagBehaviorOptions {
|
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
83
|
context?: EvaluationContextFactory;
|
|
84
|
+
/**
|
|
85
|
+
* Fixed attributes of every evaluation, such as the environment. The result of
|
|
86
|
+
* `context` is merged over them. Set it in the constructor defaults.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* new FeatureFlagBehavior(client, { baseContext: { environment: 'production' } });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
baseContext?: EvaluationContext;
|
|
84
94
|
/**
|
|
85
95
|
* Stable identity used for percentage rollouts / sticky targeting.
|
|
86
96
|
*
|
|
87
|
-
*
|
|
97
|
+
* A handler-level `targetingKeyFactory` overrides the one of the constructor defaults.
|
|
88
98
|
* Correlation IDs are intentionally **not** used automatically because they
|
|
89
99
|
* normally change on every request and can move the same user between rollout
|
|
90
100
|
* cohorts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/feature-flags-options.interface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,gBAAgB,KACtB,iBAAiB,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,gBAAgB,KACtB,MAAM,GAAG,SAAS,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,gBAAgB,KACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,OAAO,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"feature-flags-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/feature-flags-options.interface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,gBAAgB,KACtB,iBAAiB,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,gBAAgB,KACtB,MAAM,GAAG,SAAS,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,gBAAgB,KACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,OAAO,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/pipeline-feature-flags",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Feature flags for @cqrs-ddd/pipeline through OpenFeature: an operation runs only while its flag is on",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
52
|
+
"@cqrs-ddd/pipeline": "^0.6.0",
|
|
53
|
+
"@openfeature/server-sdk": "^1.13.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
+
"@cqrs-ddd/pipeline": "0.6.0",
|
|
56
57
|
"@openfeature/server-sdk": "^1.23.0",
|
|
57
58
|
"@vitest/coverage-v8": "^5.0.5",
|
|
58
|
-
"vitest": "^5.0.5"
|
|
59
|
-
"@cqrs-ddd/pipeline": "0.5.1"
|
|
59
|
+
"vitest": "^5.0.5"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "tsc -p tsconfig.build.json",
|