unleash-server 4.22.0-beta.2 → 4.22.0-beta.21

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 (173) hide show
  1. package/dist/lib/addons/feature-event-formatter-md.d.ts +12 -3
  2. package/dist/lib/addons/feature-event-formatter-md.js +135 -31
  3. package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
  4. package/dist/lib/addons/feature-event-formatter-md.test.d.ts +1 -0
  5. package/dist/lib/addons/feature-event-formatter-md.test.js +483 -0
  6. package/dist/lib/addons/feature-event-formatter-md.test.js.map +1 -0
  7. package/dist/lib/app.js +1 -1
  8. package/dist/lib/app.js.map +1 -1
  9. package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js +1 -1
  10. package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js.map +1 -1
  11. package/dist/lib/openapi/index.d.ts +46 -6
  12. package/dist/lib/openapi/spec/bulk-metrics-schema.d.ts +23 -3
  13. package/dist/lib/openapi/spec/bulk-registration-schema.d.ts +23 -3
  14. package/dist/lib/openapi/spec/bulk-registration-schema.js +15 -3
  15. package/dist/lib/openapi/spec/bulk-registration-schema.js.map +1 -1
  16. package/dist/lib/routes/admin-api/maintenance.d.ts +0 -1
  17. package/dist/lib/routes/admin-api/maintenance.js +0 -8
  18. package/dist/lib/routes/admin-api/maintenance.js.map +1 -1
  19. package/dist/lib/routes/admin-api/project/variants.js +29 -0
  20. package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
  21. package/dist/lib/services/access-service.d.ts +2 -2
  22. package/dist/lib/services/access-service.js.map +1 -1
  23. package/dist/lib/types/experimental.d.ts +1 -2
  24. package/dist/lib/types/experimental.js +1 -2
  25. package/dist/lib/types/experimental.js.map +1 -1
  26. package/dist/migrations/20201216140726-add-last-seen-to-features.js +1 -0
  27. package/dist/migrations/20201216140726-add-last-seen-to-features.js.map +1 -1
  28. package/dist/migrations/20210105083014-add-tag-and-tag-types.js +1 -0
  29. package/dist/migrations/20210105083014-add-tag-and-tag-types.js.map +1 -1
  30. package/dist/migrations/20210119084617-add-addon-table.js +1 -0
  31. package/dist/migrations/20210119084617-add-addon-table.js.map +1 -1
  32. package/dist/migrations/20210212114759-add-session-table.js +1 -0
  33. package/dist/migrations/20210212114759-add-session-table.js.map +1 -1
  34. package/dist/migrations/20210217195834-rbac-tables.js +1 -0
  35. package/dist/migrations/20210217195834-rbac-tables.js.map +1 -1
  36. package/dist/migrations/20210409120136-create-reset-token-table.js +1 -0
  37. package/dist/migrations/20210409120136-create-reset-token-table.js.map +1 -1
  38. package/dist/migrations/20210414141220-fix-misspellings-in-role-descriptions.js +1 -0
  39. package/dist/migrations/20210414141220-fix-misspellings-in-role-descriptions.js.map +1 -1
  40. package/dist/migrations/20210423103647-lowercase-all-emails.js +1 -0
  41. package/dist/migrations/20210423103647-lowercase-all-emails.js.map +1 -1
  42. package/dist/migrations/20210428103923-onboard-projects-to-rbac.js +1 -0
  43. package/dist/migrations/20210428103923-onboard-projects-to-rbac.js.map +1 -1
  44. package/dist/migrations/20210504101429-deprecate-strategies.js +1 -0
  45. package/dist/migrations/20210504101429-deprecate-strategies.js.map +1 -1
  46. package/dist/migrations/20210615115226-migrate-strategies-to-feature-strategies.js +1 -0
  47. package/dist/migrations/20210615115226-migrate-strategies-to-feature-strategies.js.map +1 -1
  48. package/dist/migrations/20210618091331-project-environments-table.js +1 -0
  49. package/dist/migrations/20210618091331-project-environments-table.js.map +1 -1
  50. package/dist/migrations/20210618100913-add-cascade-for-user-feedback.js +1 -0
  51. package/dist/migrations/20210618100913-add-cascade-for-user-feedback.js.map +1 -1
  52. package/dist/migrations/20210624114855-drop-strategies-column-from-features.js +1 -0
  53. package/dist/migrations/20210624114855-drop-strategies-column-from-features.js.map +1 -1
  54. package/dist/migrations/20210624115109-drop-enabled-column-from-features.js +1 -0
  55. package/dist/migrations/20210624115109-drop-enabled-column-from-features.js.map +1 -1
  56. package/dist/migrations/20210625102126-connect-default-project-to-global-environment.js +1 -0
  57. package/dist/migrations/20210625102126-connect-default-project-to-global-environment.js.map +1 -1
  58. package/dist/migrations/20210629130734-add-health-rating-to-project.js +1 -0
  59. package/dist/migrations/20210629130734-add-health-rating-to-project.js.map +1 -1
  60. package/dist/migrations/20210830113948-connect-projects-to-global-envrionments.js +1 -0
  61. package/dist/migrations/20210830113948-connect-projects-to-global-envrionments.js.map +1 -1
  62. package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js +1 -0
  63. package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js.map +1 -1
  64. package/dist/migrations/20210907124058-add-dbcritic-indices.js +1 -0
  65. package/dist/migrations/20210907124058-add-dbcritic-indices.js.map +1 -1
  66. package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js +1 -0
  67. package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js.map +1 -1
  68. package/dist/migrations/20210908100701-add-enabled-to-environments.js +1 -0
  69. package/dist/migrations/20210908100701-add-enabled-to-environments.js.map +1 -1
  70. package/dist/migrations/20210909085651-add-protected-field-to-environments.js +1 -0
  71. package/dist/migrations/20210909085651-add-protected-field-to-environments.js.map +1 -1
  72. package/dist/migrations/20210913103159-api-keys-scoping.js +1 -0
  73. package/dist/migrations/20210913103159-api-keys-scoping.js.map +1 -1
  74. package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js +1 -0
  75. package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js.map +1 -1
  76. package/dist/migrations/20211004104917-client-metrics-env.js +1 -0
  77. package/dist/migrations/20211004104917-client-metrics-env.js.map +1 -1
  78. package/dist/migrations/20211109103930-add-splash-entry-for-users.js +1 -0
  79. package/dist/migrations/20211109103930-add-splash-entry-for-users.js.map +1 -1
  80. package/dist/migrations/20211126112551-disable-default-environment.js +1 -0
  81. package/dist/migrations/20211126112551-disable-default-environment.js.map +1 -1
  82. package/dist/migrations/20211202120808-add-custom-roles.js +1 -0
  83. package/dist/migrations/20211202120808-add-custom-roles.js.map +1 -1
  84. package/dist/migrations/20220103134659-add-permissions-to-project-roles.js +1 -0
  85. package/dist/migrations/20220103134659-add-permissions-to-project-roles.js.map +1 -1
  86. package/dist/migrations/20220103143843-add-permissions-to-editor-role.js +1 -0
  87. package/dist/migrations/20220103143843-add-permissions-to-editor-role.js.map +1 -1
  88. package/dist/migrations/20220111112804-update-permission-descriptions.js +1 -0
  89. package/dist/migrations/20220111112804-update-permission-descriptions.js.map +1 -1
  90. package/dist/migrations/20220111115613-move-feature-toggle-permission.js +1 -0
  91. package/dist/migrations/20220111115613-move-feature-toggle-permission.js.map +1 -1
  92. package/dist/migrations/20220111120346-roles-unique-name.js +1 -0
  93. package/dist/migrations/20220111120346-roles-unique-name.js.map +1 -1
  94. package/dist/migrations/20220111121010-update-project-for-editor-role.js +1 -0
  95. package/dist/migrations/20220111121010-update-project-for-editor-role.js.map +1 -1
  96. package/dist/migrations/20220111125620-role-permission-empty-string-for-non-environment-type.js +1 -0
  97. package/dist/migrations/20220111125620-role-permission-empty-string-for-non-environment-type.js.map +1 -1
  98. package/dist/migrations/20220224081422-remove-project-column-from-roles.js +1 -0
  99. package/dist/migrations/20220224081422-remove-project-column-from-roles.js.map +1 -1
  100. package/dist/migrations/20220408081222-clean-up-duplicate-foreign-key-role-permission.js +1 -0
  101. package/dist/migrations/20220408081222-clean-up-duplicate-foreign-key-role-permission.js.map +1 -1
  102. package/dist/migrations/20220711084613-add-projects-and-environments-for-addons.js +1 -0
  103. package/dist/migrations/20220711084613-add-projects-and-environments-for-addons.js.map +1 -1
  104. package/dist/migrations/20220808110415-add-projects-foreign-key.js +1 -0
  105. package/dist/migrations/20220808110415-add-projects-foreign-key.js.map +1 -1
  106. package/dist/migrations/20221108114358-add-change-request-permissions.js +1 -0
  107. package/dist/migrations/20221108114358-add-change-request-permissions.js.map +1 -1
  108. package/dist/migrations/20221125185244-change-request-unique-approvals.js +1 -0
  109. package/dist/migrations/20221125185244-change-request-unique-approvals.js.map +1 -1
  110. package/dist/migrations/20221128165141-change-request-min-approvals.js +1 -0
  111. package/dist/migrations/20221128165141-change-request-min-approvals.js.map +1 -1
  112. package/dist/migrations/20221205122253-skip-change-request.js +1 -0
  113. package/dist/migrations/20221205122253-skip-change-request.js.map +1 -1
  114. package/dist/migrations/20221220160345-user-pat-permissions.js +1 -0
  115. package/dist/migrations/20221220160345-user-pat-permissions.js.map +1 -1
  116. package/dist/migrations/20221221144132-service-account-users.js +1 -0
  117. package/dist/migrations/20221221144132-service-account-users.js.map +1 -1
  118. package/dist/migrations/20230125065315-project-stats-table.js +1 -0
  119. package/dist/migrations/20230125065315-project-stats-table.js.map +1 -1
  120. package/dist/migrations/20230127111638-new-project-stats-field.js +1 -0
  121. package/dist/migrations/20230127111638-new-project-stats-field.js.map +1 -1
  122. package/dist/migrations/20230130113337-revert-user-pat-permissions.js +1 -0
  123. package/dist/migrations/20230130113337-revert-user-pat-permissions.js.map +1 -1
  124. package/dist/migrations/20230208084046-project-api-token-permissions.js +1 -0
  125. package/dist/migrations/20230208084046-project-api-token-permissions.js.map +1 -1
  126. package/dist/migrations/20230208093627-assign-project-api-token-permissions-editor.js +1 -0
  127. package/dist/migrations/20230208093627-assign-project-api-token-permissions-editor.js.map +1 -1
  128. package/dist/migrations/20230208093750-assign-project-api-token-permissions-owner.js +1 -0
  129. package/dist/migrations/20230208093750-assign-project-api-token-permissions-owner.js.map +1 -1
  130. package/dist/migrations/20230208093942-assign-project-api-token-permissions-member.js +1 -0
  131. package/dist/migrations/20230208093942-assign-project-api-token-permissions-member.js.map +1 -1
  132. package/dist/migrations/20230222084211-add-login-events-table.js +1 -0
  133. package/dist/migrations/20230222084211-add-login-events-table.js.map +1 -1
  134. package/dist/migrations/20230222154915-create-notiications-table.js +4 -4
  135. package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.d.ts +2 -0
  136. package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.js +14 -0
  137. package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.js.map +1 -0
  138. package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.d.ts +2 -0
  139. package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.js +8 -0
  140. package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.js.map +1 -0
  141. package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.d.ts +2 -0
  142. package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.js +15 -0
  143. package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.js.map +1 -0
  144. package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.d.ts +2 -0
  145. package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.js +8 -0
  146. package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.js.map +1 -0
  147. package/dist/server-dev.js +0 -1
  148. package/dist/server-dev.js.map +1 -1
  149. package/dist/test/e2e/api/admin/maintenance.e2e.test.js +2 -49
  150. package/dist/test/e2e/api/admin/maintenance.e2e.test.js.map +1 -1
  151. package/dist/test/e2e/stores/setting-store.e2e.test.js +1 -1
  152. package/frontend/build/index.html +1 -1
  153. package/frontend/build/static/{CreateProject-b852657c.js → CreateProject-f7ca75e0.js} +1 -1
  154. package/frontend/build/static/{Error-29ef2974.js → Error-2a87926a.js} +1 -1
  155. package/frontend/build/static/{ExpandMore-4b3cbf87.js → ExpandMore-e298a9a3.js} +1 -1
  156. package/frontend/build/static/{FeatureArchiveDialog-f9d8c71d.js → FeatureArchiveDialog-31430c0e.js} +1 -1
  157. package/frontend/build/static/{FeatureMetricsChart-86cc2280.js → FeatureMetricsChart-bcb36dbc.js} +1 -1
  158. package/frontend/build/static/{FeatureViewLazyExport-1366d6bf.js → FeatureViewLazyExport-fe2a9be7.js} +2 -2
  159. package/frontend/build/static/{LazyAdminExport-d9800386.js → LazyAdminExport-9ff8d442.js} +13 -13
  160. package/frontend/build/static/{LazyProjectExport-ef4471a8.js → LazyProjectExport-644ec52e.js} +8 -8
  161. package/frontend/build/static/{NetworkOverview-4b90dc34.js → NetworkOverview-cecb7bdc.js} +1 -1
  162. package/frontend/build/static/{NetworkTraffic-c9de9d5f.js → NetworkTraffic-953679ab.js} +1 -1
  163. package/frontend/build/static/{Playground-ee072216.js → Playground-f8d65d33.js} +1 -1
  164. package/frontend/build/static/{StrategyItemContainer-b65caaa6.js → StrategyItemContainer-b3595995.js} +1 -1
  165. package/frontend/build/static/{chartjs-adapter-date-fns.esm-5c47f5e0.js → chartjs-adapter-date-fns.esm-ad422152.js} +7 -7
  166. package/frontend/build/static/{index-bbbae9a8.js → index-19ee2080.js} +1 -1
  167. package/frontend/build/static/index-1d8518d6.js +392 -0
  168. package/frontend/build/static/{index-031b8ec3.js → index-c5afb04d.js} +1 -1
  169. package/frontend/build/static/{unknownify-88f06eea.js → unknownify-21e26f46.js} +1 -1
  170. package/frontend/build/static/{useProjectRole-d8edb83e.js → useProjectRole-9a28ceaf.js} +1 -1
  171. package/frontend/package.json +3 -3
  172. package/package.json +2 -2
  173. package/frontend/build/static/index-193ec8c2.js +0 -392
@@ -3,15 +3,15 @@ exports.up = function (db, cb) {
3
3
  db.runSql(`
4
4
  CREATE TABLE IF NOT EXISTS notifications (
5
5
  id SERIAL PRIMARY KEY,
6
- event_id INTEGER NOT NULL REFERENCES events (id),
7
- created_by INTEGER NOT NULL REFERENCES users (id),
6
+ event_id INTEGER NOT NULL REFERENCES events (id) ON DELETE CASCADE,
7
+ created_by INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
8
8
  created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
9
9
  );
10
10
 
11
11
  CREATE TABLE if not exists user_notifications
12
12
  (
13
- notification_id INTEGER NOT NULL REFERENCES notifications (id),
14
- user_id INTEGER NOT NULL REFERENCES users (id),
13
+ notification_id INTEGER NOT NULL REFERENCES notifications (id) ON DELETE CASCADE,
14
+ user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
15
15
  read_at TIMESTAMP WITH TIME ZONE,
16
16
  PRIMARY KEY (notification_id, user_id)
17
17
  );
@@ -0,0 +1,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+ exports.up = function (db, cb) {
3
+ db.runSql(`
4
+ ALTER TABLE notifications
5
+ DROP COLUMN IF EXISTS created_by;
6
+ `, cb);
7
+ };
8
+ exports.down = function (db, cb) {
9
+ db.runSql(`
10
+ ALTER TABLE notifications
11
+ ADD COLUMN IF NOT EXISTS created_by INTEGER REFERENCES users (id);
12
+ `, cb);
13
+ };
14
+ //# sourceMappingURL=20230224093446-drop-createdBy-from-notifications-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20230224093446-drop-createdBy-from-notifications-table.js","sourceRoot":"","sources":["../../src/migrations/20230224093446-drop-createdBy-from-notifications-table.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;;SAGC,EACD,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CACL;;;SAGC,EACD,EAAE,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ exports.up = function (db, cb) {
3
+ db.runSql(`ALTER TABLE login_events RENAME TO sign_on_log`, cb);
4
+ };
5
+ exports.down = function (db, cb) {
6
+ db.runSql(`ALTER TABLE sign_on_log RENAME TO login_events`, cb);
7
+ };
8
+ //# sourceMappingURL=20230227115320-rename-login-events-table-to-sign-on-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20230227115320-rename-login-events-table-to-sign-on-log.js","sourceRoot":"","sources":["../../src/migrations/20230227115320-rename-login-events-table-to-sign-on-log.js"],"names":[],"mappings":";AAAA,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export function up(db: any, callback: any): void;
2
+ export function down(db: any, callback: any): void;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+ exports.up = function (db, callback) {
3
+ db.runSql(`
4
+ UPDATE permissions SET display_name='Update variants' WHERE permission = 'UPDATE_FEATURE_ENVIRONMENT_VARIANTS';
5
+ UPDATE permissions SET display_name = 'Enable/disable toggles' WHERE permission = 'UPDATE_FEATURE_ENVIRONMENT';
6
+ UPDATE permissions SET display_name = 'Approve change requests' WHERE permission = 'APPROVE_CHANGE_REQUEST';
7
+ UPDATE permissions SET display_name = 'Apply change requests' WHERE permission = 'APPLY_CHANGE_REQUEST';
8
+ UPDATE permissions SET display_name = 'Skip change request process (API-only)' WHERE permission = 'SKIP_CHANGE_REQUEST';
9
+ `, callback);
10
+ };
11
+ exports.down = function (db, callback) {
12
+ db.runSql(`
13
+ `, callback);
14
+ };
15
+ //# sourceMappingURL=20230227120500-change-display-name-for-variants-per-env-permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20230227120500-change-display-name-for-variants-per-env-permission.js","sourceRoot":"","sources":["../../src/migrations/20230227120500-change-display-name-for-variants-per-env-permission.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,QAAQ;IAC/B,EAAE,CAAC,MAAM,CACL;;;;;;SAMC,EACD,QAAQ,CACX,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,QAAQ;IACjC,EAAE,CAAC,MAAM,CACL;SACC,EACD,QAAQ,CACX,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ exports.up = function (db, cb) {
3
+ db.runSql(`INSERT INTO settings(name, content) VALUES ('sign_on_log_retention', '{"hours": 336}')`, cb);
4
+ };
5
+ exports.down = function (db, cb) {
6
+ db.runSql(`DELETE FROM settings WHERE name = 'sign_on_log_retention'`, cb);
7
+ };
8
+ //# sourceMappingURL=20230227123106-add-setting-for-sign-on-log-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20230227123106-add-setting-for-sign-on-log-retention.js","sourceRoot":"","sources":["../../src/migrations/20230227123106-add-setting-for-sign-on-log-retention.js"],"names":[],"mappings":";AAAA,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL,wFAAwF,EACxF,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CAAC,2DAA2D,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC"}
@@ -38,7 +38,6 @@ process.nextTick(async () => {
38
38
  embedProxyFrontend: true,
39
39
  anonymiseEventLog: false,
40
40
  responseTimeWithAppNameKillSwitch: false,
41
- maintenance: true,
42
41
  featuresExportImport: true,
43
42
  newProjectOverview: true,
44
43
  projectStatusApi: true,
@@ -1 +1 @@
1
- {"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../src/server-dev.ts"],"names":[],"mappings":";;AAAA,mDAA0C;AAC1C,uDAAmD;AACnD,yCAAwC;AACxC,4DAA4D;AAE5D,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;IACxB,IAAI;QACA,MAAM,IAAA,mBAAK,EACP,IAAA,4BAAY,EAAC;YACT,EAAE,EAAE;gBACA,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;gBACxD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;gBAC3C,GAAG,EAAE,KAAK;gBACV,eAAe,EAAE,SAAS;aAC7B;YACD,MAAM,EAAE;gBACJ,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,EAAE;gBACf,uBAAuB;gBACvB,sBAAsB,EAAE,IAAI;gBAC5B,yDAAyD;gBACzD,yBAAyB,EAAE,IAAI;aAClC;YACD,QAAQ,EAAE,iBAAQ,CAAC,KAAK;YACxB,SAAS,EAAE,IAAI;YACf,uBAAuB;YACvB,YAAY,EAAE;gBACV,MAAM,EAAE,KAAK;aAChB;YACD,YAAY,EAAE;gBACV,6BAA6B;gBAC7B,KAAK,EAAE;oBACH,UAAU,EAAE,IAAI;oBAChB,kBAAkB,EAAE,IAAI;oBACxB,iBAAiB,EAAE,KAAK;oBACxB,iCAAiC,EAAE,KAAK;oBACxC,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,IAAI;oBAC1B,kBAAkB,EAAE,IAAI;oBACxB,gBAAgB,EAAE,IAAI;oBACtB,oBAAoB,EAAE,IAAI;iBAC7B;aACJ;YACD,cAAc,EAAE;gBACZ,aAAa,EAAE;oBACX;wBACI,WAAW,EAAE,GAAG;wBAChB,OAAO,EAAE,GAAG;wBACZ,MAAM,EAAE,sCAAsC;wBAC9C,IAAI,EAAE,wBAAY,CAAC,KAAK;wBACxB,QAAQ,EAAE,WAAW;qBACxB;iBACJ;aACJ;SACJ,CAAC,CACL,CAAC;KACL;IAAC,OAAO,KAAK,EAAE;QACZ,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;YAC7B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;SACpE;aAAM;YACH,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,EAAE,CAAC;SAClB;KACJ;AACL,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../src/server-dev.ts"],"names":[],"mappings":";;AAAA,mDAA0C;AAC1C,uDAAmD;AACnD,yCAAwC;AACxC,4DAA4D;AAE5D,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;IACxB,IAAI;QACA,MAAM,IAAA,mBAAK,EACP,IAAA,4BAAY,EAAC;YACT,EAAE,EAAE;gBACA,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;gBACxD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;gBAC3C,GAAG,EAAE,KAAK;gBACV,eAAe,EAAE,SAAS;aAC7B;YACD,MAAM,EAAE;gBACJ,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,EAAE;gBACf,uBAAuB;gBACvB,sBAAsB,EAAE,IAAI;gBAC5B,yDAAyD;gBACzD,yBAAyB,EAAE,IAAI;aAClC;YACD,QAAQ,EAAE,iBAAQ,CAAC,KAAK;YACxB,SAAS,EAAE,IAAI;YACf,uBAAuB;YACvB,YAAY,EAAE;gBACV,MAAM,EAAE,KAAK;aAChB;YACD,YAAY,EAAE;gBACV,6BAA6B;gBAC7B,KAAK,EAAE;oBACH,UAAU,EAAE,IAAI;oBAChB,kBAAkB,EAAE,IAAI;oBACxB,iBAAiB,EAAE,KAAK;oBACxB,iCAAiC,EAAE,KAAK;oBACxC,oBAAoB,EAAE,IAAI;oBAC1B,kBAAkB,EAAE,IAAI;oBACxB,gBAAgB,EAAE,IAAI;oBACtB,oBAAoB,EAAE,IAAI;iBAC7B;aACJ;YACD,cAAc,EAAE;gBACZ,aAAa,EAAE;oBACX;wBACI,WAAW,EAAE,GAAG;wBAChB,OAAO,EAAE,GAAG;wBACZ,MAAM,EAAE,sCAAsC;wBAC9C,IAAI,EAAE,wBAAY,CAAC,KAAK;wBACxB,QAAQ,EAAE,WAAW;qBACxB;iBACJ;aACJ;SACJ,CAAC,CACL,CAAC;KACL;IAAC,OAAO,KAAK,EAAE;QACZ,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;YAC7B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;SACpE;aAAM;YACH,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,EAAE,CAAC;SAClB;KACJ;AACL,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -20,7 +20,6 @@ test('should not allow to create feature toggles in maintenance mode', async ()
20
20
  const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
21
21
  experimental: {
22
22
  flags: {
23
- maintenance: true,
24
23
  maintenanceMode: true,
25
24
  },
26
25
  },
@@ -33,31 +32,8 @@ test('should not allow to create feature toggles in maintenance mode', async ()
33
32
  .set('Content-Type', 'application/json')
34
33
  .expect(503);
35
34
  });
36
- test('should not go into maintenance, when maintenance feature is off', async () => {
37
- const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
38
- experimental: {
39
- flags: {
40
- maintenance: false,
41
- maintenanceMode: true,
42
- },
43
- },
44
- });
45
- return appWithMaintenanceMode.request
46
- .post('/api/admin/features')
47
- .send({
48
- name: 'maintenance-feature1',
49
- })
50
- .set('Content-Type', 'application/json')
51
- .expect(201);
52
- });
53
35
  test('maintenance mode is off by default', async () => {
54
- const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
55
- experimental: {
56
- flags: {
57
- maintenance: true,
58
- },
59
- },
60
- });
36
+ const appWithMaintenanceMode = await (0, test_helper_1.setupApp)(db.stores);
61
37
  return appWithMaintenanceMode.request
62
38
  .post('/api/admin/features')
63
39
  .send({
@@ -67,13 +43,7 @@ test('maintenance mode is off by default', async () => {
67
43
  .expect(201);
68
44
  });
69
45
  test('should go into maintenance mode, when user has set it', async () => {
70
- const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
71
- experimental: {
72
- flags: {
73
- maintenance: true,
74
- },
75
- },
76
- });
46
+ const appWithMaintenanceMode = await (0, test_helper_1.setupApp)(db.stores);
77
47
  await appWithMaintenanceMode.request
78
48
  .post('/api/admin/maintenance')
79
49
  .send({
@@ -89,27 +59,10 @@ test('should go into maintenance mode, when user has set it', async () => {
89
59
  .set('Content-Type', 'application/json')
90
60
  .expect(503);
91
61
  });
92
- test('should 404 on maintenance endpoint, when disabled', async () => {
93
- const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
94
- experimental: {
95
- flags: {
96
- maintenance: false,
97
- },
98
- },
99
- });
100
- await appWithMaintenanceMode.request
101
- .post('/api/admin/maintenance')
102
- .send({
103
- enabled: true,
104
- })
105
- .set('Content-Type', 'application/json')
106
- .expect(403);
107
- });
108
62
  test('maintenance mode flag should take precedence over maintenance mode setting', async () => {
109
63
  const appWithMaintenanceMode = await (0, test_helper_1.setupAppWithCustomConfig)(db.stores, {
110
64
  experimental: {
111
65
  flags: {
112
- maintenance: true,
113
66
  maintenanceMode: true,
114
67
  },
115
68
  },
@@ -1 +1 @@
1
- {"version":3,"file":"maintenance.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/maintenance.e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maintenance.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/maintenance.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ test('should getAll', async () => {
44
44
  await stores.settingStore.insert('unleash.custom.2', { b: 'hello' });
45
45
  await stores.settingStore.insert('unleash.custom.3', { b: 'hello' });
46
46
  const ret = await stores.settingStore.getAll();
47
- expect(ret).toHaveLength(5);
47
+ expect(ret).toHaveLength(6);
48
48
  });
49
49
  test('should exists', async () => {
50
50
  await stores.settingStore.insert('unleash.custom.2', { b: 'hello' });
@@ -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-193ec8c2.js"></script>
19
+ <script type="module" crossorigin src="/static/index-1d8518d6.js"></script>
20
20
  <link rel="stylesheet" href="/static/index-1fa04e71.css">
21
21
  </head>
22
22
  <body>
@@ -1,4 +1,4 @@
1
- import{a2 as E,aq as N,H as w,ar as I,as as U,at as S,j as e,au as x,av as D,aw as O,ax as _,a4 as b,ay as k}from"./index-193ec8c2.js";const q=()=>{const{setToastData:c,setToastApiError:n}=E(),{refetchUser:i}=N(),{uiConfig:d}=w(),t=I(),{projectId:a,projectName:l,projectDesc:u,setProjectId:p,setProjectName:j,setProjectDesc:m,getProjectPayload:o,clearErrors:r,validateProjectId:s,validateName:h,errors:P}=U(),{createProject:g,loading:f}=S();return e(x,{loading:f,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 '${d.unleashUrl}/api/admin/projects' \\
1
+ import{a2 as E,aq as N,H as w,ar as I,as as U,at as S,j as e,au as x,av as D,aw as O,ax as _,a4 as b,ay as k}from"./index-1d8518d6.js";const q=()=>{const{setToastData:c,setToastApiError:n}=E(),{refetchUser:i}=N(),{uiConfig:d}=w(),t=I(),{projectId:a,projectName:l,projectDesc:u,setProjectId:p,setProjectName:j,setProjectDesc:m,getProjectPayload:o,clearErrors:r,validateProjectId:s,validateName:h,errors:P}=U(),{createProject:g,loading:f}=S();return e(x,{loading:f,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 '${d.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(D,{errors:P,handleSubmit:async C=>{C.preventDefault(),r();const y=h(),v=await s();if(y&&v){const A=o();try{await g(A),i(),t(`/projects/${a}`),c({title:"Project created",text:"Now you can add toggles to this project",confetti:!0,type:"success"})}catch(T){n(b(T))}}},handleCancel:()=>{t(k)},projectId:a,setProjectId:p,projectName:l,setProjectName:j,projectDesc:u,setProjectDesc:m,mode:"Create",clearErrors:r,validateProjectId:s,children:e(O,{name:"project",permission:_})})})};export{q as default};
@@ -1 +1 @@
1
- import{c as r,j as o}from"./index-193ec8c2.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-1d8518d6.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-193ec8c2.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-1d8518d6.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{aG as A,a$ as E,f as p,aY as C,j as o,C as w,A as M,T as b,c0 as J,cr as x,r as d,cs as Q,ct as X,aZ as Z,a_ as I,a2 as S,H as ee,ar as P,aH as D,aT as te,cu as ae,au as ne,ap as se,cv as re,cw as oe,cx as ie,cy as ce,b6 as $,cz as ue,b0 as le,a4 as v,cA as ge,s as j,aX as de,cB as he,cC as ye,F as fe,bz as N}from"./index-193ec8c2.js";const Re=({isOpen:e,onConfirm:t,onClose:a,showBanner:n,environment:s,messageComponent:r})=>{const i=A("projectId"),{data:l}=E(i),{changeRequestInReviewOrApproved:u,alert:g}=J(l),c=u(s||"");return p(C,{open:e,primaryButtonText:c?"Add to existing change request":"Add suggestion to draft",secondaryButtonText:"Cancel",onClick:t,onClose:a,title:"Request changes",fullWidth:!0,children:[o(w,{condition:c,show:g}),o(w,{condition:Boolean(n),show:p(M,{severity:"info",sx:{mb:2},children:["Change requests feature is enabled for ",s,". 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."]})}),o(b,{variant:"body2",color:"text.secondary",children:"Your suggestion:"}),r]})},pe=(e,t)=>{const a={};return t.parameters.forEach(n=>{a[n.name]=me(e,n)}),{name:t.name,constraints:[],parameters:a}},me=(e,t)=>t.name==="rollout"||t.name==="percentage"||t.type==="percentage"?"50":t.name==="stickiness"?"default":t.name==="groupId"?e:t.type==="boolean"?"false":"",Ae=()=>{const e=A("projectId"),t=A("featureId"),a=x("environmentId"),n=x("strategyName"),[s,r]=d.useState({}),[i,l]=d.useState([]),{strategyDefinition:u}=Q(n),g=X(),{addStrategyToFeature:c,loading:h}=Z(),{addChange:m}=I(),{setToastData:T,setToastApiError:O}=S(),{uiConfig:Y}=ee(),{unleashUrl:z}=Y,_=P(),{feature:y,refetchFeature:F}=D(e,t),q=d.useRef(y),{isChangeRequestConfigured:k}=te(e),{refetch:L}=E(e),{data:R,staleDataNotification:U,forceRefreshCache:W}=ae({unleashGetter:D,params:[e,t],dataKey:"feature",refetchFunctionKey:"refetchFeature",options:{}},y,{afterSubmitAction:F},ge);d.useEffect(()=>{q.current.name===""&&y.name&&(W(y),q.current=y)},[y]),d.useEffect(()=>{u&&r(pe(t,u))},[t,u]);const G=async f=>{await c(e,t,a,f),T({title:"Strategy created",type:"success",confetti:!0})},H=async f=>{await m(e,a,{action:"addStrategy",feature:t,payload:f}),T({title:"Strategy added to draft",type:"success",confetti:!0}),L()},V=async()=>{const f=ue(s,i);try{k(a)?await H(f):await G(f),F(),_(le(e,t))}catch(K){O(v(K))}};return!R||!R.project?null:p(ne,{modal:!0,title:se(n),description:re,documentationLink:oe,documentationLinkLabel:ie,formatApiCode:()=>be(e,t,a,s,z),children:[o(ce,{projectId:e,feature:R,strategy:s,setStrategy:r,segments:i,setSegments:l,environmentId:a,onSubmit:V,loading:h,permission:$,errors:g,isChangeRequest:k(a)}),U]})},Te=(e,t,a,n)=>{const s=new URLSearchParams({environmentId:a,strategyName:n});return`/projects/${e}/features/${t}/strategies/create?${s}`},be=(e,t,a,n,s)=>{if(!s)return"";const r=`${s}/api/admin/projects/${e}/features/${t}/environments/${a}/strategies`,i=JSON.stringify(n,void 0,2);return`curl --location --request POST '${r}' \\
1
+ import{aG as A,a$ as E,f as p,aY as C,j as o,C as w,A as M,T as b,c0 as J,cr as x,r as d,cs as Q,ct as X,aZ as Z,a_ as I,a2 as S,H as ee,ar as P,aH as D,aT as te,cu as ae,au as ne,ap as se,cv as re,cw as oe,cx as ie,cy as ce,b6 as $,cz as ue,b0 as le,a4 as v,cA as ge,s as j,aX as de,cB as he,cC as ye,F as fe,bz as N}from"./index-1d8518d6.js";const Re=({isOpen:e,onConfirm:t,onClose:a,showBanner:n,environment:s,messageComponent:r})=>{const i=A("projectId"),{data:l}=E(i),{changeRequestInReviewOrApproved:u,alert:g}=J(l),c=u(s||"");return p(C,{open:e,primaryButtonText:c?"Add to existing change request":"Add suggestion to draft",secondaryButtonText:"Cancel",onClick:t,onClose:a,title:"Request changes",fullWidth:!0,children:[o(w,{condition:c,show:g}),o(w,{condition:Boolean(n),show:p(M,{severity:"info",sx:{mb:2},children:["Change requests feature is enabled for ",s,". 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."]})}),o(b,{variant:"body2",color:"text.secondary",children:"Your suggestion:"}),r]})},pe=(e,t)=>{const a={};return t.parameters.forEach(n=>{a[n.name]=me(e,n)}),{name:t.name,constraints:[],parameters:a}},me=(e,t)=>t.name==="rollout"||t.name==="percentage"||t.type==="percentage"?"50":t.name==="stickiness"?"default":t.name==="groupId"?e:t.type==="boolean"?"false":"",Ae=()=>{const e=A("projectId"),t=A("featureId"),a=x("environmentId"),n=x("strategyName"),[s,r]=d.useState({}),[i,l]=d.useState([]),{strategyDefinition:u}=Q(n),g=X(),{addStrategyToFeature:c,loading:h}=Z(),{addChange:m}=I(),{setToastData:T,setToastApiError:O}=S(),{uiConfig:Y}=ee(),{unleashUrl:z}=Y,_=P(),{feature:y,refetchFeature:F}=D(e,t),q=d.useRef(y),{isChangeRequestConfigured:k}=te(e),{refetch:L}=E(e),{data:R,staleDataNotification:U,forceRefreshCache:W}=ae({unleashGetter:D,params:[e,t],dataKey:"feature",refetchFunctionKey:"refetchFeature",options:{}},y,{afterSubmitAction:F},ge);d.useEffect(()=>{q.current.name===""&&y.name&&(W(y),q.current=y)},[y]),d.useEffect(()=>{u&&r(pe(t,u))},[t,u]);const G=async f=>{await c(e,t,a,f),T({title:"Strategy created",type:"success",confetti:!0})},H=async f=>{await m(e,a,{action:"addStrategy",feature:t,payload:f}),T({title:"Strategy added to draft",type:"success",confetti:!0}),L()},V=async()=>{const f=ue(s,i);try{k(a)?await H(f):await G(f),F(),_(le(e,t))}catch(K){O(v(K))}};return!R||!R.project?null:p(ne,{modal:!0,title:se(n),description:re,documentationLink:oe,documentationLinkLabel:ie,formatApiCode:()=>be(e,t,a,s,z),children:[o(ce,{projectId:e,feature:R,strategy:s,setStrategy:r,segments:i,setSegments:l,environmentId:a,onSubmit:V,loading:h,permission:$,errors:g,isChangeRequest:k(a)}),U]})},Te=(e,t,a,n)=>{const s=new URLSearchParams({environmentId:a,strategyName:n});return`/projects/${e}/features/${t}/strategies/create?${s}`},be=(e,t,a,n,s)=>{if(!s)return"";const r=`${s}/api/admin/projects/${e}/features/${t}/environments/${a}/strategies`,i=JSON.stringify(n,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}'`},B=j("p")(({theme:e})=>({marginBottom:e.spacing(.5),fontSize:e.fontSizes.bodySize})),we=({open:e,environmentName:t,featureId:a,projectId:n,onClose:s})=>{const r=P(),i=Te(n,a,t,"default");return p(C,{open:e,maxWidth:"sm",onClose:()=>s(),title:"You need to add a strategy to your toggle",primaryButtonText:"Take me directly to add strategy",permissionButton:o(de,{type:"button",permission:$,projectId:n,environmentId:t,onClick:()=>{s(),r(i)},children:"Take me directly to add strategy"}),secondaryButtonText:"Cancel",children:[o(B,{children:"Before you can enable the toggle in the environment, you need to add an activation strategy."}),o(B,{children:"You can add the activation strategy by selecting the toggle, open the environment accordion and add the activation strategy."})]})},Ee="You can not enable the environment before it has strategies",Fe=e=>{const{setToastData:t,setToastApiError:a}=S(),{addChange:n}=I(),{refetch:s}=E(e),[r,i]=d.useState({isOpen:!1}),l=d.useCallback((c,h,m)=>{i({featureName:c,environment:h,enabled:m,isOpen:!0})},[]),u=d.useCallback(()=>{i(c=>({...c,isOpen:!1}))},[]),g=d.useCallback(async()=>{try{await n(e,r.environment,{feature:r.featureName,action:"updateEnabled",payload:{enabled:Boolean(r.enabled)}}),s(),i(c=>({...c,isOpen:!1})),t({type:"success",title:"Changes added to the draft!"})}catch(c){a(v(c)),i(h=>({...h,isOpen:!1}))}},[n]);return{onChangeRequestToggle:l,onChangeRequestToggleClose:u,onChangeRequestToggleConfirm:g,changeRequestDialogDetails:r}},qe=({enabled:e,featureName:t,environment:a})=>p(b,{"data-testid":"update-enabled-message",children:[o("strong",{children:e?"Enable":"Disable"})," feature toggle"," ",o("strong",{children:t})," in ",o("strong",{children:a})]}),Ce=j(he)(({theme:e})=>({color:e.palette.warning.main,fontSize:e.fontSizes.bodySize})),ke=()=>o(ye,{arrow:!0,title:p(fe,{children:["This environment has no variants enabled. If you check this feature's variants in this environment, you will get the"," ",o("a",{href:"https://docs.getunleash.io/reference/feature-toggle-variants#the-disabled-variant",target:"_blank",rel:"noreferrer",children:"disabled variant"}),"."]}),children:o(Ce,{})}),xe=({isStale:e,isOpen:t,projectId:a,featureId:n,onClose:s})=>{const{setToastData:r,setToastApiError:i}=S(),{patchFeatureToggle:l}=N(),u=o(b,{children:"Setting a toggle to stale marks it for cleanup"}),g=o(b,{children:"Setting a toggle to active marks it as in active use"}),c=e?"active":"stale",h=async m=>{m.stopPropagation();try{await l(a,n,[{op:"replace",path:"/stale",value:!e}]),s()}catch(T){i(v(T))}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 o(C,{open:t,secondaryButtonText:"Cancel",primaryButtonText:`Flip to ${c}`,title:`Set feature state to ${c}`,onClick:h,onClose:s,children:o(w,{condition:e,show:g,elseShow:u})})},De=({isOpen:e,onClose:t,onConfirm:a,projectId:n,featureId:s})=>{const{archiveFeatureToggle:r}=N(),{setToastData:i,setToastApiError:l}=S(),u=async()=>{try{await r(n,s),i({text:"Your feature toggle has been archived",type:"success",title:"Feature archived"}),a(),t()}catch(g){l(v(g)),t()}};return o(C,{onClick:()=>u(),open:e,onClose:t,primaryButtonText:"Archive toggle",secondaryButtonText:"Cancel",title:"Archive feature toggle",children:"Are you sure you want to archive this feature toggle?"})};export{Re as C,Ee as E,Ae as F,qe as U,ke as V,we as a,De as b,xe as c,Te as f,Fe as u};
@@ -1 +1 @@
1
- import{c7 as i,eZ as p,bu as y,r as l,j as u}from"./index-193ec8c2.js";import{d,L as g,C as h,a as C,b as f,P as x,c as S,T as q,p as M,e as k,f as L}from"./chartjs-adapter-date-fns.esm-5c47f5e0.js";import"./index-bbbae9a8.js";import"./index-031b8ec3.js";const P=(t,s)=>{const o={label:"total requests",borderColor:i.palette.primary.main,backgroundColor:i.palette.primary.main,data:n(t,s,r=>r.yes+r.no),elements:{point:{radius:6,pointStyle:"circle"},line:{borderDash:[8,4]}}},e={label:"exposed",borderColor:i.palette.success.main,backgroundColor:i.palette.success.main,data:n(t,s,r=>r.yes),elements:{point:{radius:6,pointStyle:"triangle"}}},a={label:"not exposed",borderColor:i.palette.error.main,backgroundColor:i.palette.error.main,data:n(t,s,r=>r.no),elements:{point:{radius:6,pointStyle:"triangle",pointRotation:180}}};return{datasets:[e,a,o]}},n=(t,s,o)=>t.map(e=>({x:e.timestamp,y:o(e)})),v=(t,s,o)=>({locale:o.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{tooltip:{backgroundColor:"white",bodyColor:i.palette.text.primary,titleColor:i.palette.grey[700],borderColor:i.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,callbacks:{title:e=>p(e[0].parsed.x,o.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(s),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,o.locale)}}}}),w=t=>t===1?"Requests in the last hour":`Requests in the last ${t} hours`;d.font={...d.font,family:"Sen",size:13,weight:"400"};const j=({metrics:t,hoursBack:s,statsSectionId:o})=>{const{locationSettings:e}=y(),a=l.useMemo(()=>[...t].sort((m,b)=>m.timestamp.localeCompare(b.timestamp)),[t]),r=l.useMemo(()=>v(a,s,e),[a,s,e]),c=l.useMemo(()=>P(a,e),[a,e]);return u("div",{style:{height:400},children:u(g,{options:r,data:c,"aria-label":"A feature metrics line chart, with three lines: all requests, positive requests, and negative requests.","aria-describedby":o})})};h.register(C,f,x,S,q,M,k,L);export{j as FeatureMetricsChart,j as default};
1
+ import{c7 as i,e$ as p,bu as y,r as l,j as u}from"./index-1d8518d6.js";import{d,L as g,C as h,a as C,b as f,P as x,c as S,T as q,p as M,e as k,f as L}from"./chartjs-adapter-date-fns.esm-ad422152.js";import"./index-19ee2080.js";import"./index-c5afb04d.js";const P=(t,s)=>{const o={label:"total requests",borderColor:i.palette.primary.main,backgroundColor:i.palette.primary.main,data:n(t,s,r=>r.yes+r.no),elements:{point:{radius:6,pointStyle:"circle"},line:{borderDash:[8,4]}}},e={label:"exposed",borderColor:i.palette.success.main,backgroundColor:i.palette.success.main,data:n(t,s,r=>r.yes),elements:{point:{radius:6,pointStyle:"triangle"}}},a={label:"not exposed",borderColor:i.palette.error.main,backgroundColor:i.palette.error.main,data:n(t,s,r=>r.no),elements:{point:{radius:6,pointStyle:"triangle",pointRotation:180}}};return{datasets:[e,a,o]}},n=(t,s,o)=>t.map(e=>({x:e.timestamp,y:o(e)})),v=(t,s,o)=>({locale:o.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{tooltip:{backgroundColor:"white",bodyColor:i.palette.text.primary,titleColor:i.palette.grey[700],borderColor:i.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,callbacks:{title:e=>p(e[0].parsed.x,o.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(s),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,o.locale)}}}}),w=t=>t===1?"Requests in the last hour":`Requests in the last ${t} hours`;d.font={...d.font,family:"Sen",size:13,weight:"400"};const j=({metrics:t,hoursBack:s,statsSectionId:o})=>{const{locationSettings:e}=y(),a=l.useMemo(()=>[...t].sort((m,b)=>m.timestamp.localeCompare(b.timestamp)),[t]),r=l.useMemo(()=>v(a,s,e),[a,s,e]),c=l.useMemo(()=>P(a,e),[a,e]);return u("div",{style:{height:400},children:u(g,{options:r,data:c,"aria-label":"A feature metrics line chart, with three lines: all requests, positive requests, and negative requests.","aria-describedby":o})})};h.register(C,f,x,S,q,M,k,L);export{j as FeatureMetricsChart,j as default};