unleash-server 7.5.1 → 7.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/lib/addons/feature-event-formatter-md-events.d.ts.map +1 -1
  2. package/dist/lib/addons/feature-event-formatter-md-events.js +16 -1
  3. package/dist/lib/addons/feature-event-formatter-md-events.js.map +1 -1
  4. package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
  5. package/dist/lib/addons/slack-app-definition.js +4 -1
  6. package/dist/lib/addons/slack-app-definition.js.map +1 -1
  7. package/dist/lib/app.d.ts.map +1 -1
  8. package/dist/lib/app.js +11 -25
  9. package/dist/lib/app.js.map +1 -1
  10. package/dist/lib/create-config.d.ts.map +1 -1
  11. package/dist/lib/create-config.js +3 -0
  12. package/dist/lib/create-config.js.map +1 -1
  13. package/dist/lib/db/api-token-store.d.ts +4 -1
  14. package/dist/lib/db/api-token-store.d.ts.map +1 -1
  15. package/dist/lib/db/api-token-store.js +17 -3
  16. package/dist/lib/db/api-token-store.js.map +1 -1
  17. package/dist/lib/error/bad-gateway-error.d.ts +7 -0
  18. package/dist/lib/error/bad-gateway-error.d.ts.map +1 -0
  19. package/dist/lib/error/bad-gateway-error.js +9 -0
  20. package/dist/lib/error/bad-gateway-error.js.map +1 -0
  21. package/dist/lib/error/gateway-timeout-error.d.ts +7 -0
  22. package/dist/lib/error/gateway-timeout-error.d.ts.map +1 -0
  23. package/dist/lib/error/gateway-timeout-error.js +9 -0
  24. package/dist/lib/error/gateway-timeout-error.js.map +1 -0
  25. package/dist/lib/error/index.d.ts +3 -1
  26. package/dist/lib/error/index.d.ts.map +1 -1
  27. package/dist/lib/error/index.js +3 -1
  28. package/dist/lib/error/index.js.map +1 -1
  29. package/dist/lib/error/unleash-error.d.ts +1 -1
  30. package/dist/lib/error/unleash-error.d.ts.map +1 -1
  31. package/dist/lib/error/unleash-error.js +2 -0
  32. package/dist/lib/error/unleash-error.js.map +1 -1
  33. package/dist/lib/events/index.d.ts +4 -1
  34. package/dist/lib/events/index.d.ts.map +1 -1
  35. package/dist/lib/events/index.js +6 -0
  36. package/dist/lib/events/index.js.map +1 -1
  37. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.d.ts.map +1 -1
  38. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js +5 -0
  39. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js.map +1 -1
  40. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts +2 -0
  41. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts.map +1 -0
  42. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js +53 -0
  43. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js.map +1 -0
  44. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.d.ts.map +1 -1
  45. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js +5 -0
  46. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js.map +1 -1
  47. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts +2 -0
  48. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts.map +1 -0
  49. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js +59 -0
  50. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js.map +1 -0
  51. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts +9 -3
  52. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts.map +1 -1
  53. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js +165 -92
  54. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js.map +1 -1
  55. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js +475 -1
  56. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js.map +1 -1
  57. package/dist/lib/features/client-feature-toggles/delta/delta-cache.d.ts.map +1 -1
  58. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js +3 -0
  59. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js.map +1 -1
  60. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js +15 -0
  61. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js.map +1 -1
  62. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts +3 -0
  63. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts.map +1 -0
  64. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js +16 -0
  65. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js.map +1 -0
  66. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts +2 -0
  67. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts.map +1 -0
  68. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js +25 -0
  69. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js.map +1 -0
  70. package/dist/lib/features/context/context.d.ts +0 -1
  71. package/dist/lib/features/context/context.d.ts.map +1 -1
  72. package/dist/lib/features/context/context.js +7 -15
  73. package/dist/lib/features/context/context.js.map +1 -1
  74. package/dist/lib/features/edgetokens/edge-token-store.d.ts +2 -0
  75. package/dist/lib/features/edgetokens/edge-token-store.d.ts.map +1 -1
  76. package/dist/lib/features/edgetokens/edge-token-store.js +20 -0
  77. package/dist/lib/features/edgetokens/edge-token-store.js.map +1 -1
  78. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts +2 -0
  79. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts.map +1 -1
  80. package/dist/lib/features/edgetokens/fake-edge-token-store.js +6 -0
  81. package/dist/lib/features/edgetokens/fake-edge-token-store.js.map +1 -1
  82. package/dist/lib/features/events/event-store.d.ts +2 -4
  83. package/dist/lib/features/events/event-store.d.ts.map +1 -1
  84. package/dist/lib/features/events/event-store.js +1 -4
  85. package/dist/lib/features/events/event-store.js.map +1 -1
  86. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  87. package/dist/lib/features/feature-search/feature-search-controller.js +2 -1
  88. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  89. package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
  90. package/dist/lib/features/feature-search/feature-search-service.js +5 -0
  91. package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
  92. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  93. package/dist/lib/features/feature-search/feature-search-store.js +17 -1
  94. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  95. package/dist/lib/features/feature-search/feature.search.e2e.test.js +56 -1
  96. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  97. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts +1 -2
  98. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts.map +1 -1
  99. package/dist/lib/features/feature-toggle/configuration-revision-service.js +2 -10
  100. package/dist/lib/features/feature-toggle/configuration-revision-service.js.map +1 -1
  101. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.d.ts.map +1 -1
  102. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js +3 -2
  103. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js.map +1 -1
  104. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts +1 -0
  105. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
  106. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  107. package/dist/lib/features/frontend-api/frontend-api-service.js +8 -0
  108. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  109. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js +43 -0
  110. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js.map +1 -1
  111. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts +3 -0
  112. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts.map +1 -0
  113. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js +1071 -0
  114. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js.map +1 -0
  115. package/dist/lib/features/index.d.ts +1 -0
  116. package/dist/lib/features/index.d.ts.map +1 -1
  117. package/dist/lib/features/index.js +1 -0
  118. package/dist/lib/features/index.js.map +1 -1
  119. package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
  120. package/dist/lib/features/instance-stats/instance-stats-service.js +1 -3
  121. package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
  122. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js +12 -12
  123. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js.map +1 -1
  124. package/dist/lib/features/metrics/impact/metrics-translator.d.ts +5 -2
  125. package/dist/lib/features/metrics/impact/metrics-translator.d.ts.map +1 -1
  126. package/dist/lib/features/metrics/impact/metrics-translator.js +86 -102
  127. package/dist/lib/features/metrics/impact/metrics-translator.js.map +1 -1
  128. package/dist/lib/features/metrics/impact/metrics-translator.test.js +70 -112
  129. package/dist/lib/features/metrics/impact/metrics-translator.test.js.map +1 -1
  130. package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
  131. package/dist/lib/features/project/createProjectService.js +6 -0
  132. package/dist/lib/features/project/createProjectService.js.map +1 -1
  133. package/dist/lib/features/project/project-service.d.ts +2 -1
  134. package/dist/lib/features/project/project-service.d.ts.map +1 -1
  135. package/dist/lib/features/project/project-service.js +3 -1
  136. package/dist/lib/features/project/project-service.js.map +1 -1
  137. package/dist/lib/features/project-environments/project-environments.e2e.test.js +37 -0
  138. package/dist/lib/features/project-environments/project-environments.e2e.test.js.map +1 -1
  139. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts.map +1 -1
  140. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js +2 -5
  141. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js.map +1 -1
  142. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js +2 -2
  143. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js.map +1 -1
  144. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts +2 -1
  145. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts.map +1 -1
  146. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js +20 -3
  147. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js.map +1 -1
  148. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts +2 -0
  149. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts.map +1 -1
  150. package/dist/lib/features/release-plans/release-plan-store.d.ts.map +1 -1
  151. package/dist/lib/features/release-plans/release-plan-store.js +2 -0
  152. package/dist/lib/features/release-plans/release-plan-store.js.map +1 -1
  153. package/dist/lib/features/release-plans/release-plan-template-store.d.ts.map +1 -1
  154. package/dist/lib/features/release-plans/release-plan-template-store.js +4 -3
  155. package/dist/lib/features/release-plans/release-plan-template-store.js.map +1 -1
  156. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts +2 -0
  157. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts.map +1 -0
  158. package/dist/lib/features/release-plans/release-plan-template-store.test.js +47 -0
  159. package/dist/lib/features/release-plans/release-plan-template-store.test.js.map +1 -0
  160. package/dist/lib/metric-events.d.ts +3 -2
  161. package/dist/lib/metric-events.d.ts.map +1 -1
  162. package/dist/lib/metric-events.js +2 -1
  163. package/dist/lib/metric-events.js.map +1 -1
  164. package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
  165. package/dist/lib/middleware/api-token-middleware.js +1 -5
  166. package/dist/lib/middleware/api-token-middleware.js.map +1 -1
  167. package/dist/lib/middleware/api-token-middleware.test.js +35 -25
  168. package/dist/lib/middleware/api-token-middleware.test.js.map +1 -1
  169. package/dist/lib/middleware/backend-token-middleware.d.ts +5 -0
  170. package/dist/lib/middleware/backend-token-middleware.d.ts.map +1 -0
  171. package/dist/lib/middleware/backend-token-middleware.js +61 -0
  172. package/dist/lib/middleware/backend-token-middleware.js.map +1 -0
  173. package/dist/lib/middleware/backend-token-middleware.test.d.ts +2 -0
  174. package/dist/lib/middleware/backend-token-middleware.test.d.ts.map +1 -0
  175. package/dist/lib/middleware/backend-token-middleware.test.js +73 -0
  176. package/dist/lib/middleware/backend-token-middleware.test.js.map +1 -0
  177. package/dist/lib/middleware/conditional-middleware.d.ts +20 -0
  178. package/dist/lib/middleware/conditional-middleware.d.ts.map +1 -1
  179. package/dist/lib/middleware/conditional-middleware.js +26 -0
  180. package/dist/lib/middleware/conditional-middleware.js.map +1 -1
  181. package/dist/lib/middleware/conditional-middleware.test.d.ts +2 -0
  182. package/dist/lib/middleware/conditional-middleware.test.d.ts.map +1 -0
  183. package/dist/lib/middleware/conditional-middleware.test.js +31 -0
  184. package/dist/lib/middleware/conditional-middleware.test.js.map +1 -0
  185. package/dist/lib/middleware/frontend-token-middleware.d.ts +5 -0
  186. package/dist/lib/middleware/frontend-token-middleware.d.ts.map +1 -0
  187. package/dist/lib/middleware/frontend-token-middleware.js +61 -0
  188. package/dist/lib/middleware/frontend-token-middleware.js.map +1 -0
  189. package/dist/lib/middleware/user-token-client-api-logger-middleware.js +1 -1
  190. package/dist/lib/middleware/user-token-client-api-logger-middleware.js.map +1 -1
  191. package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
  192. package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
  193. package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
  194. package/dist/lib/openapi/spec/export-result-schema.d.ts +1018 -100
  195. package/dist/lib/openapi/spec/export-result-schema.d.ts.map +1 -1
  196. package/dist/lib/openapi/spec/export-result-schema.js +4 -2
  197. package/dist/lib/openapi/spec/export-result-schema.js.map +1 -1
  198. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts +168 -0
  199. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts.map +1 -0
  200. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js +66 -0
  201. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js.map +1 -0
  202. package/dist/lib/openapi/spec/feature-environment-schema.d.ts +265 -7
  203. package/dist/lib/openapi/spec/feature-environment-schema.d.ts.map +1 -1
  204. package/dist/lib/openapi/spec/feature-environment-schema.js +13 -0
  205. package/dist/lib/openapi/spec/feature-environment-schema.js.map +1 -1
  206. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  207. package/dist/lib/openapi/spec/feature-schema.d.ts +475 -16
  208. package/dist/lib/openapi/spec/feature-schema.d.ts.map +1 -1
  209. package/dist/lib/openapi/spec/feature-schema.js +4 -2
  210. package/dist/lib/openapi/spec/feature-schema.js.map +1 -1
  211. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts +688 -14
  212. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts.map +1 -1
  213. package/dist/lib/openapi/spec/feature-search-environment-schema.js +8 -0
  214. package/dist/lib/openapi/spec/feature-search-environment-schema.js.map +1 -1
  215. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +10 -1
  216. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
  217. package/dist/lib/openapi/spec/feature-search-query-parameters.js +10 -0
  218. package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
  219. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts +8097 -155
  220. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts.map +1 -1
  221. package/dist/lib/openapi/spec/feature-search-response-schema.js +22 -0
  222. package/dist/lib/openapi/spec/feature-search-response-schema.js.map +1 -1
  223. package/dist/lib/openapi/spec/health-overview-schema.d.ts +1336 -210
  224. package/dist/lib/openapi/spec/health-overview-schema.d.ts.map +1 -1
  225. package/dist/lib/openapi/spec/health-overview-schema.js +8 -0
  226. package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
  227. package/dist/lib/openapi/spec/health-report-schema.d.ts +1336 -210
  228. package/dist/lib/openapi/spec/health-report-schema.d.ts.map +1 -1
  229. package/dist/lib/openapi/spec/import-toggles-schema.d.ts +2 -2
  230. package/dist/lib/openapi/spec/import-toggles-schema.d.ts.map +1 -1
  231. package/dist/lib/openapi/spec/import-toggles-schema.js +4 -2
  232. package/dist/lib/openapi/spec/import-toggles-schema.js.map +1 -1
  233. package/dist/lib/openapi/spec/index.d.ts +4 -2
  234. package/dist/lib/openapi/spec/index.d.ts.map +1 -1
  235. package/dist/lib/openapi/spec/index.js +4 -2
  236. package/dist/lib/openapi/spec/index.js.map +1 -1
  237. package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
  238. package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
  239. package/dist/lib/openapi/spec/metric-query-schema.d.ts +6 -0
  240. package/dist/lib/openapi/spec/metric-query-schema.d.ts.map +1 -1
  241. package/dist/lib/openapi/spec/metric-query-schema.js +6 -0
  242. package/dist/lib/openapi/spec/metric-query-schema.js.map +1 -1
  243. package/dist/lib/openapi/spec/profile-schema.d.ts +475 -16
  244. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  245. package/dist/lib/openapi/spec/project-overview-schema.d.ts +1336 -210
  246. package/dist/lib/openapi/spec/project-overview-schema.d.ts.map +1 -1
  247. package/dist/lib/openapi/spec/project-overview-schema.js +8 -0
  248. package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
  249. package/dist/lib/openapi/spec/release-plan-milestone-schema.d.ts +1 -1
  250. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.d.ts +1 -1
  251. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js +1 -1
  252. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js.map +1 -1
  253. package/dist/lib/openapi/spec/{safeguard-schema.d.ts → release-plan-safeguard-schema.d.ts} +16 -4
  254. package/dist/lib/openapi/spec/release-plan-safeguard-schema.d.ts.map +1 -0
  255. package/dist/lib/openapi/spec/{safeguard-schema.js → release-plan-safeguard-schema.js} +3 -3
  256. package/dist/lib/openapi/spec/release-plan-safeguard-schema.js.map +1 -0
  257. package/dist/lib/openapi/spec/release-plan-schema.d.ts +23 -5
  258. package/dist/lib/openapi/spec/release-plan-schema.d.ts.map +1 -1
  259. package/dist/lib/openapi/spec/release-plan-schema.js +3 -3
  260. package/dist/lib/openapi/spec/release-plan-schema.js.map +1 -1
  261. package/dist/lib/openapi/spec/release-plan-template-schema.d.ts +2 -2
  262. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts +2897 -0
  263. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts.map +1 -0
  264. package/dist/lib/openapi/spec/release-plan-templates-schema.js +29 -0
  265. package/dist/lib/openapi/spec/release-plan-templates-schema.js.map +1 -0
  266. package/dist/lib/openapi/spec/release-plans-schema.d.ts +45 -9
  267. package/dist/lib/openapi/spec/release-plans-schema.d.ts.map +1 -1
  268. package/dist/lib/openapi/spec/release-plans-schema.js +2 -2
  269. package/dist/lib/openapi/spec/release-plans-schema.js.map +1 -1
  270. package/dist/lib/openapi/spec/search-features-schema.d.ts +13694 -5078
  271. package/dist/lib/openapi/spec/search-features-schema.d.ts.map +1 -1
  272. package/dist/lib/routes/admin-api/api-token.js +1 -1
  273. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  274. package/dist/lib/routes/admin-api/project/api-token.js +1 -1
  275. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  276. package/dist/lib/routes/logout.js +1 -1
  277. package/dist/lib/routes/logout.js.map +1 -1
  278. package/dist/lib/routes/logout.test.js +4 -4
  279. package/dist/lib/routes/logout.test.js.map +1 -1
  280. package/dist/lib/schema/api-token-schema.d.ts.map +1 -1
  281. package/dist/lib/schema/api-token-schema.js +1 -0
  282. package/dist/lib/schema/api-token-schema.js.map +1 -1
  283. package/dist/lib/server-impl.d.ts +5 -5
  284. package/dist/lib/server-impl.d.ts.map +1 -1
  285. package/dist/lib/server-impl.js +3 -3
  286. package/dist/lib/server-impl.js.map +1 -1
  287. package/dist/lib/services/api-token-service.d.ts +2 -2
  288. package/dist/lib/services/api-token-service.d.ts.map +1 -1
  289. package/dist/lib/services/api-token-service.js +5 -3
  290. package/dist/lib/services/api-token-service.js.map +1 -1
  291. package/dist/lib/services/api-token-service.test.js +5 -4
  292. package/dist/lib/services/api-token-service.test.js.map +1 -1
  293. package/dist/lib/services/edge-service.d.ts +1 -0
  294. package/dist/lib/services/edge-service.d.ts.map +1 -1
  295. package/dist/lib/services/edge-service.js +5 -2
  296. package/dist/lib/services/edge-service.js.map +1 -1
  297. package/dist/lib/services/user-service.d.ts.map +1 -1
  298. package/dist/lib/services/user-service.js +0 -4
  299. package/dist/lib/services/user-service.js.map +1 -1
  300. package/dist/lib/types/experimental.d.ts +1 -1
  301. package/dist/lib/types/experimental.d.ts.map +1 -1
  302. package/dist/lib/types/experimental.js +7 -8
  303. package/dist/lib/types/experimental.js.map +1 -1
  304. package/dist/lib/types/model.d.ts +2 -1
  305. package/dist/lib/types/model.d.ts.map +1 -1
  306. package/dist/lib/types/model.js.map +1 -1
  307. package/dist/lib/types/option.d.ts +2 -0
  308. package/dist/lib/types/option.d.ts.map +1 -1
  309. package/dist/lib/types/stores/api-token-store.d.ts +2 -1
  310. package/dist/lib/types/stores/api-token-store.d.ts.map +1 -1
  311. package/dist/lib/types/stores/edge-store.d.ts +2 -0
  312. package/dist/lib/types/stores/edge-store.d.ts.map +1 -1
  313. package/dist/lib/types/stores/event-store.d.ts +1 -1
  314. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  315. package/dist/lib/util/clone-db-config.d.ts +3 -0
  316. package/dist/lib/util/clone-db-config.d.ts.map +1 -0
  317. package/dist/lib/util/clone-db-config.js +18 -0
  318. package/dist/lib/util/clone-db-config.js.map +1 -0
  319. package/dist/lib/util/clone-db-config.test.d.ts +2 -0
  320. package/dist/lib/util/clone-db-config.test.d.ts.map +1 -0
  321. package/dist/lib/util/clone-db-config.test.js +40 -0
  322. package/dist/lib/util/clone-db-config.test.js.map +1 -0
  323. package/dist/lib/util/db-lock.d.ts.map +1 -1
  324. package/dist/lib/util/db-lock.js +2 -3
  325. package/dist/lib/util/db-lock.js.map +1 -1
  326. package/dist/lib/util/sortStrategies.d.ts +1 -1
  327. package/dist/lib/util/sortStrategies.d.ts.map +1 -1
  328. package/dist/lib/util/sortStrategies.js +6 -2
  329. package/dist/lib/util/sortStrategies.js.map +1 -1
  330. package/dist/lib/util/sortStrategies.test.js +21 -0
  331. package/dist/lib/util/sortStrategies.test.js.map +1 -1
  332. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts +3 -0
  333. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts.map +1 -0
  334. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js +15 -0
  335. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js.map +1 -0
  336. package/dist/migrations/20260310134100-split-safeguards-table.d.ts +3 -0
  337. package/dist/migrations/20260310134100-split-safeguards-table.d.ts.map +1 -0
  338. package/dist/migrations/20260310134100-split-safeguards-table.js +31 -0
  339. package/dist/migrations/20260310134100-split-safeguards-table.js.map +1 -0
  340. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts +3 -0
  341. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts.map +1 -0
  342. package/dist/migrations/20260311073041-migrate-safeguards-data.js +42 -0
  343. package/dist/migrations/20260311073041-migrate-safeguards-data.js.map +1 -0
  344. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts +3 -0
  345. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  346. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js +31 -0
  347. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js.map +1 -0
  348. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts +3 -0
  349. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts.map +1 -0
  350. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js +8 -0
  351. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js.map +1 -0
  352. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts +3 -0
  353. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  354. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js +54 -0
  355. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js.map +1 -0
  356. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts +3 -0
  357. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts.map +1 -0
  358. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js +21 -0
  359. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js.map +1 -0
  360. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts +3 -0
  361. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts.map +1 -0
  362. package/dist/migrations/20260318100000-safeguards-drop-project-column.js +14 -0
  363. package/dist/migrations/20260318100000-safeguards-drop-project-column.js.map +1 -0
  364. package/dist/migrations/20260406132537-user-access-requests.d.ts +3 -0
  365. package/dist/migrations/20260406132537-user-access-requests.d.ts.map +1 -0
  366. package/dist/migrations/20260406132537-user-access-requests.js +16 -0
  367. package/dist/migrations/20260406132537-user-access-requests.js.map +1 -0
  368. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts +3 -0
  369. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts.map +1 -0
  370. package/dist/migrations/20260406161629-user-access-requests-unique-email.js +14 -0
  371. package/dist/migrations/20260406161629-user-access-requests-unique-email.js.map +1 -0
  372. package/dist/migrator.d.ts.map +1 -1
  373. package/dist/migrator.js +4 -3
  374. package/dist/migrator.js.map +1 -1
  375. package/dist/server-dev.js +4 -7
  376. package/dist/server-dev.js.map +1 -1
  377. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +5 -5
  378. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  379. package/dist/test/e2e/api/admin/api-token.e2e.test.js +3 -2
  380. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  381. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js +106 -38
  382. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js.map +1 -1
  383. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js +1 -7
  384. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js.map +1 -1
  385. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js +2 -1
  386. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
  387. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js +5 -5
  388. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js.map +1 -1
  389. package/dist/test/e2e/api/admin/project-context.e2e.test.js +1 -7
  390. package/dist/test/e2e/api/admin/project-context.e2e.test.js.map +1 -1
  391. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +34 -1
  392. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -1
  393. package/dist/test/e2e/services/api-token-service.e2e.test.js +21 -6
  394. package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
  395. package/dist/test/e2e/services/edge-service.e2e.test.js +4 -3
  396. package/dist/test/e2e/services/edge-service.e2e.test.js.map +1 -1
  397. package/dist/test/e2e/stores/api-token-store.e2e.test.js +15 -14
  398. package/dist/test/e2e/stores/api-token-store.e2e.test.js.map +1 -1
  399. package/dist/test/e2e/stores/event-store.e2e.test.js +8 -9
  400. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  401. package/dist/test/fixtures/fake-api-token-store.d.ts +2 -1
  402. package/dist/test/fixtures/fake-api-token-store.d.ts.map +1 -1
  403. package/dist/test/fixtures/fake-api-token-store.js +4 -1
  404. package/dist/test/fixtures/fake-api-token-store.js.map +1 -1
  405. package/dist/test/fixtures/fake-event-store.d.ts +1 -1
  406. package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
  407. package/dist/test/fixtures/fake-event-store.js +1 -1
  408. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  409. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts +2 -2
  410. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts.map +1 -1
  411. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js +3 -2
  412. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js.map +1 -1
  413. package/frontend/build/index.html +1 -1
  414. package/frontend/build/static/AdvancedPlayground-BTPrG6RW.js +3 -0
  415. package/frontend/build/static/BackendConnections-CRh8Vxoe.js +1 -0
  416. package/frontend/build/static/{CreateProject-DV-Ad8Sn.js → CreateProject-DEMalH1j.js} +1 -1
  417. package/frontend/build/static/EnterpriseEdge-Cp-pGMa0.js +6 -0
  418. package/frontend/build/static/FeatureMetricsChart-DQOE71LA.js +2 -0
  419. package/frontend/build/static/FeatureStaleDialog-B6BfnDiQ.js +689 -0
  420. package/frontend/build/static/{FeatureViewLazyExport-Bsw7-knb.js → FeatureViewLazyExport-BkNTNFqK.js} +4 -7
  421. package/frontend/build/static/FlagMetricsChart-zYDF9bet.js +2 -0
  422. package/frontend/build/static/FrontendNetworkTrafficUsage-CbxdFXH7.js +1 -0
  423. package/frontend/build/static/GridLayoutWrapper-Cq6Bzm36.js +3 -0
  424. package/frontend/build/static/ImpactMetricsPage-CFYXYXPb.js +1 -0
  425. package/frontend/build/static/LazyAdminExport-ByTh4iFa.js +38 -0
  426. package/frontend/build/static/LazyProjectExport-K12Xy3w9.js +46 -0
  427. package/frontend/build/static/{LifecycleChartComponent-cxR-TN3V.js → LifecycleChartComponent-DHvlFNd2.js} +3 -3
  428. package/frontend/build/static/LineChartComponent-BlhKm3cw.js +1 -0
  429. package/frontend/build/static/MarkCompletedDialogue-apmlFjVY.js +1 -0
  430. package/frontend/build/static/{NetworkOverview-DxaPXUzZ.js → NetworkOverview-BiLOuQ4c.js} +1 -1
  431. package/frontend/build/static/{NetworkPrometheusAPIWarning-ltyTlXFF.js → NetworkPrometheusAPIWarning-CYo3j2Tj.js} +1 -1
  432. package/frontend/build/static/{NetworkTraffic-Dhw4yIBs.js → NetworkTraffic-DONL5oIx.js} +1 -1
  433. package/frontend/build/static/NetworkTrafficUsage-DjQiYq0S.js +1 -0
  434. package/frontend/build/static/{PercentageDonut-JGNh2FVZ.js → PercentageDonut-CA9hYg3v.js} +1 -1
  435. package/frontend/build/static/{ReactJSONEditor-GHl7KvdS.js → ReactJSONEditor-9cJL1vJY.js} +31 -31
  436. package/frontend/build/static/{RoleCell-CjVCxBgl.js → RoleCell-ZzU5Oqy8.js} +1 -1
  437. package/frontend/build/static/Safeguard-DY1N4aPz.js +1 -0
  438. package/frontend/build/static/aggregateFeatureMetrics-D6bHft_C.js +1 -0
  439. package/frontend/build/static/{formatTickValue-BZb4ZIL9.js → formatTickValue-BcLsqREh.js} +2 -2
  440. package/frontend/build/static/{index-DcWBU_a4.js → index-B87DWXbl.js} +1 -1
  441. package/frontend/build/static/index-CoLhlfXP.js +565 -0
  442. package/frontend/build/static/loginBackground-CQx0IRYc.png +0 -0
  443. package/frontend/build/static/{networkTrafficUsageHighlightPlugin-BbfAyDiQ.js → networkTrafficUsageHighlightPlugin-CqEM-cK_.js} +1 -1
  444. package/frontend/build/static/passwordSuccess-fcvTEYOw.png +0 -0
  445. package/frontend/build/static/useApiTokens-ClWvohC9.js +1 -0
  446. package/frontend/package.json +50 -42
  447. package/package.json +11 -10
  448. package/dist/lib/openapi/spec/safeguard-schema.d.ts.map +0 -1
  449. package/dist/lib/openapi/spec/safeguard-schema.js.map +0 -1
  450. package/frontend/build/static/AdvancedPlayground-CF0hkpiE.js +0 -3
  451. package/frontend/build/static/BackendConnections-DhZczar-.js +0 -1
  452. package/frontend/build/static/EnterpriseEdge-D1To2ugP.js +0 -3
  453. package/frontend/build/static/FeatureMetricsChart-D8sRgx5P.js +0 -2
  454. package/frontend/build/static/FeatureStaleDialog-DOkhgvaj.js +0 -7
  455. package/frontend/build/static/FlagMetricsChart-CF_kEyQa.js +0 -2
  456. package/frontend/build/static/FrontendNetworkTrafficUsage-C8zJSvoc.js +0 -1
  457. package/frontend/build/static/GridLayoutWrapper-DpJcUbQB.js +0 -3
  458. package/frontend/build/static/ImpactMetricsPage-KLVv-tP4.js +0 -1
  459. package/frontend/build/static/LazyAdminExport-CWQiknO-.js +0 -38
  460. package/frontend/build/static/LazyProjectExport-DsMn4Yxm.js +0 -728
  461. package/frontend/build/static/LineChartComponent-_yZEp3dd.js +0 -1
  462. package/frontend/build/static/MarkCompletedDialogue-DFtLyDN0.js +0 -1
  463. package/frontend/build/static/NetworkTrafficUsage-deKWRhIS.js +0 -1
  464. package/frontend/build/static/aggregateFeatureMetrics-YEdZNNoV.js +0 -1
  465. package/frontend/build/static/index-DMSjiFEm.js +0 -583
  466. package/frontend/build/static/useApiTokens-DBB3NvXL.js +0 -1
@@ -83,6 +83,41 @@ test('should add user if known token', async () => {
83
83
  expect(req.header).toHaveBeenCalled();
84
84
  expect(req.user).toBe(apiUser);
85
85
  });
86
+ test('with flag set should set user if known token', async () => {
87
+ const localConfig = createTestConfig({
88
+ getLogger,
89
+ authentication: {
90
+ enableApiToken: true,
91
+ },
92
+ experimental: {
93
+ flags: {
94
+ onlyFeatureTokensWithFeatureAPIs: true,
95
+ },
96
+ },
97
+ });
98
+ const apiUser = new ApiUser({
99
+ tokenName: 'default',
100
+ permissions: [CLIENT],
101
+ project: ALL,
102
+ environment: 'development',
103
+ type: ApiTokenType.BACKEND,
104
+ secret: 'some-known-token',
105
+ });
106
+ const apiTokenService = {
107
+ getUserForToken: vi.fn().mockReturnValue(apiUser),
108
+ };
109
+ const func = apiTokenMiddleware(localConfig, { apiTokenService });
110
+ const cb = vi.fn();
111
+ const req = {
112
+ header: vi.fn().mockReturnValue('*:development.some-known-token'),
113
+ user: undefined,
114
+ path: '/api/client',
115
+ };
116
+ await func(req, undefined, cb);
117
+ expect(cb).toHaveBeenCalled();
118
+ expect(req.header).toHaveBeenCalled();
119
+ expect(req.user).toBe(apiUser);
120
+ });
86
121
  test.each([
87
122
  ApiTokenType.CLIENT,
88
123
  ApiTokenType.BACKEND,
@@ -190,29 +225,4 @@ test('should call next if apiTokenService throws x2', async () => {
190
225
  await func(req, undefined, cb);
191
226
  expect(cb).toHaveBeenCalled();
192
227
  });
193
- test('should add user if client token and /edge/metrics', async () => {
194
- const apiUser = new ApiUser({
195
- tokenName: 'default',
196
- permissions: [CLIENT],
197
- project: ALL,
198
- environment: ALL,
199
- type: ApiTokenType.BACKEND,
200
- secret: 'a',
201
- });
202
- const apiTokenService = {
203
- getUserForToken: vi.fn().mockReturnValue(apiUser),
204
- };
205
- const func = apiTokenMiddleware(config, { apiTokenService });
206
- const cb = vi.fn();
207
- const req = {
208
- header: vi.fn().mockReturnValue('some-known-token'),
209
- user: undefined,
210
- path: '/edge/metrics',
211
- method: 'POST',
212
- };
213
- await func(req, undefined, cb);
214
- expect(cb).toHaveBeenCalled();
215
- expect(req.header).toHaveBeenCalled();
216
- expect(req.user).toBe(apiUser);
217
- });
218
228
  //# sourceMappingURL=api-token-middleware.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/api-token-middleware.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,kBAAkB,EAAE,EACvB,wBAAwB,GAC3B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,IAAI,MAAsB,CAAC;AAE3B,UAAU,CAAC,GAAG,EAAE;IACZ,MAAM,GAAG,gBAAgB,CAAC;QACtB,SAAS;QACT,cAAc,EAAE;YACZ,cAAc,EAAE,IAAI;SACvB;KACJ,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IAClF,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;KACG,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAClB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;KACG,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;IACvE,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;KACG,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC;QAClD,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,YAAY,CAAC,OAAO;QAC1B,MAAM,EAAE,GAAG;KACd,CAAC,CAAC;IACH,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;KACtB,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;QACnD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa;KACtB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC;IACN,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,OAAO;CACvB,CAAC,CAAC,2DAA2D,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC3E,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,IAAI;QACJ,MAAM,EAAE,GAAG;KACd,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;KACtB,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,IAAa,EAAE,EAAE;gBACpB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;YAChE,CAAC;SACJ,CAAC;KACL,CAAC;IAEF,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;QACnD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;KACrB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;IAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,YAAY,CAAC,OAAO;QAC1B,MAAM,EAAE,GAAG;KACd,CAAC,CAAC;IACH,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;KACtB,CAAC;IAEhC,MAAM,cAAc,GAAG,gBAAgB,CAAC;QACpC,SAAS;QACT,cAAc,EAAE;YACZ,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,KAAK;SACzB;KACJ,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,kBAAkB,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAErE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;QACnD,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,GAAG,EAAE;YACT,OAAO;gBACH,IAAI,EAAE,IAAI;aACb,CAAC;QACN,CAAC;KACJ,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC1D,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;KAC0B,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;IAC7D,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;KAC0B,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,YAAY,CAAC,OAAO;QAC1B,MAAM,EAAE,GAAG;KACd,CAAC,CAAC;IACH,MAAM,eAAe,GAAG;QACpB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;KACtB,CAAC;IAEhC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEnB,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;QACnD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,MAAM;KACjB,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"api-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/api-token-middleware.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { IUnleashConfig } from '../types/option.js';
2
+ import type { IUnleashServices } from '../services/index.js';
3
+ export declare const backendApiAccessMiddleware: ({ getLogger, authentication, flagResolver, }: Pick<IUnleashConfig, "getLogger" | "authentication" | "flagResolver">, { apiTokenService }: Pick<IUnleashServices, "apiTokenService">) => any;
4
+ export default backendApiAccessMiddleware;
5
+ //# sourceMappingURL=backend-token-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-token-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,eAAO,MAAM,0BAA0B,GACnC,8CAIG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC,EACxE,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,KAC/D,GA6DF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { ApiTokenType } from '../types/model.js';
2
+ import { NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED, TOKEN_TYPE_ERROR_MESSAGE, } from './api-token-middleware.js';
3
+ export const backendApiAccessMiddleware = ({ getLogger, authentication, flagResolver, }, { apiTokenService }) => {
4
+ const logger = getLogger('/middleware/backend-token-middleware.ts');
5
+ logger.debug('Enabling backend-token middleware');
6
+ if (!authentication.enableApiToken) {
7
+ return (_req, _res, next) => next();
8
+ }
9
+ return async (req, res, next) => {
10
+ const onlyFeatureTokensWithFeatureAPIs = flagResolver.isEnabled('onlyFeatureTokensWithFeatureAPIs');
11
+ // Defer to api-token-middleware
12
+ if (!onlyFeatureTokensWithFeatureAPIs) {
13
+ return next();
14
+ }
15
+ try {
16
+ const apiToken = req.header('authorization');
17
+ if (!apiToken) {
18
+ res.status(401).send({
19
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
20
+ });
21
+ return;
22
+ }
23
+ // Disallow PAT/Service account tokens and admin tokens
24
+ if (apiToken.startsWith('user:') || apiToken.startsWith('*:*')) {
25
+ res.status(403).send({
26
+ message: TOKEN_TYPE_ERROR_MESSAGE,
27
+ });
28
+ return;
29
+ }
30
+ const apiUser = apiToken
31
+ ? await apiTokenService.getUserForToken(apiToken)
32
+ : undefined;
33
+ const { CLIENT, BACKEND } = ApiTokenType;
34
+ if (apiUser) {
35
+ if (apiUser.type !== CLIENT && apiUser.type !== BACKEND) {
36
+ res.status(403).send({
37
+ message: TOKEN_TYPE_ERROR_MESSAGE,
38
+ });
39
+ return;
40
+ }
41
+ req.user = apiUser;
42
+ next();
43
+ }
44
+ else {
45
+ res.status(401).send({
46
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
47
+ });
48
+ return;
49
+ }
50
+ }
51
+ catch (error) {
52
+ logger.warn(error);
53
+ res.status(401).send({
54
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
55
+ });
56
+ return;
57
+ }
58
+ };
59
+ };
60
+ export default backendApiAccessMiddleware;
61
+ //# sourceMappingURL=backend-token-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-token-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EACH,iCAAiC,EACjC,wBAAwB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,EACI,SAAS,EACT,cAAc,EACd,YAAY,GACwD,EACxE,EAAE,eAAe,EAA6C,EAC3D,EAAE;IACL,MAAM,MAAM,GAAG,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,gCAAgC,GAAG,YAAY,CAAC,SAAS,CAC3D,kCAAkC,CACrC,CAAC;QACF,gCAAgC;QAChC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACpC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,uDAAuD;YACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,wBAAwB;iBACpC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ;gBACpB,CAAC,CAAC,MAAM,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;YAEzC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,OAAO,EAAE,wBAAwB;qBACpC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;gBACnB,IAAI,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,iCAAiC;aAC7C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=backend-token-middleware.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-token-middleware.test.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import { createTestConfig } from '../../test/config/test-config.js';
2
+ import getLogger from '../../test/fixtures/no-logger.js';
3
+ import { vi } from 'vitest';
4
+ import backendApiAccessMiddleware from './backend-token-middleware.js';
5
+ test('with flag set client api should return 403 if user object is set and token is PAT', async () => {
6
+ const localConfig = createTestConfig({
7
+ getLogger,
8
+ authentication: {
9
+ enableApiToken: true,
10
+ },
11
+ experimental: {
12
+ flags: {
13
+ onlyFeatureTokensWithFeatureAPIs: true,
14
+ },
15
+ },
16
+ });
17
+ const apiTokenService = {
18
+ getUserForToken: vi.fn(),
19
+ };
20
+ const func = backendApiAccessMiddleware(localConfig, { apiTokenService });
21
+ const cb = vi.fn();
22
+ const user = { accountType: 'User', id: 1, username: 'PAT-Owner' };
23
+ const req = {
24
+ header: vi.fn().mockReturnValue('user:some-pat-token'),
25
+ user,
26
+ path: '/api/client',
27
+ };
28
+ const res = {
29
+ status: vi.fn().mockReturnValue({
30
+ send: vi.fn(),
31
+ }),
32
+ };
33
+ await func(req, res, cb);
34
+ expect(cb).not.toHaveBeenCalled();
35
+ expect(req.header).toHaveBeenCalled();
36
+ expect(res.status).toHaveBeenCalledWith(403);
37
+ });
38
+ test.each([
39
+ 'user:asdkjsdhg3',
40
+ '*:*.asdf',
41
+ ])('%s PAT format tokens with client api cause middleware to return 403 when flag is set', async (rejectedToken) => {
42
+ const localConfig = createTestConfig({
43
+ getLogger,
44
+ authentication: {
45
+ enableApiToken: true,
46
+ },
47
+ experimental: {
48
+ flags: {
49
+ onlyFeatureTokensWithFeatureAPIs: true,
50
+ },
51
+ },
52
+ });
53
+ const apiTokenService = {
54
+ getUserForToken: vi.fn(),
55
+ };
56
+ const func = backendApiAccessMiddleware(localConfig, { apiTokenService });
57
+ const cb = vi.fn();
58
+ const res = {
59
+ status: vi.fn().mockReturnValue({ send: vi.fn() }),
60
+ };
61
+ const req = {
62
+ header: vi.fn().mockReturnValue(rejectedToken),
63
+ user: undefined,
64
+ path: '/api/client/metrics',
65
+ };
66
+ await func(req, res, cb);
67
+ expect(apiTokenService.getUserForToken).not.toHaveBeenCalled();
68
+ expect(req.header).toHaveBeenCalled();
69
+ expect(res.status).toHaveBeenCalledWith(403);
70
+ expect(cb).not.toHaveBeenCalled();
71
+ expect(req.user).toBeFalsy();
72
+ });
73
+ //# sourceMappingURL=backend-token-middleware.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,23 @@
1
1
  import type { RequestHandler } from 'express';
2
+ import type { IFlagResolver, IFlagKey } from '../types/index.js';
3
+ /**
4
+ * @deprecated Use `requireFeatureEnabled` for feature-flag route gating.
5
+ *
6
+ * Generic conditional middleware runner.
7
+ * Prefer this only for non-feature-flag conditions.
8
+ */
2
9
  export declare const conditionalMiddleware: (condition: () => boolean, middleware: RequestHandler) => RequestHandler;
10
+ /**
11
+ * Route-level feature gate middleware.
12
+ *
13
+ * Recommended usage:
14
+ * `middleware: [requireFeatureEnabled(config.flagResolver, 'myFlag')]`
15
+ *
16
+ * Guidance:
17
+ * - Prefer route-level usage (`this.route({ middleware: [...] })`) in controllers.
18
+ * - Avoid broad prefix mounts (for example `/api/admin/projects`) where sibling routes
19
+ * can accidentally be gated.
20
+ * - The route remains registered/discoverable; disabled features return `404` at request time.
21
+ */
22
+ export declare const requireFeatureEnabled: (flagResolver: Pick<IFlagResolver, "isEnabled">, flagName: IFlagKey) => RequestHandler;
3
23
  //# sourceMappingURL=conditional-middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,qBAAqB,GAC9B,WAAW,MAAM,OAAO,EACxB,YAAY,cAAc,KAC3B,cAQF,CAAC"}
1
+ {"version":3,"file":"conditional-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAC9B,WAAW,MAAM,OAAO,EACxB,YAAY,cAAc,KAC3B,cAQF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAC9B,cAAc,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC9C,UAAU,QAAQ,KACnB,cAOF,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @deprecated Use `requireFeatureEnabled` for feature-flag route gating.
3
+ *
4
+ * Generic conditional middleware runner.
5
+ * Prefer this only for non-feature-flag conditions.
6
+ */
1
7
  export const conditionalMiddleware = (condition, middleware) => {
2
8
  return (req, res, next) => {
3
9
  if (condition()) {
@@ -8,4 +14,24 @@ export const conditionalMiddleware = (condition, middleware) => {
8
14
  }
9
15
  };
10
16
  };
17
+ /**
18
+ * Route-level feature gate middleware.
19
+ *
20
+ * Recommended usage:
21
+ * `middleware: [requireFeatureEnabled(config.flagResolver, 'myFlag')]`
22
+ *
23
+ * Guidance:
24
+ * - Prefer route-level usage (`this.route({ middleware: [...] })`) in controllers.
25
+ * - Avoid broad prefix mounts (for example `/api/admin/projects`) where sibling routes
26
+ * can accidentally be gated.
27
+ * - The route remains registered/discoverable; disabled features return `404` at request time.
28
+ */
29
+ export const requireFeatureEnabled = (flagResolver, flagName) => {
30
+ return (_req, res, next) => {
31
+ if (flagResolver.isEnabled(flagName)) {
32
+ return next();
33
+ }
34
+ return res.sendStatus(404);
35
+ };
36
+ };
11
37
  //# sourceMappingURL=conditional-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,SAAwB,EACxB,UAA0B,EACZ,EAAE;IAChB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,SAAS,EAAE,EAAE,CAAC;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,EAAE,CAAC;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"conditional-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,SAAwB,EACxB,UAA0B,EACZ,EAAE;IAChB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,SAAS,EAAE,EAAE,CAAC;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,EAAE,CAAC;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,YAA8C,EAC9C,QAAkB,EACJ,EAAE;IAChB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conditional-middleware.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-middleware.test.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { vi } from 'vitest';
2
+ import { conditionalMiddleware, requireFeatureEnabled, } from './conditional-middleware.js';
3
+ test('conditionalMiddleware should run middleware when condition is true', () => {
4
+ const middleware = vi.fn((_req, _res, next) => next());
5
+ const next = vi.fn();
6
+ conditionalMiddleware(() => true, middleware)({}, {}, next);
7
+ expect(middleware).toHaveBeenCalled();
8
+ expect(next).toHaveBeenCalledWith();
9
+ });
10
+ test('requireFeatureEnabled should call next when feature is enabled', () => {
11
+ const next = vi.fn();
12
+ const flagResolver = {
13
+ isEnabled: vi.fn().mockReturnValue(true),
14
+ };
15
+ // @ts-expect-error the feature name does not exist, it's only for testing
16
+ requireFeatureEnabled(flagResolver, 'changeRequestEnabled')({}, {}, next);
17
+ expect(flagResolver.isEnabled).toHaveBeenCalledWith('changeRequestEnabled');
18
+ expect(next).toHaveBeenCalledWith();
19
+ });
20
+ test('requireFeatureEnabled should return 404 when feature is disabled', () => {
21
+ const next = vi.fn();
22
+ const sendStatus = vi.fn();
23
+ const flagResolver = {
24
+ isEnabled: vi.fn().mockReturnValue(false),
25
+ };
26
+ // @ts-expect-error the feature name does not exist, it's only for testing
27
+ requireFeatureEnabled(flagResolver, 'changeRequestEnabled')({}, { sendStatus }, next);
28
+ expect(next).not.toHaveBeenCalled();
29
+ expect(sendStatus).toHaveBeenCalledWith(404);
30
+ });
31
+ //# sourceMappingURL=conditional-middleware.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACH,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,6BAA6B,CAAC;AAErC,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC5E,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAErB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAS,EAAE,EAAS,EAAE,IAAI,CAAC,CAAC;IAE1E,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IACxE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC3C,CAAC;IAEF,0EAA0E;IAC1E,qBAAqB,CAAC,YAAmB,EAAE,sBAAsB,CAAC,CAC9D,EAAS,EACT,EAAS,EACT,IAAI,CACP,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;KAC5C,CAAC;IAEF,0EAA0E;IAC1E,qBAAqB,CAAC,YAAmB,EAAE,sBAAsB,CAAC,CAC9D,EAAS,EACT,EAAE,UAAU,EAAS,EACrB,IAAI,CACP,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { IUnleashConfig } from '../types/option.js';
2
+ import type { IUnleashServices } from '../services/index.js';
3
+ export declare const frontendApiAccessMiddleware: ({ getLogger, authentication, flagResolver, }: Pick<IUnleashConfig, "getLogger" | "authentication" | "flagResolver">, { apiTokenService }: Pick<IUnleashServices, "apiTokenService">) => any;
4
+ export default frontendApiAccessMiddleware;
5
+ //# sourceMappingURL=frontend-token-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend-token-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/frontend-token-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,eAAO,MAAM,2BAA2B,GACpC,8CAIG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC,EACxE,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,KAC/D,GA6DF,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { ApiTokenType } from '../types/model.js';
2
+ import { NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED, TOKEN_TYPE_ERROR_MESSAGE, } from './api-token-middleware.js';
3
+ export const frontendApiAccessMiddleware = ({ getLogger, authentication, flagResolver, }, { apiTokenService }) => {
4
+ const logger = getLogger('/middleware/frontend-token-middleware.ts');
5
+ logger.debug('Enabling frontend-token middleware');
6
+ if (!authentication.enableApiToken) {
7
+ return (_req, _res, next) => next();
8
+ }
9
+ return async (req, res, next) => {
10
+ const onlyFeatureTokensWithFeatureAPIs = flagResolver.isEnabled('onlyFeatureTokensWithFeatureAPIs');
11
+ // Defer to api-token-middleware
12
+ if (!onlyFeatureTokensWithFeatureAPIs) {
13
+ return next();
14
+ }
15
+ try {
16
+ const apiToken = req.header('authorization');
17
+ if (!apiToken) {
18
+ res.status(401).send({
19
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
20
+ });
21
+ return;
22
+ }
23
+ // Disallow PAT/Service account tokens and admin tokens
24
+ if (apiToken.startsWith('user:') || apiToken.startsWith('*:*')) {
25
+ res.status(403).send({
26
+ message: TOKEN_TYPE_ERROR_MESSAGE,
27
+ });
28
+ return;
29
+ }
30
+ const apiUser = apiToken
31
+ ? await apiTokenService.getUserForToken(apiToken)
32
+ : undefined;
33
+ const { FRONTEND } = ApiTokenType;
34
+ if (apiUser) {
35
+ if (apiUser.type !== FRONTEND) {
36
+ res.status(403).send({
37
+ message: TOKEN_TYPE_ERROR_MESSAGE,
38
+ });
39
+ return;
40
+ }
41
+ req.user = apiUser;
42
+ next();
43
+ }
44
+ else {
45
+ res.status(401).send({
46
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
47
+ });
48
+ return;
49
+ }
50
+ }
51
+ catch (error) {
52
+ logger.warn(error);
53
+ res.status(401).send({
54
+ message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
55
+ });
56
+ return;
57
+ }
58
+ };
59
+ };
60
+ export default frontendApiAccessMiddleware;
61
+ //# sourceMappingURL=frontend-token-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend-token-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/frontend-token-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EACH,iCAAiC,EACjC,wBAAwB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,EACI,SAAS,EACT,cAAc,EACd,YAAY,GACwD,EACxE,EAAE,eAAe,EAA6C,EAC3D,EAAE;IACL,MAAM,MAAM,GAAG,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,gCAAgC,GAAG,YAAY,CAAC,SAAS,CAC3D,kCAAkC,CACrC,CAAC;QACF,gCAAgC;QAChC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACpC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,uDAAuD;YACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,wBAAwB;iBACpC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ;gBACpB,CAAC,CAAC,MAAM,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;YAElC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,OAAO,EAAE,wBAAwB;qBACpC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;gBACnB,IAAI,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,iCAAiC;aAC7C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
@@ -3,7 +3,7 @@ export const userTokenClientApiLogger = ({ getLogger, flagResolver, }) => {
3
3
  const logger = getLogger('/middleware/user-token-client-api-logger-middleware.ts');
4
4
  const apiToken = req.header('authorization');
5
5
  if ((apiToken?.startsWith('user:') || apiToken?.startsWith('*:*.')) &&
6
- flagResolver.isEnabled('userTokenWithClientApiLogging')) {
6
+ !flagResolver.isEnabled('userTokenWithClientApiLoggingKillSwitch')) {
7
7
  logger.info('In the next version update, calling API endpoints under /api/client/ using Personal Access Tokens and Service Accounts will no longer be supported. Please update your integrations to use the new supported authentication method before upgrading to avoid service disruption.');
8
8
  }
9
9
  next();
@@ -1 +1 @@
1
- {"version":3,"file":"user-token-client-api-logger-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/user-token-client-api-logger-middleware.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,SAAS,EACT,YAAY,GACqC,EAAO,EAAE;IAC1D,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,SAAS,CACpB,wDAAwD,CAC3D,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IACI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,YAAY,CAAC,SAAS,CAAC,+BAA+B,CAAC,EACzD,CAAC;YACC,MAAM,CAAC,IAAI,CACP,kRAAkR,CACrR,CAAC;QACN,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"user-token-client-api-logger-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/user-token-client-api-logger-middleware.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,SAAS,EACT,YAAY,GACqC,EAAO,EAAE;IAC1D,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,SAAS,CACpB,wDAAwD,CAC3D,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IACI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC,YAAY,CAAC,SAAS,CAAC,yCAAyC,CAAC,EACpE,CAAC;YACC,MAAM,CAAC,IAAI,CACP,kRAAkR,CACrR,CAAC;QACN,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -20,7 +20,7 @@ export declare const eventSchema: {
20
20
  readonly type: {
21
21
  readonly type: "string";
22
22
  readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
23
- readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
23
+ readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
24
24
  readonly example: "feature-created";
25
25
  };
26
26
  readonly createdBy: {
@@ -43,7 +43,7 @@ export declare const eventSearchResponseSchema: {
43
43
  readonly type: {
44
44
  readonly type: "string";
45
45
  readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
46
- readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
46
+ readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
47
47
  readonly example: "feature-created";
48
48
  };
49
49
  readonly createdBy: {
@@ -50,7 +50,7 @@ export declare const eventsSchema: {
50
50
  readonly type: {
51
51
  readonly type: "string";
52
52
  readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
53
- readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
53
+ readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
54
54
  readonly example: "feature-created";
55
55
  };
56
56
  readonly createdBy: {