unleash-server 6.5.1 → 6.5.2
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/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.d.ts +10 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.js +3 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.js.map +1 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.d.ts +16 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js +168 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js.map +1 -0
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.d.ts +13 -13
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.js +60 -107
- package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.js +3 -3
- package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts +2 -2
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js +2 -2
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts +2 -2
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js +1 -4
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js +13 -0
- package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js.map +1 -1
- package/dist/lib/types/model.d.ts +4 -0
- package/dist/lib/types/model.d.ts.map +1 -1
- package/dist/lib/types/model.js.map +1 -1
- package/dist/migrations/20241212122149-add-permissions-maintenance.d.ts +3 -0
- package/dist/migrations/20241212122149-add-permissions-maintenance.d.ts.map +1 -0
- package/dist/migrations/20241212122149-add-permissions-maintenance.js +13 -0
- package/dist/migrations/20241212122149-add-permissions-maintenance.js.map +1 -0
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{AdvancedPlayground-PrRDhAuy.js → AdvancedPlayground-DFADEqe8.js} +1 -1
- package/frontend/build/static/{CreateProject-DwxXRY6U.js → CreateProject-CGoEXIap.js} +1 -1
- package/frontend/build/static/{FeatureMetricsChart-CUos31Gj.js → FeatureMetricsChart-57_5N5EU.js} +1 -1
- package/frontend/build/static/{FeatureStaleDialog-DzGTB_sg.js → FeatureStaleDialog-CDoRY1M2.js} +1 -1
- package/frontend/build/static/{FeatureViewLazyExport-D7NHajCp.js → FeatureViewLazyExport-f0jDfzAj.js} +2 -2
- package/frontend/build/static/{FlagMetricsChart-BXCNlqCy.js → FlagMetricsChart-DQuyL23E.js} +1 -1
- package/frontend/build/static/{LazyAdminExport-CedXM26I.js → LazyAdminExport-Dj4BdyYs.js} +2 -2
- package/frontend/build/static/{LazyProjectExport-Brqqwhyv.js → LazyProjectExport-BA-ilCwa.js} +17 -17
- package/frontend/build/static/{LineChartComponent-B8xHfgT4.js → LineChartComponent-NWKJV8xn.js} +1 -1
- package/frontend/build/static/{MarkCompletedDialogue-6fnI3x1H.js → MarkCompletedDialogue-Ch07oNnM.js} +1 -1
- package/frontend/build/static/{NetworkOverview-CzbhY5dH.js → NetworkOverview-CvRpHtgY.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-XxOo7SdI.js → NetworkTraffic-O4387jGD.js} +1 -1
- package/frontend/build/static/{NetworkTrafficUsage-CcN4pbiZ.js → NetworkTrafficUsage-B1D21fKF.js} +1 -1
- package/frontend/build/static/{ReactJSONEditor-DthhfffO.js → ReactJSONEditor-BBcmYBCV.js} +1 -1
- package/frontend/build/static/{RoleCell-Dq-dy04T.js → RoleCell-B3EsgAmm.js} +1 -1
- package/frontend/build/static/{StrategyItemContainer-BM_i1FyX.js → StrategyItemContainer-BGxgBWOA.js} +1 -1
- package/frontend/build/static/{aggregateFeatureMetrics-C98fnKO8.js → aggregateFeatureMetrics-Db9m81Y8.js} +1 -1
- package/frontend/build/static/{formatTickValue-BsZYl0iy.js → formatTickValue-Ds3ezWde.js} +1 -1
- package/frontend/build/static/{index-CeYK7aGF.js → index-CJajrS4I.js} +107 -107
- package/frontend/build/static/{index-PyhCfEhS.js → index-D_xNvIcG.js} +1 -1
- package/frontend/build/static/{unknownify-CVIcXpfT.js → unknownify-DBuEXTpZ.js} +1 -1
- package/frontend/build/static/{useApiTokens-DmKraNCU.js → useApiTokens-CVDfqQHV.js} +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IFeatureToggleQuery } from '../../../types';
|
|
2
|
+
import type { FeatureConfigurationClient } from '../../feature-toggle/types/feature-toggle-strategies-store-type';
|
|
3
|
+
export interface FeatureConfigurationCacheClient extends FeatureConfigurationClient {
|
|
4
|
+
description: string;
|
|
5
|
+
impressionData: false;
|
|
6
|
+
}
|
|
7
|
+
export interface IClientFeatureToggleCacheReadModel {
|
|
8
|
+
getAll(featureQuery: IFeatureToggleQuery): Promise<FeatureConfigurationCacheClient[]>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=client-feature-toggle-cache-read-model-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache-read-model-type.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iEAAiE,CAAC;AAElH,MAAM,WAAW,+BACb,SAAQ,0BAA0B;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;CACzB;AAED,MAAM,WAAW,kCAAkC;IAC/C,MAAM,CACF,YAAY,EAAE,mBAAmB,GAClC,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache-read-model-type.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.ts"],"names":[],"mappings":""}
|
package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type EventEmitter from 'events';
|
|
3
|
+
import type { FeatureConfigurationCacheClient, IClientFeatureToggleCacheReadModel } from './client-feature-toggle-cache-read-model-type';
|
|
4
|
+
import type { Db } from '../../../db/db';
|
|
5
|
+
import { type IFeatureToggleCacheQuery } from '../../../internals';
|
|
6
|
+
export default class ClientFeatureToggleCacheReadModel implements IClientFeatureToggleCacheReadModel {
|
|
7
|
+
private db;
|
|
8
|
+
private timer;
|
|
9
|
+
constructor(db: Db, eventBus: EventEmitter);
|
|
10
|
+
getAll(featureQuery: IFeatureToggleCacheQuery): Promise<FeatureConfigurationCacheClient[]>;
|
|
11
|
+
private addSegmentIdsToStrategy;
|
|
12
|
+
private rowToStrategy;
|
|
13
|
+
private isUnseenStrategyRow;
|
|
14
|
+
private addSegmentToStrategy;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=client-feature-toggle-cache-read-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache-read-model.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EACR,+BAA+B,EAC/B,kCAAkC,EACrC,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAEH,KAAK,wBAAwB,EAGhC,MAAM,oBAAoB,CAAC;AAI5B,MAAM,CAAC,OAAO,OAAO,iCACjB,YAAW,kCAAkC;IAE7C,OAAO,CAAC,EAAE,CAAK;IAEf,OAAO,CAAC,KAAK,CAAW;gBAEZ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY;IAS7B,MAAM,CACf,YAAY,EAAE,wBAAwB,GACvC,OAAO,CAAC,+BAA+B,EAAE,CAAC;IA4J7C,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;CAQ/B"}
|
package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const util_1 = require("../../../util");
|
|
7
|
+
const internals_1 = require("../../../internals");
|
|
8
|
+
const metrics_helper_1 = __importDefault(require("../../../util/metrics-helper"));
|
|
9
|
+
const feature_toggle_store_1 = __importDefault(require("../../feature-toggle/feature-toggle-store"));
|
|
10
|
+
class ClientFeatureToggleCacheReadModel {
|
|
11
|
+
constructor(db, eventBus) {
|
|
12
|
+
this.db = db;
|
|
13
|
+
this.timer = (action) => metrics_helper_1.default.wrapTimer(eventBus, internals_1.DB_TIME, {
|
|
14
|
+
store: 'client-feature-toggle-cache-read-model',
|
|
15
|
+
action,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async getAll(featureQuery) {
|
|
19
|
+
const environment = featureQuery.environment;
|
|
20
|
+
const stopTimer = this.timer(`getAll`);
|
|
21
|
+
const selectColumns = [
|
|
22
|
+
'features.name as name',
|
|
23
|
+
'features.description as description',
|
|
24
|
+
'features.type as type',
|
|
25
|
+
'features.project as project',
|
|
26
|
+
'features.stale as stale',
|
|
27
|
+
'features.impression_data as impression_data',
|
|
28
|
+
'features.created_at as created_at',
|
|
29
|
+
'fe.variants as variants',
|
|
30
|
+
'fe.enabled as enabled',
|
|
31
|
+
'fe.environment as environment',
|
|
32
|
+
'fs.id as strategy_id',
|
|
33
|
+
'fs.strategy_name as strategy_name',
|
|
34
|
+
'fs.title as strategy_title',
|
|
35
|
+
'fs.disabled as strategy_disabled',
|
|
36
|
+
'fs.parameters as parameters',
|
|
37
|
+
'fs.constraints as constraints',
|
|
38
|
+
'fs.sort_order as sort_order',
|
|
39
|
+
'fs.variants as strategy_variants',
|
|
40
|
+
'segments.id as segment_id',
|
|
41
|
+
'segments.constraints as segment_constraints',
|
|
42
|
+
'df.parent as parent',
|
|
43
|
+
'df.variants as parent_variants',
|
|
44
|
+
'df.enabled as parent_enabled',
|
|
45
|
+
];
|
|
46
|
+
let query = this.db('features')
|
|
47
|
+
.modify(feature_toggle_store_1.default.filterByArchived, false)
|
|
48
|
+
.leftJoin(this.db('feature_strategies')
|
|
49
|
+
.select('*')
|
|
50
|
+
.where({ environment })
|
|
51
|
+
.as('fs'), 'fs.feature_name', 'features.name')
|
|
52
|
+
.leftJoin(this.db('feature_environments')
|
|
53
|
+
.select('feature_name', 'enabled', 'environment', 'variants')
|
|
54
|
+
.where({ environment })
|
|
55
|
+
.as('fe'), 'fe.feature_name', 'features.name')
|
|
56
|
+
.leftJoin('feature_strategy_segment as fss', `fss.feature_strategy_id`, `fs.id`)
|
|
57
|
+
.leftJoin('segments', `segments.id`, `fss.segment_id`)
|
|
58
|
+
.leftJoin('dependent_features as df', 'df.child', 'features.name');
|
|
59
|
+
if (featureQuery?.toggleNames && featureQuery?.toggleNames.length > 0) {
|
|
60
|
+
query = query.whereIn('features.name', featureQuery.toggleNames);
|
|
61
|
+
}
|
|
62
|
+
query = query.select(selectColumns);
|
|
63
|
+
if (featureQuery) {
|
|
64
|
+
if (featureQuery.tag) {
|
|
65
|
+
const tagQuery = this.db
|
|
66
|
+
.from('feature_tag')
|
|
67
|
+
.select('feature_name')
|
|
68
|
+
.whereIn(['tag_type', 'tag_value'], featureQuery.tag);
|
|
69
|
+
query = query.whereIn('features.name', tagQuery);
|
|
70
|
+
}
|
|
71
|
+
if (featureQuery.project &&
|
|
72
|
+
!featureQuery.project.includes(util_1.ALL_PROJECTS)) {
|
|
73
|
+
query = query.whereIn('project', featureQuery.project);
|
|
74
|
+
}
|
|
75
|
+
if (featureQuery.namePrefix) {
|
|
76
|
+
query = query.where('features.name', 'like', `${featureQuery.namePrefix}%`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const rows = await query;
|
|
80
|
+
stopTimer();
|
|
81
|
+
const featureToggles = rows.reduce((acc, r) => {
|
|
82
|
+
const feature = acc[r.name] ?? {
|
|
83
|
+
strategies: [],
|
|
84
|
+
};
|
|
85
|
+
if (this.isUnseenStrategyRow(feature, r) && !r.strategy_disabled) {
|
|
86
|
+
feature.strategies?.push(this.rowToStrategy(r));
|
|
87
|
+
}
|
|
88
|
+
if (featureQuery?.inlineSegmentConstraints && r.segment_id) {
|
|
89
|
+
this.addSegmentToStrategy(feature, r);
|
|
90
|
+
}
|
|
91
|
+
else if (!featureQuery?.inlineSegmentConstraints &&
|
|
92
|
+
r.segment_id) {
|
|
93
|
+
this.addSegmentIdsToStrategy(feature, r);
|
|
94
|
+
}
|
|
95
|
+
if (r.parent) {
|
|
96
|
+
feature.dependencies = feature.dependencies || [];
|
|
97
|
+
feature.dependencies.push({
|
|
98
|
+
feature: r.parent,
|
|
99
|
+
enabled: r.parent_enabled,
|
|
100
|
+
...(r.parent_enabled
|
|
101
|
+
? { variants: r.parent_variants }
|
|
102
|
+
: {}),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
feature.impressionData = r.impression_data;
|
|
106
|
+
feature.enabled = !!r.enabled;
|
|
107
|
+
feature.name = r.name;
|
|
108
|
+
feature.description = r.description;
|
|
109
|
+
feature.project = r.project;
|
|
110
|
+
feature.stale = r.stale;
|
|
111
|
+
feature.type = r.type;
|
|
112
|
+
feature.variants = r.variants || [];
|
|
113
|
+
feature.project = r.project;
|
|
114
|
+
acc[r.name] = feature;
|
|
115
|
+
return acc;
|
|
116
|
+
}, {});
|
|
117
|
+
const features = Object.values(featureToggles);
|
|
118
|
+
// strip away unwanted properties
|
|
119
|
+
const cleanedFeatures = features.map(({ strategies, ...rest }) => ({
|
|
120
|
+
...rest,
|
|
121
|
+
strategies: strategies
|
|
122
|
+
?.sort((strategy1, strategy2) => {
|
|
123
|
+
if (typeof strategy1.sortOrder === 'number' &&
|
|
124
|
+
typeof strategy2.sortOrder === 'number') {
|
|
125
|
+
return strategy1.sortOrder - strategy2.sortOrder;
|
|
126
|
+
}
|
|
127
|
+
return 0;
|
|
128
|
+
})
|
|
129
|
+
.map(({ id, title, sortOrder, ...strategy }) => ({
|
|
130
|
+
...strategy,
|
|
131
|
+
})),
|
|
132
|
+
}));
|
|
133
|
+
return cleanedFeatures;
|
|
134
|
+
}
|
|
135
|
+
addSegmentIdsToStrategy(feature, row) {
|
|
136
|
+
const strategy = feature.strategies?.find((s) => s?.id === row.strategy_id);
|
|
137
|
+
if (!strategy) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (!strategy.segments) {
|
|
141
|
+
strategy.segments = [];
|
|
142
|
+
}
|
|
143
|
+
strategy.segments.push(row.segment_id);
|
|
144
|
+
}
|
|
145
|
+
rowToStrategy(row) {
|
|
146
|
+
const strategy = {
|
|
147
|
+
id: row.strategy_id,
|
|
148
|
+
name: row.strategy_name,
|
|
149
|
+
title: row.strategy_title,
|
|
150
|
+
constraints: row.constraints || [],
|
|
151
|
+
parameters: (0, util_1.mapValues)(row.parameters || {}, util_1.ensureStringValue),
|
|
152
|
+
sortOrder: row.sort_order,
|
|
153
|
+
};
|
|
154
|
+
strategy.variants = row.strategy_variants || [];
|
|
155
|
+
return strategy;
|
|
156
|
+
}
|
|
157
|
+
isUnseenStrategyRow(feature, row) {
|
|
158
|
+
return (row.strategy_id &&
|
|
159
|
+
!feature.strategies?.find((s) => s?.id === row.strategy_id));
|
|
160
|
+
}
|
|
161
|
+
addSegmentToStrategy(feature, row) {
|
|
162
|
+
feature.strategies
|
|
163
|
+
?.find((s) => s?.id === row.strategy_id)
|
|
164
|
+
?.constraints?.push(...row.segment_constraints);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.default = ClientFeatureToggleCacheReadModel;
|
|
168
|
+
//# sourceMappingURL=client-feature-toggle-cache-read-model.js.map
|
package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache-read-model.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { IEventStore,
|
|
2
|
-
import type { FeatureConfigurationClient } from '../../feature-toggle/types/feature-toggle-strategies-store-type';
|
|
1
|
+
import type { IEventStore, IFeatureToggleCacheQuery, IFeatureToggleQuery, IFlagResolver } from '../../../types';
|
|
3
2
|
import type ConfigurationRevisionService from '../../feature-toggle/configuration-revision-service';
|
|
3
|
+
import type { FeatureConfigurationCacheClient, IClientFeatureToggleCacheReadModel } from './client-feature-toggle-cache-read-model-type';
|
|
4
4
|
type DeletedFeature = {
|
|
5
5
|
name: string;
|
|
6
6
|
project: string;
|
|
7
7
|
};
|
|
8
|
-
export type
|
|
9
|
-
updated:
|
|
10
|
-
removed: DeletedFeature[];
|
|
8
|
+
export type RevisionCacheEntry = {
|
|
9
|
+
updated: FeatureConfigurationCacheClient[];
|
|
11
10
|
revisionId: number;
|
|
11
|
+
removed: DeletedFeature[];
|
|
12
12
|
};
|
|
13
13
|
export type Revision = {
|
|
14
14
|
revisionId: number;
|
|
@@ -17,21 +17,21 @@ export type Revision = {
|
|
|
17
17
|
};
|
|
18
18
|
export declare const calculateRequiredClientRevision: (revisions: Revision[], requiredRevisionId: number, projects: string[]) => Revision;
|
|
19
19
|
export declare class ClientFeatureToggleCache {
|
|
20
|
-
private
|
|
20
|
+
private clientFeatureToggleCacheReadModel;
|
|
21
21
|
private cache;
|
|
22
22
|
private eventStore;
|
|
23
23
|
private currentRevisionId;
|
|
24
24
|
private interval;
|
|
25
25
|
private flagResolver;
|
|
26
26
|
private configurationRevisionService;
|
|
27
|
-
constructor(
|
|
28
|
-
|
|
27
|
+
constructor(clientFeatureToggleCacheReadModel: IClientFeatureToggleCacheReadModel, eventStore: IEventStore, configurationRevisionService: ConfigurationRevisionService, flagResolver: IFlagResolver);
|
|
28
|
+
private initRevisionId;
|
|
29
|
+
getDelta(sdkRevisionId: number | undefined, query: IFeatureToggleQuery): Promise<RevisionCacheEntry | undefined>;
|
|
29
30
|
private onUpdateRevisionEvent;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
getClientFeatures(query?: IFeatureToggleQuery): Promise<FeatureConfigurationClient[]>;
|
|
31
|
+
listenToRevisionChange(): Promise<void>;
|
|
32
|
+
getChangedToggles(environment: string, toggles: string[]): Promise<FeatureConfigurationCacheClient[]>;
|
|
33
|
+
initEnvironmentCache(environment: string): Promise<void>;
|
|
34
|
+
getClientFeatures(query: IFeatureToggleCacheQuery): Promise<FeatureConfigurationCacheClient[]>;
|
|
35
35
|
}
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=client-feature-toggle-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-feature-toggle-cache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,4BAA4B,MAAM,qDAAqD,CAAC;AAGpG,OAAO,KAAK,EACR,+BAA+B,EAC/B,kCAAkC,EACrC,MAAM,+CAA+C,CAAC;AAEvD,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,+BAA+B,EAAE,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B,CAAC;AAgDF,eAAO,MAAM,+BAA+B,cAC7B,QAAQ,EAAE,sBACD,MAAM,YAChB,MAAM,EAAE,aAWrB,CAAC;AAEF,qBAAa,wBAAwB;IACjC,OAAO,CAAC,iCAAiC,CAAqC;IAE9E,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,4BAA4B,CAA+B;gBAG/D,iCAAiC,EAAE,kCAAkC,EACrE,UAAU,EAAE,WAAW,EACvB,4BAA4B,EAAE,4BAA4B,EAC1D,YAAY,EAAE,aAAa;YAiBjB,cAAc;IAKtB,QAAQ,CACV,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;YA8C5B,qBAAqB;IAMtB,sBAAsB;IA4C7B,iBAAiB,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAQhC,oBAAoB,CAAC,WAAW,EAAE,MAAM;IAoB/C,iBAAiB,CACnB,KAAK,EAAE,wBAAwB,GAChC,OAAO,CAAC,+BAA+B,EAAE,CAAC;CAKhD"}
|
|
@@ -37,26 +37,41 @@ const calculateRequiredClientRevision = (revisions, requiredRevisionId, projects
|
|
|
37
37
|
};
|
|
38
38
|
exports.calculateRequiredClientRevision = calculateRequiredClientRevision;
|
|
39
39
|
class ClientFeatureToggleCache {
|
|
40
|
-
constructor(
|
|
40
|
+
constructor(clientFeatureToggleCacheReadModel, eventStore, configurationRevisionService, flagResolver) {
|
|
41
41
|
this.cache = {};
|
|
42
42
|
this.currentRevisionId = 0;
|
|
43
43
|
this.eventStore = eventStore;
|
|
44
44
|
this.configurationRevisionService = configurationRevisionService;
|
|
45
|
-
this.
|
|
45
|
+
this.clientFeatureToggleCacheReadModel =
|
|
46
|
+
clientFeatureToggleCacheReadModel;
|
|
46
47
|
this.flagResolver = flagResolver;
|
|
47
48
|
this.onUpdateRevisionEvent = this.onUpdateRevisionEvent.bind(this);
|
|
48
|
-
|
|
49
|
+
this.cache = {};
|
|
50
|
+
this.initRevisionId();
|
|
49
51
|
this.configurationRevisionService.on(configuration_revision_service_1.UPDATE_REVISION, this.onUpdateRevisionEvent);
|
|
50
52
|
}
|
|
51
|
-
async
|
|
53
|
+
async initRevisionId() {
|
|
54
|
+
this.currentRevisionId =
|
|
55
|
+
await this.configurationRevisionService.getMaxRevisionId();
|
|
56
|
+
}
|
|
57
|
+
async getDelta(sdkRevisionId, query) {
|
|
58
|
+
const projects = query.project ? query.project : ['*'];
|
|
59
|
+
const environment = query.environment ? query.environment : 'default';
|
|
60
|
+
// TODO: filter by tags, what is namePrefix? anything else?
|
|
52
61
|
const requiredRevisionId = sdkRevisionId || 0;
|
|
62
|
+
const hasCache = this.cache[environment] !== undefined;
|
|
63
|
+
if (!hasCache) {
|
|
64
|
+
await this.initEnvironmentCache(environment);
|
|
65
|
+
}
|
|
53
66
|
// Should get the latest state if revision does not exist or if sdkRevision is not present
|
|
54
67
|
// We should be able to do this without going to the database by merging revisions from the cache with
|
|
55
68
|
// the base case
|
|
56
|
-
|
|
69
|
+
const firstTimeCalling = !sdkRevisionId;
|
|
70
|
+
if (firstTimeCalling ||
|
|
57
71
|
(sdkRevisionId &&
|
|
58
72
|
sdkRevisionId !== this.currentRevisionId &&
|
|
59
73
|
!this.cache[environment].hasRevision(sdkRevisionId))) {
|
|
74
|
+
//TODO: populate cache based on this?
|
|
60
75
|
return {
|
|
61
76
|
revisionId: this.currentRevisionId,
|
|
62
77
|
// @ts-ignore
|
|
@@ -73,126 +88,64 @@ class ClientFeatureToggleCache {
|
|
|
73
88
|
}
|
|
74
89
|
async onUpdateRevisionEvent() {
|
|
75
90
|
if (this.flagResolver.isEnabled('deltaApi')) {
|
|
76
|
-
await this.
|
|
91
|
+
await this.listenToRevisionChange();
|
|
77
92
|
}
|
|
78
93
|
}
|
|
79
|
-
async
|
|
94
|
+
async listenToRevisionChange() {
|
|
95
|
+
const keys = Object.keys(this.cache);
|
|
96
|
+
if (keys.length === 0)
|
|
97
|
+
return;
|
|
80
98
|
const latestRevision = await this.configurationRevisionService.getMaxRevisionId();
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
});
|
|
102
|
-
if (this.cache.development) {
|
|
103
|
-
this.cache.development.addRevision({
|
|
104
|
-
updated: features, //impressionData is not on the type but should be
|
|
105
|
-
removed: [],
|
|
106
|
-
revisionId: latestRevisionId,
|
|
99
|
+
const changeEvents = await this.eventStore.getRevisionRange(this.currentRevisionId, latestRevision);
|
|
100
|
+
const changedToggles = [
|
|
101
|
+
...new Set(changeEvents
|
|
102
|
+
.filter((event) => event.featureName)
|
|
103
|
+
.map((event) => event.featureName)),
|
|
104
|
+
];
|
|
105
|
+
const removed = changeEvents
|
|
106
|
+
.filter((event) => event.featureName && event.project)
|
|
107
|
+
.filter((event) => event.type === 'feature-deleted')
|
|
108
|
+
.map((event) => ({
|
|
109
|
+
name: event.featureName,
|
|
110
|
+
project: event.project,
|
|
111
|
+
}));
|
|
112
|
+
// TODO: we might want to only update the environments that had events changed for performance
|
|
113
|
+
for (const environment of keys) {
|
|
114
|
+
const newToggles = await this.getChangedToggles(environment, changedToggles);
|
|
115
|
+
this.cache[environment].addRevision({
|
|
116
|
+
updated: newToggles,
|
|
117
|
+
revisionId: latestRevision,
|
|
118
|
+
removed,
|
|
107
119
|
});
|
|
108
120
|
}
|
|
109
|
-
|
|
121
|
+
this.currentRevisionId = latestRevision;
|
|
110
122
|
}
|
|
111
|
-
async getChangedToggles(
|
|
123
|
+
async getChangedToggles(environment, toggles) {
|
|
112
124
|
const foundToggles = await this.getClientFeatures({
|
|
113
|
-
// @ts-ignore removed toggleNames from the type, we should not use this method at all,
|
|
114
125
|
toggleNames: toggles,
|
|
115
|
-
environment
|
|
126
|
+
environment,
|
|
116
127
|
});
|
|
117
|
-
|
|
118
|
-
const removed = toggles
|
|
119
|
-
.filter((toggle) => !foundToggleNames.includes(toggle))
|
|
120
|
-
.map((name) => ({
|
|
121
|
-
name,
|
|
122
|
-
project: 'default', // TODO: this needs to be smart and figure out the project . IMPORTANT
|
|
123
|
-
}));
|
|
124
|
-
return {
|
|
125
|
-
updated: foundToggles, // impressionData is not on the type but should be
|
|
126
|
-
removed,
|
|
127
|
-
revisionId,
|
|
128
|
-
};
|
|
128
|
+
return foundToggles;
|
|
129
129
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// featuresByEnvironment cache
|
|
135
|
-
// The base cache is a record of <environment, array>
|
|
136
|
-
// Each array holds a collection of objects that contains the revisionId and which
|
|
137
|
-
// flags changed in each revision. It also holds a type that informs us whether or not
|
|
138
|
-
// the revision is the base case or if is an update or remove operation
|
|
139
|
-
// To get the base for each cache we need to get all features for all environments and the max revision id
|
|
140
|
-
// hardcoded for now
|
|
141
|
-
// const environments = ["default", "development", "production"];
|
|
142
|
-
const defaultBaseFeatures = await this.getClientFeatures({
|
|
143
|
-
environment: 'default',
|
|
144
|
-
});
|
|
145
|
-
const developmentBaseFeatures = await this.getClientFeatures({
|
|
146
|
-
environment: 'development',
|
|
147
|
-
});
|
|
148
|
-
const productionBaseFeatures = await this.getClientFeatures({
|
|
149
|
-
environment: 'production',
|
|
130
|
+
async initEnvironmentCache(environment) {
|
|
131
|
+
// Todo: replace with method that gets all features for an environment
|
|
132
|
+
const baseFeatures = await this.getClientFeatures({
|
|
133
|
+
environment,
|
|
150
134
|
});
|
|
151
|
-
|
|
135
|
+
this.currentRevisionId =
|
|
136
|
+
await this.configurationRevisionService.getMaxRevisionId();
|
|
137
|
+
const cache = new revision_cache_1.RevisionCache([
|
|
152
138
|
{
|
|
153
139
|
revisionId: this.currentRevisionId,
|
|
154
|
-
updated:
|
|
140
|
+
updated: baseFeatures,
|
|
155
141
|
removed: [],
|
|
156
142
|
},
|
|
157
143
|
]);
|
|
158
|
-
|
|
159
|
-
{
|
|
160
|
-
revisionId: this.currentRevisionId,
|
|
161
|
-
updated: [developmentBaseFeatures],
|
|
162
|
-
removed: [],
|
|
163
|
-
},
|
|
164
|
-
]);
|
|
165
|
-
const productionCache = new revision_cache_1.RevisionCache([
|
|
166
|
-
{
|
|
167
|
-
revisionId: this.currentRevisionId,
|
|
168
|
-
updated: [productionBaseFeatures],
|
|
169
|
-
removed: [],
|
|
170
|
-
},
|
|
171
|
-
]);
|
|
172
|
-
// Always assume that the first item of the array is the base
|
|
173
|
-
const cache = {
|
|
174
|
-
default: defaultCache,
|
|
175
|
-
development: developmentCache,
|
|
176
|
-
production: productionCache,
|
|
177
|
-
};
|
|
178
|
-
const latestRevision = await this.configurationRevisionService.getMaxRevisionId();
|
|
179
|
-
this.currentRevisionId = latestRevision;
|
|
180
|
-
this.cache = cache;
|
|
144
|
+
this.cache[environment] = cache;
|
|
181
145
|
}
|
|
182
146
|
async getClientFeatures(query) {
|
|
183
|
-
const result = await this.
|
|
184
|
-
return result
|
|
185
|
-
name,
|
|
186
|
-
type,
|
|
187
|
-
enabled,
|
|
188
|
-
project,
|
|
189
|
-
stale,
|
|
190
|
-
strategies,
|
|
191
|
-
variants,
|
|
192
|
-
description,
|
|
193
|
-
impressionData,
|
|
194
|
-
dependencies,
|
|
195
|
-
}));
|
|
147
|
+
const result = await this.clientFeatureToggleCacheReadModel.getAll(query);
|
|
148
|
+
return result;
|
|
196
149
|
}
|
|
197
150
|
}
|
|
198
151
|
exports.ClientFeatureToggleCache = ClientFeatureToggleCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-feature-toggle-cache.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-cache.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClientFeatureToggleCache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"createClientFeatureToggleCache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGzC,eAAO,MAAM,8BAA8B,OACnC,EAAE,UACE,cAAc,KACvB,wBAmBF,CAAC"}
|
|
@@ -7,13 +7,13 @@ exports.createClientFeatureToggleCache = void 0;
|
|
|
7
7
|
const client_feature_toggle_cache_1 = require("./client-feature-toggle-cache");
|
|
8
8
|
const event_store_1 = __importDefault(require("../../events/event-store"));
|
|
9
9
|
const configuration_revision_service_1 = __importDefault(require("../../feature-toggle/configuration-revision-service"));
|
|
10
|
-
const
|
|
10
|
+
const client_feature_toggle_cache_read_model_1 = __importDefault(require("./client-feature-toggle-cache-read-model"));
|
|
11
11
|
const createClientFeatureToggleCache = (db, config) => {
|
|
12
12
|
const { getLogger, eventBus, flagResolver } = config;
|
|
13
13
|
const eventStore = new event_store_1.default(db, getLogger);
|
|
14
|
-
const
|
|
14
|
+
const clientFeatureToggleCacheReadModel = new client_feature_toggle_cache_read_model_1.default(db, eventBus);
|
|
15
15
|
const configurationRevisionService = configuration_revision_service_1.default.getInstance({ eventStore }, config);
|
|
16
|
-
const clientFeatureToggleCache = new client_feature_toggle_cache_1.ClientFeatureToggleCache(
|
|
16
|
+
const clientFeatureToggleCache = new client_feature_toggle_cache_1.ClientFeatureToggleCache(clientFeatureToggleCacheReadModel, eventStore, configurationRevisionService, flagResolver);
|
|
17
17
|
return clientFeatureToggleCache;
|
|
18
18
|
};
|
|
19
19
|
exports.createClientFeatureToggleCache = createClientFeatureToggleCache;
|
package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClientFeatureToggleCache.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.ts"],"names":[],"mappings":";;;;;;AAAA,+EAAyE;AACzE,2EAAkD;AAClD,yHAA+F;
|
|
1
|
+
{"version":3,"file":"createClientFeatureToggleCache.js","sourceRoot":"","sources":["../../../../../src/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.ts"],"names":[],"mappings":";;;;;;AAAA,+EAAyE;AACzE,2EAAkD;AAClD,yHAA+F;AAG/F,sHAAyF;AAElF,MAAM,8BAA8B,GAAG,CAC1C,EAAM,EACN,MAAsB,EACE,EAAE;IAC1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAErD,MAAM,UAAU,GAAG,IAAI,qBAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAEjD,MAAM,iCAAiC,GACnC,IAAI,gDAAiC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAExD,MAAM,4BAA4B,GAC9B,wCAA4B,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAErE,MAAM,wBAAwB,GAAG,IAAI,sDAAwB,CACzD,iCAAiC,EACjC,UAAU,EACV,4BAA4B,EAC5B,YAAY,CACf,CAAC;IAEF,OAAO,wBAAwB,CAAC;AACpC,CAAC,CAAC;AAtBW,QAAA,8BAA8B,kCAsBzC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IFeatureToggleQuery, ISegmentReadModel, IUnleashConfig, IUnleashStores } from '../../types';
|
|
2
2
|
import type { FeatureConfigurationClient } from '../feature-toggle/types/feature-toggle-strategies-store-type';
|
|
3
|
-
import type {
|
|
3
|
+
import type { RevisionCacheEntry, ClientFeatureToggleCache } from './cache/client-feature-toggle-cache';
|
|
4
4
|
export declare class ClientFeatureToggleService {
|
|
5
5
|
private logger;
|
|
6
6
|
private clientFeatureToggleStore;
|
|
@@ -8,7 +8,7 @@ export declare class ClientFeatureToggleService {
|
|
|
8
8
|
private clientFeatureToggleCache;
|
|
9
9
|
constructor({ clientFeatureToggleStore, }: Pick<IUnleashStores, 'clientFeatureToggleStore'>, segmentReadModel: ISegmentReadModel, clientFeatureToggleCache: ClientFeatureToggleCache | null, { getLogger }: Pick<IUnleashConfig, 'getLogger' | 'flagResolver'>);
|
|
10
10
|
getActiveSegmentsForClient(): Promise<import("../../types").IClientSegment[]>;
|
|
11
|
-
getClientDelta(revisionId: number | undefined,
|
|
11
|
+
getClientDelta(revisionId: number | undefined, query: IFeatureToggleQuery): Promise<RevisionCacheEntry | undefined>;
|
|
12
12
|
getClientFeatures(query?: IFeatureToggleQuery): Promise<FeatureConfigurationClient[]>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=client-feature-toggle-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-feature-toggle-service.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/client-feature-toggles/client-feature-toggle-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC/G,OAAO,KAAK,EACR,
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-service.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/client-feature-toggles/client-feature-toggle-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC/G,OAAO,KAAK,EACR,kBAAkB,EAClB,wBAAwB,EAC3B,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,0BAA0B;IACnC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,wBAAwB,CAA4B;IAE5D,OAAO,CAAC,gBAAgB,CAAoB;IAE5C,OAAO,CAAC,wBAAwB,CAAyC;gBAGrE,EACI,wBAAwB,GAC3B,EAAE,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,EACnD,gBAAgB,EAAE,iBAAiB,EACnC,wBAAwB,EAAE,wBAAwB,GAAG,IAAI,EACzD,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,cAAc,CAAC;IAQ/D,0BAA0B;IAI1B,cAAc,CAChB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAUpC,iBAAiB,CACnB,KAAK,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;CA+B3C"}
|
|
@@ -12,9 +12,9 @@ class ClientFeatureToggleService {
|
|
|
12
12
|
async getActiveSegmentsForClient() {
|
|
13
13
|
return this.segmentReadModel.getActiveForClient();
|
|
14
14
|
}
|
|
15
|
-
async getClientDelta(revisionId,
|
|
15
|
+
async getClientDelta(revisionId, query) {
|
|
16
16
|
if (this.clientFeatureToggleCache !== null) {
|
|
17
|
-
return this.clientFeatureToggleCache.getDelta(revisionId,
|
|
17
|
+
return this.clientFeatureToggleCache.getDelta(revisionId, query);
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
20
|
throw new Error('Calling the partial updates but the cache is not initialized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-feature-toggle-service.js","sourceRoot":"","sources":["../../../../src/lib/features/client-feature-toggles/client-feature-toggle-service.ts"],"names":[],"mappings":";;;AAgBA,MAAa,0BAA0B;IASnC,YACI,EACI,wBAAwB,GACuB,EACnD,gBAAmC,EACnC,wBAAyD,EACzD,EAAE,SAAS,EAAsD;QAR7D,6BAAwB,GAAoC,IAAI,CAAC;QAUrE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,UAA8B,EAC9B,
|
|
1
|
+
{"version":3,"file":"client-feature-toggle-service.js","sourceRoot":"","sources":["../../../../src/lib/features/client-feature-toggles/client-feature-toggle-service.ts"],"names":[],"mappings":";;;AAgBA,MAAa,0BAA0B;IASnC,YACI,EACI,wBAAwB,GACuB,EACnD,gBAAmC,EACnC,wBAAyD,EACzD,EAAE,SAAS,EAAsD;QAR7D,6BAAwB,GAAoC,IAAI,CAAC;QAUrE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,UAA8B,EAC9B,KAA0B;QAE1B,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CACX,8DAA8D,CACjE,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,KAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACxD,KAAK,IAAI,EAAE,CACd,CAAC;QAEF,OAAO,MAAM,CAAC,GAAG,CACb,CAAC,EACG,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,GACf,EAAE,EAAE,CAAC,CAAC;YACH,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,OAAO;YACP,KAAK;YACL,UAAU;YACV,QAAQ;YACR,WAAW;YACX,cAAc;YACd,YAAY;SACf,CAAC,CACL,CAAC;IACN,CAAC;CACJ;AAzED,gEAyEC"}
|