unleash-server 5.3.0 → 5.3.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/playground/feature-evaluator/client.d.ts +1 -1
- package/dist/lib/features/playground/feature-evaluator/client.js +14 -15
- package/dist/lib/features/playground/feature-evaluator/client.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.d.ts +1 -1
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js +2 -2
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js.map +1 -1
- package/dist/lib/features/playground/playground-service.js +1 -1
- package/dist/lib/features/playground/playground-service.js.map +1 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.d.ts +2 -0
- package/dist/lib/services/client-metrics/metrics-service-v2.js +27 -17
- package/dist/lib/services/client-metrics/metrics-service-v2.js.map +1 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.test.d.ts +1 -0
- package/dist/lib/services/client-metrics/metrics-service-v2.test.js +96 -0
- package/dist/lib/services/client-metrics/metrics-service-v2.test.js.map +1 -0
- package/dist/lib/types/experimental.d.ts +1 -1
- package/dist/lib/types/experimental.js +1 -0
- package/dist/lib/types/experimental.js.map +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{AdvancedPlayground-4c9d02ea.js → AdvancedPlayground-48dddbf4.js} +1 -1
- package/frontend/build/static/{CreateProject-16b35d57.js → CreateProject-c1b0f704.js} +1 -1
- package/frontend/build/static/{Error-50364f10.js → Error-e6f7c2ee.js} +1 -1
- package/frontend/build/static/FeatureArchiveDialog-9ad60db1.js +10 -0
- package/frontend/build/static/{FeatureMetricsChart-839cdf1e.js → FeatureMetricsChart-81da0ce4.js} +1 -1
- package/frontend/build/static/{FeatureViewLazyExport-47bb7f13.js → FeatureViewLazyExport-58a3e977.js} +2 -2
- package/frontend/build/static/{LazyAdminExport-8ef0ca21.js → LazyAdminExport-c98b11d7.js} +2 -2
- package/frontend/build/static/{LazyProjectExport-49541c75.js → LazyProjectExport-14db2e37.js} +1 -1
- package/frontend/build/static/{NetworkOverview-711050f3.js → NetworkOverview-cd06e59f.js} +2 -2
- package/frontend/build/static/{NetworkTraffic-e587c2c7.js → NetworkTraffic-ba933617.js} +1 -1
- package/frontend/build/static/{RoleCell-9a62b4ed.js → RoleCell-c534790e.js} +1 -1
- package/frontend/build/static/{StrategyItemContainer-4098c8ef.js → StrategyItemContainer-88c18285.js} +1 -1
- package/frontend/build/static/{chartjs-adapter-date-fns.esm-d57aaddd.js → chartjs-adapter-date-fns.esm-799be047.js} +1 -1
- package/frontend/build/static/{flowchart-elk-definition-170a3958-4dece62b.js → flowchart-elk-definition-170a3958-543f0844.js} +1 -1
- package/frontend/build/static/{index-9c528324.js → index-1c4c68c3.js} +2 -2
- package/frontend/build/static/{index-9bb67f88.js → index-88f1c682.js} +1 -1
- package/frontend/build/static/{index-1c8194e0.js → index-aa638b65.js} +1 -1
- package/frontend/build/static/{is_dark-ba77f0b9.js → is_dark-735e3a95.js} +1 -1
- package/frontend/build/static/{mindmap-definition-44684416-a4071c9f.js → mindmap-definition-44684416-ac92f950.js} +1 -1
- package/frontend/build/static/{timeline-definition-8e5a9bc6-c996bf40.js → timeline-definition-8e5a9bc6-6c09f608.js} +1 -1
- package/frontend/build/static/{unknownify-db48ebae.js → unknownify-0b176a78.js} +1 -1
- package/package.json +1 -1
- package/frontend/build/static/FeatureArchiveDialog-fda1aa0c.js +0 -10
|
@@ -23,6 +23,6 @@ export default class UnleashClient {
|
|
|
23
23
|
isFeatureEnabled(feature: FeatureInterface, context: Context, fallback: Function): FeatureStrategiesEvaluationResult;
|
|
24
24
|
getSegment(repo: RepositoryInterface): (segmentId: number) => SegmentForEvaluation | undefined;
|
|
25
25
|
getVariant(name: string, context: Context, fallbackVariant?: Variant): Variant;
|
|
26
|
-
forceGetVariant(name: string, context: Context, fallbackVariant?: Variant): Variant;
|
|
26
|
+
forceGetVariant(name: string, context: Context, forcedResult: Pick<FeatureStrategiesEvaluationResult, 'result' | 'variant'>, fallbackVariant?: Variant): Variant;
|
|
27
27
|
private resolveVariant;
|
|
28
28
|
}
|
|
@@ -110,31 +110,30 @@ class UnleashClient {
|
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
112
|
getVariant(name, context, fallbackVariant) {
|
|
113
|
-
return this.resolveVariant(name, context,
|
|
113
|
+
return this.resolveVariant(name, context, fallbackVariant);
|
|
114
114
|
}
|
|
115
115
|
// This function is intended to close an issue in the proxy where feature enabled
|
|
116
116
|
// state gets checked twice when resolving a variant with random stickiness and
|
|
117
117
|
// gradual rollout. This is not intended for general use, prefer getVariant instead
|
|
118
|
-
forceGetVariant(name, context, fallbackVariant) {
|
|
119
|
-
return this.resolveVariant(name, context,
|
|
118
|
+
forceGetVariant(name, context, forcedResult, fallbackVariant) {
|
|
119
|
+
return this.resolveVariant(name, context, fallbackVariant, forcedResult);
|
|
120
120
|
}
|
|
121
|
-
resolveVariant(name, context,
|
|
121
|
+
resolveVariant(name, context, fallbackVariant, forcedResult) {
|
|
122
122
|
const fallback = fallbackVariant || (0, variant_1.getDefaultVariant)();
|
|
123
123
|
const feature = this.repository.getToggle(name);
|
|
124
124
|
if (typeof feature === 'undefined') {
|
|
125
125
|
return fallback;
|
|
126
126
|
}
|
|
127
127
|
let enabled = true;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
128
|
+
const result = forcedResult ??
|
|
129
|
+
this.isFeatureEnabled(feature, context, () => fallbackVariant ? fallbackVariant.enabled : false);
|
|
130
|
+
enabled = result.result === true;
|
|
131
|
+
const strategyVariant = result.variant;
|
|
132
|
+
if (enabled && strategyVariant) {
|
|
133
|
+
return strategyVariant;
|
|
134
|
+
}
|
|
135
|
+
if (!enabled) {
|
|
136
|
+
return fallback;
|
|
138
137
|
}
|
|
139
138
|
if (!feature.variants ||
|
|
140
139
|
!Array.isArray(feature.variants) ||
|
|
@@ -149,7 +148,7 @@ class UnleashClient {
|
|
|
149
148
|
return {
|
|
150
149
|
name: variant.name,
|
|
151
150
|
payload: variant.payload,
|
|
152
|
-
enabled
|
|
151
|
+
enabled,
|
|
153
152
|
};
|
|
154
153
|
}
|
|
155
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/lib/features/playground/feature-evaluator/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/lib/features/playground/feature-evaluator/client.ts"],"names":[],"mappings":";;AAGA,uCAKmB;AAInB,iGAAgG;AAmBhG,MAAqB,aAAa;IAK9B,YAAY,UAA+B,EAAE,UAAsB;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3C,IACI,CAAC,QAAQ;gBACT,CAAC,QAAQ,CAAC,IAAI;gBACd,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACjC,CAAC,QAAQ,CAAC,SAAS;gBACnB,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAC1C;gBACE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACxD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,CAAC,QAAkB,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAC1D,CAAC;IACN,CAAC;IAED,SAAS,CACL,IAAY,EACZ,OAAgB,EAChB,QAAkB;QAElB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CACZ,OAAyB,EACzB,OAAgB,EAChB,QAAkB;QAElB,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,QAAQ,EAAE,CAAC;SACrB;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACpC,OAAO;gBACH,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,EAAE;aACjB,CAAC;SACL;QAED,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,OAAO;gBACH,MAAM,EAAE,OAAO,CAAC,OAAO;gBACvB,UAAU,EAAE,EAAE;aACjB,CAAC;SACL;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CACrC,CAAC,gBAAgB,EAA+B,EAAE;YAC9C,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,uDAAuD;gBACvD,uDAAuD;gBACvD,kDAAkD;gBAClD,sCAAsC;gBACtC,IAAI,gBAAgB,CAAC,IAAI,KAAK,qBAAqB,EAAE;oBACjD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;iBACtC;gBACD,OAAO,CACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACvC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAC9B,CAAC;YACN,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAE/B,MAAM,QAAQ,GACV,gBAAgB,CAAC,QAAQ;gBACrB,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAE/B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,wBAAwB,CACtD,gBAAgB,CAAC,UAAU,EAC3B,OAAO,EACP,gBAAgB,CAAC,WAAW,EAC5B,QAAQ,EACR,gBAAgB,CAAC,QAAQ,EACzB,gBAAgB,CAAC,QAAQ,CAC5B,CAAC;YAEF,OAAO;gBACH,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,EAAE,EAAE,gBAAgB,CAAC,EAAE;gBACvB,KAAK,EAAE,gBAAgB,CAAC,KAAK;gBAC7B,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,KAAK;gBAC5C,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,GAAG,gBAAgB;aACtB,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,qBAAqB;QACrB,MAAM,qBAAqB,GAAG,GAI5B,EAAE;YACA,mEAAmE;YACnE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CACjD,CAAC;YACF,IACI,eAAe;gBACf,eAAe,CAAC,MAAM,CAAC,gBAAgB,KAAK,UAAU,EACxD;gBACE,OAAO;oBACH,IAAI;oBACJ,eAAe,CAAC,MAAM,CAAC,QAAQ;oBAC/B,eAAe,CAAC,MAAM,CAAC,OAAO;iBACjC,CAAC;aACL;YAED,yEAAyE;YACzE,IACI,UAAU,CAAC,IAAI,CACX,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CACtD,EACH;gBACE,OAAO;oBACH,yDAA4B,CAAC,aAAa;oBAC1C,SAAS;oBACT,SAAS;iBACZ,CAAC;aACL;YAED,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,qBAAqB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAsC;YACnD,MAAM;YACN,OAAO;YACP,QAAQ;YACR,UAAU;SACb,CAAC;QAEF,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,IAAyB;QAChC,OAAO,CAAC,SAAiB,EAAoC,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,SAAS,CAAC;aACpB;YACD,OAAO;gBACH,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,OAAO,CAAC,WAAW;aACnC,CAAC;QACN,CAAC,CAAC;IACN,CAAC;IAED,UAAU,CACN,IAAY,EACZ,OAAgB,EAChB,eAAyB;QAEzB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,iFAAiF;IACjF,+EAA+E;IAC/E,mFAAmF;IACnF,eAAe,CACX,IAAY,EACZ,OAAgB,EAChB,YAGC,EACD,eAAyB;QAEzB,OAAO,IAAI,CAAC,cAAc,CACtB,IAAI,EACJ,OAAO,EACP,eAAe,EACf,YAAY,CACf,CAAC;IACN,CAAC;IAEO,cAAc,CAClB,IAAY,EACZ,OAAgB,EAChB,eAAyB,EACzB,YAGC;QAED,MAAM,QAAQ,GAAG,eAAe,IAAI,IAAA,2BAAiB,GAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;YAChC,OAAO,QAAQ,CAAC;SACnB;QAED,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,GACR,YAAY;YACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CACzC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CACpD,CAAC;QACN,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;QACjC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,IAAI,OAAO,IAAI,eAAe,EAAE;YAC5B,OAAO,eAAe,CAAC;SAC1B;QACD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,QAAQ,CAAC;SACnB;QAED,IACI,CAAC,OAAO,CAAC,QAAQ;YACjB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,OAAO,CAAC,OAAO,EAClB;YACE,OAAO,QAAQ,CAAC;SACnB;QAED,MAAM,OAAO,GAA6B,IAAA,uBAAa,EACnD,OAAO,EACP,OAAO,CACV,CAAC;QACF,IAAI,OAAO,KAAK,IAAI,EAAE;YAClB,OAAO,QAAQ,CAAC;SACnB;QAED,OAAO;YACH,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO;SACV,CAAC;IACN,CAAC;CACJ;AAvPD,gCAuPC"}
|
|
@@ -30,7 +30,7 @@ export declare class FeatureEvaluator {
|
|
|
30
30
|
isEnabled(name: string, context?: Context, fallbackFunction?: FallbackFunction): FeatureStrategiesEvaluationResult;
|
|
31
31
|
isEnabled(name: string, context?: Context, fallbackValue?: boolean): FeatureStrategiesEvaluationResult;
|
|
32
32
|
getVariant(name: string, context?: Context, fallbackVariant?: Variant): Variant;
|
|
33
|
-
forceGetVariant(name: string, context?: Context, fallbackVariant?: Variant): Variant;
|
|
33
|
+
forceGetVariant(name: string, forcedResults: Pick<FeatureStrategiesEvaluationResult, 'result' | 'variant'>, context?: Context, fallbackVariant?: Variant): Variant;
|
|
34
34
|
getFeatureToggleDefinition(toggleName: string): FeatureInterface;
|
|
35
35
|
getFeatureToggleDefinitions(): FeatureInterface[];
|
|
36
36
|
}
|
|
@@ -40,9 +40,9 @@ class FeatureEvaluator {
|
|
|
40
40
|
const enhancedContext = { ...this.staticContext, ...context };
|
|
41
41
|
return this.client.getVariant(name, enhancedContext, fallbackVariant);
|
|
42
42
|
}
|
|
43
|
-
forceGetVariant(name, context = {}, fallbackVariant) {
|
|
43
|
+
forceGetVariant(name, forcedResults, context = {}, fallbackVariant) {
|
|
44
44
|
const enhancedContext = { ...this.staticContext, ...context };
|
|
45
|
-
return this.client.forceGetVariant(name, enhancedContext, fallbackVariant);
|
|
45
|
+
return this.client.forceGetVariant(name, enhancedContext, forcedResults, fallbackVariant);
|
|
46
46
|
}
|
|
47
47
|
getFeatureToggleDefinition(toggleName) {
|
|
48
48
|
return this.repository.getToggle(toggleName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-evaluator.js","sourceRoot":"","sources":["../../../../../src/lib/features/playground/feature-evaluator/feature-evaluator.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAqE;AACrE,8DAA+D;AAE/D,yCAAyD;AAWhD,yFAXA,mBAAQ,OAWA;AAPjB,uCAAqE;AACrE,wEAGyC;AAmBzC,MAAa,gBAAgB;IAOzB,YAAY,EACR,OAAO,EACP,WAAW,GAAG,SAAS,EACvB,UAAU,GAAG,EAAE,EACf,UAAU,EACV,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EACxB,eAAe,GACM;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAE9C,MAAM,iBAAiB,GAAG,IAAA,6CAAwB,EAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU;YACX,UAAU;gBACV,IAAI,oBAAU,CAAC;oBACX,OAAO;oBACP,iBAAiB;oBACjB,eAAe,EAAE,eAAe;iBACnC,CAAC,CAAC;QAEP,eAAe;QACf,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,4BAAiB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAYD,SAAS,CACL,IAAY,EACZ,UAAmB,EAAE,EACrB,QAAqC;QAErC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAA,gCAAsB,EACvC,IAAI,EACJ,eAAe,EACf,QAAQ,CACX,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CACN,IAAY,EACZ,UAAmB,EAAE,EACrB,eAAyB;QAEzB,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CACX,IAAY,EACZ,UAAmB,EAAE,EACrB,eAAyB;QAEzB,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAC9B,IAAI,EACJ,eAAe,EACf,eAAe,CAClB,CAAC;IACN,CAAC;IAED,0BAA0B,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,2BAA2B;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"feature-evaluator.js","sourceRoot":"","sources":["../../../../../src/lib/features/playground/feature-evaluator/feature-evaluator.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAqE;AACrE,8DAA+D;AAE/D,yCAAyD;AAWhD,yFAXA,mBAAQ,OAWA;AAPjB,uCAAqE;AACrE,wEAGyC;AAmBzC,MAAa,gBAAgB;IAOzB,YAAY,EACR,OAAO,EACP,WAAW,GAAG,SAAS,EACvB,UAAU,GAAG,EAAE,EACf,UAAU,EACV,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EACxB,eAAe,GACM;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAE9C,MAAM,iBAAiB,GAAG,IAAA,6CAAwB,EAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU;YACX,UAAU;gBACV,IAAI,oBAAU,CAAC;oBACX,OAAO;oBACP,iBAAiB;oBACjB,eAAe,EAAE,eAAe;iBACnC,CAAC,CAAC;QAEP,eAAe;QACf,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,4BAAiB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAYD,SAAS,CACL,IAAY,EACZ,UAAmB,EAAE,EACrB,QAAqC;QAErC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAA,gCAAsB,EACvC,IAAI,EACJ,eAAe,EACf,QAAQ,CACX,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CACN,IAAY,EACZ,UAAmB,EAAE,EACrB,eAAyB;QAEzB,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CACX,IAAY,EACZ,aAGC,EACD,UAAmB,EAAE,EACrB,eAAyB;QAEzB,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAC9B,IAAI,EACJ,eAAe,EACf,aAAa,EACb,eAAe,CAClB,CAAC;IACN,CAAC;IAED,0BAA0B,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,2BAA2B;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;CACJ;AAnGD,4CAmGC"}
|
|
@@ -75,7 +75,7 @@ class PlaygroundService {
|
|
|
75
75
|
data: strategyEvaluationResult.strategies,
|
|
76
76
|
},
|
|
77
77
|
projectId: featureProject[feature.name],
|
|
78
|
-
variant: client.
|
|
78
|
+
variant: client.forceGetVariant(feature.name, strategyEvaluationResult, clientContext),
|
|
79
79
|
name: feature.name,
|
|
80
80
|
environment,
|
|
81
81
|
context,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playground-service.js","sourceRoot":"","sources":["../../../../src/lib/features/playground/playground-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"playground-service.js","sourceRoot":"","sources":["../../../../src/lib/features/playground/playground-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,10 @@ export default class ClientMetricsServiceV2 {
|
|
|
12
12
|
private unsavedMetrics;
|
|
13
13
|
private clientMetricsStoreV2;
|
|
14
14
|
private lastSeenService;
|
|
15
|
+
private flagResolver;
|
|
15
16
|
private logger;
|
|
16
17
|
constructor({ clientMetricsStoreV2 }: Pick<IUnleashStores, 'clientMetricsStoreV2'>, config: IUnleashConfig, lastSeenService: LastSeenService, bulkInterval?: number);
|
|
18
|
+
filterValidToggleNames(toggleNames: string[]): Promise<string[]>;
|
|
17
19
|
registerBulkMetrics(metrics: IClientMetricsEnv[]): Promise<void>;
|
|
18
20
|
registerClientMetrics(data: ClientMetricsSchema, clientIp: string): Promise<void>;
|
|
19
21
|
bulkAdd(): Promise<void>;
|
|
@@ -11,7 +11,6 @@ const api_token_1 = require("../../types/models/api-token");
|
|
|
11
11
|
const collapseHourlyMetrics_1 = require("../../util/collapseHourlyMetrics");
|
|
12
12
|
const time_utils_1 = require("../../util/time-utils");
|
|
13
13
|
const feature_schema_1 = require("../../schema/feature-schema");
|
|
14
|
-
const error_1 = require("../../error");
|
|
15
14
|
class ClientMetricsServiceV2 {
|
|
16
15
|
constructor({ clientMetricsStoreV2 }, config, lastSeenService, bulkInterval = (0, date_fns_1.secondsToMilliseconds)(5)) {
|
|
17
16
|
this.timers = [];
|
|
@@ -20,6 +19,7 @@ class ClientMetricsServiceV2 {
|
|
|
20
19
|
this.lastSeenService = lastSeenService;
|
|
21
20
|
this.config = config;
|
|
22
21
|
this.logger = config.getLogger('/services/client-metrics/client-metrics-service-v2.ts');
|
|
22
|
+
this.flagResolver = config.flagResolver;
|
|
23
23
|
this.timers.push(setInterval(() => {
|
|
24
24
|
this.bulkAdd().catch(console.error);
|
|
25
25
|
}, bulkInterval).unref());
|
|
@@ -27,6 +27,18 @@ class ClientMetricsServiceV2 {
|
|
|
27
27
|
this.clientMetricsStoreV2.clearMetrics(48).catch(console.error);
|
|
28
28
|
}, (0, date_fns_1.hoursToMilliseconds)(12)).unref());
|
|
29
29
|
}
|
|
30
|
+
async filterValidToggleNames(toggleNames) {
|
|
31
|
+
const nameValidations = toggleNames.map((toggleName) => feature_schema_1.nameSchema.validateAsync({ name: toggleName }));
|
|
32
|
+
const badNames = (await Promise.allSettled(nameValidations)).filter((r) => r.status === 'rejected');
|
|
33
|
+
if (badNames.length > 0) {
|
|
34
|
+
this.logger.warn(`Got a few toggles with invalid names: ${JSON.stringify(badNames)}`);
|
|
35
|
+
if (this.flagResolver.isEnabled('filterInvalidClientMetrics')) {
|
|
36
|
+
const justNames = badNames.map((r) => r.reason._original.name);
|
|
37
|
+
return toggleNames.filter((name) => !justNames.includes(name));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return toggleNames;
|
|
41
|
+
}
|
|
30
42
|
async registerBulkMetrics(metrics) {
|
|
31
43
|
this.unsavedMetrics = (0, collapseHourlyMetrics_1.collapseHourlyMetrics)([
|
|
32
44
|
...this.unsavedMetrics,
|
|
@@ -38,23 +50,21 @@ class ClientMetricsServiceV2 {
|
|
|
38
50
|
const value = await schema_1.clientMetricsSchema.validateAsync(data);
|
|
39
51
|
const toggleNames = Object.keys(value.bucket.toggles).filter((name) => !(value.bucket.toggles[name].yes === 0 &&
|
|
40
52
|
value.bucket.toggles[name].no === 0));
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
const validatedToggleNames = await this.filterValidToggleNames(toggleNames);
|
|
54
|
+
this.logger.debug(`Got ${toggleNames.length} (${validatedToggleNames.length} valid) metrics from ${clientIp}`);
|
|
55
|
+
if (validatedToggleNames.length > 0) {
|
|
56
|
+
const clientMetrics = validatedToggleNames.map((name) => ({
|
|
57
|
+
featureName: name,
|
|
58
|
+
appName: value.appName,
|
|
59
|
+
environment: value.environment ?? 'default',
|
|
60
|
+
timestamp: value.bucket.start,
|
|
61
|
+
yes: value.bucket.toggles[name].yes ?? 0,
|
|
62
|
+
no: value.bucket.toggles[name].no ?? 0,
|
|
63
|
+
variants: value.bucket.toggles[name].variants,
|
|
64
|
+
}));
|
|
65
|
+
await this.registerBulkMetrics(clientMetrics);
|
|
66
|
+
this.config.eventBus.emit(events_1.CLIENT_METRICS, value);
|
|
45
67
|
}
|
|
46
|
-
this.logger.debug(`got metrics from ${clientIp}`);
|
|
47
|
-
const clientMetrics = toggleNames.map((name) => ({
|
|
48
|
-
featureName: name,
|
|
49
|
-
appName: value.appName,
|
|
50
|
-
environment: value.environment,
|
|
51
|
-
timestamp: value.bucket.start,
|
|
52
|
-
yes: value.bucket.toggles[name].yes,
|
|
53
|
-
no: value.bucket.toggles[name].no,
|
|
54
|
-
variants: value.bucket.toggles[name].variants,
|
|
55
|
-
}));
|
|
56
|
-
await this.registerBulkMetrics(clientMetrics);
|
|
57
|
-
this.config.eventBus.emit(events_1.CLIENT_METRICS, value);
|
|
58
68
|
}
|
|
59
69
|
async bulkAdd() {
|
|
60
70
|
if (this.unsavedMetrics.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-service-v2.js","sourceRoot":"","sources":["../../../../src/lib/services/client-metrics/metrics-service-v2.ts"],"names":[],"mappings":";;;;;AAQA,qCAA+C;AAC/C,uCAIkB;AAClB,+CAAoD;AACpD,oEAA2C;AAC3C,4DAAmD;AAEnD,4EAAyE;AAEzE,sDAA4D;AAE5D,gEAAyD;
|
|
1
|
+
{"version":3,"file":"metrics-service-v2.js","sourceRoot":"","sources":["../../../../src/lib/services/client-metrics/metrics-service-v2.ts"],"names":[],"mappings":";;;;;AAQA,qCAA+C;AAC/C,uCAIkB;AAClB,+CAAoD;AACpD,oEAA2C;AAC3C,4DAAmD;AAEnD,4EAAyE;AAEzE,sDAA4D;AAE5D,gEAAyD;AAEzD,MAAqB,sBAAsB;IAevC,YACI,EAAE,oBAAoB,EAAgD,EACtE,MAAsB,EACtB,eAAgC,EAChC,YAAY,GAAG,IAAA,gCAAqB,EAAC,CAAC,CAAC;QAhBnC,WAAM,GAAqB,EAAE,CAAC;QAE9B,mBAAc,GAAwB,EAAE,CAAC;QAgB7C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAC1B,uDAAuD,CAC1D,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,WAAW,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,CAC3B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,WAAW,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC,EAAE,IAAA,8BAAmB,EAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CACtC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,WAAqB;QAC9C,MAAM,eAAe,GAEf,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACjC,2BAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CACjD,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAC/D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CACjC,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,yCAAyC,IAAI,CAAC,SAAS,CACnD,QAAQ,CACX,EAAE,CACN,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,4BAA4B,CAAC,EAAE;gBAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAC1B,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CACxD,CAAC;gBACF,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;aAClE;SACJ;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAA4B;QAClD,IAAI,CAAC,cAAc,GAAG,IAAA,6CAAqB,EAAC;YACxC,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,OAAO;SACb,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,IAAyB,EACzB,QAAgB;QAEhB,MAAM,KAAK,GAAG,MAAM,4BAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CACxD,CAAC,IAAI,EAAE,EAAE,CACL,CAAC,CACG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CACtC,CACR,CAAC;QAEF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC1D,WAAW,CACd,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,OAAO,WAAW,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,wBAAwB,QAAQ,EAAE,CAC9F,CAAC;QAEF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,aAAa,GAAwB,oBAAoB,CAAC,GAAG,CAC/D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACP,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS;gBAC3C,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;gBAC7B,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;gBACxC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;gBACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ;aAChD,CAAC,CACL,CAAC;YACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAc,EAAE,KAAK,CAAC,CAAC;SACpD;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,sDAAsD;YACtD,8CAA8C;YAC9C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC5D;IACL,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,8BAA8B,CAChC,WAAmB;QAEnB,MAAM,OAAO,GACT,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CACtD,WAAW,EACX,CAAC,CACJ,CAAC;QACN,MAAM,gBAAgB,GAClB,MAAM,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CACvD,WAAW,CACd,CAAC;QAEN,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACjD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;aACxC;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;oBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,EAAE,EAAE,IAAI,CAAC,EAAE;iBACd,CAAC;aACL;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO;YACH,WAAW;YACX,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;YAC5C,gBAAgB;SACnB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC3B,WAAmB,EACnB,YAAoB,EAAE;QAEtB,MAAM,OAAO,GACT,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CACtD,WAAW,EACX,SAAS,CACZ,CAAC;QAEN,MAAM,KAAK,GAAG,IAAA,gCAAmB,EAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAErE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAClE,CAAC,EACD,GAAG,CACN,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YAChD,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CACrC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CACjD,CAAC;YACF,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CACzC,CAAC;gBACF,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;oBAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CACL,IAAA,qBAAU,EAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;wBAChD,CAAC,CACR,CAAC;oBACF,OAAO,CACH,MAAM,IAAI;wBACN,SAAS,EAAE,UAAU,CAAC,SAAS;wBAC/B,EAAE,EAAE,CAAC;wBACL,GAAG,EAAE,CAAC;wBACN,OAAO;wBACP,WAAW;wBACX,WAAW;qBACd,CACJ,CAAC;gBACN,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,yBAAyB,CACrB,IAAoB,EACpB,IAA8B;QAE9B,IAAI,IAAI,YAAY,kBAAO,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW,KAAK,eAAG,EAAE;gBAC1B,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;iBAAM,IAAI,IAAI,CAAC,WAAW,KAAK,eAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrD,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CACJ;AApOD,yCAoOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,96 @@
|
|
|
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 metrics_service_v2_1 = __importDefault(require("./metrics-service-v2"));
|
|
7
|
+
const no_logger_1 = __importDefault(require("../../../test/fixtures/no-logger"));
|
|
8
|
+
const store_1 = __importDefault(require("../../../test/fixtures/store"));
|
|
9
|
+
const events_1 = __importDefault(require("events"));
|
|
10
|
+
const last_seen_service_1 = require("./last-seen-service");
|
|
11
|
+
function initClientMetrics(flagEnabled = true) {
|
|
12
|
+
const stores = (0, store_1.default)();
|
|
13
|
+
const eventBus = new events_1.default();
|
|
14
|
+
eventBus.emit = jest.fn();
|
|
15
|
+
const config = {
|
|
16
|
+
eventBus,
|
|
17
|
+
getLogger: no_logger_1.default,
|
|
18
|
+
flagResolver: {
|
|
19
|
+
isEnabled: () => {
|
|
20
|
+
return flagEnabled;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const lastSeenService = new last_seen_service_1.LastSeenService(stores, config);
|
|
25
|
+
lastSeenService.updateLastSeen = jest.fn();
|
|
26
|
+
const service = new metrics_service_v2_1.default(stores, config, lastSeenService);
|
|
27
|
+
return { clientMetricsService: service, eventBus, lastSeenService };
|
|
28
|
+
}
|
|
29
|
+
test('process metrics properly', async () => {
|
|
30
|
+
const { clientMetricsService, eventBus, lastSeenService } = initClientMetrics();
|
|
31
|
+
await clientMetricsService.registerClientMetrics({
|
|
32
|
+
appName: 'test',
|
|
33
|
+
bucket: {
|
|
34
|
+
start: '1982-07-25T12:00:00.000Z',
|
|
35
|
+
stop: '2023-07-25T12:00:00.000Z',
|
|
36
|
+
toggles: {
|
|
37
|
+
myCoolToggle: {
|
|
38
|
+
yes: 25,
|
|
39
|
+
no: 42,
|
|
40
|
+
variants: {
|
|
41
|
+
blue: 6,
|
|
42
|
+
green: 15,
|
|
43
|
+
red: 46,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
myOtherToggle: {
|
|
47
|
+
yes: 0,
|
|
48
|
+
no: 100,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
environment: 'test',
|
|
53
|
+
}, '127.0.0.1');
|
|
54
|
+
expect(eventBus.emit).toHaveBeenCalledTimes(1);
|
|
55
|
+
expect(lastSeenService.updateLastSeen).toHaveBeenCalledTimes(1);
|
|
56
|
+
});
|
|
57
|
+
test('process metrics properly even when some names are not url friendly, filtering out invalid names when flag is on', async () => {
|
|
58
|
+
const { clientMetricsService, eventBus, lastSeenService } = initClientMetrics();
|
|
59
|
+
await clientMetricsService.registerClientMetrics({
|
|
60
|
+
appName: 'test',
|
|
61
|
+
bucket: {
|
|
62
|
+
start: '1982-07-25T12:00:00.000Z',
|
|
63
|
+
stop: '2023-07-25T12:00:00.000Z',
|
|
64
|
+
toggles: {
|
|
65
|
+
'not url friendly ☹': {
|
|
66
|
+
yes: 0,
|
|
67
|
+
no: 100,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
environment: 'test',
|
|
72
|
+
}, '127.0.0.1');
|
|
73
|
+
// only toggle with a bad name gets filtered out
|
|
74
|
+
expect(eventBus.emit).not.toHaveBeenCalled();
|
|
75
|
+
expect(lastSeenService.updateLastSeen).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
test('process metrics properly even when some names are not url friendly, with default behavior when flag is off', async () => {
|
|
78
|
+
const { clientMetricsService, eventBus, lastSeenService } = initClientMetrics(false);
|
|
79
|
+
await clientMetricsService.registerClientMetrics({
|
|
80
|
+
appName: 'test',
|
|
81
|
+
bucket: {
|
|
82
|
+
start: '1982-07-25T12:00:00.000Z',
|
|
83
|
+
stop: '2023-07-25T12:00:00.000Z',
|
|
84
|
+
toggles: {
|
|
85
|
+
'not url friendly ☹': {
|
|
86
|
+
yes: 0,
|
|
87
|
+
no: 100,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
environment: 'test',
|
|
92
|
+
}, '127.0.0.1');
|
|
93
|
+
expect(eventBus.emit).toHaveBeenCalledTimes(1);
|
|
94
|
+
expect(lastSeenService.updateLastSeen).toHaveBeenCalledTimes(1);
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=metrics-service-v2.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-service-v2.test.js","sourceRoot":"","sources":["../../../../src/lib/services/client-metrics/metrics-service-v2.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Variant } from 'unleash-client';
|
|
2
|
-
export declare type IFlagKey = 'anonymiseEventLog' | 'embedProxy' | 'embedProxyFrontend' | 'responseTimeWithAppNameKillSwitch' | 'maintenanceMode' | 'messageBanner' | 'featuresExportImport' | 'caseInsensitiveInOperators' | 'strictSchemaValidation' | 'proPlanAutoCharge' | 'personalAccessTokensKillSwitch' | 'cleanClientApi' | 'migrationLock' | 'demo' | 'googleAuthEnabled' | 'disableBulkToggle' | 'disableNotifications' | 'advancedPlayground' | 'customRootRoles' | 'strategyVariant' | 'newProjectLayout' | 'slackAppAddon' | 'emitPotentiallyStaleEvents' | 'configurableFeatureTypeLifetimes';
|
|
2
|
+
export declare type IFlagKey = 'anonymiseEventLog' | 'embedProxy' | 'embedProxyFrontend' | 'responseTimeWithAppNameKillSwitch' | 'maintenanceMode' | 'messageBanner' | 'featuresExportImport' | 'caseInsensitiveInOperators' | 'strictSchemaValidation' | 'proPlanAutoCharge' | 'personalAccessTokensKillSwitch' | 'cleanClientApi' | 'migrationLock' | 'demo' | 'googleAuthEnabled' | 'disableBulkToggle' | 'disableNotifications' | 'advancedPlayground' | 'customRootRoles' | 'strategyVariant' | 'newProjectLayout' | 'slackAppAddon' | 'emitPotentiallyStaleEvents' | 'configurableFeatureTypeLifetimes' | 'filterInvalidClientMetrics';
|
|
3
3
|
export declare type IFlags = Partial<{
|
|
4
4
|
[key in IFlagKey]: boolean | Variant;
|
|
5
5
|
}>;
|
|
@@ -35,6 +35,7 @@ const flags = {
|
|
|
35
35
|
slackAppAddon: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_SLACK_APP_ADDON, false),
|
|
36
36
|
emitPotentiallyStaleEvents: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_EXPERIMENTAL_EMIT_POTENTIALLY_STALE_EVENTS, false),
|
|
37
37
|
configurableFeatureTypeLifetimes: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_EXPERIMENTAL_CONFIGURABLE_FEATURE_TYPE_LIFETIMES, false),
|
|
38
|
+
filterInvalidClientMetrics: (0, util_1.parseEnvVarBoolean)(process.env.FILTER_INVALID_CLIENT_METRICS, false),
|
|
38
39
|
};
|
|
39
40
|
exports.defaultExperimentalOptions = {
|
|
40
41
|
flags,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../../src/lib/types/experimental.ts"],"names":[],"mappings":";;;AAAA,mDAAsD;AACtD,kCAA6C;AAC7C,wDAA+D;
|
|
1
|
+
{"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../../src/lib/types/experimental.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
href="https://fonts.googleapis.com/css2?family=Sen:wght@400;700;800&display=swap"
|
|
17
17
|
rel="stylesheet"
|
|
18
18
|
/>
|
|
19
|
-
<script type="module" crossorigin src="/static/index-
|
|
19
|
+
<script type="module" crossorigin src="/static/index-1c4c68c3.js"></script>
|
|
20
20
|
<link rel="stylesheet" href="/static/index-770afaee.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
package/frontend/build/static/{AdvancedPlayground-4c9d02ea.js → AdvancedPlayground-48dddbf4.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as qi,j as m,u as Xu,r as E,_ as Zu,a as Yr,s as V,U as ef,b as me,d as D,B as q,C as j,e as tf,f as za,g as nf,h as Si,T as te,F as sf,I as rf,S as of,M as lf,i as Xr,p as No,k as Fo,l as Ci,A as ir,m as af,n as hf,o as cf,q as uf,D as ff,t as ti,P as df,v as $a,w as pf,x as Ai,y as Be,z as mf,E as Pi,G as Ui,H as gf,J as ja,K as yf,L as bf,N as nr,O as wn,Q as sr,R as xf,V as wf,W as vf,X as kf,Y as Sf,Z as Zr,$ as as,a0 as Cf,a1 as Me,a2 as hs,a3 as Af,a4 as Mf,a5 as Of,a6 as Tf,a7 as Df,a8 as Pf,a9 as Wo,aa as qa,ab as eo,ac as Ua,ad as to,ae as Ga,af as Ka,ag as Rf,ah as Qa,ai as Bf,aj as Vo,ak as Ef,al as Lf,am as Ms,an as If,ao as Nf,ap as Ff,aq as Wf,ar as Vf,as as Hf}from"./index-
|
|
1
|
+
import{c as qi,j as m,u as Xu,r as E,_ as Zu,a as Yr,s as V,U as ef,b as me,d as D,B as q,C as j,e as tf,f as za,g as nf,h as Si,T as te,F as sf,I as rf,S as of,M as lf,i as Xr,p as No,k as Fo,l as Ci,A as ir,m as af,n as hf,o as cf,q as uf,D as ff,t as ti,P as df,v as $a,w as pf,x as Ai,y as Be,z as mf,E as Pi,G as Ui,H as gf,J as ja,K as yf,L as bf,N as nr,O as wn,Q as sr,R as xf,V as wf,W as vf,X as kf,Y as Sf,Z as Zr,$ as as,a0 as Cf,a1 as Me,a2 as hs,a3 as Af,a4 as Mf,a5 as Of,a6 as Tf,a7 as Df,a8 as Pf,a9 as Wo,aa as qa,ab as eo,ac as Ua,ad as to,ae as Ga,af as Ka,ag as Rf,ah as Qa,ai as Bf,aj as Vo,ak as Ef,al as Lf,am as Ms,an as If,ao as Nf,ap as Ff,aq as Wf,ar as Vf,as as Hf}from"./index-1c4c68c3.js";import{E as zf}from"./Error-e6f7c2ee.js";import{S as $f}from"./StrategyItemContainer-88c18285.js";const cs=qi(m("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"}),"CancelOutlined"),jf=qi(m("path",{d:"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"CheckCircleOutline"),qf=qi(m("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z"}),"CheckCircleOutlined"),Uf=qi(m("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"}),"Help"),Gf=qi(m("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"WarningOutlined"),Kf=()=>{const{makeRequest:n,createRequest:e,errors:t,loading:i}=Xu({propagateErrors:!0}),s="api/admin/playground";return{evaluateAdvancedPlayground:async o=>{const l=`${s}/advanced`,a=e(l,{method:"POST",body:JSON.stringify(o)});try{return(await n(a.caller,a.id)).json()}catch(h){throw h}},errors:t,loading:i}};function rr(n,e,t){var i,s,r,o,l;e==null&&(e=100);function a(){var c=Date.now()-o;c<e&&c>=0?i=setTimeout(a,e-c):(i=null,t||(l=n.apply(r,s),r=s=null))}var h=function(){r=this,s=arguments,o=Date.now();var c=t&&!i;return i||(i=setTimeout(a,e)),c&&(l=n.apply(r,s),r=s=null),l};return h.clear=function(){i&&(clearTimeout(i),i=null)},h.flush=function(){i&&(l=n.apply(r,s),r=s=null,clearTimeout(i),i=null)},h}rr.debounce=rr;var Qf=rr;class U{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),tt.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){let i=[];return this.decompose(e,t,i,0),tt.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new Mi(this),r=new Mi(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new Mi(this,e)}iterRange(e,t=this.length){return new Ja(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new _a(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?U.empty:e.length<=32?new ae(e):tt.from(ae.split(e,[]))}}class ae extends U{constructor(e,t=Jf(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new _f(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new ae(Ho(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=vn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ae(l,o.length+r.length));else{let a=l.length>>1;i.push(new ae(l.slice(0,a)),new ae(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof ae))return super.replace(e,t,i);let s=vn(this.text,vn(i.text,Ho(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new ae(s,r):tt.from(ae.split(s,[]),r)}sliceString(e,t=this.length,i=`
|
|
2
2
|
`){let s="";for(let r=0,o=0;r<=t&&o<this.text.length;o++){let l=this.text[o],a=r+l.length;r>e&&o&&(s+=i),e<a&&t>r&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new ae(i,s)),i=[],s=-1);return s>-1&&t.push(new ae(i,s)),t}}class tt extends U{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r<this.children.length;r++){let l=this.children[r],a=o+l.length;if(e<=a&&t>=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if(i.lines<this.lines)for(let s=0,r=0;s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(e>=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>5-1&&a.lines>h>>5+1){let c=this.children.slice();return c[s]=a,new tt(c,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=`
|
|
3
3
|
`){let s="";for(let r=0,o=0;r<this.children.length&&o<=t;r++){let l=this.children[r],a=o+l.length;o>e&&r&&(s+=i),e<a&&t>o&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof tt))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new ae(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,c=[];function u(d){let p;if(d.lines>r&&d instanceof tt)for(let b of d.children)u(b);else d.lines>o&&(a>o||!a)?(f(),l.push(d)):d instanceof ae&&a&&(p=c[c.length-1])instanceof ae&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new ae(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&f(),a+=d.lines,h+=d.length+1,c.push(d))}function f(){a!=0&&(l.push(c.length==1?c[0]:tt.from(c,h)),h=-1,a=c.length=0)}for(let d of e)u(d);return f(),l.length==1?l[0]:new tt(l,t)}}U.empty=new ae([""],0);function Jf(n){let e=-1;for(let t of n)e+=t.length+1;return e}function vn(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r<n.length&&s<=i;r++){let l=n[r],a=s+l.length;a>=t&&(a>i&&(l=l.slice(0,i-s)),s<t&&(l=l.slice(t-s)),o?(e[e.length-1]+=l,o=!1):e.push(l)),s=a+1}return e}function Ho(n,e,t){return vn(n,[""],e,t)}class Mi{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof ae?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ae?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=`
|
|
4
4
|
`,this;e--}else if(s instanceof ae){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ae?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class Ja{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Mi(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class _a{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(U.prototype[Symbol.iterator]=function(){return this.iter()},Mi.prototype[Symbol.iterator]=Ja.prototype[Symbol.iterator]=_a.prototype[Symbol.iterator]=function(){return this});class _f{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}}let Jt="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(n=>n?parseInt(n,36):1);for(let n=1;n<Jt.length;n++)Jt[n]+=Jt[n-1];function Yf(n){for(let e=1;e<Jt.length;e+=2)if(Jt[e]>n)return Jt[e-1]<=n;return!1}function zo(n){return n>=127462&&n<=127487}const $o=8205;function Oe(n,e,t=!0,i=!0){return(t?Ya:Xf)(n,e,i)}function Ya(n,e,t){if(e==n.length)return e;e&&Xa(n.charCodeAt(e))&&Za(n.charCodeAt(e-1))&&e--;let i=ye(n,e);for(e+=Ne(i);e<n.length;){let s=ye(n,e);if(i==$o||s==$o||t&&Yf(s))e+=Ne(s),i=s;else if(zo(s)){let r=0,o=e-2;for(;o>=0&&zo(ye(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Xf(n,e,t){for(;e>0;){let i=Ya(n,e-2,t);if(i<e)return i;e--}return 0}function Xa(n){return n>=56320&&n<57344}function Za(n){return n>=55296&&n<56320}function ye(n,e){let t=n.charCodeAt(e);if(!Za(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Xa(i)?(t-55296<<10)+(i-56320)+65536:t}function io(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Ne(n){return n<65536?1:2}const or=/\r\n?|\n/;var Ae=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(Ae||(Ae={}));class st{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t+1];e+=i<0?this.sections[t]:i}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,i=0,s=0;t<this.sections.length;){let r=this.sections[t++],o=this.sections[t++];o<0?(e(i,s,r),s+=r):s+=o,i+=r}}iterChangedRanges(e,t=!1){lr(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];s<0?e.push(i,s):e.push(s,i)}return new st(e)}composeDesc(e){return this.empty?e:e.empty?this:eh(this,e)}mapDesc(e,t=!1){return e.empty?this:ar(this,e,t)}mapPos(e,t=-1,i=Ae.Simple){let s=0,r=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=s+l;if(a<0){if(h>e)return r+(e-s);r+=l}else{if(i!=Ae.Simple&&h>=e&&(i==Ae.TrackDel&&s<e&&h>e||i==Ae.TrackBefore&&s<e||i==Ae.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i<this.sections.length&&s<=t;){let r=this.sections[i++],o=this.sections[i++],l=s+r;if(o>=0&&s<=t&&l>=e)return s<e&&l>t?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+i+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new st(e)}static create(e){return new st(e)}}class fe extends st{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return lr(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return ar(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s<t.length;s+=2){let o=t[s],l=t[s+1];if(l>=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length<a;)i.push(U.empty);i.push(o?e.slice(r,r+o):U.empty)}r+=o}return new fe(t,i)}compose(e){return this.empty?e:e.empty?this:eh(this,e,!0)}map(e,t=!1){return e.empty?this:ar(this,e,t,!0)}iterChanges(e,t=!1){lr(this,e,t)}get desc(){return st.create(this.sections)}filter(e){let t=[],i=[],s=[],r=new Ri(this);e:for(let o=0,l=0;;){let a=o==e.length?1e9:e[o++];for(;l<a||l==a&&r.len==0;){if(r.done)break e;let c=Math.min(r.len,a-l);ve(s,c,-1);let u=r.ins==-1?-1:r.off==0?r.ins:0;ve(t,c,u),u>0&&xt(i,t,r.text),r.forward(c),l+=c}let h=e[o++];for(;l<h;){if(r.done)break e;let c=Math.min(r.len,h-l);ve(t,c,-1),ve(s,c,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(c),l+=c}}return{changes:new fe(t,i),filtered:st.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t],s=this.sections[t+1];s<0?e.push(i):s==0?e.push([i]):e.push([i].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!s.length)return;o<t&&ve(s,t-o,-1);let u=new fe(s,r);l=l?l.compose(u.map(l)):u,s=[],r=[],o=0}function h(c){if(Array.isArray(c))for(let u of c)h(u);else if(c instanceof fe){if(c.length!=t)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${t})`);a(),l=l?l.compose(c.map(l)):c}else{let{from:u,to:f=u,insert:d}=c;if(u>f||u<0||f>t)throw new RangeError(`Invalid change range ${u} to ${f} (in doc of length ${t})`);let p=d?typeof d=="string"?U.of(d.split(i||or)):d:U.empty,b=p.length;if(u==f&&b==0)return;u<o&&a(),u>o&&ve(s,u-o,-1),ve(s,f-u,b),xt(r,s,p),o=f}}return h(e),a(!l),l}static empty(e){return new fe(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;s<e.length;s++){let r=e[s];if(typeof r=="number")t.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length<s;)i.push(U.empty);i[s]=U.of(r.slice(1)),t.push(r[0],i[s].length)}}}return new fe(t,i)}static createSet(e,t){return new fe(e,t)}}function ve(n,e,t,i=!1){if(e==0&&t<=0)return;let s=n.length-2;s>=0&&t<=0&&t==n[s+1]?n[s]+=e:e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function xt(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i<n.length)n[n.length-1]=n[n.length-1].append(t);else{for(;n.length<i;)n.push(U.empty);n.push(t)}}function lr(n,e,t){let i=n.inserted;for(let s=0,r=0,o=0;o<n.sections.length;){let l=n.sections[o++],a=n.sections[o++];if(a<0)s+=l,r+=l;else{let h=s,c=r,u=U.empty;for(;h+=l,c+=a,a&&i&&(u=u.append(i[o-2>>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,c,u),s=h,r=c}}}function ar(n,e,t,i=!1){let s=[],r=i?[]:null,o=new Ri(n),l=new Ri(e);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);ve(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len<o.len||l.len==o.len&&!t))){let h=l.len;for(ve(s,l.ins,-1);h;){let c=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=c&&(ve(s,0,o.ins),r&&xt(r,s,o.text),a=o.i),o.forward(c),h-=c}l.next()}else if(o.ins>=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let u=Math.min(c,l.len);h+=u,c-=u,l.forward(u)}else if(l.ins==0&&l.len<c)c-=l.len,l.next();else break;ve(s,h,a<o.i?o.ins:0),r&&a<o.i&&xt(r,s,o.text),a=o.i,o.forward(o.len-c)}else{if(o.done&&l.done)return r?fe.createSet(s,r):st.create(s);throw new Error("Mismatched change set lengths")}}function eh(n,e,t=!1){let i=[],s=t?[]:null,r=new Ri(n),o=new Ri(e);for(let l=!1;;){if(r.done&&o.done)return s?fe.createSet(i,s):st.create(i);if(r.ins==0)ve(i,r.len,0,l),r.next();else if(o.len==0&&!o.done)ve(i,0,o.ins,l),s&&xt(s,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let c=o.ins==-1?-1:o.off?0:o.ins;ve(i,a,c,l),s&&c&&xt(s,i,o.text)}else o.ins==-1?(ve(i,r.off?0:r.len,a,l),s&&xt(s,i,r.textBit(a))):(ve(i,r.off?0:r.len,o.off?0:o.ins,l),s&&!o.off&&xt(s,i,o.text));l=(r.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class Ri{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?U.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?U.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class It{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new It(i,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return w.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return w.range(this.anchor,i)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(e.anchor,e.head)}static create(e,t,i){return new It(e,t,i)}}class w{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:w.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let t=0;t<this.ranges.length;t++)if(!this.ranges[t].eq(e.ranges[t]))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new w([this.main],0)}addRange(e,t=!0){return w.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let i=this.ranges.slice();return i[t]=e,w.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new w(e.ranges.map(t=>It.fromJSON(t)),e.main)}static single(e,t=e){return new w([w.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;s<e.length;s++){let r=e[s];if(r.empty?r.from<=i:r.from<i)return w.normalized(e.slice(),t);i=r.to}return new w(e,t)}static cursor(e,t=0,i,s){return It.create(e,e,(t==0?0:t<0?4:8)|(i==null?3:Math.min(2,i))|(s??33554431)<<5)}static range(e,t,i,s){let r=(i??33554431)<<5|(s==null?3:Math.min(2,s));return t<e?It.create(t,e,24|r):It.create(e,t,(t>e?4:0)|r)}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;s<e.length;s++){let r=e[s],o=e[s-1];if(r.empty?r.from<=o.to:r.from<o.to){let l=o.from,a=Math.max(r.to,o.to);s<=t&&t--,e.splice(--s,2,r.anchor>r.head?w.range(a,l):w.range(l,a))}}return new w(e,t)}}function th(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let no=0;class B{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=no++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}static define(e={}){return new B(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:so),!!e.static,e.enables)}of(e){return new kn([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new kn(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new kn(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}}function so(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}class kn{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=no++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let u of this.dependencies)u=="doc"?a=!0:u=="selection"?h=!0:((t=e[u.id])!==null&&t!==void 0?t:1)&1||c.push(e[u.id]);return{create(u){return u.values[o]=i(u),1},update(u,f){if(a&&f.docChanged||h&&(f.docChanged||f.selection)||hr(u,c)){let d=i(u);if(l?!jo(d,u.values[o],s):!s(d,u.values[o]))return u.values[o]=d,1}return 0},reconfigure:(u,f)=>{let d,p=f.config.address[r];if(p!=null){let b=Bn(f,p);if(this.dependencies.every(g=>g instanceof B?f.facet(g)===u.facet(g):g instanceof we?f.field(g,!1)==u.field(g,!1):!0)||(l?jo(d=i(u),b,s):s(d=i(u),b)))return u.values[o]=b,0}else d=i(u);return u.values[o]=d,1}}}}function jo(n,e,t){if(n.length!=e.length)return!1;for(let i=0;i<n.length;i++)if(!t(n[i],e[i]))return!1;return!0}function hr(n,e){let t=!1;for(let i of e)Oi(n,i)&1&&(t=!0);return t}function Zf(n,e,t){let i=t.map(a=>n[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;c<i.length;c++){let u=Bn(a,i[c]);if(s[c]==2)for(let f of u)h.push(f);else h.push(u)}return e.combine(h)}return{create(a){for(let h of i)Oi(a,h);return a.values[o]=l(a),1},update(a,h){if(!hr(a,r))return 0;let c=l(a);return e.compare(c,a.values[o])?0:(a.values[o]=c,1)},reconfigure(a,h){let c=hr(a,i),u=h.config.facets[e.id],f=h.facet(e);if(u&&!c&&so(t,u))return a.values[o]=f,0;let d=l(a);return e.compare(d,f)?(a.values[o]=f,0):(a.values[o]=d,1)}}}const qo=B.define({static:!0});class we{constructor(e,t,i,s,r){this.id=e,this.createF=t,this.updateF=i,this.compareF=s,this.spec=r,this.provides=void 0}static define(e){let t=new we(no++,e.create,e.update,e.compare||((i,s)=>i===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(qo).find(i=>i.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}init(e){return[this,qo.of({field:this,create:e})]}get extension(){return this}}const Et={lowest:4,low:3,default:2,high:1,highest:0};function di(n){return e=>new ih(e,n)}const ci={highest:di(Et.highest),high:di(Et.high),default:di(Et.default),low:di(Et.low),lowest:di(Et.lowest)};class ih{constructor(e,t){this.inner=e,this.prec=t}}class us{of(e){return new cr(this,e)}reconfigure(e){return us.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class cr{constructor(e,t){this.compartment=e,this.inner=t}}class Rn{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let f of ed(e,t,o))f instanceof we?s.push(f):(r[f.facet.id]||(r[f.facet.id]=[])).push(f);let l=Object.create(null),a=[],h=[];for(let f of s)l[f.id]=h.length<<1,h.push(d=>f.slot(d));let c=i==null?void 0:i.config.facets;for(let f in r){let d=r[f],p=d[0].facet,b=c&&c[f]||[];if(d.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,so(b,d))a.push(i.facet(p));else{let g=p.combine(d.map(x=>x.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(x=>g.dynamicSlot(x)));l[p.id]=h.length<<1,h.push(g=>Zf(g,p,d))}}let u=h.map(f=>f(l));return new Rn(e,o,u,l,a,r)}}function ed(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof cr&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof cr){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof ih)r(o.inner,o.prec);else if(o instanceof we)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof kn)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,Et.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,Et.default),i.reduce((o,l)=>o.concat(l))}function Oi(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function Bn(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}const nh=B.define(),sh=B.define({combine:n=>n.some(e=>e),static:!0}),rh=B.define({combine:n=>n.length?n[0]:void 0,static:!0}),oh=B.define(),lh=B.define(),ah=B.define(),hh=B.define({combine:n=>n.length?n[0]:!1});class ft{constructor(e,t){this.type=e,this.value=t}static define(){return new td}}class td{of(e){return new ft(this,e)}}class id{constructor(e){this.map=e}of(e){return new W(this,e)}}class W{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new W(this.type,t)}is(e){return this.type==e}static define(e={}){return new id(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}}W.reconfigure=W.define();W.appendConfig=W.define();class de{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&th(i,t.newLength),r.some(l=>l.type==de.time)||(this.annotations=r.concat(de.time.of(Date.now())))}static create(e,t,i,s,r,o){return new de(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(de.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}de.time=ft.define();de.userEvent=ft.define();de.addToHistory=ft.define();de.remote=ft.define();function nd(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i<n.length&&(s==e.length||e[s]>=n[i]))r=n[i++],o=n[i++];else if(s<e.length)r=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<r?t.push(r,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function ch(n,e,t){var i;let s,r,o;return t?(s=e.changes,r=fe.empty(e.changes.length),o=n.changes.compose(e.changes)):(s=e.changes.map(n.changes),r=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(r):(i=n.selection)===null||i===void 0?void 0:i.map(s),effects:W.mapEffects(n.effects,s).concat(W.mapEffects(e.effects,r)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}function ur(n,e,t){let i=e.selection,s=_t(e.annotations);return e.userEvent&&(s=s.concat(de.userEvent.of(e.userEvent))),{changes:e.changes instanceof fe?e.changes:fe.of(e.changes||[],t,n.facet(rh)),selection:i&&(i instanceof w?i:w.single(i.anchor,i.head)),effects:_t(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function uh(n,e,t){let i=ur(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let r=1;r<e.length;r++){e[r].filter===!1&&(t=!1);let o=!!e[r].sequential;i=ch(i,ur(n,e[r],o?i.changes.newLength:n.doc.length),o)}let s=de.create(n,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return rd(t?sd(s):s)}function sd(n){let e=n.startState,t=!0;for(let s of e.facet(oh)){let r=s(n);if(r===!1){t=!1;break}Array.isArray(r)&&(t=t===!0?r:nd(t,r))}if(t!==!0){let s,r;if(t===!1)r=n.changes.invertedDesc,s=fe.empty(e.doc.length);else{let o=n.changes.filter(t);s=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}n=de.create(e,s,n.selection&&n.selection.map(r),W.mapEffects(n.effects,r),n.annotations,n.scrollIntoView)}let i=e.facet(lh);for(let s=i.length-1;s>=0;s--){let r=i[s](n);r instanceof de?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof de?n=r[0]:n=uh(e,_t(r),!1)}return n}function rd(n){let e=n.startState,t=e.facet(ah),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=ch(i,ur(e,r,n.changes.newLength),!0))}return i==n?n:de.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}const od=[];function _t(n){return n==null?od:Array.isArray(n)?n:[n]}var ie=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(ie||(ie={}));const ld=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let fr;try{fr=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function ad(n){if(fr)return fr.test(n);for(let e=0;e<n.length;e++){let t=n[e];if(/\w/.test(t)||t>""&&(t.toUpperCase()!=t.toLowerCase()||ld.test(t)))return!0}return!1}function hd(n){return e=>{if(!/\S/.test(e))return ie.Space;if(ad(e))return ie.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return ie.Word;return ie.Other}}class ${constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)Oi(this,l<<1);this.computeSlot=null}field(e,t=!0){let i=this.config.address[e.id];if(i==null){if(t)throw new RangeError("Field is not present in this state");return}return Oi(this,i),Bn(this,i)}update(...e){return uh(this,e,!0)}applyTransaction(e){let t=this.config,{base:i,compartments:s}=t;for(let o of e.effects)o.is(us.reconfigure)?(t&&(s=new Map,t.compartments.forEach((l,a)=>s.set(a,l)),t=null),s.set(o.value.compartment,o.value.extension)):o.is(W.reconfigure)?(t=null,i=o.value):o.is(W.appendConfig)&&(t=null,i=_t(i).concat(o.value));let r;t?r=e.startState.values.slice():(t=Rn.resolve(i,s,this),r=new $(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,a)=>a.reconfigure(l,this),null).values),new $(t,e.newDoc,e.newSelection,r,(o,l)=>l.update(o,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:w.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=_t(i.effects);for(let l=1;l<t.ranges.length;l++){let a=e(t.ranges[l]),h=this.changes(a.changes),c=h.map(s);for(let f=0;f<l;f++)r[f]=r[f].map(c);let u=s.mapDesc(h,!0);r.push(a.range.map(u)),s=s.compose(c),o=W.mapEffects(o,c).concat(W.mapEffects(_t(a.effects),u))}return{changes:s,selection:w.create(r,t.mainIndex),effects:o}}changes(e=[]){return e instanceof fe?e:fe.of(e,this.doc.length,this.facet($.lineSeparator))}toText(e){return U.of(e.split(this.facet($.lineSeparator)||or))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Oi(this,t),Bn(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let s=e[i];s instanceof we&&this.config.address[s.id]!=null&&(t[i]=s.spec.toJSON(this.field(e[i]),this))}return t}static fromJSON(e,t={},i){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(e,r)){let o=i[r],l=e[r];s.push(o.init(a=>o.spec.fromJSON(l,a)))}}return $.create({doc:e.doc,selection:w.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=Rn.resolve(e.extensions||[],new Map),i=e.doc instanceof U?e.doc:U.of((e.doc||"").split(t.staticFacet($.lineSeparator)||or)),s=e.selection?e.selection instanceof w?e.selection:w.single(e.selection.anchor,e.selection.head):w.single(0);return th(s,i.length),t.staticFacet(sh)||(s=s.asSingle()),new $(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet($.tabSize)}get lineBreak(){return this.facet($.lineSeparator)||`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as w,i as B,f as L,at as O,X as U,au as x,ag as D,av as F,aw as J,j as t,ax as b,d as K,ay as $,az as z,aA as M,aB as q,h as G,aC as X}from"./index-
|
|
1
|
+
import{s as w,i as B,f as L,at as O,X as U,au as x,ag as D,av as F,aw as J,j as t,ax as b,d as K,ay as $,az as z,aA as M,aB as q,h as G,aC as X}from"./index-1c4c68c3.js";const Y="CREATE_PROJECT_BTN",H=w(B)(({theme:e})=>({marginLeft:e.spacing(3)})),ee=()=>{const{setToastData:e,setToastApiError:i}=L(),{refetchUser:d}=O(),{uiConfig:l}=U(),a=x(),{trackEvent:u}=D(),{projectId:o,projectName:j,projectMode:p,projectDesc:m,featureLimit:C,setProjectId:P,setProjectName:h,setProjectDesc:T,getProjectPayload:s,clearErrors:r,validateProjectId:c,validateName:f,setProjectStickiness:g,setFeatureLimit:E,setProjectMode:A,projectStickiness:n,errors:y}=F(),{createProject:_,loading:N}=J();return t(b,{loading:N,title:"Create project",description:"Projects allows you to group feature toggles together in the management UI.",documentationLink:"https://docs.getunleash.io/reference/projects",documentationLinkLabel:"Projects documentation",formatApiCode:()=>`curl --location --request POST '${l.unleashUrl}/api/admin/projects' \\
|
|
2
2
|
--header 'Authorization: INSERT_API_KEY' \\
|
|
3
3
|
--header 'Content-Type: application/json' \\
|
|
4
4
|
--data-raw '${JSON.stringify(s(),void 0,2)}'`,children:K($,{errors:y,handleSubmit:async S=>{S.preventDefault(),r();const v=f(),k=await c();if(v&&k){const I=s();try{await _(I),d(),a(`/projects/${o}`),e({title:"Project created",text:"Now you can add toggles to this project",confetti:!0,type:"success"}),n!==q&&u("project_stickiness_set")}catch(R){i(G(R))}}},projectId:o,setProjectId:P,projectName:j,projectMode:p,projectStickiness:n,featureLimit:C,setProjectStickiness:g,setFeatureLimit:E,setProjectMode:A,setProjectName:h,projectDesc:m,setProjectDesc:T,mode:"Create",clearErrors:r,validateProjectId:c,children:[t(z,{name:"project",permission:M,"data-testid":Y}),t(H,{onClick:()=>{a(X)},children:"Cancel"})]})})};export{ee as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as r,j as o}from"./index-
|
|
1
|
+
import{c as r,j as o}from"./index-1c4c68c3.js";const a=r(o("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"}),"Error");export{a as E};
|