unleash-server 4.22.0 → 4.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/lib/routes/admin-api/api-token.js +1 -1
  2. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  3. package/dist/lib/routes/admin-api/project/api-token.js +1 -1
  4. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  5. package/dist/lib/routes/admin-api/user/pat.d.ts +1 -0
  6. package/dist/lib/routes/admin-api/user/pat.js +9 -0
  7. package/dist/lib/routes/admin-api/user/pat.js.map +1 -1
  8. package/dist/lib/services/proxy-service.d.ts +6 -1
  9. package/dist/lib/services/proxy-service.js +18 -7
  10. package/dist/lib/services/proxy-service.js.map +1 -1
  11. package/dist/lib/types/experimental.d.ts +1 -0
  12. package/dist/lib/types/experimental.js +1 -0
  13. package/dist/lib/types/experimental.js.map +1 -1
  14. package/dist/test/e2e/api/proxy/proxy.concurrency.e2e.test.d.ts +1 -0
  15. package/dist/test/e2e/api/proxy/proxy.concurrency.e2e.test.js +58 -0
  16. package/dist/test/e2e/api/proxy/proxy.concurrency.e2e.test.js.map +1 -0
  17. package/frontend/build/index.html +1 -1
  18. package/frontend/build/static/{CreateProject-79087949.js → CreateProject-51247c9b.js} +1 -1
  19. package/frontend/build/static/{Error-b8ec37c0.js → Error-82560e92.js} +1 -1
  20. package/frontend/build/static/{ExpandMore-4c20b51c.js → ExpandMore-937b19f8.js} +1 -1
  21. package/frontend/build/static/{FeatureArchiveDialog-b81c4e16.js → FeatureArchiveDialog-f5a6721b.js} +1 -1
  22. package/frontend/build/static/{FeatureMetricsChart-37e55387.js → FeatureMetricsChart-879d4460.js} +1 -1
  23. package/frontend/build/static/{FeatureViewLazyExport-10ea877c.js → FeatureViewLazyExport-3d7973c5.js} +2 -2
  24. package/frontend/build/static/{LazyAdminExport-0f2734aa.js → LazyAdminExport-68d64d69.js} +2 -2
  25. package/frontend/build/static/{LazyProjectExport-cb47b897.js → LazyProjectExport-89ba4ccb.js} +1 -1
  26. package/frontend/build/static/{NetworkOverview-8b64cc40.js → NetworkOverview-012e5bbd.js} +1 -1
  27. package/frontend/build/static/{NetworkTraffic-38cef6f4.js → NetworkTraffic-077f4b6d.js} +1 -1
  28. package/frontend/build/static/{Playground-4e2c6704.js → Playground-f688a775.js} +1 -1
  29. package/frontend/build/static/{StrategyItemContainer-d93244f3.js → StrategyItemContainer-046098eb.js} +1 -1
  30. package/frontend/build/static/{chartjs-adapter-date-fns.esm-24250637.js → chartjs-adapter-date-fns.esm-ac6b351e.js} +1 -1
  31. package/frontend/build/static/{index-c4e310cb.js → index-41705604.js} +28 -28
  32. package/frontend/build/static/{index-fe84ab30.js → index-ce309966.js} +1 -1
  33. package/frontend/build/static/{index-32a0dc63.js → index-ebad0466.js} +1 -1
  34. package/frontend/build/static/{unknownify-8af014d5.js → unknownify-9622ab2a.js} +1 -1
  35. package/frontend/build/static/{useProjectRole-08992a4c.js → useProjectRole-72934c5b.js} +1 -1
  36. package/package.json +1 -1
@@ -110,7 +110,7 @@ class ApiTokenController extends controller_1.default {
110
110
  async deleteApiToken(req, res) {
111
111
  const { token } = req.params;
112
112
  await this.apiTokenService.delete(token, (0, util_1.extractUsername)(req));
113
- this.proxyService.deleteClientForProxyToken(token);
113
+ await this.proxyService.deleteClientForProxyToken(token);
114
114
  res.status(200).end();
115
115
  }
116
116
  async accessibleTokens(user) {
@@ -1 +1 @@
1
- {"version":3,"file":"api-token.js","sourceRoot":"","sources":["../../../../src/lib/routes/admin-api/api-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-token.js","sourceRoot":"","sources":["../../../../src/lib/routes/admin-api/api-token.ts"],"names":[],"mappings":"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"}
@@ -101,7 +101,7 @@ class ProjectApiTokenController extends controller_1.default {
101
101
  (storedToken.projects.length === 1 &&
102
102
  storedToken.project[0] === projectId))) {
103
103
  await this.apiTokenService.delete(token, (0, util_1.extractUsername)(req));
104
- this.proxyService.deleteClientForProxyToken(token);
104
+ await this.proxyService.deleteClientForProxyToken(token);
105
105
  res.status(200).end();
106
106
  }
107
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-token.js","sourceRoot":"","sources":["../../../../../src/lib/routes/admin-api/project/api-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-token.js","sourceRoot":"","sources":["../../../../../src/lib/routes/admin-api/project/api-token.ts"],"names":[],"mappings":";;;;;;AAAA,8CAS0B;AAE1B,0CAQwB;AACxB,+DAA0E;AAO1E,wCAAgD;AAEhD,kEAA0C;AAG1C,mCAAyC;AAOzC,MAAM,IAAI,GAAG,wBAAwB,CAAC;AACtC,MAAM,UAAU,GAAG,GAAG,IAAI,SAAS,CAAC;AACpC,MAAa,yBAA0B,SAAQ,oBAAU;IAWrD,YACI,MAAsB,EACtB,EACI,eAAe,EACf,aAAa,EACb,YAAY,EACZ,cAAc,GAOjB;QAED,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,mBAAmB;YACjC,UAAU,EAAE,8BAAsB;YAClC,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,UAAU,CAAC;oBAClB,WAAW,EAAE,qBAAqB;oBAClC,SAAS,EAAE;wBACP,GAAG,EAAE,IAAA,8BAAoB,EAAC,iBAAiB,CAAC;qBAC/C;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,qBAAqB;YACnC,UAAU,EAAE,gCAAwB;YACpC,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,UAAU,CAAC;oBAClB,WAAW,EAAE,uBAAuB;oBACpC,WAAW,EAAE,IAAA,6BAAmB,EAAC,sBAAsB,CAAC;oBACxD,SAAS,EAAE;wBACP,GAAG,EAAE,IAAA,uCAA6B,EAAC,gBAAgB,CAAC;wBACpD,GAAG,EAAE,uBAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,IAAI,CAAC,qBAAqB;YACnC,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,gCAAwB;YACpC,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,UAAU,CAAC;oBAClB,WAAW,EAAE,uBAAuB;oBACpC,SAAS,EAAE;wBACP,GAAG,EAAE,uBAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,mBAAmB,CACrB,GAAiB,EACjB,GAA8B;QAE9B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,yBAAe,CAAC,GAAG,EACnB,EAAE,MAAM,EAAE,IAAA,sBAAc,EAAC,aAAa,CAAC,EAAE,CAC5C,CAAC;IACN,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,GAAiB,EACjB,GAA6B;QAE7B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACtB,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;SACnC;QAED,IACI,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACjC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,EACvC;YACE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACnD,WAAW,EACX,IAAA,sBAAe,EAAC,GAAG,CAAC,CACvB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,wBAAc,CAAC,GAAG,EAClB,IAAA,sBAAc,EAAC,KAAK,CAAC,EACrB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAC7B,CAAC;SACL;aAAM;YACH,GAAG,CAAC,aAAa;gBACb,0DAA0D,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACnB;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,GAAoC,EACpC,GAAa;QAEb,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACnE,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CACjE,CAAC;QACF,IACI,WAAW;YACX,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS;gBAC9B,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAC9B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAChD;YACE,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAA,sBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SACzB;IACL,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,OAAO,CACH,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAC/B,IAAA,wBAAe,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC1B,IAAU,EACV,OAAe;QAEf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAE5D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAK,CAAC,EAAE;YAChD,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,IAAI,KAAK,wBAAY,CAAC,KAAK;YACjC,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACtE,CAAC;IACN,CAAC;CACJ;AAhLD,8DAgLC"}
@@ -7,6 +7,7 @@ export default class PatController extends Controller {
7
7
  private patService;
8
8
  private openApiService;
9
9
  private logger;
10
+ private flagResolver;
10
11
  constructor(config: IUnleashConfig, { openApiService, patService, }: Pick<IUnleashServices, 'openApiService' | 'patService'>);
11
12
  createPat(req: IAuthRequest, res: Response): Promise<void>;
12
13
  getPats(req: IAuthRequest, res: Response<PatSchema>): Promise<void>;
@@ -15,6 +15,7 @@ class PatController extends controller_1.default {
15
15
  constructor(config, { openApiService, patService, }) {
16
16
  super(config);
17
17
  this.logger = config.getLogger('lib/routes/auth/pat-controller.ts');
18
+ this.flagResolver = config.flagResolver;
18
19
  this.openApiService = openApiService;
19
20
  this.patService = patService;
20
21
  this.route({
@@ -60,11 +61,19 @@ class PatController extends controller_1.default {
60
61
  });
61
62
  }
62
63
  async createPat(req, res) {
64
+ if (this.flagResolver.isEnabled('personalAccessTokensKillSwitch')) {
65
+ res.status(404).send({ message: 'PAT is disabled' });
66
+ return;
67
+ }
63
68
  const pat = req.body;
64
69
  const createdPat = await this.patService.createPat(pat, req.user.id, req.user);
65
70
  this.openApiService.respondWithValidation(201, res, pat_schema_1.patSchema.$id, (0, serialize_dates_1.serializeDates)(createdPat));
66
71
  }
67
72
  async getPats(req, res) {
73
+ if (this.flagResolver.isEnabled('personalAccessTokensKillSwitch')) {
74
+ res.status(404).send({ message: 'PAT is disabled' });
75
+ return;
76
+ }
68
77
  const pats = await this.patService.getAll(req.user.id);
69
78
  this.openApiService.respondWithValidation(200, res, pats_schema_1.patsSchema.$id, {
70
79
  pats: (0, serialize_dates_1.serializeDates)(pats),
@@ -1 +1 @@
1
- {"version":3,"file":"pat.js","sourceRoot":"","sources":["../../../../../src/lib/routes/admin-api/user/pat.ts"],"names":[],"mappings":";;;;;AACA,kEAA0C;AAG1C,uFAAkF;AAClF,yFAAoF;AAEpF,iFAAyE;AAGzE,4DAAkD;AAElD,oEAAgE;AAChE,iEAAwE;AACxE,mEAA+D;AAE/D,MAAqB,aAAc,SAAQ,oBAAU;IAOjD,YACI,MAAsB,EACtB,EACI,cAAc,EACd,UAAU,GAC4C;QAE1D,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,kBAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,wBAAwB,CAAC;oBAChC,WAAW,EAAE,SAAS;oBACtB,SAAS,EAAE,EAAE,GAAG,EAAE,IAAA,6CAAoB,EAAC,YAAY,CAAC,EAAE;iBACzD,CAAC;aACL;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,UAAU,EAAE,kBAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,wBAAwB,CAAC;oBAChC,WAAW,EAAE,WAAW;oBACxB,WAAW,EAAE,IAAA,2CAAmB,EAAC,WAAW,CAAC;oBAC7C,SAAS,EAAE,EAAE,GAAG,EAAE,IAAA,6CAAoB,EAAC,WAAW,CAAC,EAAE;iBACxD,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;YACZ,oBAAoB,EAAE,IAAI;YAC1B,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,UAAU,EAAE,kBAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,wBAAwB,CAAC;oBAChC,WAAW,EAAE,WAAW;oBACxB,SAAS,EAAE,EAAE,GAAG,EAAE,kCAAa,EAAE;iBACpC,CAAC;aACL;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAiB,EAAE,GAAa;QAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAC9C,GAAG,EACH,GAAG,CAAC,IAAI,CAAC,EAAE,EACX,GAAG,CAAC,IAAI,CACX,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,sBAAS,CAAC,GAAG,EACb,IAAA,gCAAc,EAAC,UAAU,CAAC,CAC7B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,GAAwB;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,wBAAU,CAAC,GAAG,EAAE;YAChE,IAAI,EAAE,IAAA,gCAAc,EAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CACX,GAAiC,EACjC,GAAa;QAEb,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CACJ;AA5FD,gCA4FC"}
1
+ {"version":3,"file":"pat.js","sourceRoot":"","sources":["../../../../../src/lib/routes/admin-api/user/pat.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,11 @@ export declare class ProxyService {
11
11
  private readonly logger;
12
12
  private readonly stores;
13
13
  private readonly services;
14
+ /**
15
+ * This is intentionally a Promise becasue we want to be able to await
16
+ * until the client (which might be being created by a different request) is ready
17
+ * Check this test that fails if we don't use a Promise: src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts
18
+ */
14
19
  private readonly clients;
15
20
  private cachedFrontendSettings?;
16
21
  private timer;
@@ -19,7 +24,7 @@ export declare class ProxyService {
19
24
  registerProxyMetrics(token: ApiUser, metrics: ClientMetricsSchema, ip: string): Promise<void>;
20
25
  private clientForProxyToken;
21
26
  private createClientForProxyToken;
22
- deleteClientForProxyToken(secret: string): void;
27
+ deleteClientForProxyToken(secret: string): Promise<void>;
23
28
  stopAll(): void;
24
29
  private static assertExpectedTokenType;
25
30
  setFrontendSettings(value: FrontendSettings, createdBy: string): Promise<void>;
@@ -10,6 +10,11 @@ const error_1 = require("../error");
10
10
  const date_fns_1 = require("date-fns");
11
11
  class ProxyService {
12
12
  constructor(config, stores, services) {
13
+ /**
14
+ * This is intentionally a Promise becasue we want to be able to await
15
+ * until the client (which might be being created by a different request) is ready
16
+ * Check this test that fails if we don't use a Promise: src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts
17
+ */
13
18
  this.clients = new Map();
14
19
  this.config = config;
15
20
  this.logger = config.getLogger('services/proxy-service.ts');
@@ -36,10 +41,12 @@ class ProxyService {
36
41
  }
37
42
  async clientForProxyToken(token) {
38
43
  ProxyService.assertExpectedTokenType(token);
39
- if (!this.clients.has(token.secret)) {
40
- this.clients.set(token.secret, await this.createClientForProxyToken(token));
44
+ let client = this.clients.get(token.secret);
45
+ if (!client) {
46
+ client = this.createClientForProxyToken(token);
47
+ this.clients.set(token.secret, client);
41
48
  }
42
- return this.clients.get(token.secret);
49
+ return client;
43
50
  }
44
51
  async createClientForProxyToken(token) {
45
52
  const repository = new proxy_1.ProxyRepository(this.config, this.stores, this.services, token);
@@ -56,12 +63,16 @@ class ProxyService {
56
63
  await client.start();
57
64
  return client;
58
65
  }
59
- deleteClientForProxyToken(secret) {
60
- this.clients.get(secret)?.destroy();
61
- this.clients.delete(secret);
66
+ async deleteClientForProxyToken(secret) {
67
+ let clientPromise = this.clients.get(secret);
68
+ if (clientPromise) {
69
+ const client = await clientPromise;
70
+ client.destroy();
71
+ this.clients.delete(secret);
72
+ }
62
73
  }
63
74
  stopAll() {
64
- this.clients.forEach((client) => client.destroy());
75
+ this.clients.forEach((promise) => promise.then((c) => c.destroy()));
65
76
  }
66
77
  static assertExpectedTokenType({ type }) {
67
78
  if (!(type === api_token_1.ApiTokenType.FRONTEND || type === api_token_1.ApiTokenType.ADMIN)) {
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-service.js","sourceRoot":"","sources":["../../../src/lib/services/proxy-service.ts"],"names":[],"mappings":";;;AAIA,mDAKwB;AACxB,oCAA2C;AAC3C,yDAAyD;AACzD,2EAG6C;AAC7C,kCAA0C;AAC1C,oCAA2D;AAC3D,uCAAiD;AAiBjD,MAAa,YAAY;IAerB,YAAY,MAAc,EAAE,MAAc,EAAE,QAAkB;QAN7C,YAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;QAOlE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,KAAK,GAAG,WAAW,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAClC,IAAA,gCAAqB,EAAC,CAAC,CAAC,CAC3B,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,KAAc,EACd,OAAgB;QAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC;QAE/D,OAAO,WAAW;aACb,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YACtD,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;SAClD,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACtB,KAAc,EACd,OAA4B,EAC5B,EAAU;QAEV,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,WAAW,GACb,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,yBAAyB,CAC1D,KAAK,EACL,OAAO,CACV,CAAC;QAEN,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAC5D,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAC3B,EAAE,CACL,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAc;QAC5C,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CACZ,KAAK,CAAC,MAAM,EACZ,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAC9C,CAAC;SACL;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,KAAc;QAClD,MAAM,UAAU,GAAG,IAAI,uBAAe,CAClC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,KAAK,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,wBAAO,CAAC;YACvB,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,QAAQ;YACb,eAAe,EAAE,IAAI,qCAAoB,EAAE;YAC3C,cAAc,EAAE,IAAI;YACpB,UAAU;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,8BAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,yBAAyB,CAAC,MAAc;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAW;QACpD,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAY,CAAC,QAAQ,IAAI,IAAI,KAAK,wBAAY,CAAC,KAAK,CAAC,EAAE;YAClE,MAAM,IAAI,yBAAiB,EAAE,CAAC;SACjC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CACrB,KAAuB,EACvB,SAAiB;QAEjB,MAAM,KAAK,GAAG,IAAA,sBAAe,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE;YACP,MAAM,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;SACjC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CACrC,uCAAmB,EACnB,KAAK,EACL,SAAS,CACZ,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,qBAAqB;QAC/B,IAAI;YACA,IAAI,CAAC,sBAAsB;gBACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,uCAAmB,EAAE;oBACxD,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;iBACrD,CAAC,CAAC;SACV;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,mBAAmB,CACrB,WAAoB,IAAI;QAExB,IAAI,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACzC,OAAO,IAAI,CAAC,sBAAsB,CAAC;SACtC;QACD,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;IACL,CAAC;CACJ;AA9JD,oCA8JC"}
1
+ {"version":3,"file":"proxy-service.js","sourceRoot":"","sources":["../../../src/lib/services/proxy-service.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ declare const flags: {
20
20
  projectScopedSegments: boolean;
21
21
  projectScopedStickiness: boolean;
22
22
  projectMode: boolean;
23
+ personalAccessTokensKillSwitch: boolean;
23
24
  cleanClientApi: boolean;
24
25
  optimal304: boolean;
25
26
  optimal304Differ: boolean;
@@ -22,6 +22,7 @@ const flags = {
22
22
  projectScopedSegments: (0, util_1.parseEnvVarBoolean)(process.env.PROJECT_SCOPED_SEGMENTS, false),
23
23
  projectScopedStickiness: (0, util_1.parseEnvVarBoolean)(process.env.PROJECT_SCOPED_STICKINESS, false),
24
24
  projectMode: (0, util_1.parseEnvVarBoolean)(process.env.PROJECT_MODE, false),
25
+ personalAccessTokensKillSwitch: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_PAT_KILL_SWITCH, false),
25
26
  cleanClientApi: (0, util_1.parseEnvVarBoolean)(process.env.CLEAN_CLIENT_API, false),
26
27
  optimal304: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_EXPERIMENTAL_OPTIMAL_304, false),
27
28
  optimal304Differ: (0, util_1.parseEnvVarBoolean)(process.env.UNLEASH_EXPERIMENTAL_OPTIMAL_304_DIFFER, false),
@@ -1 +1 @@
1
- {"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../../src/lib/types/experimental.ts"],"names":[],"mappings":";;;AAAA,kCAA6C;AAK7C,MAAM,KAAK,GAAG;IACV,wBAAwB,EAAE,KAAK;IAC/B,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,IAAA,yBAAkB,EAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,IAAI,CACP;IACD,gBAAgB,EAAE,IAAA,yBAAkB,EAChC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EACnD,KAAK,CACR;IACD,kBAAkB,EAAE,IAAA,yBAAkB,EAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAChC,KAAK,CACR;IACD,kBAAkB,EAAE,IAAA,yBAAkB,EAClC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EACrD,IAAI,CACP;IACD,iCAAiC,EAAE,IAAA,yBAAkB,EACjD,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAC3D,KAAK,CACR;IACD,eAAe,EAAE,IAAA,yBAAkB,EAC/B,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACjD,KAAK,CACR;IACD,aAAa,EAAE,IAAA,yBAAkB,EAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;IACD,oBAAoB,EAAE,IAAA,yBAAkB,EACpC,OAAO,CAAC,GAAG,CAAC,2CAA2C,EACvD,IAAI,CACP;IACD,0BAA0B,EAAE,IAAA,yBAAkB,EAC1C,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAC9D,KAAK,CACR;IACD,YAAY,EAAE,IAAA,yBAAkB,EAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;IACD,sBAAsB,EAAE,IAAA,yBAAkB,EACtC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAC3C,KAAK,CACR;IACD,iBAAiB,EAAE,IAAA,yBAAkB,EACjC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EACxC,KAAK,CACR;IACD,YAAY,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC1E,cAAc,EAAE,IAAA,yBAAkB,EAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,CACR;IACD,qBAAqB,EAAE,IAAA,yBAAkB,EACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,CACR;IACD,uBAAuB,EAAE,IAAA,yBAAkB,EACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,KAAK,CACR;IACD,WAAW,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC;IAChE,cAAc,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACvE,UAAU,EAAE,IAAA,yBAAkB,EAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,KAAK,CACR;IACD,gBAAgB,EAAE,IAAA,yBAAkB,EAChC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EACnD,KAAK,CACR;IACD,aAAa,EAAE,IAAA,yBAAkB,EAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;CACJ,CAAC;AAEW,QAAA,0BAA0B,GAAyB;IAC5D,KAAK;IACL,gBAAgB,EAAE,EAAE,SAAS,EAAE,GAAY,EAAE,CAAC,KAAK,EAAE;CACxD,CAAC"}
1
+ {"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../../src/lib/types/experimental.ts"],"names":[],"mappings":";;;AAAA,kCAA6C;AAK7C,MAAM,KAAK,GAAG;IACV,wBAAwB,EAAE,KAAK;IAC/B,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,IAAA,yBAAkB,EAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,IAAI,CACP;IACD,gBAAgB,EAAE,IAAA,yBAAkB,EAChC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EACnD,KAAK,CACR;IACD,kBAAkB,EAAE,IAAA,yBAAkB,EAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAChC,KAAK,CACR;IACD,kBAAkB,EAAE,IAAA,yBAAkB,EAClC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EACrD,IAAI,CACP;IACD,iCAAiC,EAAE,IAAA,yBAAkB,EACjD,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAC3D,KAAK,CACR;IACD,eAAe,EAAE,IAAA,yBAAkB,EAC/B,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACjD,KAAK,CACR;IACD,aAAa,EAAE,IAAA,yBAAkB,EAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;IACD,oBAAoB,EAAE,IAAA,yBAAkB,EACpC,OAAO,CAAC,GAAG,CAAC,2CAA2C,EACvD,IAAI,CACP;IACD,0BAA0B,EAAE,IAAA,yBAAkB,EAC1C,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAC9D,KAAK,CACR;IACD,YAAY,EAAE,IAAA,yBAAkB,EAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;IACD,sBAAsB,EAAE,IAAA,yBAAkB,EACtC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAC3C,KAAK,CACR;IACD,iBAAiB,EAAE,IAAA,yBAAkB,EACjC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EACxC,KAAK,CACR;IACD,YAAY,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC1E,cAAc,EAAE,IAAA,yBAAkB,EAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,CACR;IACD,qBAAqB,EAAE,IAAA,yBAAkB,EACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,CACR;IACD,uBAAuB,EAAE,IAAA,yBAAkB,EACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,KAAK,CACR;IACD,WAAW,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC;IAChE,8BAA8B,EAAE,IAAA,yBAAkB,EAC9C,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,CACR;IACD,cAAc,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACvE,UAAU,EAAE,IAAA,yBAAkB,EAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,KAAK,CACR;IACD,gBAAgB,EAAE,IAAA,yBAAkB,EAChC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EACnD,KAAK,CACR;IACD,aAAa,EAAE,IAAA,yBAAkB,EAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,KAAK,CACR;CACJ,CAAC;AAEW,QAAA,0BAA0B,GAAyB;IAC5D,KAAK;IACL,gBAAgB,EAAE,EAAE,SAAS,EAAE,GAAY,EAAE,CAAC,KAAK,EAAE;CACxD,CAAC"}
@@ -0,0 +1,58 @@
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 test_helper_1 = require("../../helpers/test-helper");
7
+ const database_init_1 = __importDefault(require("../../helpers/database-init"));
8
+ const no_logger_1 = __importDefault(require("../../../fixtures/no-logger"));
9
+ const util_1 = require("../../../../lib/util");
10
+ const api_token_1 = require("../../../../lib/types/models/api-token");
11
+ let app;
12
+ let db;
13
+ let appErrorLogs = [];
14
+ beforeAll(async () => {
15
+ db = await (0, database_init_1.default)(`proxy_concurrency`, no_logger_1.default);
16
+ const baseLogger = (0, no_logger_1.default)();
17
+ const appLogger = {
18
+ ...baseLogger,
19
+ error: (msg, ...args) => {
20
+ appErrorLogs.push(msg);
21
+ baseLogger.error(msg, ...args);
22
+ },
23
+ };
24
+ app = await (0, test_helper_1.setupAppWithAuth)(db.stores, {
25
+ frontendApiOrigins: ['https://example.com'],
26
+ getLogger: () => appLogger,
27
+ });
28
+ });
29
+ afterEach(() => {
30
+ app.services.proxyService.stopAll();
31
+ jest.clearAllMocks();
32
+ });
33
+ afterAll(async () => {
34
+ await app.destroy();
35
+ await db.destroy();
36
+ });
37
+ beforeEach(async () => {
38
+ appErrorLogs = [];
39
+ });
40
+ /**
41
+ * This test needs to run on a new instance of the application and a clean DB
42
+ * which is why it should be the only test of this file
43
+ */
44
+ test('multiple parallel calls to api/frontend should not create multiple instances', async () => {
45
+ const frontendTokenDefault = await app.services.apiTokenService.createApiTokenWithProjects({
46
+ type: api_token_1.ApiTokenType.FRONTEND,
47
+ projects: ['default'],
48
+ environment: 'default',
49
+ username: `test-token-${(0, util_1.randomId)()}`,
50
+ });
51
+ await Promise.all(Array.from(Array(15).keys()).map(() => app.request
52
+ .get('/api/frontend')
53
+ .set('Authorization', frontendTokenDefault.secret)
54
+ .expect('Content-Type', /json/)
55
+ .expect(200)));
56
+ expect(appErrorLogs).toHaveLength(0);
57
+ });
58
+ //# sourceMappingURL=proxy.concurrency.e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.concurrency.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts"],"names":[],"mappings":";;;;;AAAA,2DAA2E;AAC3E,gFAA8D;AAC9D,4EAAoD;AACpD,+CAAgD;AAChD,sEAAsE;AAEtE,IAAI,GAAiB,CAAC;AACtB,IAAI,EAAW,CAAC;AAChB,IAAI,YAAY,GAAa,EAAE,CAAC;AAEhC,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,EAAE,GAAG,MAAM,IAAA,uBAAM,EAAC,mBAAmB,EAAE,mBAAS,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAA,mBAAS,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG;QACd,GAAG,UAAU;QACb,KAAK,EAAE,CAAC,GAAW,EAAE,GAAG,IAAW,EAAE,EAAE;YACnC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnC,CAAC;KACJ,CAAC;IACF,GAAG,GAAG,MAAM,IAAA,8BAAgB,EAAC,EAAE,CAAC,MAAM,EAAE;QACpC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC;QAC3C,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;KAC7B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACX,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAChB,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,KAAK,IAAI,EAAE;IAClB,YAAY,GAAG,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;IAC5F,MAAM,oBAAoB,GACtB,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,0BAA0B,CAAC;QAC1D,IAAI,EAAE,wBAAY,CAAC,QAAQ;QAC3B,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,cAAc,IAAA,eAAQ,GAAE,EAAE;KACvC,CAAC,CAAC;IAEP,MAAM,OAAO,CAAC,GAAG,CACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAClC,GAAG,CAAC,OAAO;SACN,GAAG,CAAC,eAAe,CAAC;SACpB,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,MAAM,CAAC;SACjD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC,CACnB,CACJ,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
@@ -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-c4e310cb.js"></script>
19
+ <script type="module" crossorigin src="/static/index-41705604.js"></script>
20
20
  <link rel="stylesheet" href="/static/index-870c8122.css">
21
21
  </head>
22
22
  <body>
@@ -1,4 +1,4 @@
1
- import{a2 as k,aq as R,H as w,ar as O,as as U,at as D,au as J,j as e,av as b,aw as x,ax as B,ay as F,az as L,a4 as K,aA as $}from"./index-c4e310cb.js";const q="CREATE_PROJECT_BTN",Y=()=>{const{setToastData:n,setToastApiError:i}=k(),{refetchUser:d}=R(),{uiConfig:l}=w(),t=O(),{trackEvent:u}=U(),{projectId:a,projectName:j,projectMode:p,projectDesc:m,setProjectId:P,setProjectName:C,setProjectDesc:T,getProjectPayload:o,clearErrors:r,validateProjectId:s,validateName:h,setProjectStickiness:E,setProjectMode:f,projectStickiness:c,errors:g}=D(),{createProject:A,loading:_}=J();return e(b,{loading:_,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' \\
1
+ import{a2 as k,aq as R,H as w,ar as O,as as U,at as D,au as J,j as e,av as b,aw as x,ax as B,ay as F,az as L,a4 as K,aA as $}from"./index-41705604.js";const q="CREATE_PROJECT_BTN",Y=()=>{const{setToastData:n,setToastApiError:i}=k(),{refetchUser:d}=R(),{uiConfig:l}=w(),t=O(),{trackEvent:u}=U(),{projectId:a,projectName:j,projectMode:p,projectDesc:m,setProjectId:P,setProjectName:C,setProjectDesc:T,getProjectPayload:o,clearErrors:r,validateProjectId:s,validateName:h,setProjectStickiness:E,setProjectMode:f,projectStickiness:c,errors:g}=D(),{createProject:A,loading:_}=J();return e(b,{loading:_,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(o(),void 0,2)}'`,children:e(x,{errors:g,handleSubmit:async N=>{N.preventDefault(),r();const v=h(),y=await s();if(v&&y){const S=o();try{await A(S),d(),t(`/projects/${a}`),n({title:"Project created",text:"Now you can add toggles to this project",confetti:!0,type:"success"}),c!==L&&u("project_stickiness_set")}catch(I){i(K(I))}}},handleCancel:()=>{t($)},projectId:a,setProjectId:P,projectName:j,projectMode:p,projectStickiness:c,setProjectStickiness:E,setProjectMode:f,setProjectName:C,projectDesc:m,setProjectDesc:T,mode:"Create",clearErrors:r,validateProjectId:s,children:e(B,{name:"project",permission:F,"data-testid":q})})})};export{Y as default};
@@ -1 +1 @@
1
- import{c as r,j as o}from"./index-c4e310cb.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};
1
+ import{c as r,j as o}from"./index-41705604.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};
@@ -1 +1 @@
1
- import{c as a,j as o}from"./index-c4e310cb.js";const e=a(o("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");export{e as E};
1
+ import{c as a,j as o}from"./index-41705604.js";const e=a(o("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");export{e as E};
@@ -1,4 +1,4 @@
1
- import{c as _,j as n,aI as F,b1 as k,f as v,a_ as x,C as A,A as te,T as w,b_ as ae,cp as $,r as y,cq as ne,cr as se,a$ as re,b0 as j,a2 as E,H as oe,ar as N,aJ as z,aV as ce,cs as ie,av as le,ap as ue,ct as ge,cu as de,cv as he,cw as pe,b8 as H,cx as ye,b2 as me,a4 as R,cy as fe,s as P,aZ as ve,cz as Te,cA as be,F as U,cB as Se,cC as Ce,cD as Ae,ad as W,ac as Y,bJ as we,c1 as Re,cE as xe,w as Ee,cF as qe,cG as Fe,u as ke,Z as Pe,bF as Be,aU as De,aS as Oe,aT as Le,bB as I,au as $e}from"./index-c4e310cb.js";const Ke=_(n("path",{d:"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5 6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z"}),"Archive"),Ze=_(n("path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"}),"WatchLater"),Qe=({isOpen:e,onConfirm:t,onClose:s,showBanner:o,environment:a,messageComponent:r})=>{const i=F("projectId"),{data:h}=k(i),{changeRequestInReviewOrApproved:l,alert:u}=ae(h),d=l(a||"");return v(x,{open:e,primaryButtonText:d?"Add to existing change request":"Add suggestion to draft",secondaryButtonText:"Cancel",onClick:t,onClose:s,title:"Request changes",fullWidth:!0,children:[n(A,{condition:d,show:u}),n(A,{condition:Boolean(o),show:v(te,{severity:"info",sx:{mb:2},children:["Change requests feature is enabled for ",a,". Your changes need to be approved before they will be live. All the changes you do now will be added into a draft that you can submit for review."]})}),n(w,{variant:"body2",color:"text.secondary",children:"Your suggestion:"}),r]})},ze=(e,t)=>{const s={};return t.parameters.forEach(o=>{s[o.name]=Ve(e,o)}),{name:t.name,constraints:[],parameters:s}},Ve=(e,t)=>t.name==="rollout"||t.name==="percentage"||t.type==="percentage"?"50":t.name==="stickiness"?"":t.name==="groupId"?e:t.type==="boolean"?"false":"",Xe=()=>{const e=F("projectId"),t=F("featureId"),s=$("environmentId"),o=$("strategyName"),[a,r]=y.useState({}),[i,h]=y.useState([]),{strategyDefinition:l}=ne(o),u=se(),{addStrategyToFeature:d,loading:m}=re(),{addChange:c}=j(),{setToastData:g,setToastApiError:T}=E(),{uiConfig:p}=oe(),{unleashUrl:f}=p,b=N(),{feature:S,refetchFeature:D}=z(e,t),O=y.useRef(S),{isChangeRequestConfigured:L}=ce(e),{refetch:G}=k(e),{data:q,staleDataNotification:J,forceRefreshCache:K}=ie({unleashGetter:z,params:[e,t],dataKey:"feature",refetchFunctionKey:"refetchFeature",options:{}},S,{afterSubmitAction:D},fe);y.useEffect(()=>{O.current.name===""&&S.name&&(K(S),O.current=S)},[S]),y.useEffect(()=>{l&&r(ze(t,l))},[t,l]);const Z=async C=>{await d(e,t,s,C),g({title:"Strategy created",type:"success",confetti:!0})},Q=async C=>{await c(e,s,{action:"addStrategy",feature:t,payload:C}),g({title:"Strategy added to draft",type:"success",confetti:!0}),G()},X=async()=>{const C=ye(a,i);try{L(s)?await Q(C):await Z(C),D(),b(me(e,t))}catch(ee){T(R(ee))}};return!q||!q.project?null:v(le,{modal:!0,title:ue(o),description:ge,documentationLink:de,documentationLinkLabel:he,formatApiCode:()=>je(e,t,s,a,f),children:[n(pe,{projectId:e,feature:q,strategy:a,setStrategy:r,segments:i,setSegments:h,environmentId:s,onSubmit:X,loading:m,permission:H,errors:u,isChangeRequest:L(s)}),J]})},_e=(e,t,s,o)=>{const a=new URLSearchParams({environmentId:s,strategyName:o});return`/projects/${e}/features/${t}/strategies/create?${a}`},je=(e,t,s,o,a)=>{if(!a)return"";const r=`${a}/api/admin/projects/${e}/features/${t}/environments/${s}/strategies`,i=JSON.stringify(o,void 0,2);return`curl --location --request POST '${r}' \\
1
+ import{c as _,j as n,aI as F,b1 as k,f as v,a_ as x,C as A,A as te,T as w,b_ as ae,cp as $,r as y,cq as ne,cr as se,a$ as re,b0 as j,a2 as E,H as oe,ar as N,aJ as z,aV as ce,cs as ie,av as le,ap as ue,ct as ge,cu as de,cv as he,cw as pe,b8 as H,cx as ye,b2 as me,a4 as R,cy as fe,s as P,aZ as ve,cz as Te,cA as be,F as U,cB as Se,cC as Ce,cD as Ae,ad as W,ac as Y,bJ as we,c1 as Re,cE as xe,w as Ee,cF as qe,cG as Fe,u as ke,Z as Pe,bF as Be,aU as De,aS as Oe,aT as Le,bB as I,au as $e}from"./index-41705604.js";const Ke=_(n("path",{d:"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5 6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z"}),"Archive"),Ze=_(n("path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"}),"WatchLater"),Qe=({isOpen:e,onConfirm:t,onClose:s,showBanner:o,environment:a,messageComponent:r})=>{const i=F("projectId"),{data:h}=k(i),{changeRequestInReviewOrApproved:l,alert:u}=ae(h),d=l(a||"");return v(x,{open:e,primaryButtonText:d?"Add to existing change request":"Add suggestion to draft",secondaryButtonText:"Cancel",onClick:t,onClose:s,title:"Request changes",fullWidth:!0,children:[n(A,{condition:d,show:u}),n(A,{condition:Boolean(o),show:v(te,{severity:"info",sx:{mb:2},children:["Change requests feature is enabled for ",a,". Your changes need to be approved before they will be live. All the changes you do now will be added into a draft that you can submit for review."]})}),n(w,{variant:"body2",color:"text.secondary",children:"Your suggestion:"}),r]})},ze=(e,t)=>{const s={};return t.parameters.forEach(o=>{s[o.name]=Ve(e,o)}),{name:t.name,constraints:[],parameters:s}},Ve=(e,t)=>t.name==="rollout"||t.name==="percentage"||t.type==="percentage"?"50":t.name==="stickiness"?"":t.name==="groupId"?e:t.type==="boolean"?"false":"",Xe=()=>{const e=F("projectId"),t=F("featureId"),s=$("environmentId"),o=$("strategyName"),[a,r]=y.useState({}),[i,h]=y.useState([]),{strategyDefinition:l}=ne(o),u=se(),{addStrategyToFeature:d,loading:m}=re(),{addChange:c}=j(),{setToastData:g,setToastApiError:T}=E(),{uiConfig:p}=oe(),{unleashUrl:f}=p,b=N(),{feature:S,refetchFeature:D}=z(e,t),O=y.useRef(S),{isChangeRequestConfigured:L}=ce(e),{refetch:G}=k(e),{data:q,staleDataNotification:J,forceRefreshCache:K}=ie({unleashGetter:z,params:[e,t],dataKey:"feature",refetchFunctionKey:"refetchFeature",options:{}},S,{afterSubmitAction:D},fe);y.useEffect(()=>{O.current.name===""&&S.name&&(K(S),O.current=S)},[S]),y.useEffect(()=>{l&&r(ze(t,l))},[t,l]);const Z=async C=>{await d(e,t,s,C),g({title:"Strategy created",type:"success",confetti:!0})},Q=async C=>{await c(e,s,{action:"addStrategy",feature:t,payload:C}),g({title:"Strategy added to draft",type:"success",confetti:!0}),G()},X=async()=>{const C=ye(a,i);try{L(s)?await Q(C):await Z(C),D(),b(me(e,t))}catch(ee){T(R(ee))}};return!q||!q.project?null:v(le,{modal:!0,title:ue(o),description:ge,documentationLink:de,documentationLinkLabel:he,formatApiCode:()=>je(e,t,s,a,f),children:[n(pe,{projectId:e,feature:q,strategy:a,setStrategy:r,segments:i,setSegments:h,environmentId:s,onSubmit:X,loading:m,permission:H,errors:u,isChangeRequest:L(s)}),J]})},_e=(e,t,s,o)=>{const a=new URLSearchParams({environmentId:s,strategyName:o});return`/projects/${e}/features/${t}/strategies/create?${a}`},je=(e,t,s,o,a)=>{if(!a)return"";const r=`${a}/api/admin/projects/${e}/features/${t}/environments/${s}/strategies`,i=JSON.stringify(o,void 0,2);return`curl --location --request POST '${r}' \\
2
2
  --header 'Authorization: INSERT_API_KEY' \\
3
3
  --header 'Content-Type: application/json' \\
4
4
  --data-raw '${i}'`},V=P("p")(({theme:e})=>({marginBottom:e.spacing(.5),fontSize:e.fontSizes.bodySize})),et=({open:e,environmentName:t,featureId:s,projectId:o,onClose:a})=>{const r=N(),i=_e(o,s,t,"default");return v(x,{open:e,maxWidth:"sm",onClose:()=>a(),title:"You need to add a strategy to your toggle",primaryButtonText:"Take me directly to add strategy",permissionButton:n(ve,{type:"button",permission:H,projectId:o,environmentId:t,onClick:()=>{a(),r(i)},children:"Take me directly to add strategy"}),secondaryButtonText:"Cancel",children:[n(V,{children:"Before you can enable the toggle in the environment, you need to add an activation strategy."}),n(V,{children:"You can add the activation strategy by selecting the toggle, open the environment accordion and add the activation strategy."})]})},tt="You can not enable the environment before it has strategies",at=e=>{const{setToastData:t,setToastApiError:s}=E(),{addChange:o}=j(),{refetch:a}=k(e),[r,i]=y.useState({isOpen:!1}),h=y.useCallback((d,m,c)=>{i({featureName:d,environment:m,enabled:c,isOpen:!0})},[]),l=y.useCallback(()=>{i(d=>({...d,isOpen:!1}))},[]),u=y.useCallback(async()=>{try{await o(e,r.environment,{feature:r.featureName,action:"updateEnabled",payload:{enabled:Boolean(r.enabled)}}),a(),i(d=>({...d,isOpen:!1})),t({type:"success",title:"Changes added to the draft!"})}catch(d){s(R(d)),i(m=>({...m,isOpen:!1}))}},[o]);return{onChangeRequestToggle:h,onChangeRequestToggleClose:l,onChangeRequestToggleConfirm:u,changeRequestDialogDetails:r}},nt=({enabled:e,featureName:t,environment:s})=>v(w,{"data-testid":"update-enabled-message",children:[n("strong",{children:e?"Enable":"Disable"})," feature toggle"," ",n("strong",{children:t})," in ",n("strong",{children:s})]}),Ne=P(Te)(({theme:e})=>({color:e.palette.warning.main,fontSize:e.fontSizes.bodySize})),st=()=>n(be,{arrow:!0,title:v(U,{children:["This environment has no variants enabled. If you check this feature's variants in this environment, you will get the"," ",n("a",{href:"https://docs.getunleash.io/reference/feature-toggle-variants#the-disabled-variant",target:"_blank",rel:"noreferrer",children:"disabled variant"}),"."]}),children:n(Ne,{})});var B={},He=Ce;Object.defineProperty(B,"__esModule",{value:!0});var M=B.default=void 0,Ue=He(Se()),We=Ae,Ye=(0,Ue.default)((0,We.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");M=B.default=Ye;const Ie=qe(),rt=({options:e,selectedOptions:t,indeterminateOptions:s,tagType:o,existingTags:a,disabled:r=!1,onChange:i})=>{const h=n(Fe,{fontSize:"small"});return n(W,{multiple:!0,id:"checkboxes-tag",sx:{marginTop:c=>c.spacing(2),width:500},disableCloseOnSelect:!0,placeholder:"Select Values",options:e,value:t,renderTags:(c,g)=>c.map((T,p)=>a.some(b=>b.value===T.title&&b.type===o.name)&&s===void 0?null:n(Ee,{...g({index:p}),label:T.title})),isOptionEqualToValue:(c,g)=>g.inputValue&&g.inputValue!==""?c.title===g.inputValue:c.title===g.title,getOptionLabel:c=>c.inputValue?c.inputValue:c.title,renderOption:(c,g,{selected:T})=>{const p=(s==null?void 0:s.some(f=>f.title===g.title))??!1;return v("li",{...c,children:[n(A,{condition:Boolean(g.inputValue),show:n(we,{sx:{mr:f=>f.spacing(.5)}}),elseShow:n(Re,{icon:h,checkedIcon:n(xe,{fontSize:"small"}),indeterminateIcon:n(M,{fontSize:"small"}),sx:{mr:f=>f.spacing(.5)},checked:T&&!p,indeterminate:p})}),g.title]})},filterOptions:(c,g)=>{const T=Ie(c,g),{inputValue:p}=g,f=c.some(b=>p===b.title);return p!==""&&!f&&T.push({inputValue:p,title:`Create new value "${p}"`}),T},ListboxProps:{style:{maxHeight:200,overflow:"auto"}},onChange:i,renderInput:c=>n(Y,{...c,label:"Select values",placeholder:"Select values"}),disabled:r})},Me=P("li")({flexDirection:"column"}),ot=({options:e,value:t,disabled:s=!1,onChange:o})=>{const a=ke();return n(W,{disablePortal:!0,disabled:s,id:"tag-type-select",sx:{marginTop:r=>r.spacing(2),width:500},options:e,disableClearable:!0,value:t,getOptionLabel:r=>r.name,renderOption:(r,i)=>v(Me,{...r,style:{alignItems:"flex-start",gap:a.spacing(.5)},children:[n(w,{variant:"body1",children:i.name}),n(w,{variant:"caption",children:i.description})]}),renderInput:r=>n(Y,{...r,label:"Tag type",value:t}),onChange:o,ListboxProps:{style:{maxHeight:200,overflow:"auto"}}})},ct=()=>{const{makeRequest:e,createRequest:t,errors:s,loading:o}=Pe({propagateErrors:!0});return{createTag:async i=>{const l=t("api/admin/tags",{method:"POST",body:JSON.stringify(i)});try{return await e(l.caller,l.id)}catch(u){throw u}},bulkUpdateTags:async i=>{const l=t("api/admin/tags/features",{method:"PUT",body:JSON.stringify(i)});try{return await e(l.caller,l.id)}catch(u){throw u}},errors:s,loading:o}},it=(e,t={})=>{const s=async()=>{const u=Oe(`api/admin/tags/${e}`);return(await fetch(u,{method:"GET"}).then(Le("Tags"))).json()},o=`api/admin/tags/${e}`,{data:a,error:r}=Be(Boolean(e),{tags:[]},o,s,t),[i,h]=y.useState(!r&&!a),l=()=>{De(o)};return y.useEffect(()=>{h(!r&&!a)},[a,r]),{tags:(a==null?void 0:a.tags)||[],error:r,loading:i,refetch:l}},lt=({isStale:e,isOpen:t,projectId:s,featureId:o,onClose:a})=>{const{setToastData:r,setToastApiError:i}=E(),{patchFeatureToggle:h}=I(),l=n(w,{children:"Setting a toggle to stale marks it for cleanup"}),u=n(w,{children:"Setting a toggle to active marks it as in active use"}),d=e?"active":"stale",m=async c=>{c.stopPropagation();try{await h(s,o,[{op:"replace",path:"/stale",value:!e}]),a()}catch(g){i(R(g))}r(e?{type:"success",title:"And we're back!",text:"The toggle is no longer marked as stale."}:{type:"success",title:"A job well done.",text:"The toggle has been marked as stale."})};return n(x,{open:t,secondaryButtonText:"Cancel",primaryButtonText:`Flip to ${d}`,title:`Set feature state to ${d}`,onClick:m,onClose:a,children:n(A,{condition:e,show:u,elseShow:l})})},ut=({isOpen:e,onClose:t,onConfirm:s,projectId:o,featureIds:a})=>{const{archiveFeatureToggle:r}=I(),{archiveFeatures:i}=$e(),{setToastData:h,setToastApiError:l}=E(),u=(a==null?void 0:a.length)>1;return n(x,{onClick:u?async()=>{try{await i(o,a),h({text:"Selected feature toggles have been archived",type:"success",title:"Feature toggles archived"}),s(),t()}catch(c){l(R(c)),t()}}:async()=>{try{await r(o,a[0]),h({text:"Your feature toggle has been archived",type:"success",title:"Feature archived"}),s(),t()}catch(c){l(R(c)),t()}},open:e,onClose:t,primaryButtonText:u?"Archive toggles":"Archive toggle",secondaryButtonText:"Cancel",title:u?"Archive feature toggles":"Archive feature toggle",children:n(A,{condition:u,show:v(U,{children:[v("p",{children:["Are you sure you want to archive"," ",n("strong",{children:a==null?void 0:a.length})," feature toggles?"]}),n(A,{condition:(a==null?void 0:a.length)<=5,show:n("ul",{children:a==null?void 0:a.map(c=>n("li",{children:c},c))})})]}),elseShow:n("p",{children:"Are you sure you want to archive these feature toggles?"})})})};export{Ke as A,Qe as C,tt as E,Xe as F,ot as T,nt as U,st as V,Ze as W,et as a,ct as b,it as c,rt as d,ut as e,_e as f,lt as g,at as u};
@@ -1 +1 @@
1
- import{c5 as s,fa as p,bw as y,r as l,j as d}from"./index-c4e310cb.js";import{d as u,L as g,C as h,a as C,b as f,P as x,c as S,T as q,p as k,e as M,f as L}from"./chartjs-adapter-date-fns.esm-24250637.js";import"./index-32a0dc63.js";import"./index-fe84ab30.js";const P=(t,o)=>{const i={label:"total requests",borderColor:s.palette.primary.main,backgroundColor:s.palette.primary.main,data:n(t,o,r=>r.yes+r.no),elements:{point:{radius:6,pointStyle:"circle"},line:{borderDash:[8,4]}}},e={label:"exposed",borderColor:s.palette.success.main,backgroundColor:s.palette.success.main,data:n(t,o,r=>r.yes),elements:{point:{radius:6,pointStyle:"triangle"}}},a={label:"not exposed",borderColor:s.palette.error.main,backgroundColor:s.palette.error.main,data:n(t,o,r=>r.no),elements:{point:{radius:6,pointStyle:"triangle",pointRotation:180}}};return{datasets:[e,a,i]}},n=(t,o,i)=>t.map(e=>({x:e.timestamp,y:i(e)})),v=(t,o,i)=>({locale:i.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{tooltip:{backgroundColor:s.palette.background.paper,bodyColor:s.palette.text.primary,titleColor:s.palette.text.secondary,borderColor:s.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,callbacks:{title:e=>p(e[0].parsed.x,i.locale)},itemSort:(e,a)=>a.parsed.y-e.parsed.y},legend:{position:"top",align:"end",labels:{boxWidth:10,boxHeight:10,usePointStyle:!0}},title:{text:w(o),position:"top",align:"start",display:!0,font:{size:16,weight:"400"}}},scales:{y:{type:"linear",title:{display:!0,text:"Number of requests"},suggestedMin:0,ticks:{precision:0}},x:{type:"time",time:{unit:"hour"},grid:{display:!1},ticks:{callback:(e,a,r)=>p(r[a].value,i.locale)}}}}),w=t=>t===1?"Requests in the last hour":`Requests in the last ${t} hours`;u.font={...u.font,family:"Sen",size:13,weight:"400"};const j=({metrics:t,hoursBack:o,statsSectionId:i})=>{const{locationSettings:e}=y(),a=l.useMemo(()=>[...t].sort((m,b)=>m.timestamp.localeCompare(b.timestamp)),[t]),r=l.useMemo(()=>v(a,o,e),[a,o,e]),c=l.useMemo(()=>P(a,e),[a,e]);return d("div",{style:{height:400},children:d(g,{options:r,data:c,"aria-label":"A feature metrics line chart, with three lines: all requests, positive requests, and negative requests.","aria-describedby":i})})};h.register(C,f,x,S,q,k,M,L);export{j as FeatureMetricsChart,j as default};
1
+ import{c5 as s,fa as p,bw as y,r as l,j as d}from"./index-41705604.js";import{d as u,L as g,C as h,a as C,b as f,P as x,c as S,T as q,p as k,e as M,f as L}from"./chartjs-adapter-date-fns.esm-ac6b351e.js";import"./index-ebad0466.js";import"./index-ce309966.js";const P=(t,o)=>{const i={label:"total requests",borderColor:s.palette.primary.main,backgroundColor:s.palette.primary.main,data:n(t,o,r=>r.yes+r.no),elements:{point:{radius:6,pointStyle:"circle"},line:{borderDash:[8,4]}}},e={label:"exposed",borderColor:s.palette.success.main,backgroundColor:s.palette.success.main,data:n(t,o,r=>r.yes),elements:{point:{radius:6,pointStyle:"triangle"}}},a={label:"not exposed",borderColor:s.palette.error.main,backgroundColor:s.palette.error.main,data:n(t,o,r=>r.no),elements:{point:{radius:6,pointStyle:"triangle",pointRotation:180}}};return{datasets:[e,a,i]}},n=(t,o,i)=>t.map(e=>({x:e.timestamp,y:i(e)})),v=(t,o,i)=>({locale:i.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{tooltip:{backgroundColor:s.palette.background.paper,bodyColor:s.palette.text.primary,titleColor:s.palette.text.secondary,borderColor:s.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,callbacks:{title:e=>p(e[0].parsed.x,i.locale)},itemSort:(e,a)=>a.parsed.y-e.parsed.y},legend:{position:"top",align:"end",labels:{boxWidth:10,boxHeight:10,usePointStyle:!0}},title:{text:w(o),position:"top",align:"start",display:!0,font:{size:16,weight:"400"}}},scales:{y:{type:"linear",title:{display:!0,text:"Number of requests"},suggestedMin:0,ticks:{precision:0}},x:{type:"time",time:{unit:"hour"},grid:{display:!1},ticks:{callback:(e,a,r)=>p(r[a].value,i.locale)}}}}),w=t=>t===1?"Requests in the last hour":`Requests in the last ${t} hours`;u.font={...u.font,family:"Sen",size:13,weight:"400"};const j=({metrics:t,hoursBack:o,statsSectionId:i})=>{const{locationSettings:e}=y(),a=l.useMemo(()=>[...t].sort((m,b)=>m.timestamp.localeCompare(b.timestamp)),[t]),r=l.useMemo(()=>v(a,o,e),[a,o,e]),c=l.useMemo(()=>P(a,e),[a,e]);return d("div",{style:{height:400},children:d(g,{options:r,data:c,"aria-label":"A feature metrics line chart, with three lines: all requests, positive requests, and negative requests.","aria-describedby":i})})};h.register(C,f,x,S,q,k,M,L);export{j as FeatureMetricsChart,j as default};