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.
Files changed (56) hide show
  1. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.d.ts +10 -0
  2. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.d.ts.map +1 -0
  3. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.js +3 -0
  4. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model-type.js.map +1 -0
  5. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.d.ts +16 -0
  6. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.d.ts.map +1 -0
  7. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js +168 -0
  8. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache-read-model.js.map +1 -0
  9. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.d.ts +13 -13
  10. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.d.ts.map +1 -1
  11. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.js +60 -107
  12. package/dist/lib/features/client-feature-toggles/cache/client-feature-toggle-cache.js.map +1 -1
  13. package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.d.ts.map +1 -1
  14. package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.js +3 -3
  15. package/dist/lib/features/client-feature-toggles/cache/createClientFeatureToggleCache.js.map +1 -1
  16. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts +2 -2
  17. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts.map +1 -1
  18. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js +2 -2
  19. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js.map +1 -1
  20. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts +2 -2
  21. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
  22. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js +1 -4
  23. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
  24. package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js +13 -0
  25. package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js.map +1 -1
  26. package/dist/lib/types/model.d.ts +4 -0
  27. package/dist/lib/types/model.d.ts.map +1 -1
  28. package/dist/lib/types/model.js.map +1 -1
  29. package/dist/migrations/20241212122149-add-permissions-maintenance.d.ts +3 -0
  30. package/dist/migrations/20241212122149-add-permissions-maintenance.d.ts.map +1 -0
  31. package/dist/migrations/20241212122149-add-permissions-maintenance.js +13 -0
  32. package/dist/migrations/20241212122149-add-permissions-maintenance.js.map +1 -0
  33. package/frontend/build/index.html +1 -1
  34. package/frontend/build/static/{AdvancedPlayground-PrRDhAuy.js → AdvancedPlayground-DFADEqe8.js} +1 -1
  35. package/frontend/build/static/{CreateProject-DwxXRY6U.js → CreateProject-CGoEXIap.js} +1 -1
  36. package/frontend/build/static/{FeatureMetricsChart-CUos31Gj.js → FeatureMetricsChart-57_5N5EU.js} +1 -1
  37. package/frontend/build/static/{FeatureStaleDialog-DzGTB_sg.js → FeatureStaleDialog-CDoRY1M2.js} +1 -1
  38. package/frontend/build/static/{FeatureViewLazyExport-D7NHajCp.js → FeatureViewLazyExport-f0jDfzAj.js} +2 -2
  39. package/frontend/build/static/{FlagMetricsChart-BXCNlqCy.js → FlagMetricsChart-DQuyL23E.js} +1 -1
  40. package/frontend/build/static/{LazyAdminExport-CedXM26I.js → LazyAdminExport-Dj4BdyYs.js} +2 -2
  41. package/frontend/build/static/{LazyProjectExport-Brqqwhyv.js → LazyProjectExport-BA-ilCwa.js} +17 -17
  42. package/frontend/build/static/{LineChartComponent-B8xHfgT4.js → LineChartComponent-NWKJV8xn.js} +1 -1
  43. package/frontend/build/static/{MarkCompletedDialogue-6fnI3x1H.js → MarkCompletedDialogue-Ch07oNnM.js} +1 -1
  44. package/frontend/build/static/{NetworkOverview-CzbhY5dH.js → NetworkOverview-CvRpHtgY.js} +1 -1
  45. package/frontend/build/static/{NetworkTraffic-XxOo7SdI.js → NetworkTraffic-O4387jGD.js} +1 -1
  46. package/frontend/build/static/{NetworkTrafficUsage-CcN4pbiZ.js → NetworkTrafficUsage-B1D21fKF.js} +1 -1
  47. package/frontend/build/static/{ReactJSONEditor-DthhfffO.js → ReactJSONEditor-BBcmYBCV.js} +1 -1
  48. package/frontend/build/static/{RoleCell-Dq-dy04T.js → RoleCell-B3EsgAmm.js} +1 -1
  49. package/frontend/build/static/{StrategyItemContainer-BM_i1FyX.js → StrategyItemContainer-BGxgBWOA.js} +1 -1
  50. package/frontend/build/static/{aggregateFeatureMetrics-C98fnKO8.js → aggregateFeatureMetrics-Db9m81Y8.js} +1 -1
  51. package/frontend/build/static/{formatTickValue-BsZYl0iy.js → formatTickValue-Ds3ezWde.js} +1 -1
  52. package/frontend/build/static/{index-CeYK7aGF.js → index-CJajrS4I.js} +107 -107
  53. package/frontend/build/static/{index-PyhCfEhS.js → index-D_xNvIcG.js} +1 -1
  54. package/frontend/build/static/{unknownify-CVIcXpfT.js → unknownify-DBuEXTpZ.js} +1 -1
  55. package/frontend/build/static/{useApiTokens-DmKraNCU.js → useApiTokens-CVDfqQHV.js} +1 -1
  56. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=client-feature-toggle-cache-read-model-type.js.map
@@ -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":""}
@@ -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"}
@@ -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
@@ -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, IFeatureToggleClient, IFeatureToggleClientStore, IFeatureToggleQuery, IFlagResolver } from '../../../types';
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 ClientFeatureChange = {
9
- updated: IFeatureToggleClient[];
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 clientFeatureToggleStore;
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(clientFeatureToggleStore: IFeatureToggleClientStore, eventStore: IEventStore, configurationRevisionService: ConfigurationRevisionService, flagResolver: IFlagResolver);
28
- getDelta(sdkRevisionId: number | undefined, environment: string, projects: string[]): Promise<ClientFeatureChange | undefined>;
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
- pollEvents(): Promise<void>;
31
- private populateBaseCache;
32
- getChangedToggles(toggles: string[], revisionId: number): Promise<ClientFeatureChange>;
33
- initCache(): Promise<void>;
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,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,KAAK,4BAA4B,MAAM,qDAAqD,CAAC;AAIpG,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACtB,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,wBAAwB,CAA4B;IAE5D,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,wBAAwB,EAAE,yBAAyB,EACnD,UAAU,EAAE,WAAW,EACvB,4BAA4B,EAAE,4BAA4B,EAC1D,YAAY,EAAE,aAAa;IAezB,QAAQ,CACV,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAmC7B,qBAAqB;IAMtB,UAAU;YA+BT,iBAAiB;IAezB,iBAAiB,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAuBlB,SAAS;IA6DhB,iBAAiB,CACnB,KAAK,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;CA+B3C"}
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(clientFeatureToggleStore, eventStore, configurationRevisionService, flagResolver) {
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.clientFeatureToggleStore = clientFeatureToggleStore;
45
+ this.clientFeatureToggleCacheReadModel =
46
+ clientFeatureToggleCacheReadModel;
46
47
  this.flagResolver = flagResolver;
47
48
  this.onUpdateRevisionEvent = this.onUpdateRevisionEvent.bind(this);
48
- // this.initCache(); TODO: we dont want to initialize cache on startup, but ondemand in future?
49
+ this.cache = {};
50
+ this.initRevisionId();
49
51
  this.configurationRevisionService.on(configuration_revision_service_1.UPDATE_REVISION, this.onUpdateRevisionEvent);
50
52
  }
51
- async getDelta(sdkRevisionId, environment, projects) {
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
- if (!sdkRevisionId ||
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.pollEvents();
91
+ await this.listenToRevisionChange();
77
92
  }
78
93
  }
79
- async pollEvents() {
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
- if (this.currentRevisionId === 0) {
82
- await this.populateBaseCache(latestRevision);
83
- }
84
- else {
85
- const changeEvents = await this.eventStore.getRevisionRange(this.currentRevisionId, latestRevision);
86
- const changedToggles = [
87
- ...new Set(changeEvents
88
- .filter((event) => event.featureName)
89
- .map((event) => event.featureName)),
90
- ];
91
- const newToggles = await this.getChangedToggles(changedToggles, latestRevision);
92
- if (this.cache.development) {
93
- this.cache.development.addRevision(newToggles);
94
- }
95
- }
96
- this.currentRevisionId = latestRevision;
97
- }
98
- async populateBaseCache(latestRevisionId) {
99
- const features = await this.getClientFeatures({
100
- environment: 'development',
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
- console.log(`Populated base cache with ${features.length} features`);
121
+ this.currentRevisionId = latestRevision;
110
122
  }
111
- async getChangedToggles(toggles, revisionId) {
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: 'development',
126
+ environment,
116
127
  });
117
- const foundToggleNames = foundToggles.map((toggle) => toggle.name);
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
- // TODO: I think we should remove it as is, because we do not need initialized cache, I think we should populate cache on demand for each env
131
- // also we already have populateBaseCache method
132
- async initCache() {
133
- //TODO: This only returns stuff for the default environment!!! Need to pass a query to get the relevant environment
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
- const defaultCache = new revision_cache_1.RevisionCache([
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: [defaultBaseFeatures],
140
+ updated: baseFeatures,
155
141
  removed: [],
156
142
  },
157
143
  ]);
158
- const developmentCache = new revision_cache_1.RevisionCache([
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.clientFeatureToggleStore.getClient(query || {});
184
- return result.map(({ name, type, enabled, project, stale, strategies, variants, description, impressionData, dependencies, }) => ({
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":"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"}
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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"}
@@ -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;AAIzC,eAAO,MAAM,8BAA8B,OACnC,EAAE,UACE,cAAc,KACvB,wBAsBF,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 client_feature_toggle_store_1 = __importDefault(require("../client-feature-toggle-store"));
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 featureToggleClientStore = new client_feature_toggle_store_1.default(db, eventBus, getLogger, flagResolver);
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(featureToggleClientStore, eventStore, configurationRevisionService, flagResolver);
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;
@@ -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;AAI/F,iGAAsE;AAE/D,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;IACjD,MAAM,wBAAwB,GAAG,IAAI,qCAAwB,CACzD,EAAE,EACF,QAAQ,EACR,SAAS,EACT,YAAY,CACf,CAAC;IAEF,MAAM,4BAA4B,GAC9B,wCAA4B,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAErE,MAAM,wBAAwB,GAAG,IAAI,sDAAwB,CACzD,wBAAwB,EACxB,UAAU,EACV,4BAA4B,EAC5B,YAAY,CACf,CAAC;IAEF,OAAO,wBAAwB,CAAC;AACpC,CAAC,CAAC;AAzBW,QAAA,8BAA8B,kCAyBzC"}
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 { ClientFeatureChange, ClientFeatureToggleCache } from './cache/client-feature-toggle-cache';
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, projects: string[], environment: string): Promise<ClientFeatureChange | 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,mBAAmB,EACnB,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,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAcrC,iBAAiB,CACnB,KAAK,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;CA+B3C"}
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, projects, environment) {
15
+ async getClientDelta(revisionId, query) {
16
16
  if (this.clientFeatureToggleCache !== null) {
17
- return this.clientFeatureToggleCache.getDelta(revisionId, environment, projects);
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,QAAkB,EAClB,WAAmB;QAEnB,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CACzC,UAAU,EACV,WAAW,EACX,QAAQ,CACX,CAAC;QACN,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;AA9ED,gEA8EC"}
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"}