@fntio/infra-client 0.0.0-stage → 0.5.0

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 (940) hide show
  1. package/CHANGELOG.md +193 -0
  2. package/LICENSE +93 -0
  3. package/README.md +875 -2
  4. package/assets/acl-reconciler/index.js +1604 -0
  5. package/assets/api/index.js +9857 -0
  6. package/assets/api/package.json +9 -0
  7. package/assets/api/vendor_modules/.package-lock.json +857 -0
  8. package/assets/api/vendor_modules/accepts/HISTORY.md +243 -0
  9. package/assets/api/vendor_modules/accepts/LICENSE +23 -0
  10. package/assets/api/vendor_modules/accepts/README.md +140 -0
  11. package/assets/api/vendor_modules/accepts/index.js +238 -0
  12. package/assets/api/vendor_modules/accepts/package.json +47 -0
  13. package/assets/api/vendor_modules/array-flatten/LICENSE +21 -0
  14. package/assets/api/vendor_modules/array-flatten/README.md +43 -0
  15. package/assets/api/vendor_modules/array-flatten/array-flatten.js +64 -0
  16. package/assets/api/vendor_modules/array-flatten/package.json +39 -0
  17. package/assets/api/vendor_modules/aws-jwt-verify/LICENSE +175 -0
  18. package/assets/api/vendor_modules/aws-jwt-verify/README.md +1033 -0
  19. package/assets/api/vendor_modules/aws-jwt-verify/asn1.d.ts +20 -0
  20. package/assets/api/vendor_modules/aws-jwt-verify/assert.d.ts +41 -0
  21. package/assets/api/vendor_modules/aws-jwt-verify/cognito-verifier.d.ts +183 -0
  22. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/asn1.js +301 -0
  23. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/assert.js +108 -0
  24. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/cognito-verifier.js +158 -0
  25. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/error.js +131 -0
  26. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https-common.js +29 -0
  27. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https-node.js +89 -0
  28. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https.js +52 -0
  29. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/index.js +9 -0
  30. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwk.js +221 -0
  31. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt-model.js +10 -0
  32. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt-rsa.js +397 -0
  33. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt.js +161 -0
  34. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat-node.js +48 -0
  35. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat-web.js +78 -0
  36. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat.js +11 -0
  37. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/package.json +1 -0
  38. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/safe-json-parse.js +34 -0
  39. package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/typing-util.js +6 -0
  40. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/asn1.js +296 -0
  41. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/assert.js +101 -0
  42. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/cognito-verifier.js +153 -0
  43. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/error.js +101 -0
  44. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https-common.js +25 -0
  45. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https-node.js +85 -0
  46. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https.js +48 -0
  47. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/index.js +4 -0
  48. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwk.js +208 -0
  49. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt-model.js +7 -0
  50. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt-rsa.js +389 -0
  51. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt.js +156 -0
  52. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat-node.js +45 -0
  53. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat-web.js +75 -0
  54. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat.js +10 -0
  55. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/package.json +1 -0
  56. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/safe-json-parse.js +29 -0
  57. package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/typing-util.js +5 -0
  58. package/assets/api/vendor_modules/aws-jwt-verify/error.d.ts +108 -0
  59. package/assets/api/vendor_modules/aws-jwt-verify/https-common.d.ts +9 -0
  60. package/assets/api/vendor_modules/aws-jwt-verify/https-node.d.ts +20 -0
  61. package/assets/api/vendor_modules/aws-jwt-verify/https.d.ts +35 -0
  62. package/assets/api/vendor_modules/aws-jwt-verify/index.d.ts +2 -0
  63. package/assets/api/vendor_modules/aws-jwt-verify/jwk.d.ts +76 -0
  64. package/assets/api/vendor_modules/aws-jwt-verify/jwt-model.d.ts +78 -0
  65. package/assets/api/vendor_modules/aws-jwt-verify/jwt-rsa.d.ts +348 -0
  66. package/assets/api/vendor_modules/aws-jwt-verify/jwt.d.ts +51 -0
  67. package/assets/api/vendor_modules/aws-jwt-verify/package.json +136 -0
  68. package/assets/api/vendor_modules/aws-jwt-verify/safe-json-parse.d.ts +18 -0
  69. package/assets/api/vendor_modules/aws-jwt-verify/typing-util.d.ts +38 -0
  70. package/assets/api/vendor_modules/body-parser/HISTORY.md +703 -0
  71. package/assets/api/vendor_modules/body-parser/LICENSE +23 -0
  72. package/assets/api/vendor_modules/body-parser/README.md +476 -0
  73. package/assets/api/vendor_modules/body-parser/index.js +156 -0
  74. package/assets/api/vendor_modules/body-parser/lib/read.js +205 -0
  75. package/assets/api/vendor_modules/body-parser/lib/types/json.js +247 -0
  76. package/assets/api/vendor_modules/body-parser/lib/types/raw.js +105 -0
  77. package/assets/api/vendor_modules/body-parser/lib/types/text.js +125 -0
  78. package/assets/api/vendor_modules/body-parser/lib/types/urlencoded.js +303 -0
  79. package/assets/api/vendor_modules/body-parser/node_modules/qs/.editorconfig +46 -0
  80. package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/FUNDING.yml +12 -0
  81. package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/SECURITY.md +11 -0
  82. package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/THREAT_MODEL.md +80 -0
  83. package/assets/api/vendor_modules/body-parser/node_modules/qs/.nycrc +13 -0
  84. package/assets/api/vendor_modules/body-parser/node_modules/qs/CHANGELOG.md +872 -0
  85. package/assets/api/vendor_modules/body-parser/node_modules/qs/LICENSE.md +29 -0
  86. package/assets/api/vendor_modules/body-parser/node_modules/qs/README.md +804 -0
  87. package/assets/api/vendor_modules/body-parser/node_modules/qs/dist/qs.js +141 -0
  88. package/assets/api/vendor_modules/body-parser/node_modules/qs/eslint.config.mjs +57 -0
  89. package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/formats.js +23 -0
  90. package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/index.js +11 -0
  91. package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/parse.js +503 -0
  92. package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/stringify.js +378 -0
  93. package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/utils.js +512 -0
  94. package/assets/api/vendor_modules/body-parser/node_modules/qs/package.json +95 -0
  95. package/assets/api/vendor_modules/body-parser/node_modules/qs/test/empty-keys-cases.js +267 -0
  96. package/assets/api/vendor_modules/body-parser/node_modules/qs/test/parse.js +2296 -0
  97. package/assets/api/vendor_modules/body-parser/node_modules/qs/test/stringify.js +1995 -0
  98. package/assets/api/vendor_modules/body-parser/node_modules/qs/test/utils.js +822 -0
  99. package/assets/api/vendor_modules/body-parser/package.json +55 -0
  100. package/assets/api/vendor_modules/bytes/History.md +97 -0
  101. package/assets/api/vendor_modules/bytes/LICENSE +23 -0
  102. package/assets/api/vendor_modules/bytes/Readme.md +152 -0
  103. package/assets/api/vendor_modules/bytes/index.js +170 -0
  104. package/assets/api/vendor_modules/bytes/package.json +42 -0
  105. package/assets/api/vendor_modules/call-bind-apply-helpers/.eslintrc +17 -0
  106. package/assets/api/vendor_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  107. package/assets/api/vendor_modules/call-bind-apply-helpers/.nycrc +9 -0
  108. package/assets/api/vendor_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  109. package/assets/api/vendor_modules/call-bind-apply-helpers/LICENSE +21 -0
  110. package/assets/api/vendor_modules/call-bind-apply-helpers/README.md +62 -0
  111. package/assets/api/vendor_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  112. package/assets/api/vendor_modules/call-bind-apply-helpers/actualApply.js +10 -0
  113. package/assets/api/vendor_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  114. package/assets/api/vendor_modules/call-bind-apply-helpers/applyBind.js +10 -0
  115. package/assets/api/vendor_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  116. package/assets/api/vendor_modules/call-bind-apply-helpers/functionApply.js +4 -0
  117. package/assets/api/vendor_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  118. package/assets/api/vendor_modules/call-bind-apply-helpers/functionCall.js +4 -0
  119. package/assets/api/vendor_modules/call-bind-apply-helpers/index.d.ts +64 -0
  120. package/assets/api/vendor_modules/call-bind-apply-helpers/index.js +15 -0
  121. package/assets/api/vendor_modules/call-bind-apply-helpers/package.json +85 -0
  122. package/assets/api/vendor_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  123. package/assets/api/vendor_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  124. package/assets/api/vendor_modules/call-bind-apply-helpers/test/index.js +63 -0
  125. package/assets/api/vendor_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  126. package/assets/api/vendor_modules/call-bound/.eslintrc +13 -0
  127. package/assets/api/vendor_modules/call-bound/.github/FUNDING.yml +12 -0
  128. package/assets/api/vendor_modules/call-bound/.nycrc +9 -0
  129. package/assets/api/vendor_modules/call-bound/CHANGELOG.md +42 -0
  130. package/assets/api/vendor_modules/call-bound/LICENSE +21 -0
  131. package/assets/api/vendor_modules/call-bound/README.md +53 -0
  132. package/assets/api/vendor_modules/call-bound/index.d.ts +94 -0
  133. package/assets/api/vendor_modules/call-bound/index.js +19 -0
  134. package/assets/api/vendor_modules/call-bound/package.json +99 -0
  135. package/assets/api/vendor_modules/call-bound/test/index.js +61 -0
  136. package/assets/api/vendor_modules/call-bound/tsconfig.json +10 -0
  137. package/assets/api/vendor_modules/content-disposition/HISTORY.md +60 -0
  138. package/assets/api/vendor_modules/content-disposition/LICENSE +22 -0
  139. package/assets/api/vendor_modules/content-disposition/README.md +142 -0
  140. package/assets/api/vendor_modules/content-disposition/index.js +458 -0
  141. package/assets/api/vendor_modules/content-disposition/package.json +44 -0
  142. package/assets/api/vendor_modules/content-type/HISTORY.md +29 -0
  143. package/assets/api/vendor_modules/content-type/LICENSE +22 -0
  144. package/assets/api/vendor_modules/content-type/README.md +94 -0
  145. package/assets/api/vendor_modules/content-type/index.js +225 -0
  146. package/assets/api/vendor_modules/content-type/package.json +42 -0
  147. package/assets/api/vendor_modules/cookie/LICENSE +24 -0
  148. package/assets/api/vendor_modules/cookie/README.md +317 -0
  149. package/assets/api/vendor_modules/cookie/SECURITY.md +25 -0
  150. package/assets/api/vendor_modules/cookie/index.js +335 -0
  151. package/assets/api/vendor_modules/cookie/package.json +44 -0
  152. package/assets/api/vendor_modules/cookie-signature/History.md +42 -0
  153. package/assets/api/vendor_modules/cookie-signature/Readme.md +42 -0
  154. package/assets/api/vendor_modules/cookie-signature/index.js +51 -0
  155. package/assets/api/vendor_modules/cookie-signature/package.json +18 -0
  156. package/assets/api/vendor_modules/debug/.coveralls.yml +1 -0
  157. package/assets/api/vendor_modules/debug/.eslintrc +11 -0
  158. package/assets/api/vendor_modules/debug/.travis.yml +14 -0
  159. package/assets/api/vendor_modules/debug/CHANGELOG.md +362 -0
  160. package/assets/api/vendor_modules/debug/LICENSE +19 -0
  161. package/assets/api/vendor_modules/debug/Makefile +50 -0
  162. package/assets/api/vendor_modules/debug/README.md +312 -0
  163. package/assets/api/vendor_modules/debug/component.json +19 -0
  164. package/assets/api/vendor_modules/debug/karma.conf.js +70 -0
  165. package/assets/api/vendor_modules/debug/node.js +1 -0
  166. package/assets/api/vendor_modules/debug/package.json +49 -0
  167. package/assets/api/vendor_modules/debug/src/browser.js +185 -0
  168. package/assets/api/vendor_modules/debug/src/debug.js +202 -0
  169. package/assets/api/vendor_modules/debug/src/index.js +10 -0
  170. package/assets/api/vendor_modules/debug/src/inspector-log.js +15 -0
  171. package/assets/api/vendor_modules/debug/src/node.js +248 -0
  172. package/assets/api/vendor_modules/depd/History.md +103 -0
  173. package/assets/api/vendor_modules/depd/LICENSE +22 -0
  174. package/assets/api/vendor_modules/depd/Readme.md +280 -0
  175. package/assets/api/vendor_modules/depd/index.js +538 -0
  176. package/assets/api/vendor_modules/depd/lib/browser/index.js +77 -0
  177. package/assets/api/vendor_modules/depd/package.json +45 -0
  178. package/assets/api/vendor_modules/destroy/LICENSE +23 -0
  179. package/assets/api/vendor_modules/destroy/README.md +63 -0
  180. package/assets/api/vendor_modules/destroy/index.js +209 -0
  181. package/assets/api/vendor_modules/destroy/package.json +48 -0
  182. package/assets/api/vendor_modules/dunder-proto/.eslintrc +5 -0
  183. package/assets/api/vendor_modules/dunder-proto/.github/FUNDING.yml +12 -0
  184. package/assets/api/vendor_modules/dunder-proto/.nycrc +13 -0
  185. package/assets/api/vendor_modules/dunder-proto/CHANGELOG.md +24 -0
  186. package/assets/api/vendor_modules/dunder-proto/LICENSE +21 -0
  187. package/assets/api/vendor_modules/dunder-proto/README.md +54 -0
  188. package/assets/api/vendor_modules/dunder-proto/get.d.ts +5 -0
  189. package/assets/api/vendor_modules/dunder-proto/get.js +30 -0
  190. package/assets/api/vendor_modules/dunder-proto/package.json +76 -0
  191. package/assets/api/vendor_modules/dunder-proto/set.d.ts +5 -0
  192. package/assets/api/vendor_modules/dunder-proto/set.js +35 -0
  193. package/assets/api/vendor_modules/dunder-proto/test/get.js +34 -0
  194. package/assets/api/vendor_modules/dunder-proto/test/index.js +4 -0
  195. package/assets/api/vendor_modules/dunder-proto/test/set.js +50 -0
  196. package/assets/api/vendor_modules/dunder-proto/tsconfig.json +9 -0
  197. package/assets/api/vendor_modules/ee-first/LICENSE +22 -0
  198. package/assets/api/vendor_modules/ee-first/README.md +80 -0
  199. package/assets/api/vendor_modules/ee-first/index.js +95 -0
  200. package/assets/api/vendor_modules/ee-first/package.json +29 -0
  201. package/assets/api/vendor_modules/encodeurl/LICENSE +22 -0
  202. package/assets/api/vendor_modules/encodeurl/README.md +109 -0
  203. package/assets/api/vendor_modules/encodeurl/index.js +60 -0
  204. package/assets/api/vendor_modules/encodeurl/package.json +40 -0
  205. package/assets/api/vendor_modules/es-define-property/.eslintrc +13 -0
  206. package/assets/api/vendor_modules/es-define-property/.github/FUNDING.yml +12 -0
  207. package/assets/api/vendor_modules/es-define-property/.nycrc +9 -0
  208. package/assets/api/vendor_modules/es-define-property/CHANGELOG.md +29 -0
  209. package/assets/api/vendor_modules/es-define-property/LICENSE +21 -0
  210. package/assets/api/vendor_modules/es-define-property/README.md +49 -0
  211. package/assets/api/vendor_modules/es-define-property/index.d.ts +3 -0
  212. package/assets/api/vendor_modules/es-define-property/index.js +14 -0
  213. package/assets/api/vendor_modules/es-define-property/package.json +81 -0
  214. package/assets/api/vendor_modules/es-define-property/test/index.js +56 -0
  215. package/assets/api/vendor_modules/es-define-property/tsconfig.json +10 -0
  216. package/assets/api/vendor_modules/es-errors/.eslintrc +5 -0
  217. package/assets/api/vendor_modules/es-errors/.github/FUNDING.yml +12 -0
  218. package/assets/api/vendor_modules/es-errors/CHANGELOG.md +40 -0
  219. package/assets/api/vendor_modules/es-errors/LICENSE +21 -0
  220. package/assets/api/vendor_modules/es-errors/README.md +55 -0
  221. package/assets/api/vendor_modules/es-errors/eval.d.ts +3 -0
  222. package/assets/api/vendor_modules/es-errors/eval.js +4 -0
  223. package/assets/api/vendor_modules/es-errors/index.d.ts +3 -0
  224. package/assets/api/vendor_modules/es-errors/index.js +4 -0
  225. package/assets/api/vendor_modules/es-errors/package.json +80 -0
  226. package/assets/api/vendor_modules/es-errors/range.d.ts +3 -0
  227. package/assets/api/vendor_modules/es-errors/range.js +4 -0
  228. package/assets/api/vendor_modules/es-errors/ref.d.ts +3 -0
  229. package/assets/api/vendor_modules/es-errors/ref.js +4 -0
  230. package/assets/api/vendor_modules/es-errors/syntax.d.ts +3 -0
  231. package/assets/api/vendor_modules/es-errors/syntax.js +4 -0
  232. package/assets/api/vendor_modules/es-errors/test/index.js +19 -0
  233. package/assets/api/vendor_modules/es-errors/tsconfig.json +49 -0
  234. package/assets/api/vendor_modules/es-errors/type.d.ts +3 -0
  235. package/assets/api/vendor_modules/es-errors/type.js +4 -0
  236. package/assets/api/vendor_modules/es-errors/uri.d.ts +3 -0
  237. package/assets/api/vendor_modules/es-errors/uri.js +4 -0
  238. package/assets/api/vendor_modules/es-object-atoms/.eslintrc +16 -0
  239. package/assets/api/vendor_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  240. package/assets/api/vendor_modules/es-object-atoms/CHANGELOG.md +44 -0
  241. package/assets/api/vendor_modules/es-object-atoms/LICENSE +21 -0
  242. package/assets/api/vendor_modules/es-object-atoms/README.md +63 -0
  243. package/assets/api/vendor_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  244. package/assets/api/vendor_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  245. package/assets/api/vendor_modules/es-object-atoms/ToObject.d.ts +7 -0
  246. package/assets/api/vendor_modules/es-object-atoms/ToObject.js +10 -0
  247. package/assets/api/vendor_modules/es-object-atoms/index.d.ts +3 -0
  248. package/assets/api/vendor_modules/es-object-atoms/index.js +4 -0
  249. package/assets/api/vendor_modules/es-object-atoms/isObject.d.ts +3 -0
  250. package/assets/api/vendor_modules/es-object-atoms/isObject.js +6 -0
  251. package/assets/api/vendor_modules/es-object-atoms/package.json +79 -0
  252. package/assets/api/vendor_modules/es-object-atoms/test/index.js +38 -0
  253. package/assets/api/vendor_modules/es-object-atoms/tsconfig.json +7 -0
  254. package/assets/api/vendor_modules/escape-html/LICENSE +24 -0
  255. package/assets/api/vendor_modules/escape-html/Readme.md +43 -0
  256. package/assets/api/vendor_modules/escape-html/index.js +78 -0
  257. package/assets/api/vendor_modules/escape-html/package.json +24 -0
  258. package/assets/api/vendor_modules/etag/HISTORY.md +83 -0
  259. package/assets/api/vendor_modules/etag/LICENSE +22 -0
  260. package/assets/api/vendor_modules/etag/README.md +159 -0
  261. package/assets/api/vendor_modules/etag/index.js +131 -0
  262. package/assets/api/vendor_modules/etag/package.json +47 -0
  263. package/assets/api/vendor_modules/express/History.md +3676 -0
  264. package/assets/api/vendor_modules/express/LICENSE +24 -0
  265. package/assets/api/vendor_modules/express/Readme.md +260 -0
  266. package/assets/api/vendor_modules/express/index.js +11 -0
  267. package/assets/api/vendor_modules/express/lib/application.js +661 -0
  268. package/assets/api/vendor_modules/express/lib/express.js +116 -0
  269. package/assets/api/vendor_modules/express/lib/middleware/init.js +43 -0
  270. package/assets/api/vendor_modules/express/lib/middleware/query.js +47 -0
  271. package/assets/api/vendor_modules/express/lib/request.js +525 -0
  272. package/assets/api/vendor_modules/express/lib/response.js +1179 -0
  273. package/assets/api/vendor_modules/express/lib/router/index.js +673 -0
  274. package/assets/api/vendor_modules/express/lib/router/layer.js +181 -0
  275. package/assets/api/vendor_modules/express/lib/router/route.js +230 -0
  276. package/assets/api/vendor_modules/express/lib/utils.js +304 -0
  277. package/assets/api/vendor_modules/express/lib/view.js +182 -0
  278. package/assets/api/vendor_modules/express/package.json +102 -0
  279. package/assets/api/vendor_modules/finalhandler/HISTORY.md +216 -0
  280. package/assets/api/vendor_modules/finalhandler/LICENSE +22 -0
  281. package/assets/api/vendor_modules/finalhandler/README.md +147 -0
  282. package/assets/api/vendor_modules/finalhandler/SECURITY.md +25 -0
  283. package/assets/api/vendor_modules/finalhandler/index.js +341 -0
  284. package/assets/api/vendor_modules/finalhandler/package.json +47 -0
  285. package/assets/api/vendor_modules/forwarded/HISTORY.md +21 -0
  286. package/assets/api/vendor_modules/forwarded/LICENSE +22 -0
  287. package/assets/api/vendor_modules/forwarded/README.md +57 -0
  288. package/assets/api/vendor_modules/forwarded/index.js +90 -0
  289. package/assets/api/vendor_modules/forwarded/package.json +45 -0
  290. package/assets/api/vendor_modules/fresh/HISTORY.md +70 -0
  291. package/assets/api/vendor_modules/fresh/LICENSE +23 -0
  292. package/assets/api/vendor_modules/fresh/README.md +119 -0
  293. package/assets/api/vendor_modules/fresh/index.js +137 -0
  294. package/assets/api/vendor_modules/fresh/package.json +46 -0
  295. package/assets/api/vendor_modules/function-bind/.eslintrc +21 -0
  296. package/assets/api/vendor_modules/function-bind/.github/FUNDING.yml +12 -0
  297. package/assets/api/vendor_modules/function-bind/.github/SECURITY.md +3 -0
  298. package/assets/api/vendor_modules/function-bind/.nycrc +13 -0
  299. package/assets/api/vendor_modules/function-bind/CHANGELOG.md +136 -0
  300. package/assets/api/vendor_modules/function-bind/LICENSE +20 -0
  301. package/assets/api/vendor_modules/function-bind/README.md +46 -0
  302. package/assets/api/vendor_modules/function-bind/implementation.js +84 -0
  303. package/assets/api/vendor_modules/function-bind/index.js +5 -0
  304. package/assets/api/vendor_modules/function-bind/package.json +87 -0
  305. package/assets/api/vendor_modules/function-bind/test/.eslintrc +9 -0
  306. package/assets/api/vendor_modules/function-bind/test/index.js +252 -0
  307. package/assets/api/vendor_modules/get-intrinsic/.eslintrc +42 -0
  308. package/assets/api/vendor_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  309. package/assets/api/vendor_modules/get-intrinsic/.nycrc +9 -0
  310. package/assets/api/vendor_modules/get-intrinsic/CHANGELOG.md +186 -0
  311. package/assets/api/vendor_modules/get-intrinsic/LICENSE +21 -0
  312. package/assets/api/vendor_modules/get-intrinsic/README.md +71 -0
  313. package/assets/api/vendor_modules/get-intrinsic/index.js +378 -0
  314. package/assets/api/vendor_modules/get-intrinsic/package.json +97 -0
  315. package/assets/api/vendor_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  316. package/assets/api/vendor_modules/get-proto/.eslintrc +10 -0
  317. package/assets/api/vendor_modules/get-proto/.github/FUNDING.yml +12 -0
  318. package/assets/api/vendor_modules/get-proto/.nycrc +9 -0
  319. package/assets/api/vendor_modules/get-proto/CHANGELOG.md +21 -0
  320. package/assets/api/vendor_modules/get-proto/LICENSE +21 -0
  321. package/assets/api/vendor_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  322. package/assets/api/vendor_modules/get-proto/Object.getPrototypeOf.js +6 -0
  323. package/assets/api/vendor_modules/get-proto/README.md +50 -0
  324. package/assets/api/vendor_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  325. package/assets/api/vendor_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  326. package/assets/api/vendor_modules/get-proto/index.d.ts +5 -0
  327. package/assets/api/vendor_modules/get-proto/index.js +27 -0
  328. package/assets/api/vendor_modules/get-proto/package.json +81 -0
  329. package/assets/api/vendor_modules/get-proto/test/index.js +68 -0
  330. package/assets/api/vendor_modules/get-proto/tsconfig.json +9 -0
  331. package/assets/api/vendor_modules/gopd/.eslintrc +16 -0
  332. package/assets/api/vendor_modules/gopd/.github/FUNDING.yml +12 -0
  333. package/assets/api/vendor_modules/gopd/CHANGELOG.md +45 -0
  334. package/assets/api/vendor_modules/gopd/LICENSE +21 -0
  335. package/assets/api/vendor_modules/gopd/README.md +40 -0
  336. package/assets/api/vendor_modules/gopd/gOPD.d.ts +1 -0
  337. package/assets/api/vendor_modules/gopd/gOPD.js +4 -0
  338. package/assets/api/vendor_modules/gopd/index.d.ts +5 -0
  339. package/assets/api/vendor_modules/gopd/index.js +15 -0
  340. package/assets/api/vendor_modules/gopd/package.json +77 -0
  341. package/assets/api/vendor_modules/gopd/test/index.js +36 -0
  342. package/assets/api/vendor_modules/gopd/tsconfig.json +9 -0
  343. package/assets/api/vendor_modules/has-symbols/.eslintrc +11 -0
  344. package/assets/api/vendor_modules/has-symbols/.github/FUNDING.yml +12 -0
  345. package/assets/api/vendor_modules/has-symbols/.nycrc +9 -0
  346. package/assets/api/vendor_modules/has-symbols/CHANGELOG.md +91 -0
  347. package/assets/api/vendor_modules/has-symbols/LICENSE +21 -0
  348. package/assets/api/vendor_modules/has-symbols/README.md +46 -0
  349. package/assets/api/vendor_modules/has-symbols/index.d.ts +3 -0
  350. package/assets/api/vendor_modules/has-symbols/index.js +14 -0
  351. package/assets/api/vendor_modules/has-symbols/package.json +111 -0
  352. package/assets/api/vendor_modules/has-symbols/shams.d.ts +3 -0
  353. package/assets/api/vendor_modules/has-symbols/shams.js +45 -0
  354. package/assets/api/vendor_modules/has-symbols/test/index.js +22 -0
  355. package/assets/api/vendor_modules/has-symbols/test/shams/core-js.js +29 -0
  356. package/assets/api/vendor_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  357. package/assets/api/vendor_modules/has-symbols/test/tests.js +58 -0
  358. package/assets/api/vendor_modules/has-symbols/tsconfig.json +10 -0
  359. package/assets/api/vendor_modules/hasown/.github/FUNDING.yml +12 -0
  360. package/assets/api/vendor_modules/hasown/.nycrc +13 -0
  361. package/assets/api/vendor_modules/hasown/CHANGELOG.md +58 -0
  362. package/assets/api/vendor_modules/hasown/LICENSE +21 -0
  363. package/assets/api/vendor_modules/hasown/README.md +40 -0
  364. package/assets/api/vendor_modules/hasown/eslint.config.mjs +6 -0
  365. package/assets/api/vendor_modules/hasown/index.d.ts +3 -0
  366. package/assets/api/vendor_modules/hasown/index.js +8 -0
  367. package/assets/api/vendor_modules/hasown/package.json +91 -0
  368. package/assets/api/vendor_modules/hasown/tsconfig.json +6 -0
  369. package/assets/api/vendor_modules/http-errors/HISTORY.md +186 -0
  370. package/assets/api/vendor_modules/http-errors/LICENSE +23 -0
  371. package/assets/api/vendor_modules/http-errors/README.md +169 -0
  372. package/assets/api/vendor_modules/http-errors/index.js +290 -0
  373. package/assets/api/vendor_modules/http-errors/package.json +54 -0
  374. package/assets/api/vendor_modules/iconv-lite/Changelog.md +162 -0
  375. package/assets/api/vendor_modules/iconv-lite/LICENSE +21 -0
  376. package/assets/api/vendor_modules/iconv-lite/README.md +156 -0
  377. package/assets/api/vendor_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  378. package/assets/api/vendor_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  379. package/assets/api/vendor_modules/iconv-lite/encodings/index.js +22 -0
  380. package/assets/api/vendor_modules/iconv-lite/encodings/internal.js +188 -0
  381. package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  382. package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  383. package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  384. package/assets/api/vendor_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  385. package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  386. package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  387. package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  388. package/assets/api/vendor_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  389. package/assets/api/vendor_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  390. package/assets/api/vendor_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  391. package/assets/api/vendor_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  392. package/assets/api/vendor_modules/iconv-lite/encodings/utf16.js +177 -0
  393. package/assets/api/vendor_modules/iconv-lite/encodings/utf7.js +290 -0
  394. package/assets/api/vendor_modules/iconv-lite/lib/bom-handling.js +52 -0
  395. package/assets/api/vendor_modules/iconv-lite/lib/extend-node.js +217 -0
  396. package/assets/api/vendor_modules/iconv-lite/lib/index.d.ts +24 -0
  397. package/assets/api/vendor_modules/iconv-lite/lib/index.js +153 -0
  398. package/assets/api/vendor_modules/iconv-lite/lib/streams.js +121 -0
  399. package/assets/api/vendor_modules/iconv-lite/package.json +46 -0
  400. package/assets/api/vendor_modules/inherits/LICENSE +16 -0
  401. package/assets/api/vendor_modules/inherits/README.md +42 -0
  402. package/assets/api/vendor_modules/inherits/inherits.js +9 -0
  403. package/assets/api/vendor_modules/inherits/inherits_browser.js +27 -0
  404. package/assets/api/vendor_modules/inherits/package.json +29 -0
  405. package/assets/api/vendor_modules/ipaddr.js/LICENSE +19 -0
  406. package/assets/api/vendor_modules/ipaddr.js/README.md +233 -0
  407. package/assets/api/vendor_modules/ipaddr.js/ipaddr.min.js +1 -0
  408. package/assets/api/vendor_modules/ipaddr.js/lib/ipaddr.js +673 -0
  409. package/assets/api/vendor_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  410. package/assets/api/vendor_modules/ipaddr.js/package.json +35 -0
  411. package/assets/api/vendor_modules/math-intrinsics/.eslintrc +16 -0
  412. package/assets/api/vendor_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  413. package/assets/api/vendor_modules/math-intrinsics/CHANGELOG.md +24 -0
  414. package/assets/api/vendor_modules/math-intrinsics/LICENSE +21 -0
  415. package/assets/api/vendor_modules/math-intrinsics/README.md +50 -0
  416. package/assets/api/vendor_modules/math-intrinsics/abs.d.ts +1 -0
  417. package/assets/api/vendor_modules/math-intrinsics/abs.js +4 -0
  418. package/assets/api/vendor_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  419. package/assets/api/vendor_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  420. package/assets/api/vendor_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  421. package/assets/api/vendor_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  422. package/assets/api/vendor_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  423. package/assets/api/vendor_modules/math-intrinsics/constants/maxValue.js +5 -0
  424. package/assets/api/vendor_modules/math-intrinsics/floor.d.ts +1 -0
  425. package/assets/api/vendor_modules/math-intrinsics/floor.js +4 -0
  426. package/assets/api/vendor_modules/math-intrinsics/isFinite.d.ts +3 -0
  427. package/assets/api/vendor_modules/math-intrinsics/isFinite.js +12 -0
  428. package/assets/api/vendor_modules/math-intrinsics/isInteger.d.ts +3 -0
  429. package/assets/api/vendor_modules/math-intrinsics/isInteger.js +16 -0
  430. package/assets/api/vendor_modules/math-intrinsics/isNaN.d.ts +1 -0
  431. package/assets/api/vendor_modules/math-intrinsics/isNaN.js +6 -0
  432. package/assets/api/vendor_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  433. package/assets/api/vendor_modules/math-intrinsics/isNegativeZero.js +6 -0
  434. package/assets/api/vendor_modules/math-intrinsics/max.d.ts +1 -0
  435. package/assets/api/vendor_modules/math-intrinsics/max.js +4 -0
  436. package/assets/api/vendor_modules/math-intrinsics/min.d.ts +1 -0
  437. package/assets/api/vendor_modules/math-intrinsics/min.js +4 -0
  438. package/assets/api/vendor_modules/math-intrinsics/mod.d.ts +3 -0
  439. package/assets/api/vendor_modules/math-intrinsics/mod.js +9 -0
  440. package/assets/api/vendor_modules/math-intrinsics/package.json +86 -0
  441. package/assets/api/vendor_modules/math-intrinsics/pow.d.ts +1 -0
  442. package/assets/api/vendor_modules/math-intrinsics/pow.js +4 -0
  443. package/assets/api/vendor_modules/math-intrinsics/round.d.ts +1 -0
  444. package/assets/api/vendor_modules/math-intrinsics/round.js +4 -0
  445. package/assets/api/vendor_modules/math-intrinsics/sign.d.ts +3 -0
  446. package/assets/api/vendor_modules/math-intrinsics/sign.js +11 -0
  447. package/assets/api/vendor_modules/math-intrinsics/test/index.js +192 -0
  448. package/assets/api/vendor_modules/math-intrinsics/tsconfig.json +3 -0
  449. package/assets/api/vendor_modules/media-typer/HISTORY.md +22 -0
  450. package/assets/api/vendor_modules/media-typer/LICENSE +22 -0
  451. package/assets/api/vendor_modules/media-typer/README.md +81 -0
  452. package/assets/api/vendor_modules/media-typer/index.js +270 -0
  453. package/assets/api/vendor_modules/media-typer/package.json +26 -0
  454. package/assets/api/vendor_modules/merge-descriptors/HISTORY.md +21 -0
  455. package/assets/api/vendor_modules/merge-descriptors/LICENSE +23 -0
  456. package/assets/api/vendor_modules/merge-descriptors/README.md +49 -0
  457. package/assets/api/vendor_modules/merge-descriptors/index.js +60 -0
  458. package/assets/api/vendor_modules/merge-descriptors/package.json +39 -0
  459. package/assets/api/vendor_modules/methods/HISTORY.md +29 -0
  460. package/assets/api/vendor_modules/methods/LICENSE +24 -0
  461. package/assets/api/vendor_modules/methods/README.md +51 -0
  462. package/assets/api/vendor_modules/methods/index.js +69 -0
  463. package/assets/api/vendor_modules/methods/package.json +36 -0
  464. package/assets/api/vendor_modules/mime/CHANGELOG.md +164 -0
  465. package/assets/api/vendor_modules/mime/LICENSE +21 -0
  466. package/assets/api/vendor_modules/mime/README.md +90 -0
  467. package/assets/api/vendor_modules/mime/cli.js +8 -0
  468. package/assets/api/vendor_modules/mime/mime.js +108 -0
  469. package/assets/api/vendor_modules/mime/package.json +44 -0
  470. package/assets/api/vendor_modules/mime/src/build.js +53 -0
  471. package/assets/api/vendor_modules/mime/src/test.js +60 -0
  472. package/assets/api/vendor_modules/mime/types.json +1 -0
  473. package/assets/api/vendor_modules/mime-db/HISTORY.md +507 -0
  474. package/assets/api/vendor_modules/mime-db/LICENSE +23 -0
  475. package/assets/api/vendor_modules/mime-db/README.md +100 -0
  476. package/assets/api/vendor_modules/mime-db/db.json +8519 -0
  477. package/assets/api/vendor_modules/mime-db/index.js +12 -0
  478. package/assets/api/vendor_modules/mime-db/package.json +60 -0
  479. package/assets/api/vendor_modules/mime-types/HISTORY.md +397 -0
  480. package/assets/api/vendor_modules/mime-types/LICENSE +23 -0
  481. package/assets/api/vendor_modules/mime-types/README.md +113 -0
  482. package/assets/api/vendor_modules/mime-types/index.js +188 -0
  483. package/assets/api/vendor_modules/mime-types/package.json +44 -0
  484. package/assets/api/vendor_modules/ms/index.js +152 -0
  485. package/assets/api/vendor_modules/ms/license.md +21 -0
  486. package/assets/api/vendor_modules/ms/package.json +37 -0
  487. package/assets/api/vendor_modules/ms/readme.md +51 -0
  488. package/assets/api/vendor_modules/negotiator/HISTORY.md +108 -0
  489. package/assets/api/vendor_modules/negotiator/LICENSE +24 -0
  490. package/assets/api/vendor_modules/negotiator/README.md +203 -0
  491. package/assets/api/vendor_modules/negotiator/index.js +82 -0
  492. package/assets/api/vendor_modules/negotiator/lib/charset.js +169 -0
  493. package/assets/api/vendor_modules/negotiator/lib/encoding.js +184 -0
  494. package/assets/api/vendor_modules/negotiator/lib/language.js +179 -0
  495. package/assets/api/vendor_modules/negotiator/lib/mediaType.js +294 -0
  496. package/assets/api/vendor_modules/negotiator/package.json +42 -0
  497. package/assets/api/vendor_modules/object-inspect/.eslintrc +53 -0
  498. package/assets/api/vendor_modules/object-inspect/.github/FUNDING.yml +12 -0
  499. package/assets/api/vendor_modules/object-inspect/.nycrc +13 -0
  500. package/assets/api/vendor_modules/object-inspect/CHANGELOG.md +424 -0
  501. package/assets/api/vendor_modules/object-inspect/LICENSE +21 -0
  502. package/assets/api/vendor_modules/object-inspect/example/all.js +23 -0
  503. package/assets/api/vendor_modules/object-inspect/example/circular.js +6 -0
  504. package/assets/api/vendor_modules/object-inspect/example/fn.js +5 -0
  505. package/assets/api/vendor_modules/object-inspect/example/inspect.js +10 -0
  506. package/assets/api/vendor_modules/object-inspect/index.js +544 -0
  507. package/assets/api/vendor_modules/object-inspect/package-support.json +20 -0
  508. package/assets/api/vendor_modules/object-inspect/package.json +105 -0
  509. package/assets/api/vendor_modules/object-inspect/readme.markdown +84 -0
  510. package/assets/api/vendor_modules/object-inspect/test/bigint.js +58 -0
  511. package/assets/api/vendor_modules/object-inspect/test/browser/dom.js +15 -0
  512. package/assets/api/vendor_modules/object-inspect/test/circular.js +16 -0
  513. package/assets/api/vendor_modules/object-inspect/test/deep.js +12 -0
  514. package/assets/api/vendor_modules/object-inspect/test/element.js +53 -0
  515. package/assets/api/vendor_modules/object-inspect/test/err.js +48 -0
  516. package/assets/api/vendor_modules/object-inspect/test/fakes.js +29 -0
  517. package/assets/api/vendor_modules/object-inspect/test/fn.js +76 -0
  518. package/assets/api/vendor_modules/object-inspect/test/global.js +17 -0
  519. package/assets/api/vendor_modules/object-inspect/test/has.js +15 -0
  520. package/assets/api/vendor_modules/object-inspect/test/holes.js +15 -0
  521. package/assets/api/vendor_modules/object-inspect/test/indent-option.js +271 -0
  522. package/assets/api/vendor_modules/object-inspect/test/inspect.js +139 -0
  523. package/assets/api/vendor_modules/object-inspect/test/lowbyte.js +12 -0
  524. package/assets/api/vendor_modules/object-inspect/test/number.js +58 -0
  525. package/assets/api/vendor_modules/object-inspect/test/quoteStyle.js +26 -0
  526. package/assets/api/vendor_modules/object-inspect/test/toStringTag.js +40 -0
  527. package/assets/api/vendor_modules/object-inspect/test/undef.js +12 -0
  528. package/assets/api/vendor_modules/object-inspect/test/values.js +261 -0
  529. package/assets/api/vendor_modules/object-inspect/test-core-js.js +26 -0
  530. package/assets/api/vendor_modules/object-inspect/util.inspect.js +1 -0
  531. package/assets/api/vendor_modules/on-finished/HISTORY.md +98 -0
  532. package/assets/api/vendor_modules/on-finished/LICENSE +23 -0
  533. package/assets/api/vendor_modules/on-finished/README.md +162 -0
  534. package/assets/api/vendor_modules/on-finished/index.js +234 -0
  535. package/assets/api/vendor_modules/on-finished/package.json +39 -0
  536. package/assets/api/vendor_modules/parseurl/HISTORY.md +58 -0
  537. package/assets/api/vendor_modules/parseurl/LICENSE +24 -0
  538. package/assets/api/vendor_modules/parseurl/README.md +133 -0
  539. package/assets/api/vendor_modules/parseurl/index.js +158 -0
  540. package/assets/api/vendor_modules/parseurl/package.json +40 -0
  541. package/assets/api/vendor_modules/path-to-regexp/LICENSE +21 -0
  542. package/assets/api/vendor_modules/path-to-regexp/Readme.md +35 -0
  543. package/assets/api/vendor_modules/path-to-regexp/index.js +158 -0
  544. package/assets/api/vendor_modules/path-to-regexp/package.json +30 -0
  545. package/assets/api/vendor_modules/proxy-addr/HISTORY.md +167 -0
  546. package/assets/api/vendor_modules/proxy-addr/LICENSE +22 -0
  547. package/assets/api/vendor_modules/proxy-addr/README.md +139 -0
  548. package/assets/api/vendor_modules/proxy-addr/index.js +359 -0
  549. package/assets/api/vendor_modules/proxy-addr/package.json +51 -0
  550. package/assets/api/vendor_modules/qs/.editorconfig +46 -0
  551. package/assets/api/vendor_modules/qs/.github/FUNDING.yml +12 -0
  552. package/assets/api/vendor_modules/qs/.github/SECURITY.md +11 -0
  553. package/assets/api/vendor_modules/qs/.github/THREAT_MODEL.md +78 -0
  554. package/assets/api/vendor_modules/qs/.nycrc +13 -0
  555. package/assets/api/vendor_modules/qs/CHANGELOG.md +833 -0
  556. package/assets/api/vendor_modules/qs/LICENSE.md +29 -0
  557. package/assets/api/vendor_modules/qs/README.md +758 -0
  558. package/assets/api/vendor_modules/qs/dist/qs.js +141 -0
  559. package/assets/api/vendor_modules/qs/eslint.config.mjs +57 -0
  560. package/assets/api/vendor_modules/qs/lib/formats.js +23 -0
  561. package/assets/api/vendor_modules/qs/lib/index.js +11 -0
  562. package/assets/api/vendor_modules/qs/lib/parse.js +414 -0
  563. package/assets/api/vendor_modules/qs/lib/stringify.js +363 -0
  564. package/assets/api/vendor_modules/qs/lib/utils.js +381 -0
  565. package/assets/api/vendor_modules/qs/package.json +95 -0
  566. package/assets/api/vendor_modules/qs/test/empty-keys-cases.js +267 -0
  567. package/assets/api/vendor_modules/qs/test/parse.js +1933 -0
  568. package/assets/api/vendor_modules/qs/test/stringify.js +1448 -0
  569. package/assets/api/vendor_modules/qs/test/utils.js +626 -0
  570. package/assets/api/vendor_modules/range-parser/HISTORY.md +56 -0
  571. package/assets/api/vendor_modules/range-parser/LICENSE +23 -0
  572. package/assets/api/vendor_modules/range-parser/README.md +84 -0
  573. package/assets/api/vendor_modules/range-parser/index.js +162 -0
  574. package/assets/api/vendor_modules/range-parser/package.json +44 -0
  575. package/assets/api/vendor_modules/raw-body/LICENSE +22 -0
  576. package/assets/api/vendor_modules/raw-body/README.md +223 -0
  577. package/assets/api/vendor_modules/raw-body/index.d.ts +87 -0
  578. package/assets/api/vendor_modules/raw-body/index.js +336 -0
  579. package/assets/api/vendor_modules/raw-body/package.json +47 -0
  580. package/assets/api/vendor_modules/safe-buffer/LICENSE +21 -0
  581. package/assets/api/vendor_modules/safe-buffer/README.md +584 -0
  582. package/assets/api/vendor_modules/safe-buffer/index.d.ts +187 -0
  583. package/assets/api/vendor_modules/safe-buffer/index.js +65 -0
  584. package/assets/api/vendor_modules/safe-buffer/package.json +51 -0
  585. package/assets/api/vendor_modules/safer-buffer/LICENSE +21 -0
  586. package/assets/api/vendor_modules/safer-buffer/Porting-Buffer.md +268 -0
  587. package/assets/api/vendor_modules/safer-buffer/Readme.md +156 -0
  588. package/assets/api/vendor_modules/safer-buffer/dangerous.js +58 -0
  589. package/assets/api/vendor_modules/safer-buffer/package.json +34 -0
  590. package/assets/api/vendor_modules/safer-buffer/safer.js +77 -0
  591. package/assets/api/vendor_modules/safer-buffer/tests.js +406 -0
  592. package/assets/api/vendor_modules/send/HISTORY.md +538 -0
  593. package/assets/api/vendor_modules/send/LICENSE +23 -0
  594. package/assets/api/vendor_modules/send/README.md +327 -0
  595. package/assets/api/vendor_modules/send/SECURITY.md +24 -0
  596. package/assets/api/vendor_modules/send/index.js +1142 -0
  597. package/assets/api/vendor_modules/send/node_modules/ms/index.js +162 -0
  598. package/assets/api/vendor_modules/send/node_modules/ms/license.md +21 -0
  599. package/assets/api/vendor_modules/send/node_modules/ms/package.json +38 -0
  600. package/assets/api/vendor_modules/send/node_modules/ms/readme.md +59 -0
  601. package/assets/api/vendor_modules/send/package.json +62 -0
  602. package/assets/api/vendor_modules/serve-static/HISTORY.md +493 -0
  603. package/assets/api/vendor_modules/serve-static/LICENSE +25 -0
  604. package/assets/api/vendor_modules/serve-static/README.md +257 -0
  605. package/assets/api/vendor_modules/serve-static/index.js +209 -0
  606. package/assets/api/vendor_modules/serve-static/package.json +42 -0
  607. package/assets/api/vendor_modules/serverless-http/LICENSE.txt +33 -0
  608. package/assets/api/vendor_modules/serverless-http/README.md +117 -0
  609. package/assets/api/vendor_modules/serverless-http/lib/finish.js +42 -0
  610. package/assets/api/vendor_modules/serverless-http/lib/framework/get-framework.js +79 -0
  611. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/clean-up-event.js +98 -0
  612. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/create-request.js +110 -0
  613. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/format-response.js +45 -0
  614. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/index.js +15 -0
  615. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/is-binary.js +42 -0
  616. package/assets/api/vendor_modules/serverless-http/lib/provider/aws/sanitize-headers.js +21 -0
  617. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/clean-up-request.js +41 -0
  618. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/create-request.js +45 -0
  619. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/format-response.js +18 -0
  620. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/index.js +13 -0
  621. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/is-binary.js +42 -0
  622. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/sanitize-headers.js +23 -0
  623. package/assets/api/vendor_modules/serverless-http/lib/provider/azure/set-cookie.json +1 -0
  624. package/assets/api/vendor_modules/serverless-http/lib/provider/get-provider.js +17 -0
  625. package/assets/api/vendor_modules/serverless-http/lib/request.js +38 -0
  626. package/assets/api/vendor_modules/serverless-http/lib/response.js +135 -0
  627. package/assets/api/vendor_modules/serverless-http/package.json +93 -0
  628. package/assets/api/vendor_modules/serverless-http/serverless-http.d.ts +41 -0
  629. package/assets/api/vendor_modules/serverless-http/serverless-http.js +23 -0
  630. package/assets/api/vendor_modules/setprototypeof/LICENSE +13 -0
  631. package/assets/api/vendor_modules/setprototypeof/README.md +31 -0
  632. package/assets/api/vendor_modules/setprototypeof/index.d.ts +2 -0
  633. package/assets/api/vendor_modules/setprototypeof/index.js +17 -0
  634. package/assets/api/vendor_modules/setprototypeof/package.json +38 -0
  635. package/assets/api/vendor_modules/setprototypeof/test/index.js +24 -0
  636. package/assets/api/vendor_modules/side-channel/.editorconfig +9 -0
  637. package/assets/api/vendor_modules/side-channel/.eslintrc +12 -0
  638. package/assets/api/vendor_modules/side-channel/.github/FUNDING.yml +12 -0
  639. package/assets/api/vendor_modules/side-channel/.nycrc +13 -0
  640. package/assets/api/vendor_modules/side-channel/CHANGELOG.md +120 -0
  641. package/assets/api/vendor_modules/side-channel/LICENSE +21 -0
  642. package/assets/api/vendor_modules/side-channel/README.md +61 -0
  643. package/assets/api/vendor_modules/side-channel/index.d.ts +14 -0
  644. package/assets/api/vendor_modules/side-channel/index.js +46 -0
  645. package/assets/api/vendor_modules/side-channel/package.json +85 -0
  646. package/assets/api/vendor_modules/side-channel/test/index.js +120 -0
  647. package/assets/api/vendor_modules/side-channel/tsconfig.json +9 -0
  648. package/assets/api/vendor_modules/side-channel-list/.editorconfig +9 -0
  649. package/assets/api/vendor_modules/side-channel-list/.eslintrc +11 -0
  650. package/assets/api/vendor_modules/side-channel-list/.github/FUNDING.yml +12 -0
  651. package/assets/api/vendor_modules/side-channel-list/.nycrc +13 -0
  652. package/assets/api/vendor_modules/side-channel-list/CHANGELOG.md +36 -0
  653. package/assets/api/vendor_modules/side-channel-list/LICENSE +21 -0
  654. package/assets/api/vendor_modules/side-channel-list/README.md +62 -0
  655. package/assets/api/vendor_modules/side-channel-list/index.d.ts +13 -0
  656. package/assets/api/vendor_modules/side-channel-list/index.js +111 -0
  657. package/assets/api/vendor_modules/side-channel-list/list.d.ts +14 -0
  658. package/assets/api/vendor_modules/side-channel-list/package.json +77 -0
  659. package/assets/api/vendor_modules/side-channel-list/test/index.js +154 -0
  660. package/assets/api/vendor_modules/side-channel-list/tsconfig.json +9 -0
  661. package/assets/api/vendor_modules/side-channel-map/.editorconfig +9 -0
  662. package/assets/api/vendor_modules/side-channel-map/.eslintrc +11 -0
  663. package/assets/api/vendor_modules/side-channel-map/.github/FUNDING.yml +12 -0
  664. package/assets/api/vendor_modules/side-channel-map/.nycrc +13 -0
  665. package/assets/api/vendor_modules/side-channel-map/CHANGELOG.md +22 -0
  666. package/assets/api/vendor_modules/side-channel-map/LICENSE +21 -0
  667. package/assets/api/vendor_modules/side-channel-map/README.md +62 -0
  668. package/assets/api/vendor_modules/side-channel-map/index.d.ts +15 -0
  669. package/assets/api/vendor_modules/side-channel-map/index.js +68 -0
  670. package/assets/api/vendor_modules/side-channel-map/package.json +80 -0
  671. package/assets/api/vendor_modules/side-channel-map/test/index.js +114 -0
  672. package/assets/api/vendor_modules/side-channel-map/tsconfig.json +9 -0
  673. package/assets/api/vendor_modules/side-channel-weakmap/.editorconfig +9 -0
  674. package/assets/api/vendor_modules/side-channel-weakmap/.eslintrc +12 -0
  675. package/assets/api/vendor_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  676. package/assets/api/vendor_modules/side-channel-weakmap/.nycrc +13 -0
  677. package/assets/api/vendor_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  678. package/assets/api/vendor_modules/side-channel-weakmap/LICENSE +21 -0
  679. package/assets/api/vendor_modules/side-channel-weakmap/README.md +62 -0
  680. package/assets/api/vendor_modules/side-channel-weakmap/index.d.ts +15 -0
  681. package/assets/api/vendor_modules/side-channel-weakmap/index.js +84 -0
  682. package/assets/api/vendor_modules/side-channel-weakmap/package.json +87 -0
  683. package/assets/api/vendor_modules/side-channel-weakmap/test/index.js +114 -0
  684. package/assets/api/vendor_modules/side-channel-weakmap/tsconfig.json +9 -0
  685. package/assets/api/vendor_modules/statuses/HISTORY.md +87 -0
  686. package/assets/api/vendor_modules/statuses/LICENSE +23 -0
  687. package/assets/api/vendor_modules/statuses/README.md +139 -0
  688. package/assets/api/vendor_modules/statuses/codes.json +65 -0
  689. package/assets/api/vendor_modules/statuses/index.js +146 -0
  690. package/assets/api/vendor_modules/statuses/package.json +49 -0
  691. package/assets/api/vendor_modules/toidentifier/HISTORY.md +9 -0
  692. package/assets/api/vendor_modules/toidentifier/LICENSE +21 -0
  693. package/assets/api/vendor_modules/toidentifier/README.md +61 -0
  694. package/assets/api/vendor_modules/toidentifier/index.js +32 -0
  695. package/assets/api/vendor_modules/toidentifier/package.json +38 -0
  696. package/assets/api/vendor_modules/type-is/HISTORY.md +259 -0
  697. package/assets/api/vendor_modules/type-is/LICENSE +23 -0
  698. package/assets/api/vendor_modules/type-is/README.md +170 -0
  699. package/assets/api/vendor_modules/type-is/index.js +266 -0
  700. package/assets/api/vendor_modules/type-is/package.json +45 -0
  701. package/assets/api/vendor_modules/unpipe/HISTORY.md +4 -0
  702. package/assets/api/vendor_modules/unpipe/LICENSE +22 -0
  703. package/assets/api/vendor_modules/unpipe/README.md +43 -0
  704. package/assets/api/vendor_modules/unpipe/index.js +69 -0
  705. package/assets/api/vendor_modules/unpipe/package.json +27 -0
  706. package/assets/api/vendor_modules/utils-merge/LICENSE +20 -0
  707. package/assets/api/vendor_modules/utils-merge/README.md +34 -0
  708. package/assets/api/vendor_modules/utils-merge/index.js +23 -0
  709. package/assets/api/vendor_modules/utils-merge/package.json +40 -0
  710. package/assets/api/vendor_modules/vary/HISTORY.md +39 -0
  711. package/assets/api/vendor_modules/vary/LICENSE +22 -0
  712. package/assets/api/vendor_modules/vary/README.md +101 -0
  713. package/assets/api/vendor_modules/vary/index.js +149 -0
  714. package/assets/api/vendor_modules/vary/package.json +43 -0
  715. package/assets/federation-presignup/index.js +108 -0
  716. package/assets/firstadmin/index.js +361 -0
  717. package/assets/headscale-apikey/index.js +140 -0
  718. package/assets/invoke-relay/index.js +96 -0
  719. package/assets/issuer-canary/index.js +71 -0
  720. package/assets/issuer-publish/index.js +87 -0
  721. package/assets/keyminter/index.js +209 -0
  722. package/assets/plugin-authorizer/index.js +1740 -0
  723. package/assets/plugin-catalog/index.js +881 -0
  724. package/assets/reapproval/index.js +3761 -0
  725. package/assets/sg-manager/index.js +176 -0
  726. package/assets/tailnet-resolver/index.js +55 -0
  727. package/assets/web/chunk-2MOGDYK4.js +1 -0
  728. package/assets/web/chunk-2SO4BVIT.js +1 -0
  729. package/assets/web/chunk-2V6RSAAC.js +1 -0
  730. package/assets/web/chunk-32GNBTAL.js +1 -0
  731. package/assets/web/chunk-33SYY2JB.js +1 -0
  732. package/assets/web/chunk-3VWYT7AX.js +1 -0
  733. package/assets/web/chunk-4FG4DAWU.js +4 -0
  734. package/assets/web/chunk-4N2IUS6T.js +1 -0
  735. package/assets/web/chunk-4SK6XQ6C.js +1 -0
  736. package/assets/web/chunk-65WE5MXA.js +8 -0
  737. package/assets/web/chunk-6D7SSSJF.js +1 -0
  738. package/assets/web/chunk-6KFR7DYY.js +1 -0
  739. package/assets/web/chunk-A4WHI3ZG.js +8 -0
  740. package/assets/web/chunk-BNFKRZTP.js +1 -0
  741. package/assets/web/chunk-CG56PH3M.js +1 -0
  742. package/assets/web/chunk-CGO25AIM.js +1 -0
  743. package/assets/web/chunk-CP4XZPOA.js +1 -0
  744. package/assets/web/chunk-CV7EODPO.js +1 -0
  745. package/assets/web/chunk-D7TR2ORJ.js +1 -0
  746. package/assets/web/chunk-DCOFBAKJ.js +1 -0
  747. package/assets/web/chunk-DOLRLYW7.js +1 -0
  748. package/assets/web/chunk-EEJ3X466.js +1 -0
  749. package/assets/web/chunk-EQ4PF25J.js +1 -0
  750. package/assets/web/chunk-EVP5UVDQ.js +1 -0
  751. package/assets/web/chunk-EW2VMNHE.js +1 -0
  752. package/assets/web/chunk-FIUVIKAN.js +1 -0
  753. package/assets/web/chunk-GHEU25TG.js +1 -0
  754. package/assets/web/chunk-GK2T2SMO.js +1 -0
  755. package/assets/web/chunk-GKI3R2JB.js +1 -0
  756. package/assets/web/chunk-GPKKIOHD.js +2 -0
  757. package/assets/web/chunk-H4AVFUDM.js +1 -0
  758. package/assets/web/chunk-H5H727H6.js +1 -0
  759. package/assets/web/chunk-HGVFH6YM.js +1 -0
  760. package/assets/web/chunk-HHPIANBK.js +1 -0
  761. package/assets/web/chunk-HK56COCB.js +1 -0
  762. package/assets/web/chunk-HZUB7LFV.js +1 -0
  763. package/assets/web/chunk-I7NTNTBA.js +1 -0
  764. package/assets/web/chunk-IKK5DQ3Z.js +1 -0
  765. package/assets/web/chunk-IMH56UBX.js +1 -0
  766. package/assets/web/chunk-J3SSPCFV.js +1 -0
  767. package/assets/web/chunk-J4C7C5KO.js +1 -0
  768. package/assets/web/chunk-J57JB4MU.js +1 -0
  769. package/assets/web/chunk-JMBXRK3I.js +4 -0
  770. package/assets/web/chunk-KCCEQIXX.js +1 -0
  771. package/assets/web/chunk-KEBESIXR.js +1 -0
  772. package/assets/web/chunk-KPNHT4MK.js +1 -0
  773. package/assets/web/chunk-LMLXTVZG.js +1 -0
  774. package/assets/web/chunk-M6OAYNRE.js +1 -0
  775. package/assets/web/chunk-M7MGX5I4.js +1 -0
  776. package/assets/web/chunk-MU2VNTNY.js +1 -0
  777. package/assets/web/chunk-NABAVDRL.js +1 -0
  778. package/assets/web/chunk-NO5D6WDF.js +1 -0
  779. package/assets/web/chunk-O4QSFUXB.js +1 -0
  780. package/assets/web/chunk-OATVFQXO.js +1 -0
  781. package/assets/web/chunk-P5WRM37W.js +5 -0
  782. package/assets/web/chunk-PCP6D2SM.js +1 -0
  783. package/assets/web/chunk-PMMBJK7Q.js +1 -0
  784. package/assets/web/chunk-PSMER3HX.js +1 -0
  785. package/assets/web/chunk-QPBWZLCT.js +1 -0
  786. package/assets/web/chunk-QVABVDO5.js +1 -0
  787. package/assets/web/chunk-RI77LE5V.js +1 -0
  788. package/assets/web/chunk-RKGUEXZ2.js +1 -0
  789. package/assets/web/chunk-RMFH2YTZ.js +1 -0
  790. package/assets/web/chunk-RROPCBUH.js +1 -0
  791. package/assets/web/chunk-SJMLX5AT.js +1 -0
  792. package/assets/web/chunk-TKVALOE4.js +2 -0
  793. package/assets/web/chunk-TM43WUKM.js +1 -0
  794. package/assets/web/chunk-VKWV3ANT.js +1 -0
  795. package/assets/web/chunk-VTMYG6YW.js +1 -0
  796. package/assets/web/chunk-VWW4SA5R.js +1 -0
  797. package/assets/web/chunk-WEDAFMID.js +1 -0
  798. package/assets/web/chunk-WFIHWVQO.js +1 -0
  799. package/assets/web/chunk-XJM3HDJQ.js +1 -0
  800. package/assets/web/chunk-YVJV2RUY.js +1 -0
  801. package/assets/web/chunk-Z3KONI7L.js +1 -0
  802. package/assets/web/chunk-ZDCURXPS.js +1 -0
  803. package/assets/web/favicon.ico +0 -0
  804. package/assets/web/index.html +63 -0
  805. package/assets/web/main-S6E3BC5O.js +2 -0
  806. package/assets/web/polyfills-7RSNIJ6J.js +2 -0
  807. package/assets/web/styles-R6ZUWC6K.css +1 -0
  808. package/dist/index.d.ts +27 -0
  809. package/dist/index.js +66 -0
  810. package/dist/lambdacode/api/services/brandingShapes.d.ts +5 -0
  811. package/dist/lambdacode/api/services/brandingShapes.js +15 -0
  812. package/dist/lambdacode/issuer/objects.d.ts +8 -0
  813. package/dist/lambdacode/issuer/objects.js +11 -0
  814. package/dist/lambdacode/network/naming.d.ts +52 -0
  815. package/dist/lambdacode/network/naming.js +67 -0
  816. package/dist/lib/access-portal-hub.d.ts +53 -0
  817. package/dist/lib/access-portal-hub.js +87 -0
  818. package/dist/lib/access-portal.d.ts +32 -0
  819. package/dist/lib/access-portal.js +174 -0
  820. package/dist/lib/audit-log.d.ts +18 -0
  821. package/dist/lib/audit-log.js +25 -0
  822. package/dist/lib/connector-stack.d.ts +28 -0
  823. package/dist/lib/connector-stack.js +81 -0
  824. package/dist/lib/constructs/app-function.d.ts +14 -0
  825. package/dist/lib/constructs/app-function.js +84 -0
  826. package/dist/lib/constructs/app-table.d.ts +12 -0
  827. package/dist/lib/constructs/app-table.js +58 -0
  828. package/dist/lib/constructs/mirrored-image.d.ts +12 -0
  829. package/dist/lib/constructs/mirrored-image.js +80 -0
  830. package/dist/lib/constructs/monitoring.d.ts +21 -0
  831. package/dist/lib/constructs/monitoring.js +133 -0
  832. package/dist/lib/constructs/oidc-issuer.d.ts +44 -0
  833. package/dist/lib/constructs/oidc-issuer.js +234 -0
  834. package/dist/lib/constructs/scratch-tmpfs.d.ts +5 -0
  835. package/dist/lib/constructs/scratch-tmpfs.js +48 -0
  836. package/dist/lib/constructs/sg-manager.d.ts +27 -0
  837. package/dist/lib/constructs/sg-manager.js +88 -0
  838. package/dist/lib/constructs/tailnet-connector.d.ts +29 -0
  839. package/dist/lib/constructs/tailnet-connector.js +177 -0
  840. package/dist/lib/constructs/tailnet-resolver.d.ts +30 -0
  841. package/dist/lib/constructs/tailnet-resolver.js +71 -0
  842. package/dist/lib/constructs/target-account-trust.d.ts +32 -0
  843. package/dist/lib/constructs/target-account-trust.js +81 -0
  844. package/dist/lib/constructs/vending-api.d.ts +103 -0
  845. package/dist/lib/constructs/vending-api.js +203 -0
  846. package/dist/lib/constructs/web-acl.d.ts +61 -0
  847. package/dist/lib/constructs/web-acl.js +213 -0
  848. package/dist/lib/constructs/web-identity.d.ts +49 -0
  849. package/dist/lib/constructs/web-identity.js +116 -0
  850. package/dist/lib/creds-stack.d.ts +151 -0
  851. package/dist/lib/creds-stack.js +592 -0
  852. package/dist/lib/data-stack.d.ts +53 -0
  853. package/dist/lib/data-stack.js +282 -0
  854. package/dist/lib/dimensions-validation.d.ts +20 -0
  855. package/dist/lib/dimensions-validation.js +51 -0
  856. package/dist/lib/federation.d.ts +113 -0
  857. package/dist/lib/federation.js +254 -0
  858. package/dist/lib/managed-login-branding.json +450 -0
  859. package/dist/lib/network-stack.d.ts +58 -0
  860. package/dist/lib/network-stack.js +776 -0
  861. package/dist/lib/network-validation.d.ts +54 -0
  862. package/dist/lib/network-validation.js +220 -0
  863. package/dist/lib/pkg-paths.d.ts +3 -0
  864. package/dist/lib/pkg-paths.js +51 -0
  865. package/dist/lib/plugins/plugin-api.d.ts +40 -0
  866. package/dist/lib/plugins/plugin-api.js +125 -0
  867. package/dist/lib/plugins/plugin-catalog-activation.d.ts +31 -0
  868. package/dist/lib/plugins/plugin-catalog-activation.js +109 -0
  869. package/dist/lib/plugins/registration.d.ts +41 -0
  870. package/dist/lib/plugins/registration.js +121 -0
  871. package/dist/lib/plugins/runtime.d.ts +10 -0
  872. package/dist/lib/plugins/runtime.js +17 -0
  873. package/dist/lib/project-config.d.ts +164 -0
  874. package/dist/lib/project-config.js +2 -0
  875. package/dist/lib/target-account-stack.d.ts +15 -0
  876. package/dist/lib/target-account-stack.js +59 -0
  877. package/dist/lib/target-account-template.d.ts +13 -0
  878. package/dist/lib/target-account-template.js +64 -0
  879. package/dist/lib/web-cert-stack.d.ts +30 -0
  880. package/dist/lib/web-cert-stack.js +90 -0
  881. package/dist/lib/web-stack.d.ts +103 -0
  882. package/dist/lib/web-stack.js +540 -0
  883. package/node_modules/@fntio/infra-client-plugin-sdk/README.md +303 -0
  884. package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/context.d.ts +31 -0
  885. package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/context.js +58 -0
  886. package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/index.d.ts +9 -0
  887. package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/index.js +26 -0
  888. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/client.d.ts +59 -0
  889. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/client.js +290 -0
  890. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/errors.d.ts +14 -0
  891. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/errors.js +32 -0
  892. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/http.d.ts +72 -0
  893. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/http.js +170 -0
  894. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/index.d.ts +11 -0
  895. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/index.js +28 -0
  896. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/theme-apply.d.ts +22 -0
  897. package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/theme-apply.js +22 -0
  898. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/access.d.ts +14 -0
  899. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/access.js +41 -0
  900. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/authorizer.d.ts +17 -0
  901. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/authorizer.js +44 -0
  902. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/canonical.d.ts +2 -0
  903. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/canonical.js +21 -0
  904. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/catalog.d.ts +39 -0
  905. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/catalog.js +18 -0
  906. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/discovery.d.ts +78 -0
  907. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/discovery.js +48 -0
  908. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/fields.d.ts +7 -0
  909. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/fields.js +2 -0
  910. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/manifest.d.ts +59 -0
  911. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/manifest.js +19 -0
  912. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/messages.d.ts +111 -0
  913. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/messages.js +109 -0
  914. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/paths.d.ts +20 -0
  915. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/paths.js +49 -0
  916. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/theme.d.ts +21 -0
  917. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/theme.js +60 -0
  918. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/transport.d.ts +14 -0
  919. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/transport.js +10 -0
  920. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/validate.d.ts +27 -0
  921. package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/validate.js +321 -0
  922. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/devHost.d.ts +61 -0
  923. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/devHost.js +99 -0
  924. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeDocument.d.ts +12 -0
  925. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeDocument.js +22 -0
  926. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeWindows.d.ts +22 -0
  927. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeWindows.js +46 -0
  928. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/index.d.ts +4 -0
  929. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/index.js +20 -0
  930. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/samples.d.ts +37 -0
  931. package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/samples.js +228 -0
  932. package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/host.d.ts +47 -0
  933. package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/host.js +121 -0
  934. package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/index.d.ts +5 -0
  935. package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/index.js +22 -0
  936. package/node_modules/@fntio/infra-client-plugin-sdk/dist/index.d.ts +10 -0
  937. package/node_modules/@fntio/infra-client-plugin-sdk/dist/index.js +28 -0
  938. package/node_modules/@fntio/infra-client-plugin-sdk/package.json +99 -0
  939. package/openapi.yaml +4284 -0
  940. package/package.json +124 -4
@@ -0,0 +1 @@
1
+ import{a as ke}from"./chunk-CG56PH3M.js";import"./chunk-QPBWZLCT.js";import{a as G,b as ue,d as he,e as fe,f as ve,g as _e,h as xe,i as be}from"./chunk-RMFH2YTZ.js";import{a as Me}from"./chunk-LMLXTVZG.js";import"./chunk-DCOFBAKJ.js";import{a as Pe}from"./chunk-CP4XZPOA.js";import{a as Ce,b as ye,c as Se,d as Te}from"./chunk-ZDCURXPS.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import"./chunk-J3SSPCFV.js";import{a as oe}from"./chunk-KPNHT4MK.js";import{a as re,b as ae,e as le,h as se,i as de,j as pe,k as ce,n as me,o as ge,p as we}from"./chunk-NO5D6WDF.js";import{a as ne,c as ie}from"./chunk-GKI3R2JB.js";import{b as z}from"./chunk-2MOGDYK4.js";import{b as L}from"./chunk-4N2IUS6T.js";import{a as O}from"./chunk-D7TR2ORJ.js";import{Aa as o,Ba as d,H as T,Ia as C,J as m,K as g,Ka as c,L as S,M as A,Ma as h,Q as v,Qa as X,Ra as J,Ta as w,Ua as b,W as U,Wa as l,Xa as y,Ya as F,Z as a,fa as M,ka as Z,oa as q,qa as Q,qb as R,ra as Y,rb as ee,sa as _,sb as N,ta as x,tb as E,ub as te,va as K,wa as P,xa as k,ya as p,za as n}from"./chunk-P5WRM37W.js";import{a as W,b as B}from"./chunk-WFIHWVQO.js";var Ee=[{id:"network",label:"Network page",audiences:["user"],nav:"network",load:()=>import("./chunk-M7MGX5I4.js").then(r=>r.load())},{id:"admin-network",label:"Network page",audiences:["admin"],nav:"network",load:()=>import("./chunk-32GNBTAL.js").then(r=>r.load())},{id:"users",label:"Users page",audiences:["admin"],nav:"users",load:()=>import("./chunk-I7NTNTBA.js").then(r=>r.load())},{id:"groups",label:"Groups page",audiences:["admin"],nav:"groups",load:()=>import("./chunk-VTMYG6YW.js").then(r=>r.load())}];var D=class r{brandName=E("Acme Cloud");logoUrl=E("");logoText=E("A");static \u0275fac=function(i){return new(i||r)};static \u0275cmp=M({type:r,selectors:[["app-accounts-shell"]],inputs:{brandName:[1,"brandName"],logoUrl:[1,"logoUrl"],logoText:[1,"logoText"]},decls:35,vars:10,consts:[["audience","admin","active","accounts",3,"brandName","logoUrl","logoText"],["pageHeader","","title","Your access","subtitle","Roles you're allowed to assume, grouped by account.","subtitleInfo","Credentials are short-lived and shown only to you.",3,"showHeaderSearch"],["headerActions",""],["name","plus",1,"h-4","w-4",3,"strokeWidth"],[1,"mb-3","flex","justify-end"],["compact","","placeholder","Search by account or role",1,"w-[260px]"],[1,"cards"],[1,"acctgroup",2,"flex-grow","2","flex-basis","652px","max-width","936px"],[1,"acctgroup-h"],[1,"ttl"],[1,"cnt"],[1,"acctgroup-b"],["variant","inline","env","prod","account","AdminAccess","role","AdminAccess","icon","role-admin","profile","acme-prod-admin","id","4421 8890 1204","rawId","442188901204","creds","54:12",1,"card",3,"showRoleRow"],["variant","inline","env","prod","account","ReadOnly","role","ReadOnly","icon","role-view","profile","acme-prod-readonly","id","4421 8890 1204","rawId","442188901204",1,"card",3,"showRoleRow"],["variant","inline","env","staging","account","DeployRole","role","DeployRole","icon","role-operate","profile","acme-staging-deploy","id","4421 8890 7710","rawId","442188907710","grant","expires in 3d",1,"card",3,"showRoleRow"],["variant","inline","env","staging","account","ReadOnly","role","ReadOnly","icon","role-view","profile","acme-staging-readonly","id","4421 8890 7710","rawId","442188907710",1,"card",3,"showRoleRow"],[1,"acctgroup",2,"flex-grow","1","flex-basis","336px","max-width","476px"],["variant","inline","env","dev","account","AnalystRole","role","AnalystRole","icon","role-analytics","profile","data-analyst","id","9083 1145 2299","rawId","908311452299","grant","expires in 12h","creds","28:41",1,"card",3,"showRoleRow"]],template:function(i,e){i&1&&(n(0,"app-preview-shell",0)(1,"app-page")(2,"app-page-header",1)(3,"app-button",2),d(4,"app-icon",3),l(5," Request a role "),o()(),n(6,"div",4),d(7,"app-search-input",5),o(),n(8,"div",6)(9,"section",7)(10,"header",8)(11,"span",9),l(12,"Acme Production"),o(),n(13,"span",10),l(14,"\xB7 2 roles"),o()(),n(15,"div",11),d(16,"app-role-card",12)(17,"app-role-card",13),o()(),n(18,"section",7)(19,"header",8)(20,"span",9),l(21,"Acme Staging"),o(),n(22,"span",10),l(23,"\xB7 2 roles"),o()(),n(24,"div",11),d(25,"app-role-card",14)(26,"app-role-card",15),o()(),n(27,"section",16)(28,"header",8)(29,"span",9),l(30,"Data Platform"),o(),n(31,"span",10),l(32,"\xB7 1 role"),o()(),n(33,"div",11),d(34,"app-role-card",17),o()()()()()),i&2&&(p("brandName",e.brandName())("logoUrl",e.logoUrl())("logoText",e.logoText()),a(2),p("showHeaderSearch",!1),a(2),p("strokeWidth",2),a(12),p("showRoleRow",!1),a(),p("showRoleRow",!1),a(8),p("showRoleRow",!1),a(),p("showRoleRow",!1),a(8),p("showRoleRow",!1))},dependencies:[O,z,Te,Ce,ke,Me,Pe],styles:["[_nghost-%COMP%]{display:block}.cards[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px;margin:0 -18px}.acctgroup[_ngcontent-%COMP%]{flex-shrink:1;min-width:min(100%,336px);max-width:100%;border:1px solid var(--border);border-radius:calc(var(--radius) * 3)}.acctgroup-h[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px;padding:14px 18px 0}.ttl[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--surface-foreground)}.cnt[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--text-secondary)}.acctgroup-b[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px;padding:12px 18px 18px}.card[_ngcontent-%COMP%]{flex:1 1 300px;max-width:100%}"]})};var V=class r{reset=N();static \u0275fac=function(i){return new(i||r)};static \u0275cmp=M({type:r,selectors:[["app-reset-button"]],hostAttrs:[1,"inline-flex"],outputs:{reset:"reset"},decls:3,vars:1,consts:[["text","Reset to default"],["variant","outline","size","icon-sm","ariaLabel","Reset to default",3,"click"],["name","refresh",1,"h-3.5","w-3.5",3,"strokeWidth"]],template:function(i,e){i&1&&(n(0,"app-tooltip",0)(1,"app-button",1),c("click",function(){return e.reset.emit()}),d(2,"app-icon",2),o()()),i&2&&(a(2),p("strokeWidth",2))},dependencies:[O,z,ye],encapsulation:2})};var Ie=["stageBody"],We=()=>[import("./chunk-HGVFH6YM.js").then(r=>r.PreviewPageComponent)],Be=(r,t)=>t.name,H=(r,t)=>t.id;function Ue(r,t){r&1&&d(0,"img",11),r&2&&p("src",t,U)}function Fe(r,t){r&1&&d(0,"app-icon",12)}function Le(r,t){if(r&1){let i=C();n(0,"button",69),c("click",function(){m(i);let s=h();return g(s.logo.set(null))}),d(1,"app-icon",70),o()}r&2&&(a(),p("strokeWidth",2.2))}function Ge(r,t){if(r&1&&(n(0,"p",18),l(1),o()),r&2){let i=h();a(),y(i.logoError())}}function He(r,t){r&1&&(S(),n(0,"svg",31),d(1,"circle",72)(2,"path",73),o())}function je(r,t){if(r&1){let i=C();n(0,"button",71),c("click",function(){let s=m(i).$implicit,u=h();return g(u.setAccent(s.hex))}),_(1,He,3,0,":svg:svg",31),o()}if(r&2){let i=t.$implicit,e=h();w("background",i.hex==="mono"?null:i.hex),b("on",e.accent()===i.hex)("mono",i.hex==="mono"),p("title",i.name),Y("aria-label","Accent "+i.name),a(),x(i.hex==="mono"?1:-1)}}function $e(r,t){r&1&&(S(),n(0,"svg",31),d(1,"circle",72)(2,"path",73),o())}function Ze(r,t){if(r&1){let i=C();n(0,"button",21),c("click",function(){let s=m(i).$implicit,u=h();return g(u.setIconSet(s.id))}),d(1,"app-icon",74),l(2),o()}if(r&2){let i=t.$implicit,e=h();b("on",e.iconSet()===i.id),a(),p("set",i.id),a(),F("",i.label," ")}}function qe(r,t){if(r&1){let i=C();n(0,"button",21),c("click",function(){let s=m(i).$implicit,u=h();return g(u.setRadius(s))}),d(1,"span",75),l(2),o()}if(r&2){let i=t.$implicit,e=h();b("on",e.radius()===i),a(),w("border-top-left-radius",e.RADIUS_GLYPH[i]),a(),F("",i," ")}}function Qe(r,t){if(r&1&&(n(0,"option",62),l(1),o()),r&2){let i=t.$implicit;p("value",i.id),a(),y(i.label)}}function Ye(r,t){r&1&&(n(0,"span",76),l(1,"Sign-in page"),o())}function Ke(r,t){r&1&&d(0,"img",79),r&2&&p("src",t,U)}function Xe(r,t){if(r&1&&(n(0,"span",80),l(1),o()),r&2){let i=h(2);a(),y(i.letterMark())}}function Je(r,t){if(r&1&&(_(0,Ye,2,0,"span",76),n(1,"div",77)(2,"div",78),_(3,Ke,1,1,"img",79)(4,Xe,2,1,"span",80),n(5,"span",81),l(6),o(),n(7,"span",82),l(8,"Sign in to manage your cloud access"),o()(),n(9,"div",83)(10,"span",84),l(11,"Sign in"),o(),n(12,"span",85),l(13,"Email"),o(),n(14,"span",86),l(15,"you@company.com"),o(),n(16,"span",87),l(17,"Continue"),o(),n(18,"span",88),l(19,"Passkey, password, or an emailed code \u2014 your choice next."),o()()()),r&2){let i,e=h();x(e.preview()==="all"?0:-1),a(3),x((i=e.logo())?3:4,i),a(3),y(e.name()||"Access Portal")}}function et(r,t){r&1&&(n(0,"span",76),l(1,"Accounts page"),o())}function tt(r,t){if(r&1&&(_(0,et,2,0,"span",76),n(1,"div",89)(2,"div",90),d(3,"app-accounts-shell",91),o()()),r&2){let i=h();x(i.preview()==="all"?0:-1),a(2),w("zoom",i.shellZoom()),a(),p("brandName",i.name()||"Access Portal")("logoUrl",i.logo()??"")("logoText",i.letterMark())}}function nt(r,t){if(r&1&&(n(0,"span",76),l(1),o()),r&2){let i=h().$implicit;a(),y(i.label)}}function it(r,t){if(r&1&&d(0,"app-preview-page",92),r&2){let i=h().$implicit,e=h();p("def",i)("audience",e.audience())("brandName",e.name()||"Access Portal")("logoUrl",e.logo()??"")("logoText",e.letterMark())}}function ot(r,t){r&1&&d(0,"div",93)}function rt(r,t){if(r&1&&(_(0,nt,2,1,"span",76),n(1,"div",89)(2,"div",90),Z(3,it,1,5)(4,ot,1,0),q(5,3,We,null,4),Q(0,-1),o()()),r&2){let i=h();x(i.preview()==="all"?0:-1),a(2),w("zoom",i.shellZoom())}}function at(r,t){if(r&1){let i=C();n(0,"app-button",94),c("click",function(){m(i);let s=h();return g(s.skip())}),l(1," Skip for now "),o()}if(r&2){let i=h();p("disabled",i.busy())}}function lt(r,t){if(r&1){let i=C();n(0,"app-button",94),c("click",function(){m(i);let s=h();return g(s.cancel())}),l(1," Cancel "),o()}if(r&2){let i=h();p("disabled",i.busy())}}var st=[{name:"mono",hex:"mono"},{name:"gray",hex:"#8d8d8d"},{name:"gold",hex:"#978365"},{name:"bronze",hex:"#a18072"},{name:"brown",hex:"#ad7f58"},{name:"yellow",hex:"#ffe629"},{name:"amber",hex:"#ffc53d"},{name:"orange",hex:"#f76b15"},{name:"tomato",hex:"#e54d2e"},{name:"red",hex:"#e5484d"},{name:"ruby",hex:"#e54666"},{name:"crimson",hex:"#e93d82"},{name:"pink",hex:"#d6409f"},{name:"plum",hex:"#ab4aba"},{name:"purple",hex:"#8e4ec6"},{name:"violet",hex:"#6e56cf"},{name:"iris",hex:"#5b5bd6"},{name:"indigo",hex:"#3e63dd"},{name:"blue",hex:"#0090ff"},{name:"cyan",hex:"#00a2c7"},{name:"teal",hex:"#12a594"},{name:"jade",hex:"#29a383"},{name:"green",hex:"#30a46c"},{name:"grass",hex:"#46a758"},{name:"lime",hex:"#bdee63"},{name:"mint",hex:"#86ead4"},{name:"sky",hex:"#7ce2fe"}],dt=["none","sm","md","lg"],Ae="#6366f1",I=0,j="md",$="outline",Re=100,Ne=40,De=0,pt=[{id:"outline",label:"Outline"},{id:"bold",label:"Bold"},{id:"solid",label:"Solid"}],ct=64e3,mt=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i,Ve=class r{api=T(oe);configService=T(ne);accentService=T(xe);toast=T(ie);theme=T(be);firstRun=E(!1);closed=N();ACCENTS=st;RADII=dt;ICON_SETS=pt;RADIUS_GLYPH={none:"0",sm:"3px",md:"5px",lg:"7px"};orig=this.configService.config.branding??{};origTheme=this.theme.theme();origTitle=document.title;name=v(this.orig.projectName??"");logo=v(this.orig.logoUrl||null);logoError=v("");accent=v(this.accentService.accent()??this.orig.primaryColor??Ae);hexInput=v(this.accent()==="mono"?"":this.accent());depth=v(this.accent()===(this.orig.primaryColor??null)?this.orig.accentDepth??I:I);gray=v(this.orig.grayTone??"slate");radius=v(this.orig.radius??j);iconSet=v(this.orig.iconSet??$);strength=v(this.orig.panelStrength??Re);border=v(this.orig.borderStrength??Ne);glow=v(this.orig.gradientStrength??De);constructor(){this.orig.borderStrength===void 0&&this.setBorder(this.border())}preview=v("all");busy=v(!1);audience=v("admin");pages=R(()=>Ee.filter(t=>t.audiences.includes(this.audience())));visiblePages=R(()=>{let t=this.preview();return this.pages().filter(i=>t==="all"||i.id===t)});setAudience(t){this.audience.set(t);let i=this.preview();!["all","login","accounts"].includes(i)&&!this.pages().some(e=>e.id===i)&&this.preview.set("all")}stageBody=te("stageBody");shellZoom=v(.62);fitShell=ee(t=>{let i=this.stageBody()?.nativeElement;if(!i)return;let e=new ResizeObserver(()=>{let s=i.clientWidth-40;s>0&&this.shellZoom.set(Math.min(.62,s/1280))});e.observe(i),t(()=>e.disconnect())});letterMark=R(()=>(this.name()||"Access Portal").charAt(0).toUpperCase());depthHint=R(()=>this.accent()==="mono"?"Disabled \u2014 mono is achromatic (no hue), so there's no color direction to deepen toward.":"Deepens the accent toward a richer, darker shade of itself \u2014 never toward gray.");paintAccent(){let t=this.accent();ue(document.documentElement,t==="mono"?"mono":he(t,this.depth()))}setAccent(t){this.accent.set(t),this.hexInput.set(t==="mono"?"":t),t==="mono"&&this.depth()!==0&&this.depth.set(0),this.paintAccent()}onHexInput(t){this.hexInput.set(t),mt.test(t.trim())&&(this.accent.set(t.trim()),this.paintAccent())}setDepth(t){this.depth.set(Number(t)),this.paintAccent()}setBorder(t){this.border.set(Number(t)),fe(document.documentElement,Number(t))}setRadius(t){this.radius.set(t),document.documentElement.style.setProperty("--radius",G[t])}setIconSet(t){this.iconSet.set(t),L.set(t)}setStrength(t){this.strength.set(Number(t)),_e(document.documentElement,Number(t))}setGlow(t){this.glow.set(Number(t)),ve(document.documentElement,Number(t))}get deploy(){return this.configService.deployBranding}resetAccent(){this.setAccent(this.deploy.primaryColor??Ae),this.setDepth(this.deploy.accentDepth??I)}resetDepth(){this.setDepth(this.deploy.accentDepth??I)}resetBorder(){this.setBorder(this.deploy.borderStrength??Ne)}resetGlow(){this.setGlow(this.deploy.gradientStrength??De)}resetStrength(){this.setStrength(this.deploy.panelStrength??Re)}resetIconSet(){this.setIconSet(this.deploy.iconSet??$)}resetRadius(){this.setRadius(this.deploy.radius??j)}setTheme(t){this.theme.set(t)}onLogoFile(t){let i=t.target.files?.[0];if(!i)return;this.logoError.set("");let e=new FileReader;e.onload=()=>{let s=String(e.result??"");if(s.length>ct){this.logoError.set("That image is too big \u2014 keep the logo under ~48 KB.");return}this.logo.set(s)},e.readAsDataURL(i)}chosenBranding(){let t=this.name().trim(),i=this.accent()==="mono";return B(W(B(W({},t?{projectName:t}:{}),{logoUrl:this.logo()||"",primaryColor:this.accent()}),i?{}:{accentDepth:this.depth()}),{grayTone:this.gray(),radius:this.radius(),iconSet:this.iconSet(),panelStrength:this.strength(),borderStrength:this.border(),gradientStrength:this.glow()})}save(){if(this.busy())return;let t=this.chosenBranding();this.busy.set(!0),this.api.saveBranding({branding:t}).subscribe({next:()=>{this.busy.set(!1),this.configService.applyOverlay({version:1,branding:t}),this.accentService.clear(),document.title=t.projectName??this.origTitle,this.toast.success("Theme saved \u2014 everyone gets it on their next load."),this.closed.emit()},error:i=>{this.busy.set(!1),this.toast.error(we(i,"Could not save the theme."))}})}skip(){this.busy()||(this.busy.set(!0),this.api.saveBranding({dismissed:!0}).subscribe({next:()=>{this.busy.set(!1),this.configService.applyOverlay({version:1,dismissed:!0}),this.revert(),this.closed.emit()},error:()=>{this.busy.set(!1),this.toast.error("Couldn\u2019t save that \u2014 the prompt may show again."),this.revert(),this.closed.emit()}}))}cancel(){this.busy()||(this.revert(),this.closed.emit())}dismiss(){this.firstRun()?this.skip():this.cancel()}revert(){this.theme.set(this.origTheme);let t=document.documentElement;(this.orig.grayTone??"slate")==="slate"?delete t.dataset.grayTone:t.dataset.grayTone=this.orig.grayTone,t.style.setProperty("--radius",G[this.orig.radius??j]),L.set(this.orig.iconSet??$),this.accentService.restoreFromConfig(),document.title=this.origTitle}static \u0275fac=function(i){return new(i||r)};static \u0275cmp=M({type:r,selectors:[["app-theme-wizard"]],viewQuery:function(i,e){i&1&&X(e.stageBody,Ie,5),i&2&&J()},inputs:{firstRun:[1,"firstRun"]},outputs:{closed:"closed"},decls:141,vars:48,consts:[["stageBody",""],[1,"wiz-backdrop"],[1,"wiz"],[1,"knobs"],[1,"sticky","top-0","z-[5]","-mx-5","mb-4","bg-[var(--wiz-panel)]","px-5","pb-4","pt-5","text-base","font-semibold","tracking-[-0.01em]","text-surface-foreground"],[1,"knob"],["for","wizName",1,"mb-3","flex","items-center","gap-1","text-[13px]","text-muted-foreground"],["id","wizName","type","text","placeholder","e.g. Acme Cloud","maxlength","60",1,"ui-input",3,"ngModelChange","ngModel"],[1,"relative","mt-2.5"],[1,"upload"],[1,"grid","h-[30px]","w-[30px]","shrink-0","place-items-center","text-surface-foreground"],["alt","Logo preview",1,"h-full","w-full","rounded-[5px]","object-contain",3,"src"],["name","download",1,"h-[19px]","w-[19px]","rotate-180"],[1,"flex","min-w-0","flex-col","gap-0.5"],[1,"text-[13px]","font-medium","text-surface-foreground"],[1,"truncate","text-[11.5px]","leading-[1.35]","text-muted-foreground"],["type","file","accept","image/*",1,"hidden",3,"change"],["type","button","aria-label","Remove logo",1,"uploadremove"],[1,"mt-1.5","text-xs","text-danger"],[1,"mb-3","flex","items-center","gap-1","text-[13px]","text-muted-foreground"],[1,"seg"],["type","button",3,"click"],["name","sun",1,"h-4","w-4"],["name","moon",1,"h-4","w-4"],[1,"mb-3","flex","items-center","justify-between"],[1,"flex","items-center","gap-1","text-[13px]","text-muted-foreground"],[3,"reset"],[1,"flex","flex-wrap","gap-[7px]"],["type","button",1,"sw",3,"on","mono","background","title"],[1,"mt-2.5","flex","items-center","gap-2"],[1,"sw","h-[22px]","w-[22px]","shrink-0","border-border-strong"],["viewBox","0 0 20 20","aria-hidden","true",1,"block","h-full","w-full"],["type","text","spellcheck","false","placeholder","#0F766E",1,"ui-input",3,"ngModelChange","ngModel"],[1,"sliderrow"],[1,"mb-2.5","flex","items-center","justify-between"],[1,"flex","items-center","gap-1","whitespace-nowrap","text-[12.5px]","font-medium","text-muted-foreground"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.6",1,"mr-0.5","h-3.5","w-3.5","shrink-0"],["d","M12 3c4.2 5 6.2 8.6 6.2 11.2A6.2 6.2 0 1 1 5.8 14.2C5.8 11.6 7.8 8 12 3z"],[3,"text"],[1,"rangewrap"],[1,"rtrack"],[1,"rfill"],["type","range","min","0","max","100","step","5","aria-label","Accent strength",1,"rinput",3,"ngModelChange","disabled","ngModel"],["text","How visible borders and dividers are \u2014 backgrounds and text are untouched. 0 is a hairline, never invisible."],["type","range","min","0","max","100","step","5","aria-label","Border strength",1,"rinput",3,"ngModelChange","ngModel"],["text","How strong the accent-colored ambient glow reads behind the glass panels \u2014 0 turns it off, 100 is doubled."],["type","range","min","0","max","100","step","5","aria-label","Gradient strength",1,"rinput",3,"ngModelChange","ngModel"],["x","4","y","4","width","16","height","16","rx","3"],["text","How opaque the sidebar and content panels are \u2014 0 lets the backdrop show through, 100 is the standard look."],["type","range","min","0","max","100","step","5","aria-label","Panel strength",1,"rinput",3,"ngModelChange","ngModel"],["text","The line style every icon in the portal draws with \u2014 the previews update live."],["type","button",3,"on"],[1,"stage"],[1,"stagehead"],[1,"absolute","left-1/2","top-1/2","flex","-translate-x-1/2","-translate-y-1/2","items-center","gap-2"],["aria-label","Preview as",1,"ui-input","h-8","w-auto","!py-0","pr-7","text-sm",3,"ngModelChange","ngModel"],["value","admin"],["value","user"],["aria-label","Preview screen",1,"ui-input","h-8","w-auto","!py-0","pr-7","text-sm",3,"ngModelChange","ngModel"],["value","all"],["value","accounts"],["value","login"],[3,"value"],["variant","ghost","size","icon","ariaLabel","Close",3,"click"],["name","x",1,"h-4","w-4"],[1,"stagebody"],[1,"stagefoot"],["variant","outline","size","lg",3,"disabled"],["size","lg",3,"click","loading"],["type","button","aria-label","Remove logo",1,"uploadremove",3,"click"],["name","x",1,"h-3","w-3",3,"strokeWidth"],["type","button",1,"sw",3,"click","title"],["cx","10","cy","10","r","10","fill","#9aa1ac"],["d","M10 0A10 10 0 0 1 10 20Z","fill","#3c414a"],["name","bell",1,"h-4","w-4",3,"set"],[1,"block","h-[18px]","w-[18px]","border-l-[2.5px]","border-t-[2.5px]","border-current"],[1,"stage-label"],[1,"login-preview"],[1,"lp-hero"],["alt","",1,"lp-logo",3,"src"],[1,"lp-mark"],[1,"lp-title"],[1,"lp-sub"],[1,"lp-card"],[1,"lp-cardtitle"],[1,"lp-flabel"],[1,"lp-input"],[1,"lp-btn"],[1,"lp-alt"],[1,"shell-fit"],[1,"shell-scale"],[3,"brandName","logoUrl","logoText"],[3,"def","audience","brandName","logoUrl","logoText"],[1,"shell-placeholder"],["variant","outline","size","lg",3,"click","disabled"]],template:function(i,e){if(i&1){let s=C();n(0,"div",1)(1,"div",2)(2,"aside",3)(3,"h2",4),l(4,"Customize theme"),o(),n(5,"div",5)(6,"label",6),l(7,"Portal name"),o(),n(8,"input",7),c("ngModelChange",function(f){return m(s),g(e.name.set(f))}),o(),n(9,"div",8)(10,"label",9)(11,"span",10),_(12,Ue,1,1,"img",11)(13,Fe,1,0,"app-icon",12),o(),n(14,"span",13)(15,"span",14),l(16),o(),n(17,"span",15),l(18),o()(),n(19,"input",16),c("change",function(f){return m(s),g(e.onLogoFile(f))}),o()(),_(20,Le,2,1,"button",17),o(),_(21,Ge,2,1,"p",18),o(),n(22,"div",5)(23,"span",19),l(24,"Appearance"),o(),n(25,"div",20)(26,"button",21),c("click",function(){return m(s),g(e.setTheme("light"))}),d(27,"app-icon",22),l(28,"Light "),o(),n(29,"button",21),c("click",function(){return m(s),g(e.setTheme("dark"))}),d(30,"app-icon",23),l(31,"Dark "),o()()(),n(32,"div",5)(33,"div",24)(34,"span",25),l(35,"Accent color"),o(),n(36,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetAccent())}),o()(),n(37,"div",27),P(38,je,2,9,"button",28,Be),o(),n(40,"div",29)(41,"span",30),_(42,$e,3,0,":svg:svg",31),o(),n(43,"input",32),c("ngModelChange",function(f){return m(s),g(e.onHexInput(f))}),o()(),n(44,"div",33)(45,"div",34)(46,"span",35),S(),n(47,"svg",36),d(48,"path",37),o(),l(49," Strength"),A(),d(50,"app-info-tooltip",38),o(),n(51,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetDepth())}),o()(),n(52,"div",39),d(53,"div",40)(54,"div",41),n(55,"input",42),c("ngModelChange",function(f){return m(s),g(e.setDepth(f))}),o()()()(),n(56,"div",5)(57,"div",33)(58,"div",34)(59,"span",35),S(),n(60,"svg",36),d(61,"path",37),o(),l(62," Border strength"),A(),d(63,"app-info-tooltip",43),o(),n(64,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetBorder())}),o()(),n(65,"div",39),d(66,"div",40)(67,"div",41),n(68,"input",44),c("ngModelChange",function(f){return m(s),g(e.setBorder(f))}),o()()()(),n(69,"div",5)(70,"div",33)(71,"div",34)(72,"span",35),S(),n(73,"svg",36),d(74,"path",37),o(),l(75," Gradient strength"),A(),d(76,"app-info-tooltip",45),o(),n(77,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetGlow())}),o()(),n(78,"div",39),d(79,"div",40)(80,"div",41),n(81,"input",46),c("ngModelChange",function(f){return m(s),g(e.setGlow(f))}),o()()(),n(82,"div",33)(83,"div",34)(84,"span",35),S(),n(85,"svg",36),d(86,"rect",47),o(),l(87," Panel strength"),A(),d(88,"app-info-tooltip",48),o(),n(89,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetStrength())}),o()(),n(90,"div",39),d(91,"div",40)(92,"div",41),n(93,"input",49),c("ngModelChange",function(f){return m(s),g(e.setStrength(f))}),o()()()(),n(94,"div",5)(95,"div",24)(96,"span",25),l(97,"Icon style"),d(98,"app-info-tooltip",50),o(),n(99,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetIconSet())}),o()(),n(100,"div",20),P(101,Ze,3,4,"button",51,H),o()(),n(103,"div",5)(104,"div",24)(105,"span",25),l(106,"Radius"),o(),n(107,"app-reset-button",26),c("reset",function(){return m(s),g(e.resetRadius())}),o()(),n(108,"div",20),P(109,qe,3,5,"button",51,K),o()()(),n(111,"section",52)(112,"header",53)(113,"div",54)(114,"select",55),c("ngModelChange",function(f){return m(s),g(e.setAudience(f))}),n(115,"option",56),l(116,"Admin view"),o(),n(117,"option",57),l(118,"Member view"),o()(),n(119,"select",58),c("ngModelChange",function(f){return m(s),g(e.preview.set(f))}),n(120,"option",59),l(121,"All screens"),o(),n(122,"option",60),l(123,"Accounts page"),o(),n(124,"option",61),l(125,"Sign-in page"),o(),P(126,Qe,2,2,"option",62,H),o()(),n(128,"app-button",63),c("click",function(){return m(s),g(e.dismiss())}),d(129,"app-icon",64),o()(),n(130,"div",65,0),_(132,Je,20,3),_(133,tt,4,6),P(134,rt,7,3,null,null,H),o(),n(136,"footer",66),_(137,at,2,1,"app-button",67)(138,lt,2,1,"app-button",67),n(139,"app-button",68),c("click",function(){return m(s),g(e.save())}),l(140,"Save & apply"),o()()()()()}if(i&2){let s;a(8),p("ngModel",e.name()),a(2),b("has-logo",!!e.logo()),a(),b("rounded-lg",!!e.logo())("bg-white",!!e.logo())("p-[3px]",!!e.logo()),a(),x((s=e.logo())?12:13,s),a(4),y(e.logo()?"Logo uploaded":"Upload logo"),a(2),y(e.logo()?"Click to replace it":"Square image, up to ~48 KB \xB7 optional"),a(2),x(e.logo()?20:-1),a(),x(e.logoError()?21:-1),a(5),b("on",e.theme.theme()==="light"),a(3),b("on",e.theme.theme()==="dark"),a(9),k(e.ACCENTS),a(3),w("background",e.accent()==="mono"?null:e.accent()),b("mono",e.accent()==="mono"),a(),x(e.accent()==="mono"?42:-1),a(),p("ngModel",e.hexInput()),a(),b("is-disabled",e.accent()==="mono"),a(6),p("text",e.depthHint()),a(4),w("width",e.depth(),"%"),a(),p("disabled",e.accent()==="mono")("ngModel",e.depth()),a(12),w("width",e.border(),"%"),a(),p("ngModel",e.border()),a(12),w("width",e.glow(),"%"),a(),p("ngModel",e.glow()),a(11),w("width",e.strength(),"%"),a(),p("ngModel",e.strength()),a(8),k(e.ICON_SETS),a(8),k(e.RADII),a(5),p("ngModel",e.audience()),a(5),p("ngModel",e.preview()),a(7),k(e.pages()),a(4),b("all",e.preview()==="all"),a(2),x(e.preview()==="all"||e.preview()==="login"?132:-1),a(),x(e.preview()==="all"||e.preview()==="accounts"?133:-1),a(),k(e.visiblePages()),a(3),x(e.firstRun()?137:138),a(2),p("loading",e.busy())}},dependencies:[ge,pe,ce,re,se,de,ae,me,le,D,O,z,Se,V],styles:['.wiz-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--glass-plate)}.wiz[_ngcontent-%COMP%]{display:flex;width:min(1180px,100%);height:min(760px,100%);overflow:hidden;border-radius:16px;border:1px solid var(--border-strong);background:#fff;box-shadow:0 30px 80px -30px #00000073}[data-theme="dark"][_nghost-%COMP%] .wiz[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .wiz[_ngcontent-%COMP%]{background:#1b1e25}.knobs[_ngcontent-%COMP%]{width:340px;flex-shrink:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;padding:0 20px 20px;background:var(--wiz-panel);border-right:1px solid var(--border)}.wiz[_ngcontent-%COMP%]{--wiz-panel: var(--surface);--wiz-panel-ink: #17181c}[data-theme="dark"][_nghost-%COMP%] .wiz[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .wiz[_ngcontent-%COMP%]{--wiz-panel: #22252c;--wiz-panel-ink: #f4f5f8}.knob[_ngcontent-%COMP%]{margin-bottom:16px;padding:10px;border:1px solid color-mix(in srgb,var(--wiz-panel-ink) 10%,transparent);border-radius:12px}.knob[_ngcontent-%COMP%] .ui-input[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--wiz-panel-ink) 6%,transparent)}.upload[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;border:1px dashed color-mix(in srgb,var(--wiz-panel-ink) 18%,transparent);border-radius:12px;cursor:pointer;transition:border-color .15s,background .15s}.upload[_ngcontent-%COMP%]:hover{border-color:color-mix(in srgb,var(--wiz-panel-ink) 32%,transparent);background:color-mix(in srgb,var(--wiz-panel-ink) 5%,transparent)}.upload.has-logo[_ngcontent-%COMP%]{border-style:solid;border-color:var(--border)}.uploadremove[_ngcontent-%COMP%]{position:absolute;top:8px;right:8px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:color-mix(in srgb,var(--wiz-panel-ink) 14%,transparent);color:var(--surface-foreground)}.uploadremove[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--wiz-panel-ink) 26%,transparent)}.sw[_ngcontent-%COMP%]{width:26px;height:26px;border-radius:50%;border:2px solid transparent;overflow:hidden;transition:transform .1s}button.sw[_ngcontent-%COMP%]:hover{transform:scale(1.14)}.sw.on[_ngcontent-%COMP%]{border-color:var(--surface-foreground);box-shadow:0 0 0 2px var(--wiz-panel) inset}.sw.mono[_ngcontent-%COMP%]{background:none}.sw.mono[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{display:block}.sliderrow[_ngcontent-%COMP%]{margin-top:14px}.knob[_ngcontent-%COMP%] .sliderrow[_ngcontent-%COMP%]:first-child{margin-top:0}.sliderrow.is-disabled[_ngcontent-%COMP%]{opacity:.4}.sliderrow.is-disabled[_ngcontent-%COMP%] .rinput[_ngcontent-%COMP%]{cursor:not-allowed}.rangewrap[_ngcontent-%COMP%]{position:relative;width:100%;height:16px;display:flex;align-items:center}.rtrack[_ngcontent-%COMP%]{position:absolute;left:0;right:0;height:4px;border-radius:999px;background:color-mix(in srgb,var(--wiz-panel-ink) 9%,transparent)}.rfill[_ngcontent-%COMP%]{position:absolute;left:0;height:4px;border-radius:999px;background:var(--brand);pointer-events:none}.rinput[_ngcontent-%COMP%]{position:relative;width:100%;height:16px;margin:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}.rinput[_ngcontent-%COMP%]::-webkit-slider-runnable-track{height:4px;background:transparent}.rinput[_ngcontent-%COMP%]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-6px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.rinput[_ngcontent-%COMP%]::-moz-range-track{height:4px;background:transparent}.rinput[_ngcontent-%COMP%]::-moz-range-thumb{width:16px;height:16px;border:none;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.seg[_ngcontent-%COMP%]{display:flex;gap:8px}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 4px 10px;border:1px solid transparent;border-radius:10px;background:color-mix(in srgb,var(--wiz-panel-ink) 6%,transparent);font-size:11.5px;font-weight:500;color:var(--muted-foreground);text-transform:capitalize;transition:border-color .13s,color .13s,background .13s}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{color:var(--surface-foreground)}.seg[_ngcontent-%COMP%] button.on[_ngcontent-%COMP%]{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset;background:color-mix(in srgb,var(--brand) 12%,color-mix(in srgb,var(--wiz-panel-ink) 6%,transparent));color:var(--surface-foreground)}.stage[_ngcontent-%COMP%]{display:flex;min-width:0;flex:1;flex-direction:column}.stagehead[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;justify-content:flex-end;min-height:56px;padding:10px 16px;border-bottom:1px solid var(--border)}.stagebody[_ngcontent-%COMP%]{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--glass-plate);padding:20px}.stagebody.all[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:28px}.stagebody.all[_ngcontent-%COMP%] .login-preview[_ngcontent-%COMP%]{min-height:420px}.stage-label[_ngcontent-%COMP%]{display:block;margin-bottom:8px;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground)}.stagefoot[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.login-preview[_ngcontent-%COMP%]{display:flex;min-height:100%;align-items:stretch;border-radius:12px;border:1px solid var(--border);overflow:hidden;position:relative;isolation:isolate}.login-preview[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:-18%;z-index:-1;pointer-events:none;background:radial-gradient(54% 44% at 72% 16%,var(--glass-panel-glow-a),transparent 72%),radial-gradient(46% 40% at 14% 84%,var(--glass-panel-glow-b),transparent 72%);animation:glass-glow-drift 34s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.login-preview[_ngcontent-%COMP%]:before{animation:none}}.lp-hero[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center}.lp-logo[_ngcontent-%COMP%], .lp-mark[_ngcontent-%COMP%]{width:52px;height:52px;border-radius:14px;object-fit:contain}.lp-mark[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;background:var(--brand);color:var(--brand-foreground);font-size:24px;font-weight:700}.lp-title[_ngcontent-%COMP%]{font-size:19px;font-weight:650;color:var(--surface-foreground)}.lp-sub[_ngcontent-%COMP%]{font-size:12.5px;color:var(--muted-foreground)}.lp-card[_ngcontent-%COMP%]{width:46%;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:28px 32px;border-left:1px solid var(--border);background:var(--glass-panel-bg);backdrop-filter:blur(14px)}.lp-cardtitle[_ngcontent-%COMP%]{font-size:16px;font-weight:650;color:var(--surface-foreground);margin-bottom:6px}.lp-flabel[_ngcontent-%COMP%]{font-size:11.5px;font-weight:600;color:var(--muted-foreground)}.lp-input[_ngcontent-%COMP%]{padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:13px;color:var(--placeholder, var(--muted-foreground));background:var(--surface)}.lp-btn[_ngcontent-%COMP%]{margin-top:6px;padding:9px 0;border-radius:var(--radius);background:var(--brand);color:var(--brand-foreground);font-size:13.5px;font-weight:600;text-align:center}.lp-alt[_ngcontent-%COMP%]{margin-top:4px;font-size:11.5px;color:var(--muted-foreground);text-align:center}.shell-fit[_ngcontent-%COMP%]{width:100%}.shell-scale[_ngcontent-%COMP%]{width:1280px}.shell-placeholder[_ngcontent-%COMP%]{height:760px}']})};export{Ve as ThemeWizardComponent};
@@ -0,0 +1 @@
1
+ import{Ea as o,Va as t,fa as s,tb as i}from"./chunk-P5WRM37W.js";var a=class n{sizeClass=i("h-4 w-4");static \u0275fac=function(e){return new(e||n)};static \u0275cmp=s({type:n,selectors:[["app-spinner"]],hostAttrs:["aria-hidden","true",1,"inline-flex"],inputs:{sizeClass:[1,"sizeClass"]},decls:1,vars:2,consts:[[1,"animate-spin","rounded-full","border-2","border-border-strong","border-t-brand","motion-reduce:animate-none"]],template:function(e,p){e&1&&o(0,"span",0),e&2&&t(p.sizeClass())},encapsulation:2})};export{a};
@@ -0,0 +1 @@
1
+ import{b as y}from"./chunk-2MOGDYK4.js";import{Aa as m,Ba as g,Ma as l,Na as u,Oa as b,Va as f,Z as r,fa as d,qb as x,sa as i,ta as s,tb as o,ya as c,za as p,zb as h}from"./chunk-P5WRM37W.js";var v=["*"];function D(n,t){if(n&1&&g(0,"app-icon",0),n&2){let e=l();c("name",e.icon())("strokeWidth",2)}}var C=class n{tone=o("gray");cnt=o(!1,{transform:h});icon=o(void 0);classes=x(()=>{let t="inline-flex items-center gap-1 whitespace-nowrap rounded-full text-[11.5px] font-medium ",e=this.cnt()?"h-5 min-w-5 justify-center px-1.5 tabular-nums":"h-5 px-[9px]";return`${t}${e} ${{brand:"bg-brand/12 text-brand-text",gray:"bg-muted text-muted-foreground",green:"bg-success-muted text-success",red:"bg-danger-muted text-danger",amber:"bg-warning-muted text-warning",dashed:"bg-transparent text-placeholder border border-dashed border-border-strong"}[this.tone()]}`});static \u0275fac=function(e){return new(e||n)};static \u0275cmp=d({type:n,selectors:[["app-badge"]],inputs:{tone:[1,"tone"],cnt:[1,"cnt"],icon:[1,"icon"]},ngContentSelectors:v,decls:3,vars:3,consts:[[1,"h-3","w-3",3,"name","strokeWidth"]],template:function(e,a){e&1&&(u(),p(0,"span"),i(1,D,1,2,"app-icon",0),b(2),m()),e&2&&(f(a.classes()),r(),s(a.icon()?1:-1))},dependencies:[y],encapsulation:2})};export{C as a};
@@ -0,0 +1 @@
1
+ import{a as R}from"./chunk-J3SSPCFV.js";import{b as B}from"./chunk-2MOGDYK4.js";import{Aa as i,Ba as m,H as y,Ia as z,J as S,K as N,Ka as _,Ma as l,Na as I,Oa as C,Q as T,Sb as U,T as E,Ta as F,Tb as A,Ua as v,Wa as p,Xa as u,Y as M,Z as t,fa as D,qb as L,ra as x,sa as c,sb as k,ta as s,tb as d,wa as O,xa as P,ya as g,za as a}from"./chunk-P5WRM37W.js";import{a as h,b as f}from"./chunk-WFIHWVQO.js";var q=[[["","sidebar-bell",""]],[["","sidebar-network",""]],[["","sidebar-user-menu-item",""]]],H=["[sidebar-bell]","[sidebar-network]","[sidebar-user-menu-item]"],j=(n,r)=>r.label;function Y(n,r){if(n&1&&(a(0,"div",17),p(1),i()),n&2){let e=l();F("background-image",e.logoBg()),v("has-logo",!!e.logoUrl())("logo-only",!e.brandName()),t(),u(e.logoUrl()?"":e.logoText())}}function K(n,r){if(n&1&&(a(0,"span",6),p(1),i()),n&2){let e=l();t(),u(e.brandName())}}function W(n,r){n&1&&m(0,"span",19)}function G(n,r){if(n&1&&(a(0,"button",8),m(1,"app-icon",18),c(2,W,1,0,"span",19),i()),n&2){let e=l();x("aria-label",e.unread()?"Notifications \u2014 you have unread":"Notifications"),t(2),s(e.unread()?2:-1)}}function J(n,r){if(n&1&&(a(0,"span",27),p(1),i()),n&2){let e=l(2).$implicit;t(),u(e.badge)}}function Q(n,r){if(n&1&&(a(0,"span",28),m(1,"app-icon",29),i()),n&2){let e=l(2).$implicit;g("title",e.hint),x("aria-label",e.hint)}}function X(n,r){if(n&1&&(a(0,"a",23)(1,"span",24),m(2,"app-icon",25),a(3,"span",26),p(4),i()(),c(5,J,2,1,"span",27),c(6,Q,2,2,"span",28),i()),n&2){let e=l().$implicit,o=l().$implicit,b=l();v("accent",o.accent),g("routerLink",e.route)("title",b.collapsed()?o.accent?e.label+" - "+o.label:e.label:""),t(2),g("name",e.icon),t(2),u(e.label),t(),s(e.badge?5:-1),t(),s(e.hint?6:-1)}}function Z(n,r){if(n&1&&(a(0,"span",27),p(1),i()),n&2){let e=l(2).$implicit;t(),u(e.badge)}}function ee(n,r){if(n&1&&(a(0,"span",28),m(1,"app-icon",29),i()),n&2){let e=l(2).$implicit;g("title",e.hint),x("aria-label",e.hint)}}function ne(n,r){if(n&1&&(a(0,"a",30)(1,"span",24),m(2,"app-icon",25),a(3,"span",26),p(4),i()(),c(5,Z,2,1,"span",27),c(6,ee,2,2,"span",28),i()),n&2){let e=l().$implicit,o=l().$implicit,b=l();v("active",e.active)("accent",o.accent),g("title",b.collapsed()?o.accent?e.label+" - "+o.label:e.label:""),t(2),g("name",e.icon),t(2),u(e.label),t(),s(e.badge?5:-1),t(),s(e.hint?6:-1)}}function te(n,r){if(n&1&&c(0,X,7,8,"a",21)(1,ne,7,9,"a",22),n&2){let e=r.$implicit;s(e.route?0:1)}}function oe(n,r){if(n&1&&(a(0,"div")(1,"p",20),p(2),i(),O(3,te,2,1,null,null,j),i()),n&2){let e=r.$implicit;t(2),u(e.label),t(),P(e.items)}}function ie(n,r){if(n&1&&(a(0,"span",15),p(1),i()),n&2){let e=l();t(),u(e.userRole())}}function ae(n,r){if(n&1){let e=z();a(0,"div",16)(1,"div",31)(2,"span",32),m(3,"app-icon",25),p(4," Dark mode "),i(),a(5,"app-toggle",33),_("checkedChange",function(){S(e);let b=l();return N(b.darkModeToggle.emit())}),i()(),C(6,2),i()}if(n&2){let e=l();t(3),g("name",e.darkMode()?"moon":"sun"),t(2),g("checked",e.darkMode())}}var w={accounts:{label:"Accounts",icon:"accounts"},network:{label:"Network",icon:"network"},users:{label:"Users",icon:"user"},groups:{label:"Groups",icon:"users"},requests:{label:"Requests",icon:"inbox"},activity:{label:"Activity",icon:"clock"}},re=["accounts","network"],le=["accounts","network","users","groups","requests","activity"],de=[{label:"Your access",items:re.map(n=>f(h({},w[n]),{active:n==="accounts"}))},{label:"Administration",accent:!0,items:le.map(n=>n==="requests"?f(h({},w[n]),{badge:3}):w[n])}],$=class n{brandName=d("Acme Cloud");showLogo=d(!0);logoText=d("A");logoUrl=d("");logoBg=L(()=>this.logoUrl()?`url("${this.logoUrl().replace(/"/g,"%22")}")`:"");userName=d("Avery Lee");userRole=d("admin");unread=d(!0);staticBell=d(!0);nav=d(de);variant=d("plain");collapsed=d(!1);darkMode=d(!1);darkModeToggle=k();collapseToggle=k();host=y(E);userMenuOpen=T(!1);toggleUserMenu(){this.userMenuOpen.set(!this.userMenuOpen())}closeUserMenu(){this.userMenuOpen.set(!1)}onDocumentClick(r){this.userMenuOpen()&&(this.host.nativeElement.contains(r.target)||this.closeUserMenu())}onEscape(){this.closeUserMenu()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=D({type:n,selectors:[["app-sidebar"]],hostVars:2,hostBindings:function(e,o){e&1&&_("click",function(V){return o.onDocumentClick(V)},M)("keydown.escape",function(){return o.onEscape()},M),e&2&&x("data-variant",o.variant())("data-collapsed",o.collapsed())},inputs:{brandName:[1,"brandName"],showLogo:[1,"showLogo"],logoText:[1,"logoText"],logoUrl:[1,"logoUrl"],userName:[1,"userName"],userRole:[1,"userRole"],unread:[1,"unread"],staticBell:[1,"staticBell"],nav:[1,"nav"],variant:[1,"variant"],collapsed:[1,"collapsed"],darkMode:[1,"darkMode"]},outputs:{darkModeToggle:"darkModeToggle",collapseToggle:"collapseToggle"},ngContentSelectors:H,decls:25,vars:15,consts:[[1,"brandwrap"],["type","button",1,"railtoggle",3,"click"],["name","chevron-right",1,"ic",3,"strokeWidth"],["role","tooltip",1,"railtoggle-tip"],[1,"brandrow"],[1,"logo",3,"background-image","has-logo","logo-only"],[1,"brandname"],[1,"bellslot"],["type","button",1,"bell","bell-side"],[1,"networkslot"],[1,"userbox"],["type","button","aria-haspopup","menu",1,"userrow",3,"click"],[1,"avatar"],[1,"usermeta"],[1,"username",3,"title"],[1,"adminbadge"],["role","menu",1,"usermenu"],[1,"logo"],["name","bell",1,"ic"],[1,"dot"],[1,"navlabel"],["routerLinkActive","active",1,"navlink",3,"accent","routerLink","title"],[1,"navlink",3,"active","accent","title"],["routerLinkActive","active",1,"navlink",3,"routerLink","title"],[1,"nlmain"],[1,"ic",3,"name"],[1,"nltext"],[1,"reqbadge"],["role","img",1,"hint",3,"title"],["name","refresh",1,"ic"],[1,"navlink",3,"title"],[1,"usermenu-row"],[1,"usermenu-label"],["ariaLabel","Toggle dark mode",3,"checkedChange","checked"]],template:function(e,o){e&1&&(I(q),a(0,"aside")(1,"div",0)(2,"button",1),_("click",function(){return o.collapseToggle.emit()}),m(3,"app-icon",2),a(4,"span",3),p(5),i()(),a(6,"div",4),c(7,Y,2,7,"div",5),c(8,K,2,1,"span",6),a(9,"span",7),C(10),c(11,G,3,2,"button",8),i()()(),a(12,"nav"),O(13,oe,5,1,"div",null,j),i(),a(15,"div",9),C(16,1),i(),a(17,"div",10)(18,"button",11),_("click",function(){return o.toggleUserMenu()}),m(19,"span",12),a(20,"span",13)(21,"span",14),p(22),i(),c(23,ie,2,1,"span",15),i()(),c(24,ae,7,2,"div",16),i()()),e&2&&(t(2),x("aria-label",o.collapsed()?"Open sidebar":"Close sidebar")("aria-expanded",!o.collapsed()),t(),v("flip",!o.collapsed()),g("strokeWidth",2.2),t(2),u(o.collapsed()?"Open sidebar":"Close sidebar"),t(2),s(o.showLogo()?7:-1),t(),s(o.brandName()?8:-1),t(3),s(o.staticBell()?11:-1),t(2),P(o.nav()),t(5),x("aria-expanded",o.userMenuOpen())("aria-label","User menu \u2014 "+o.userName()),t(3),g("title",o.userName()),t(),u(o.userName()),t(),s(o.userRole()?23:-1),t(),s(o.userMenuOpen()?24:-1))},dependencies:[B,U,A,R],styles:['[_nghost-%COMP%]{display:contents}aside[_ngcontent-%COMP%]{width:240px;flex-shrink:0;display:flex;flex-direction:column;background:transparent;box-shadow:var(--shadow-card);transition:width .24s var(--ease-emphasized);position:relative;z-index:2}[data-variant="glass"][_nghost-%COMP%] aside[_ngcontent-%COMP%]{border-radius:16px;-webkit-backdrop-filter:blur(42px) saturate(1.5);backdrop-filter:blur(42px) saturate(1.5);background:var(--glass-panel-bg, rgba(255, 255, 255, .84))}.brandwrap[_ngcontent-%COMP%]{position:relative}.brandrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:18px 16px;box-sizing:border-box;height:66px}.logo[_ngcontent-%COMP%]{width:26px;height:26px;flex-shrink:0;display:grid;place-items:center;border-radius:calc(var(--radius) - .0625rem);background:var(--brand);color:var(--brand-foreground);font-size:13px;font-weight:700;background-size:cover;background-position:center}.logo.has-logo[_ngcontent-%COMP%]{background-color:transparent}.logo.logo-only[_ngcontent-%COMP%]{flex:1;width:auto;height:38px;background-size:contain;background-position:left center}.bellslot[_ngcontent-%COMP%]{margin-left:auto;display:inline-flex;align-items:center}.brandname[_ngcontent-%COMP%]{font-size:14px;font-weight:600;letter-spacing:-.01em}.bell[_ngcontent-%COMP%]{position:relative;flex-shrink:0;display:grid;place-items:center;width:30px;height:30px;border-radius:var(--radius);cursor:pointer;color:var(--muted-foreground)}.bell-side[_ngcontent-%COMP%]{margin-left:auto;border:none;background:transparent}.bell-side[_ngcontent-%COMP%]:hover{background:var(--muted)}.bell[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:16px;height:16px}.dot[_ngcontent-%COMP%]{position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--notif);box-shadow:0 0 0 2px var(--surface)}nav[_ngcontent-%COMP%]{flex:1;padding:16px 12px 4px;display:flex;flex-direction:column;gap:26px}nav[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] + div[_ngcontent-%COMP%]{border-top:1px solid var(--border);padding-top:20px}.navlabel[_ngcontent-%COMP%]{padding:0 8px 6px;font-size:12px;font-weight:400;color:var(--text-secondary)}.navlink[_ngcontent-%COMP%] + .navlink[_ngcontent-%COMP%]{margin-top:4px}.navlink[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:7px 8px;border-radius:var(--radius);font-size:14px;color:var(--surface-foreground);text-decoration:none;cursor:pointer}.nlmain[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:10px;min-width:0}.navlink[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:17px;height:17px;flex-shrink:0}.navlink[_ngcontent-%COMP%]:hover{background:var(--state-hover)}.navlink.active[_ngcontent-%COMP%]{background:var(--state-selected);color:var(--brand-text);font-weight:500}.navlink.active[_ngcontent-%COMP%]:hover{background:var(--state-selected)}.reqbadge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;height:18px;min-width:18px;padding:0 5px;border-radius:999px;background:var(--brand);color:var(--brand-foreground);font-size:10.5px;font-weight:500}.hint[_ngcontent-%COMP%]{display:inline-flex;color:var(--muted-foreground)}.navlink[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:13px;height:13px}.networkslot[_ngcontent-%COMP%]{padding:0 12px 10px}.networkslot[_ngcontent-%COMP%]:empty{padding:0}.userbox[_ngcontent-%COMP%]{position:relative;border-top:1px solid var(--border);padding:8px}.userrow[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:62px;padding:8px;border:none;border-radius:var(--radius);background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.userrow[_ngcontent-%COMP%]:hover, .userrow[aria-expanded=true][_ngcontent-%COMP%]{background:var(--state-hover)}.avatar[_ngcontent-%COMP%]{width:30px;height:30px;flex-shrink:0;border-radius:50%;background:var(--muted);border:1px solid var(--border)}.usermeta[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;min-width:0;flex:1}.username[_ngcontent-%COMP%]{max-width:100%;font-size:13px;font-weight:600;color:var(--surface-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}.adminbadge[_ngcontent-%COMP%]{display:inline-block;margin-top:7px;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:500;background:color-mix(in oklab,var(--brand) 12%,transparent);color:var(--brand-text)}.usermenu[_ngcontent-%COMP%]{position:absolute;left:8px;right:8px;bottom:100%;margin-bottom:6px;padding:6px;border-radius:12px;background:var(--popover-bg);border:1px solid var(--border);box-shadow:var(--toast-shadow);z-index:10;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);overflow:hidden}.usermenu-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--surface-foreground)}.usermenu-label[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px}.usermenu[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:16px;height:16px;color:var(--muted-foreground)}.railtoggle[_ngcontent-%COMP%]{position:absolute;bottom:0;right:-9px;transform:translateY(50%);z-index:3;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid color-mix(in oklab,var(--ring) 25%,transparent);background:color-mix(in oklab,var(--popover-bg) 94%,var(--brand) 6%);box-shadow:var(--shadow-card);color:var(--muted-foreground);cursor:pointer}.railtoggle[_ngcontent-%COMP%]:hover{background:var(--brand);border-color:var(--brand);color:#fff}.railtoggle[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:12px;height:12px;color:var(--muted-foreground);transition:transform .15s ease,color .15s ease}.railtoggle[_ngcontent-%COMP%]:hover .ic[_ngcontent-%COMP%]{color:#fff}.railtoggle[_ngcontent-%COMP%] .ic.flip[_ngcontent-%COMP%]{transform:rotate(180deg)}.railtoggle-tip[_ngcontent-%COMP%]{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);z-index:4;padding:4px 8px;border-radius:6px;border:1px solid var(--border);background:var(--popover-bg);box-shadow:var(--shadow-card);color:var(--surface-foreground);font-size:11px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.railtoggle[_ngcontent-%COMP%]:hover .railtoggle-tip[_ngcontent-%COMP%], .railtoggle[_ngcontent-%COMP%]:focus-visible .railtoggle-tip[_ngcontent-%COMP%]{opacity:1}[data-collapsed="true"][_nghost-%COMP%] aside[_ngcontent-%COMP%]{width:56px}[data-collapsed="true"][_nghost-%COMP%] .brandrow[_ngcontent-%COMP%]{flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;padding:18px 8px 6px;height:auto}[data-collapsed="true"][_nghost-%COMP%] .brandname[_ngcontent-%COMP%], [data-collapsed="true"][_nghost-%COMP%] .nltext[_ngcontent-%COMP%], [data-collapsed="true"][_nghost-%COMP%] .usermeta[_ngcontent-%COMP%]{display:none}[data-collapsed="true"][_nghost-%COMP%] .navlabel[_ngcontent-%COMP%]{visibility:hidden;overflow:hidden;white-space:nowrap}[data-collapsed="true"][_nghost-%COMP%] .bellslot[_ngcontent-%COMP%]{margin-left:0}[data-collapsed="true"][_nghost-%COMP%] .logo.logo-only[_ngcontent-%COMP%]{flex:none;width:26px;height:26px;background-size:contain;background-position:center}[data-collapsed="true"][_nghost-%COMP%] nav[_ngcontent-%COMP%]{padding:10px 10px 4px}[data-collapsed="true"][_nghost-%COMP%] .navlink[_ngcontent-%COMP%]{position:relative;width:36px;height:36px;padding:0;margin:0 auto;justify-content:center}[data-collapsed="true"][_nghost-%COMP%] .navlink[_ngcontent-%COMP%] + .navlink[_ngcontent-%COMP%]{margin-top:4px}[data-collapsed="true"][_nghost-%COMP%] .navlink.accent[_ngcontent-%COMP%]{color:var(--brand-text)}[data-collapsed="true"][_nghost-%COMP%] .reqbadge[_ngcontent-%COMP%]{position:absolute;top:-3px;right:-3px;height:14px;min-width:14px;padding:0 3px;font-size:9px}[data-collapsed="true"][_nghost-%COMP%] .hint[_ngcontent-%COMP%]{position:absolute;top:-2px;right:-2px}[data-collapsed="true"][_nghost-%COMP%] .navlink[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] .ic[_ngcontent-%COMP%]{width:11px;height:11px}[data-collapsed="true"][_nghost-%COMP%] .networkslot[_ngcontent-%COMP%]{display:none}[data-collapsed="true"][_nghost-%COMP%] .userbox[_ngcontent-%COMP%]{padding:21px 0}[data-collapsed="true"][_nghost-%COMP%] .userrow[_ngcontent-%COMP%]{width:36px;min-height:0;height:36px;padding:0;margin:0 auto;justify-content:center}[data-collapsed="true"][_nghost-%COMP%] .usermenu[_ngcontent-%COMP%]{right:auto;min-width:208px}@media(prefers-reduced-motion:reduce){aside[_ngcontent-%COMP%]{transition:none}}']})};export{w as a,re as b,le as c,$ as d};
@@ -0,0 +1 @@
1
+ import{Ca as t,Da as o,Na as d,Oa as m,Va as p,Wa as l,Xa as c,Z as a,fa as r,qb as u,tb as n}from"./chunk-P5WRM37W.js";var y=["*"],g=class s{title=n.required();size=n("page");classes=u(()=>"rounded-xl border-2 border-dashed border-border text-center "+(this.size()==="page"?"p-10":"p-6"));static \u0275fac=function(e){return new(e||s)};static \u0275cmp=r({type:s,selectors:[["app-empty-state"]],hostAttrs:[1,"block"],inputs:{title:[1,"title"],size:[1,"size"]},ngContentSelectors:y,decls:5,vars:3,consts:[[1,"text-sm","font-medium","text-surface-foreground"],[1,"mt-1","text-sm","text-muted-foreground"]],template:function(e,i){e&1&&(d(),t(0,"div")(1,"p",0),l(2),o(),t(3,"p",1),m(4),o()()),e&2&&(p(i.classes()),a(2),c(i.title()))},encapsulation:2})};export{g as a};
@@ -0,0 +1 @@
1
+ import{a as O}from"./chunk-IKK5DQ3Z.js";import{a as I}from"./chunk-H5H727H6.js";import{a as X}from"./chunk-2V6RSAAC.js";import{t as B,v as V}from"./chunk-JMBXRK3I.js";import{a as j}from"./chunk-DOLRLYW7.js";import{c as H}from"./chunk-O4QSFUXB.js";import{a as z}from"./chunk-4SK6XQ6C.js";import{d as $}from"./chunk-2SO4BVIT.js";import{a as Y}from"./chunk-KPNHT4MK.js";import{a as W,b as K}from"./chunk-GKI3R2JB.js";import{$ as L,B as _,E as y,H as a,Kb as k,Q as h,Rb as G,g as m,h as M,k as l,m as T,qb as f,r as E}from"./chunk-P5WRM37W.js";import{a as d,b as g}from"./chunk-WFIHWVQO.js";var q=class t{http=a(k);listCatalog(){return this.http.get("/api/requests/catalog").pipe(l(e=>e.accounts))}listCatalogPage(e){return this.http.get("/api/requests/catalog",{params:K(e)})}listMine(){return this.http.get("/api/requests").pipe(l(e=>e.requests))}create(e,i,r,s){return this.http.post("/api/requests",{accountNumber:e,roleName:i,reason:r,durationHours:s}).pipe(l(n=>n.request))}listResourceCatalog(){return this.http.get("/api/requests/resource-catalog").pipe(l(e=>e.resources))}createResourceRequest(e,i,r){return this.http.post("/api/requests/resource",{resourceId:e,reason:i,durationHours:r}).pipe(l(s=>s.request))}markSeen(){return this.http.post("/api/requests/seen",{}).pipe(l(e=>e.cleared))}listAll(e,i={}){let r=[...e?[`status=${e}`]:[],...i.usage?["usage=1"]:[]].join("&"),s=r?`/api/admin/requests?${r}`:"/api/admin/requests";return this.http.get(s).pipe(l(n=>n.requests))}approve(e,i,r){return this.http.post(`/api/admin/requests/${encodeURIComponent(e)}/approve`,{note:i,durationHours:r}).pipe(l(s=>s.request))}deny(e,i){return this.http.post(`/api/admin/requests/${encodeURIComponent(e)}/deny`,{note:i}).pipe(l(r=>r.request))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})};var S=class t{http=a(k);revocationFeed(){return this.http.get("/api/notifications/revocations").pipe(l(e=>({notices:(e.notices??[]).map(i=>g(d({},i),{change:i.change??"REVOKED"}))})))}markRevocationsSeen(){return this.http.post("/api/notifications/revocations/seen",{}).pipe(l(e=>e.cleared))}prefs(){return this.http.get("/api/preferences/notifications")}savePrefs(e){return this.http.put("/api/preferences/notifications",e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})};var U={enabled:!0,kinds:{granted:!0,revoked:!0,decided:!0,expiring:!0,session:!0,requests:!0,reviews:!0}};var ge=15*6e4,ie="/login?reauth=1";function he(t,e){return typeof t=="number"&&e>=t-ge&&e<t}var fe=3,A="/accounts?bell=1",P="/admin/requests";function C(t,e,i=Date.now()){let r=[];for(let s of t.changes)s.seen||r.push({kind:s.change==="GRANTED"?"granted":"revoked",notice:s});for(let s of t.myRequests)s.status!=="PENDING"&&!s.seen&&r.push({kind:"decided",request:s});for(let s of t.expiry.expiring)s.seen||r.push({kind:"expiring",target:"role",phase:"expiring",notice:s});for(let s of t.expiry.expired)s.seen||r.push({kind:"expiring",target:"role",phase:"expired",notice:s});for(let s of t.resourceExpiry.expiring)s.seen||r.push({kind:"expiring",target:"resource",phase:"expiring",notice:s});for(let s of t.resourceExpiry.expired)s.seen||r.push({kind:"expiring",target:"resource",phase:"expired",notice:s});for(let s of t.pluginExpiry.expiring)s.seen||r.push({kind:"expiring",target:"plugin",phase:"expiring",notice:s});for(let s of t.pluginExpiry.expired)s.seen||r.push({kind:"expiring",target:"plugin",phase:"expired",notice:s});if(he(t.sessionEndsAt,i)&&r.push({kind:"session",endsAt:t.sessionEndsAt}),e)for(let s of t.pending)r.push({kind:s.type==="REAPPROVAL"?"reviews":"requests",request:s});return r}function F(t,e){switch(t.kind){case"revoked":{let i=t.notice;return{kind:"revoked",key:`notice:${i.noticeId}`,title:"Access revoked",body:`${Z(i,e.label)} \u2014 ${se(i)}`,route:ee(i),urgent:!0}}case"granted":{let i=t.notice;return{kind:"granted",key:`notice:${i.noticeId}`,title:"Access granted",body:`${Z(i,e.label)} \u2014 ${ne(i)}`,route:ee(i),urgent:!1}}case"decided":{let i=t.request,r=i.status==="APPROVED",s=i.type==="REAPPROVAL",n=D(i,e.label),o;if(r){let c=i.grantedDurationHours;o=s?`${n}. Your access continues.`:`${n}${c?` for ${c} h`:""}. Open to use it.`}else o=i.decisionNote?`${n}. "${i.decisionNote}"`:`${n}. You can request it again if you still need it.`;return{kind:"decided",key:`req:${i.requestId}:${i.status}`,title:`${s?"Review":"Request"} ${r?"approved":"denied"}`,body:o,route:Ne(i),urgent:!r}}case"expiring":{let i=t.phase==="expired",r=t.notice.expiresAt,s,n,o,c=!0;switch(t.target){case"role":s=`${t.notice.roleName} in ${e.label(t.notice.accountNumber)}`,n=`role:${t.notice.accountNumber}#${t.notice.roleName}`,o=A;break;case"resource":s=`${t.notice.name} (network resource)`,n=`resource:${t.notice.resourceId}`,o="/resources?bell=1";break;case"plugin":s=me(t.notice),n=`plugin:${t.notice.pluginId}#${t.notice.accountNumber}#${t.notice.permission}`,o=ye(t.notice),c=!1;break}return{kind:"expiring",key:`${n}:${r}:${t.phase}`,title:i?"Access expired":"Access expiring",body:i?`${s} expired at ${I(r,{sameDayTimeOnly:!0})}.${c?" Open to request it again.":""}`:`${s} expires ${$(r,e.now)}.${c?" Open to request more time.":""}`,route:o,urgent:i}}case"session":{let i=new Date(t.endsAt).toISOString();return{kind:"session",key:`session:${t.endsAt}`,title:"Session ending soon",body:`Your sign-in ends at ${I(i,{sameDayTimeOnly:!0})} (${$(i,e.now)}). Sign in again now to keep your credentials and network connection.`,route:ie,urgent:!0}}case"requests":{let i=t.request,r=i.requestedDurationHours;return{kind:"requests",key:`pending:${i.requestId}`,title:"New request",body:`${te(i)} asked for ${D(i,e.label)} (${r?`${r} h`:"long-term"})`,route:P,urgent:!1}}case"reviews":{let i=t.request;return{kind:"reviews",key:`review:${i.requestId}`,title:"Review waiting",body:`${te(i)} \xB7 ${D(i,e.label)}`,route:P,urgent:!1}}}}function me(t){return`${t.pluginName} \xB7 ${t.permission} \xB7 ${t.accountName||t.accountNumber}`}function ye(t){return`/plugins/${encodeURIComponent(t.pluginId)}/${t.permission}`}var be=500,Q="notice:";function b(t){if(!t.startsWith(Q))return"";let e=t.slice(Q.length),i=e.indexOf("#");return i<0?e:e.slice(0,i)}var w=class{constructor(e=[],i="",r=be){this.cap=r;this.keys=new Set(e),this.through=i}cap;keys;through;has(e){if(this.keys.has(e))return!0;let i=b(e);return i!==""&&this.through!==""&&i<=this.through}add(e){this.keys.add(e)}snapshot(){let e=this.keys.size-this.cap;if(e>0){let r=[...this.keys].filter(n=>b(n)!=="").sort((n,o)=>b(n).localeCompare(b(o))).slice(0,e);for(let n of r)this.keys.delete(n);let s=r.at(-1);if(s&&b(s)>this.through&&(this.through=b(s)),e-=r.length,e>0)for(let n of[...this.keys].slice(0,e))this.keys.delete(n)}return{keys:[...this.keys],through:this.through}}};function re(t,e,i,r){let s=r.now??Date.now(),n=[],o=new Set;for(let u of t){let p=F(u,r);i.has(p.key)||o.has(p.key)||(o.add(p.key),n.push(p))}let c=[];if(e.enabled){let u=new Map;for(let p of n)e.kinds[p.kind]!==!1&&u.set(p.kind,[...u.get(p.kind)??[],p]);for(let[p,N]of u)N.length>fe?c.push(Re(p,N,s)):c.push(...N)}return{toasts:c,notifiedKeys:n.map(u=>u.key)}}function Re(t,e,i){let r=e.length,s={granted:["Access granted",`${r} new access grants for you \u2014 see the activity bell.`,A],revoked:["Access revoked",`${r} of your access grants were revoked \u2014 see the activity bell.`,A],decided:["Requests decided",`${r} of your requests were decided \u2014 see the activity bell.`,A],expiring:["Access expiring",`${r} of your grants are expiring or expired \u2014 open the activity bell to request more time.`,A],session:["Session ending soon","Your sign-in is about to end \u2014 sign in again to keep working.",ie],requests:["New requests",`${r} requests are waiting.`,P],reviews:["Reviews waiting",`${r} reviews are waiting.`,P]},[n,o,c]=s[t];return{kind:t,key:`${t}:summary:${i}`,title:n,body:o,route:c,urgent:e.some(u=>u.urgent),members:e.map(u=>u.key)}}function R(t){switch(t.kind){case"BUNDLE":return`${t.count??"Several"} access grants`;case"RESOURCE":return t.resourceName??"A network resource";case"SHARE":return t.resourceName??"A dev share";case"PLUGIN":return`${t.pluginName??t.pluginId??"A plugin"} (${t.permission})`;default:return t.roleName??"A role"}}function ve(t,e){switch(t.kind){case"BUNDLE":return t.groupName?`group \xB7 ${t.groupName}`:"several roles and resources";case"RESOURCE":return"network resource";case"SHARE":return"dev share";case"PLUGIN":return`plugin \xB7 ${e(t.accountNumber??"")}`;default:return e(t.accountNumber??"")}}function se(t){switch(t.via){case"GROUP":return"removed with a group membership change.";case"REAPPROVAL":return"its periodic reapproval was denied or lapsed.";case"OWNER":return"the owner stopped sharing it.";case"CASCADE":return t.kind==="RESOURCE"?"the resource was removed from the catalog.":t.kind==="PLUGIN"?"the plugin or account was removed.":t.kind==="BUNDLE"?"they were removed from the catalog.":"the role was removed from the catalog.";default:return t.kind==="SHARE"?"an admin stopped the share.":"an admin revoked it."}}function ne(t){switch(t.via){case"GROUP":return"added with a group membership.";case"OWNER":return"shared with you.";default:return t.kind==="SHARE"?"shared with you.":t.kind==="PLUGIN"?"plugin permission granted.":"an admin granted it."}}function Z(t,e){switch(t.kind){case"BUNDLE":return t.groupName?`${R(t)} via the group ${t.groupName}`:R(t);case"RESOURCE":return`${R(t)} (network resource)`;case"SHARE":return`${R(t)} (dev share)`;default:return`${R(t)} in ${e(t.accountNumber??"")}`}}function ee(t){switch(t.kind){case"RESOURCE":case"SHARE":return"/resources";case"PLUGIN":return ce(t.pluginId,t.permission);default:return"/accounts"}}function oe(t){switch(t.kind){case"ADMIN":return"admin status";case"SERVICE_USER":return"this service user";case"GROUP":{let e=t.group;return e?`the group ${e}`:"this group"}case"RESOURCE":return t.resourceName||"a resource";case"PLUGIN":return`${t.pluginId} (${t.permission})`;default:return t.roleName??""}}function ae(t,e){switch(t.kind){case"ADMIN":case"SERVICE_USER":case"GROUP":return"yearly review";case"RESOURCE":return"network resource";case"PLUGIN":return`plugin \xB7 ${e(t.accountNumber??"")}`;default:return e(t.accountNumber??"")}}function D(t,e){let i=oe(t);switch(t.kind){case"ADMIN":case"SERVICE_USER":case"GROUP":return i;case"RESOURCE":return`${i} (${ae(t,e)})`;default:return`${i} in ${e(t.accountNumber??"")}`}}function Ne(t){switch(t.kind){case"RESOURCE":return"/resources";case"PLUGIN":return ce(t.pluginId,t.permission);default:return"/accounts"}}function ce(t,e){return t?`/plugins/${encodeURIComponent(t)}/${e??"user"}`:"/accounts"}function te(t){return t.group||t.serviceUser||t.email||"A user"}var xe=6e4,Ee=1440*60*1e3,Ae=10080*60*1e3,ke=2160*60*60*1e3,qe=365*24*60*60*1e3,Se=600*1e3,Pe={expiring:[],expired:[]},we={expiring:[],expired:[]},ue={expiring:[],expired:[]},v=t=>t.pipe(E(()=>m(null))),pe="notifications:notified:",de="notifications:notifiedThrough:",le=class t{api=a(q);accountsApi=a(j);resourcesApi=a(z);pluginsApi=a(V);config=a(W);notificationsApi=a(S);adminApi=a(Y);names=a(X);bridge=a(H);auth=a(B);router=a(G);zone=a(L);myRequests=h(null);expiry=h(Pe);resourceExpiry=h(we);pluginExpiry=h(ue);accessChanges=h([]);pending=h(null);serviceUsers=h([]);serviceUsersFetchedAt=0;loading=h(!1);prefs=h(null);prefsRequested=!1;timer;bridgeWired=!1;unseenDecisions=f(()=>(this.myRequests()??[]).filter(e=>e.status!=="PENDING"&&!e.seen));myPending=f(()=>(this.myRequests()??[]).filter(e=>e.status==="PENDING"));unseenExpiry=f(()=>{let{expiring:e,expired:i}=this.expiry();return[...e,...i].filter(r=>!r.seen)});unseenResourceExpiry=f(()=>{let{expiring:e,expired:i}=this.resourceExpiry();return[...e,...i].filter(r=>!r.seen)});unseenPluginExpiry=f(()=>{let{expiring:e,expired:i}=this.pluginExpiry();return[...e,...i].filter(r=>!r.seen)});unseenAccessChanges=f(()=>this.accessChanges().filter(e=>!e.seen));count=f(()=>this.unseenDecisions().length+this.unseenExpiry().length+this.unseenResourceExpiry().length+this.unseenPluginExpiry().length+this.unseenAccessChanges().length+(this.pending()??[]).length);serviceUserNags=f(()=>{let e=Date.now(),i=[];for(let r of this.serviceUsers()){let s=r.secretCreatedAt?e-Date.parse(r.secretCreatedAt):0,n=r.previous?.rotatedAt?Date.parse(r.previous.rotatedAt):0;r.previous&&e-n>Ee?i.push({su:r,tone:"amber",badge:"rotation unfinished",blurb:`The replaced secret still works \u2014 rotated ${O(r.previous.rotatedAt??r.createdAt)}. Remove it once the automation uses the new one.`,cta:"Finish rotation \u2192"}):!r.lastUsedAt&&e-Date.parse(r.secretCreatedAt??r.createdAt)>Ae?i.push({su:r,tone:"gray",badge:"never used",blurb:"Never authenticated \u2014 an unused secret is still a standing admin credential.",cta:"Review \u2192"}):r.lastUsedAt&&e-Date.parse(r.lastUsedAt)>ke?i.push({su:r,tone:"gray",badge:"idle 90+ days",blurb:`Last used ${O(r.lastUsedAt)} \u2014 if the automation is gone, delete its credential.`,cta:"Review \u2192"}):s>qe&&i.push({su:r,tone:"amber",badge:"rotation due",blurb:"The secret is over a year old \u2014 rotate it and update the automation.",cta:"Rotate \u2192"})}return i});adminAttention=f(()=>(this.pending()??[]).length+this.serviceUserNags().length);load(){this.loading.set(!0);let e=!this.prefsRequested;this.prefsRequested=!0,T({mine:v(this.api.listMine()),expiry:v(this.accountsApi.expiryFeed()),resourceExpiry:v(this.resourcesApi.expiryFeed()),pluginExpiry:this.pluginsOn()?v(this.pluginsApi.expiryFeed()):m(ue),changes:v(this.notificationsApi.revocationFeed()),pending:this.auth.isAdmin()?v(this.api.listAll("PENDING")):m([]),serviceUsers:this.auth.isAdmin()&&Date.now()-this.serviceUsersFetchedAt>Se?this.adminApi.listServiceUsers().pipe(E(()=>m(null))):m(null),prefs:e?this.notificationsApi.prefs().pipe(E(()=>m(null))):m(null)}).subscribe(({mine:i,expiry:r,resourceExpiry:s,pluginExpiry:n,changes:o,pending:c,serviceUsers:u,prefs:p})=>{let N=[i,r,s,n,o,c].some(x=>x===null);i?this.myRequests.set(i):this.myRequests.update(x=>x??[]),r&&this.expiry.set(r),s&&this.resourceExpiry.set(s),n&&this.pluginExpiry.set(n),o&&this.accessChanges.set(o.notices),c?this.pending.set(c):this.pending.update(x=>x??[]),u!==null&&(this.serviceUsersFetchedAt=Date.now(),this.serviceUsers.set(u)),p&&this.prefs.set(p),this.loading.set(!1),this.notify(),N||this.reconcileToasts()})}pluginsOn(){try{return!!this.config.config.plugins?.enabled}catch{return!1}}startPolling(){this.load(),this.timer??=setInterval(()=>this.load(),xe),this.bridgeWired||(this.bridgeWired=!0,this.bridge.onOpenRoute(e=>{typeof e=="string"&&e.startsWith("/")&&!e.startsWith("//")&&this.zone.run(()=>{this.router.navigateByUrl(e)})}),this.bridge.onWake(()=>{this.auth.refreshIfStale().then(e=>{e&&this.zone.run(()=>this.load())})}))}stopPolling(){clearInterval(this.timer),this.timer=void 0}ensurePrefs(){this.prefs()||this.notificationsApi.prefs().subscribe({next:e=>this.prefs.set(e),error:()=>{}})}savePrefs(e){let i=this.prefs(),r=i??U;return this.prefs.set({enabled:e.enabled??r.enabled,kinds:d(d({},r.kinds),e.kinds??{})}),this.notificationsApi.savePrefs(e).pipe(_(s=>{this.prefs.set(s),this.load()}),E(s=>(this.prefs.set(i),M(()=>s))))}markSeen(){this.unseenDecisions().length>0&&(this.myRequests.update(e=>(e??[]).map(i=>i.status==="PENDING"?i:g(d({},i),{seen:!0}))),this.api.markSeen().subscribe({error:()=>this.load()})),this.unseenExpiry().length>0&&(this.expiry.update(({expiring:e,expired:i})=>({expiring:e.map(r=>g(d({},r),{seen:!0})),expired:i.map(r=>g(d({},r),{seen:!0}))})),this.accountsApi.markExpirySeen().subscribe({error:()=>this.load()})),this.unseenResourceExpiry().length>0&&(this.resourceExpiry.update(({expiring:e,expired:i})=>({expiring:e.map(r=>g(d({},r),{seen:!0})),expired:i.map(r=>g(d({},r),{seen:!0}))})),this.resourcesApi.markExpirySeen().subscribe({error:()=>this.load()})),this.unseenPluginExpiry().length>0&&(this.pluginExpiry.update(({expiring:e,expired:i})=>({expiring:e.map(r=>g(d({},r),{seen:!0})),expired:i.map(r=>g(d({},r),{seen:!0}))})),this.pluginsApi.markExpirySeen().subscribe({error:()=>this.load()})),this.unseenAccessChanges().length>0&&(this.accessChanges.update(e=>e.map(i=>g(d({},i),{seen:!0}))),this.notificationsApi.markRevocationsSeen().subscribe({error:()=>this.load()})),this.reconcileToasts()}shown=new Map;notified=null;notifiedSub="";feeds(){return{changes:this.accessChanges(),myRequests:this.myRequests()??[],expiry:this.expiry(),resourceExpiry:this.resourceExpiry(),pluginExpiry:this.pluginExpiry(),pending:this.pending()??[],sessionEndsAt:this.auth.sessionEndsAt()}}mappingContext(){return{label:e=>this.names.label(e)}}notify(){let e=this.auth.userSub();if(!e)return;let i=this.notifiedFor(e),r=re(C(this.feeds(),this.auth.isAdmin()),this.prefs()??U,i,this.mappingContext());if(r.notifiedKeys.length){for(let s of r.notifiedKeys)i.add(s);this.persistNotified(e,i)}for(let s of r.toasts)this.deliver(s)}deliver(e){let i=e.members;if(this.bridge.isDesktop){if(!this.bridge.notifySupported)return;this.bridge.notify(e.title,e.body,{route:e.route,key:e.key,silent:!e.urgent}).catch(()=>{}),this.shown.set(e.key,{handle:null,members:i});return}if(!(typeof Notification>"u"||Notification.permission!=="granted"))try{let r=new Notification(e.title,{body:e.body,tag:e.key,silent:!e.urgent});r.onclick=()=>{window.focus(),r.close(),this.zone.run(()=>{this.router.navigateByUrl(e.route)})},this.shown.set(e.key,{handle:r,members:i})}catch{}}reconcileToasts(){if(this.shown.size===0)return;let e=this.mappingContext(),i=new Set(C(this.feeds(),this.auth.isAdmin()).map(r=>F(r,e).key));for(let[r,s]of this.shown)(s.members?s.members.some(o=>i.has(o)):i.has(r))||(this.shown.delete(r),s.handle?s.handle.close():this.bridge.notifyCloseSupported&&this.bridge.notifyClose(r).catch(()=>{}))}notifiedFor(e){if(this.notified&&this.notifiedSub===e)return this.notified;this.notifiedSub=e;let i=[],r="";try{let s=localStorage.getItem(pe+e),n=s?JSON.parse(s):[];Array.isArray(n)&&(i=n.filter(o=>typeof o=="string")),r=localStorage.getItem(de+e)??""}catch{}return this.notified=new w(i,r),this.notified}persistNotified(e,i){let{keys:r,through:s}=i.snapshot();try{localStorage.setItem(pe+e,JSON.stringify(r)),s&&localStorage.setItem(de+e,s)}catch{}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})};export{q as a,U as b,he as c,ye as d,R as e,ve as f,se as g,ne as h,oe as i,ae as j,le as k};
@@ -0,0 +1 @@
1
+ import{b as a}from"./chunk-NABAVDRL.js";import"./chunk-WEDAFMID.js";import"./chunk-GK2T2SMO.js";import"./chunk-GHEU25TG.js";import"./chunk-BNFKRZTP.js";import"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import"./chunk-O4QSFUXB.js";import"./chunk-GPKKIOHD.js";import"./chunk-TM43WUKM.js";import"./chunk-6KFR7DYY.js";import"./chunk-CP4XZPOA.js";import"./chunk-FIUVIKAN.js";import"./chunk-EVP5UVDQ.js";import"./chunk-OATVFQXO.js";import"./chunk-EQ4PF25J.js";import"./chunk-ZDCURXPS.js";import"./chunk-PSMER3HX.js";import"./chunk-KCCEQIXX.js";import"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import"./chunk-4SK6XQ6C.js";import"./chunk-SJMLX5AT.js";import"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import"./chunk-NO5D6WDF.js";import"./chunk-GKI3R2JB.js";import"./chunk-M6OAYNRE.js";import"./chunk-XJM3HDJQ.js";import"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import"./chunk-D7TR2ORJ.js";import"./chunk-P5WRM37W.js";import"./chunk-WFIHWVQO.js";export{a as GroupsPageComponent};
@@ -0,0 +1 @@
1
+ import{a as C}from"./chunk-GKI3R2JB.js";import{a as P,b as k}from"./chunk-4N2IUS6T.js";import{E as g,H as f,Q as y,qb as A}from"./chunk-P5WRM37W.js";var B={1:3,2:7,3:12,4:19,5:27,6:36,7:48,8:62},D={10:88,11:70,12:52},E={none:"0px",sm:"0.25rem",md:"0.5rem",lg:"0.75rem"};function m(t){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(t.trim());if(!e)return null;let r=e[1].length===3?[...e[1]].map(n=>n+n).join(""):e[1];return[0,2,4].map(n=>parseInt(r.slice(n,n+2),16)/255)}function d([t,e,r]){let n=o=>o<=.04045?o/12.92:Math.pow((o+.055)/1.055,2.4);return .2126*n(t)+.7152*n(e)+.0722*n(r)}var N=4.5;function G(t,e){let r=m(t),n=m(e);if(!r||!n)return 21;let[o,i]=d(r)>d(n)?[d(r),d(n)]:[d(n),d(r)];return(o+.05)/(i+.05)}function I(t,e){let r=m(t),n=m(e);if(!r||!n)return 0;let o=([c,_,j])=>.2126729*c**2.4+.7151522*_**2.4+.072175*j**2.4,i=c=>c>.022?c:c+(.022-c)**1.414,s=i(o(r)),a=i(o(n));if(Math.abs(a-s)<5e-4)return 0;if(a>s){let c=(a**.56-s**.57)*1.14;return(c<.1?0:c-.027)*100}let u=(a**.65-s**.62)*1.14;return(u>-.1?0:u+.027)*100}function S(t){let[e,r,n]=m(t)??[0,0,0],o=Math.max(e,r,n),i=Math.min(e,r,n),s=(o+i)/2,a=o-i;if(a===0)return[0,0,s];let u=s>.5?a/(2-o-i):a/(o+i);return[(o===e?(r-n)/a+(r<n?6:0):o===r?(n-e)/a+2:(e-r)/a+4)/6,u,s]}function $(t,e,r){let n=o=>{let i=(o+t*12)%12,s=e*Math.min(r,1-r),a=r-s*Math.max(-1,Math.min(i-3,Math.min(9-i,1)));return Math.round(a*255).toString(16).padStart(2,"0")};return`#${n(0)}${n(8)}${n(4)}`}var K={light:"#f4f6f8",dark:"#26282f"};function X(t,e,r){let[n,o]=S(t),[,,i]=S(t),s=t;for(let a=0;a<30&&G(s,e)<N;a++)i=Math.max(.05,Math.min(.97,i+(r?.03:-.03))),s=$(n,o,i);return s}var Y="#15181e";function U(t){let e=getComputedStyle(t).getPropertyValue("--gray-12").trim();return m(e)?e:Y}function V(t,e){return m(t)?Math.abs(I("#ffffff",t))>=Math.abs(I(e,t))?"#ffffff":e:"#ffffff"}var O="#101216";function W(t,e){let n=t.getAttribute("data-theme")==="dark"?O:"white";for(let[o,i]of Object.entries(B))t.style.setProperty(`--accent-${o}`,`color-mix(in oklch, ${e} ${i}%, ${n})`);t.style.setProperty("--accent-9",e);for(let[o,i]of Object.entries(D))t.style.setProperty(`--accent-${o}`,`color-mix(in oklch, ${e} ${i}%, black)`)}var l={};function L(t){l.accent&&p(t,l.accent,l.hover),h(t,l.panel),b(t,l.border)}function p(t,e,r){l.accent=e,l.hover=r,e==="mono"&&(e=z(t));let n=t.getAttribute("data-theme")==="dark";t.style.setProperty("--brand-foreground",V(e,U(t))),t.style.setProperty("--knob-accent",e),t.style.setProperty("--brand-primary",e),W(t,e);let o=r??`color-mix(in srgb, ${e} 85%, black)`;t.style.setProperty("--brand-primary-hover",o),r&&t.style.setProperty("--accent-10",r);let i=X(e,K[n?"dark":"light"],n);t.style.setProperty("--brand-text",i),t.style.setProperty("--brand-muted-foreground",i)}function Z(t){let e=t.branding??{},r=document.documentElement;e.primaryColor?p(r,e.primaryColor==="mono"?"mono":M(e.primaryColor,e.accentDepth??0),e.primaryHoverColor):e.primaryHoverColor&&(r.style.setProperty("--brand-primary-hover",e.primaryHoverColor),r.style.setProperty("--accent-10",e.primaryHoverColor)),e.accentColor&&r.style.setProperty("--brand-accent",e.accentColor),e.grayTone&&e.grayTone!=="slate"&&(r.dataset.grayTone=e.grayTone),e.radius&&E[e.radius]&&r.style.setProperty("--radius",E[e.radius]),h(r,e.panelStrength),b(r,e.borderStrength),x(r,e.gradientStrength),q(e.iconSet),document.title=e.projectName||"Access Portal"}function q(t){k.set(P(t)?t:"outline")}var H={light:.42,dark:.035};function M(t,e){if(e<=0||!m(t))return t;let[r,n,o]=S(t),i=Math.min(100,e)/100,s=Math.max(o-o*.5*i,.12),a=Math.min(1,n+(1-n)*.15*i);return $(r,a,s)}function z(t){let e=document.createElement("div");e.style.color=getComputedStyle(t).getPropertyValue("--gray-12").trim()||"#18181b",e.style.display="none",t.appendChild(e);let r=getComputedStyle(e).color.match(/\d+/g);return e.remove(),!r||r.length<3?"#18181b":`#${r.slice(0,3).map(n=>(+n).toString(16).padStart(2,"0")).join("")}`}var F={light:{color:"15, 18, 25",floor:.04,max:.22,strongFloor:.08,strongMax:.34},dark:{color:"255, 255, 255",floor:.05,max:.2,strongFloor:.09,strongMax:.3}};function b(t,e){if(l.border=e,e==null||!isFinite(e)){t.style.removeProperty("--border"),t.style.removeProperty("--border-strong");return}let r=Math.min(100,Math.max(0,e))/100,n=t.getAttribute("data-theme")==="dark"?F.dark:F.light,o=(n.floor+r*(n.max-n.floor)).toFixed(3),i=(n.strongFloor+r*(n.strongMax-n.strongFloor)).toFixed(3);t.style.setProperty("--border",`rgba(${n.color}, ${o})`),t.style.setProperty("--border-strong",`rgba(${n.color}, ${i})`)}function x(t,e){if(e==null||!isFinite(e)){t.style.removeProperty("--glass-panel-glow-mult");return}let r=Math.min(100,Math.max(0,e))/50;t.style.setProperty("--glass-panel-glow-mult",String(r))}function h(t,e){if(l.panel=e,e==null||!isFinite(e)){t.style.removeProperty("--glass-panel-bg");return}let r=Math.min(100,Math.max(0,e))/50,n=t.getAttribute("data-theme")==="dark",o=Math.min(1,(n?H.dark:H.light)*r);t.style.setProperty("--glass-panel-bg",`rgba(255, 255, 255, ${o})`)}var T="accessPortal.accent",v=class t{configService=f(C);override=y(this.readStored());accent=A(()=>this.override()??this.configService.branding().primaryColor??null);effective(){let e=this.override();if(e)return e;let r=this.configService.branding();return r.primaryColor?r.primaryColor==="mono"?"mono":M(r.primaryColor,r.accentDepth??0):null}configHover(){return this.override()?void 0:this.configService.branding().primaryHoverColor||void 0}constructor(){let e=this.effective();e&&p(document.documentElement,e,this.configHover())}set(e){this.override.set(e),localStorage.setItem(T,e),p(document.documentElement,e)}clear(){this.override.set(null),localStorage.removeItem(T),this.restoreFromConfig()}reapplyForTheme(){L(document.documentElement)}restoreFromConfig(){let e=document.documentElement,r=this.effective();r&&p(e,r,this.configHover());let n=this.configService.branding();h(e,n.panelStrength),b(e,n.borderStrength),x(e,n.gradientStrength)}readStored(){return localStorage.getItem(T)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=g({token:t,factory:t.\u0275fac,providedIn:"root"})};var w="accessPortal.theme",R=class t{accentService=f(v);theme=y(this.readInitial());constructor(){this.apply(this.theme())}toggle(){this.set(this.theme()==="dark"?"light":"dark")}set(e){this.theme.set(e),localStorage.setItem(w,e),this.apply(e)}apply(e){document.documentElement.setAttribute("data-theme",e),this.accentService.reapplyForTheme(),window.infraDesktop?.setTheme?.(e)}readInitial(){return localStorage.getItem(w)==="dark"?"dark":"light"}static \u0275fac=function(r){return new(r||t)};static \u0275prov=g({token:t,factory:t.\u0275fac,providedIn:"root"})};export{E as a,p as b,Z as c,M as d,b as e,x as f,h as g,v as h,R as i};
@@ -0,0 +1 @@
1
+ import{H as t,T as i,ha as n}from"./chunk-P5WRM37W.js";var r=class e{el=t(i);ngAfterViewInit(){this.el.nativeElement.focus(),this.el.nativeElement.select()}static \u0275fac=function(c){return new(c||e)};static \u0275dir=n({type:e,selectors:[["input","appAutofocusSelect",""]]})};export{r as a};
@@ -0,0 +1 @@
1
+ import{Ca as a,Da as o,Ma as s,Na as x,Oa as u,Va as b,Wa as l,Xa as p,Ya as C,Z as n,fa as f,sa as c,ta as m,tb as r}from"./chunk-P5WRM37W.js";var v=["*"];function E(e,d){if(e&1&&(a(0,"span",2),l(1),o()),e&2){let t=s();n(),p(t.hint())}}function h(e,d){if(e&1&&(a(0,"span",3),l(1),o()),e&2){let t=s();n(),p(t.error())}}var g=class e{label=r.required();hint=r("");error=r("");static \u0275fac=function(t){return new(t||e)};static \u0275cmp=f({type:e,selectors:[["app-field"]],hostAttrs:[1,"block"],inputs:{label:[1,"label"],hint:[1,"hint"],error:[1,"error"]},ngContentSelectors:v,decls:6,vars:5,consts:[[1,"block"],[1,"block","text-sm","font-medium","text-surface-foreground"],[1,"mb-1.5","block","text-xs","font-normal","text-text-secondary"],[1,"mt-1","block","text-xs","text-danger"]],template:function(t,i){t&1&&(x(),a(0,"label",0)(1,"span",1),l(2),o(),c(3,E,2,1,"span",2),u(4),c(5,h,2,1,"span",3),o()),t&2&&(n(),b(i.hint()?"":"mb-1.5"),n(),C(" ",i.label()," "),n(),m(i.hint()?3:-1),n(2),m(i.error()?5:-1))},encapsulation:2})};export{g as a};
@@ -0,0 +1,2 @@
1
+ import{a as Ge,b as H,c as Je,d as Ze,e as G,f as J,g as Xe,h as et,i as tt,j as it,k as nt,l as ot,m as at,n as rt,o as Z,p as st,q as lt,r as X,s as ee,t as ct,u as dt,v as mt,w as pt,x as R,y as ut,z as gt}from"./chunk-EW2VMNHE.js";import{f as He}from"./chunk-CV7EODPO.js";import{a as L}from"./chunk-H5H727H6.js";import{a as Le}from"./chunk-2V6RSAAC.js";import"./chunk-DOLRLYW7.js";import{a as We}from"./chunk-KEBESIXR.js";import{a as Ye}from"./chunk-6KFR7DYY.js";import{a as ze}from"./chunk-CP4XZPOA.js";import{a as Be}from"./chunk-EVP5UVDQ.js";import{a as Re,b as Ve}from"./chunk-OATVFQXO.js";import{a as je}from"./chunk-EQ4PF25J.js";import{a as Qe,d as Ue,e as Ke}from"./chunk-ZDCURXPS.js";import{a as Me}from"./chunk-PSMER3HX.js";import{a as qe}from"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import"./chunk-2SO4BVIT.js";import{b as ke,e as Fe,i as Pe,j as De,k as Ie,o as Oe,p as Y}from"./chunk-NO5D6WDF.js";import{c as Te}from"./chunk-GKI3R2JB.js";import{a as $e}from"./chunk-XJM3HDJQ.js";import{b as Ee}from"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import{a as Ne}from"./chunk-D7TR2ORJ.js";import{Aa as l,Ba as M,Eb as we,H as E,Ha as q,Ia as N,J as C,K as b,Ka as S,Ma as u,Pb as Se,Q as y,Rb as Ae,Sa as j,Ua as Q,Va as U,Wa as p,Xa as x,Ya as A,Z as r,Za as he,ab as ye,bb as xe,cb as Ce,fa as _e,ib as K,ja as D,nb as be,pb as W,qb as h,ra as k,rb as z,sa as f,ta as _,ua as ve,wa as I,xa as O,ya as g,za as c}from"./chunk-P5WRM37W.js";import{a as F,b as P}from"./chunk-WFIHWVQO.js";function St(i){return`"${(/^[=+\-@]/.test(i)?`'${i}`:i).replace(/"/g,'""')}"`}function ft(i,t){return"\uFEFF"+[i,...t].map(e=>e.map(St).join(",")).join(`\r
2
+ `)}function _t(i,t){let e=URL.createObjectURL(i),n=document.createElement("a");n.href=e,n.download=t,n.click(),URL.revokeObjectURL(e)}var xt=i=>({$implicit:i}),Ct=(i,t)=>t.e.eventId;function At(i,t){if(i&1){let e=N();c(0,"input",15),S("change",function(o){C(e);let a=u();return b(a.setCustom("from",o.target.value))}),l(),c(1,"span",16),p(2,"\u2192"),l(),c(3,"input",17),S("change",function(o){C(e);let a=u();return b(a.setCustom("to",o.target.value))}),l()}if(i&2){let e=u();g("value",e.customFrom())("max",e.customTo()||null),r(3),g("value",e.customTo())("min",e.customFrom()||null)}}function Tt(i,t){if(i&1&&(c(0,"span",21),p(1),l()),i&2){let e=u(2).$implicit;r(),x(e.detail)}}function Et(i,t){if(i&1&&(c(0,"app-chip",18)(1,"span",20),p(2),l(),f(3,Tt,2,1,"span",21),l()),i&2){let e=u().$implicit;g("title",e.title),r(2),x(e.text),r(),_(e.detail?3:-1)}}function Mt(i,t){if(i&1&&(c(0,"span",19),p(1),l()),i&2){let e=u().$implicit;r(),x(e.text)}}function Nt(i,t){if(i&1&&(c(0,"span"),p(1),l()),i&2){let e=u().$implicit;r(),x(e.text)}}function kt(i,t){if(i&1&&f(0,Et,4,3,"app-chip",18)(1,Mt,2,1,"span",19)(2,Nt,2,1,"span"),i&2){let e,n=t.$implicit;_((e=n.kind)==="chip"?0:e==="name"?1:2)}}function Ft(i,t){if(i&1&&I(0,kt,3,1,null,null,ve),i&2){let e=t.$implicit;O(e)}}function Pt(i,t){if(i&1&&(c(0,"app-banner",11),p(1),l()),i&2){let e=u();r(),x(e.error())}}function Dt(i,t){i&1&&(c(0,"div",12),M(1,"app-skeleton",22)(2,"app-skeleton",22)(3,"app-skeleton",22),l())}function It(i,t){i&1&&p(0," Clear the filters or widen the window. ")}function Ot(i,t){if(i&1&&(c(0,"app-empty-state",13),p(1),f(2,It,1,0),l()),i&2){let e=u();r(),A(" Nothing was logged ",e.windowText(),". "),r(),_(e.applied().length?2:-1)}}function Lt(i,t){if(i&1&&p(0),i&2){let e=u(2);A(' Nothing matches "',e.query(),'". Try a different name, role, account, or note. ')}}function Rt(i,t){if(i&1&&p(0),i&2){let e=u(2);A(" No events match the current filters ",e.windowText(),". ")}}function Vt(i,t){if(i&1&&(c(0,"app-empty-state",14),f(1,Lt,1,1)(2,Rt,1,1),l()),i&2){let e=u();r(),_(e.query()?1:2)}}function Bt(i,t){if(i&1&&(c(0,"span",37),p(1),l()),i&2){let e=u().$implicit;r(),x(e.claims)}}function $t(i,t){i&1&&(c(0,"app-badge",38),p(1,"service"),l())}function qt(i,t){if(i&1&&(c(0,"div",39),p(1),l()),i&2){let e=u().$implicit;r(),x(e.whoSub)}}function jt(i,t){i&1&&q(0)}function Qt(i,t){if(i&1&&(c(0,"span",46),p(1),l()),i&2){let e=u(2).$implicit;g("title",e.sub),r(),x(e.sub)}}function Ut(i,t){i&1&&(c(0,"span"),p(1,"\xB7"),l())}function Kt(i,t){if(i&1){let e=N();c(0,"button",49),S("click",function(){C(e);let o=u(2).$implicit,a=u(2);return b(a.toggle(o))}),M(1,"app-icon",50),p(2),l()}if(i&2){let e=u(2).$implicit,n=u(2);g("title",n.isOpen(e)?"Hide who":"Show who"),k("aria-expanded",n.isOpen(e)),r(),Q("rotate-90",n.isOpen(e)),g("strokeWidth",2.2),r(),A(" ",e.summary," ")}}function Wt(i,t){if(i&1&&(c(0,"span",48),p(1),l()),i&2){let e=u(2).$implicit;r(),x(e.summary)}}function zt(i,t){if(i&1&&(c(0,"div",43),f(1,Qt,2,2,"span",46),f(2,Ut,2,0,"span"),f(3,Kt,3,6,"button",47)(4,Wt,2,1,"span",48),l()),i&2){let e=u().$implicit;r(),_(e.sub?1:-1),r(),_(e.sub&&e.summary?2:-1),r(),_(e.effects.length||e.unchanged?3:e.summary?4:-1)}}function Yt(i,t){i&1&&q(0)}function Ht(i,t){if(i&1&&(c(0,"div",58),p(1),l()),i&2){let e=u().$implicit;g("title",e.sub),r(),x(e.sub)}}function Gt(i,t){if(i&1&&(c(0,"div",51),M(1,"div",53),c(2,"div",54)(3,"div",55)(4,"span",56),p(5,"\u21B3"),l(),c(6,"span",36),p(7),l()()(),c(8,"div",57)(9,"div",41),D(10,Yt,1,0,"ng-container",42),l(),f(11,Ht,2,2,"div",58),l(),c(12,"div",59)(13,"app-badge",45),p(14),l()()()),i&2){let e=t.$implicit;u(4);let n=j(20);r(2),g("title",e.whoTitle||null),r(5),x(e.who),r(3),g("ngTemplateOutlet",n)("ngTemplateOutletContext",K(7,xt,e.what)),r(),_(e.sub?11:-1),r(2),g("tone",e.badge.tone),r(),x(e.badge.label)}}function Jt(i,t){if(i&1&&(c(0,"div",52),M(1,"div",53),c(2,"div",60)(3,"div",61)(4,"span",56),p(5,"\u21B3"),l(),p(6),l()()()),i&2){let e=t;r(3),g("title",e.all.join(", ")),r(3),he("",e.label,": ",e.text," ")}}function Zt(i,t){if(i&1&&(I(0,Gt,15,9,"div",51,Ct),f(2,Jt,7,3,"div",52)),i&2){let e,n=u().$implicit;O(n.effects),r(2),_((e=n.unchanged)?2:-1,e)}}function Xt(i,t){if(i&1&&(c(0,"div",32)(1,"div",33),p(2),l(),c(3,"div",34)(4,"div",35)(5,"span",36),p(6),l(),f(7,Bt,2,1,"span",37),f(8,$t,2,0,"app-badge",38),l(),f(9,qt,2,1,"div",39),l(),c(10,"div",40)(11,"div",41),D(12,jt,1,0,"ng-container",42),l(),f(13,zt,5,3,"div",43),l(),c(14,"div",44)(15,"app-badge",45),p(16),l()()(),f(17,Zt,3,1)),i&2){let e=t.$implicit,n=u(2),o=j(20);k("data-derived",e.e.derived||null),r(),g("title",e.exact),r(),A(" ",e.when," "),r(),g("title",e.whoTitle||null),r(2),U(e.e.derived?"text-muted-foreground":"text-surface-foreground"),r(),A(" ",e.who," "),r(),_(e.claims?7:-1),r(),_(e.service?8:-1),r(),_(e.whoSub?9:-1),r(2),U(e.e.derived?"text-muted-foreground":"text-surface-foreground"),r(),g("ngTemplateOutlet",o)("ngTemplateOutletContext",K(19,xt,e.what)),r(),_(e.sub||e.summary?13:-1),r(2),g("tone",e.badge.tone),k("title",e.e.reason||null),r(),x(e.badge.label),r(),_((e.effects.length||e.unchanged)&&n.isOpen(e)?17:-1)}}function ei(i,t){if(i&1){let e=N();c(0,"app-load-more",62),S("reached",function(){C(e);let o=u(2);return b(o.window.loadMore())}),l()}}function ti(i,t){if(i&1){let e=N();c(0,"app-button",63),S("click",function(){C(e);let o=u(2);return b(o.loadOlder())}),p(1," Load older "),l()}if(i&2){let e=u(2);g("loading",e.loadingOlder())}}function ii(i,t){if(i&1&&(c(0,"div",23)(1,"div",24)(2,"div",25),p(3,"When"),l(),c(4,"div",25),p(5,"Who"),l(),c(6,"div",25),p(7,"What"),l(),c(8,"div",25),p(9,"Outcome"),l()(),c(10,"div",26)(11,"div",27),I(12,Xt,18,21,null,null,Ct),f(14,ei,1,0,"app-load-more",28),l()()(),c(15,"div",29)(16,"app-result-count",30),p(17),l(),f(18,ti,2,1,"app-button",31),l()),i&2){let e=u();Q("opacity-60",e.loading()),k("aria-busy",e.loading()||null),r(12),O(e.window.items()),r(2),_(e.window.hasMore()?14:-1),r(2),g("shown",e.window.shown())("total",e.filtered().length),r(),A(" ",e.windowText()," "),r(),_(e.nextBefore()?18:-1)}}var te=[{param:"type",key:"type"},{param:"outcome",key:"outcome"},{param:"account",key:"account",query:"account"},{param:"actor",key:"who",query:"actor"},{param:"user",key:"person",query:"user"},{param:"group",key:"group",query:"group"}],ie=["role","resource","site","plugin","share","serviceuser"],ni=1440*60*1e3,vt={type:H,outcome:Je};var ht=class i{federation=E(He);api=E(Ge);toast=E(Te);route=E(Se);router=E(Ae);names=E(Le);events=y(null);baseline=y(null);loading=y(!1);loadingOlder=y(!1);error=y(null);range=y(null);nextBefore=y(null);preset=y(7);customFrom=y("");customTo=y("");applied=y([]);query=y("");open=y(new Map);seq=0;baseSeq=0;lastQuery=null;lastShared=!1;baselineFor=null;constructor(){this.names.ensure(),this.readUrl(),z(()=>{let t=this.baseQuery(),e=this.serverQuery(),n=this.applied().length>0;W(()=>{t&&e&&this.load(t,e,n)})}),z(()=>{let t=this.urlParams();W(()=>this.writeUrl(t))})}setPreset(t){if(t==="custom"&&!this.customFrom()&&!this.customTo()){let e=this.range(),n=e?new Date(e.to):new Date,o=e?new Date(e.from):new Date(n.getTime()-7*ni);this.customFrom.set(V(o)),this.customTo.set(V(n))}this.preset.set(t)}setCustom(t,e){(t==="from"?this.customFrom:this.customTo).set(e)}customRange=h(()=>{let t=new Date(this.customFrom()),e=new Date(this.customTo());return Number.isNaN(t.getTime())||Number.isNaN(e.getTime())||t>=e?null:{from:t.toISOString(),to:e.toISOString()}});windowText=h(()=>{let t=this.preset();if(t!=="custom")return`in the last ${t} days`;let e=this.range()??this.customRange();return e?`between ${L(e.from)} and ${L(e.to)}`:"in the chosen range"});appliedByKey=h(()=>{let t=new Map;for(let e of this.applied()){let n=t.get(e.key);n||t.set(e.key,n=new Set),n.add(e.id)}return t});baseQuery=h(()=>{let t=this.preset();return t!=="custom"?{days:t}:this.customRange()});serverQuery=h(()=>{let t=this.baseQuery();if(!t)return null;let e=this.appliedByKey(),n=a=>[...e.get(a)??[]],o=P(F({},t),{category:n("type"),outcome:n("outcome"),target:ie.flatMap(n)});for(let{key:a,query:s}of te)s&&(o[s]=n(a));return o.actor?.includes(ee)&&(o.actor=[...o.actor.filter(a=>a!==ee),...ct]),o});load(t,e,n){let o=++this.seq;this.lastQuery=e,this.lastShared=!n,this.loading.set(!0),this.error.set(null);let a=JSON.stringify(t),s=null;(!n||this.baselineFor!==a)&&(s=++this.baseSeq,this.baselineFor=a,n&&this.loadBaseline(t,s)),this.api.listEvents(e).subscribe({next:d=>{if(o!==this.seq)return;this.rowCache.clear();let m=R(d.events);this.events.set(m),!n&&s===this.baseSeq&&this.baseline.set(m),this.range.set({from:d.from,to:d.to}),this.nextBefore.set(d.nextBefore??null),this.loading.set(!1)},error:d=>{o===this.seq&&(n||(this.baselineFor=null),this.loading.set(!1),this.error.set(Y(d,"Could not load activity.")))}})}loadBaseline(t,e){this.api.listEvents(t).subscribe({next:n=>{e===this.baseSeq&&this.baseline.set(R(n.events))},error:()=>{e===this.baseSeq&&(this.baselineFor=null)}})}loadOlder(){let t=this.nextBefore(),e=this.lastQuery;if(!t||!e||this.loadingOlder())return;let n=this.seq;this.loadingOlder.set(!0);let o=ut(this.events()??[],t);this.api.listEvents(P(F({},e),{before:t,skip:o})).subscribe({next:a=>{if(this.loadingOlder.set(!1),n!==this.seq)return;let s=d=>R([...d??[],...a.events]);this.events.update(s),this.lastShared&&this.baseline.update(s),this.nextBefore.set(a.nextBefore??null)},error:a=>{this.loadingOlder.set(!1),this.toast.error(Y(a,"Could not load older activity."))}})}groupNames=h(()=>gt([...this.events()??[],...this.baseline()??[]]),{equal:oi});ctx=h(()=>{let t=this.groupNames();return this.names.label(""),{accountLabel:e=>this.names.label(e),groupName:e=>t.get(e)}});nested=h(()=>Z(this.events()??[]));rowCache=new Map;rowCacheCtx=null;rows=h(()=>{let t=this.ctx();t!==this.rowCacheCtx&&(this.rowCache.clear(),this.rowCacheCtx=t);let{top:e,effects:n}=this.nested();return e.map(o=>{let a=n.get(o.eventId)??[],s=`${o.eventId}:${a.length}`,d=this.rowCache.get(s);return d||this.rowCache.set(s,d=this.toRow(o,t,a)),d})});toRow(t,e,n=[],o=!1){let a=nt(t),s=t.actor.kind==="system",d=G(t),m=s?lt(t.actor.id,t.actor.name):"",v=Xe(t),T=tt(t,e,{subjectShown:v!==null,byActor:!o}),ne=v?J(v):s?"System":d,oe=v?"":m,ae=v??t.actor,bt=o?v?.id??"":t.derived&&v?`effect of a change by ${s?`the ${m}`:d}`:ae.kind==="user"?ae.id:"",re=v?"":this.claimText(t.actor.claims),se=v?v.kind==="serviceUser":t.actor.kind==="service",le=L(t.at),ce=new Date(t.at).toLocaleString(void 0,{timeZoneName:"short"}),de=st(t,e,o).join(" \xB7 "),me=X(t,e,n),pe=n.map(w=>{let $=this.rowCache.get(w.eventId);return $||this.rowCache.set(w.eventId,$=this.toRow(w,e,[],!0)),$}),B=n.map(rt).filter(w=>w!==null),ue=B.length?B:t.details?.affected??[],ge=ot(t,ue,B.length?void 0:t.details?.affectedCount)??"",fe=at(t,ue,e),wt=[le,ce,ne,oe,re,se?"service":"",it(T),de,ge,a.label,H[t.category]??t.category,t.action,t.accountNumber??"",...me.map(w=>w.label),...pe.map(w=>w.text),...fe?.all??[]].join(" ").toLowerCase();return{e:t,when:le,exact:ce,who:ne,whoSub:oe,whoTitle:bt,claims:re,service:se,what:T,sub:de,badge:a,facets:me,text:wt,effects:pe,summary:ge,unchanged:fe}}claimText(t){return t?this.federation.claimRows(t).map(e=>`${e.label} ${e.value}`).join(" \xB7 "):""}isOpen(t){let e=this.open().get(yt(t));if(e!==void 0)return e;let n=this.appliedByKey().get("person");return!!n&&t.effects.some(o=>o.e.subject!==void 0&&n.has(o.e.subject.id))}toggle(t){let e=!this.isOpen(t);this.open.update(n=>new Map(n).set(yt(t),e))}baselineFacets=h(()=>{let t=this.baseline();if(!t)return this.rows().map(a=>a.facets);let e=this.ctx(),{top:n,effects:o}=Z(t);return n.map(a=>X(a,e,o.get(a.eventId)))});index=h(()=>{let t=new Map,e=new Map,n=(o,a,s)=>{let d=t.get(o);d||t.set(o,d=new Map),d.has(a)||d.set(a,s);let m=e.get(o);m||e.set(o,m=new Map),m.has(s)||m.set(s,a)};for(let[o,a]of Object.entries(vt))for(let[s,d]of Object.entries(a??{}))n(o,s,d);for(let o of this.baselineFacets())for(let a of o)n(a.key,a.id,a.label);for(let o of this.rows())for(let a of o.facets)n(a.key,a.id,a.label);for(let o of this.applied())t.get(o.key)?.has(o.id)||n(o.key,o.id,pt(o.key,o.id,this.ctx()));return{idToLabel:t,labelToId:e}});filterLabels=h(()=>{let{idToLabel:t}=this.index();return this.applied().map(e=>({key:e.key,value:t.get(e.key)?.get(e.id)??e.id}))});sections=h(()=>{let t=this.appliedByKey(),{idToLabel:e}=this.index(),n=new Map;for(let o of this.baselineFacets())for(let a of o){let s=n.get(a.key);s||n.set(a.key,s=new Set),s.add(a.label)}return mt.map(o=>{let a=new Set(n.get(o)??[]);for(let m of t.get(o)??[])a.add(e.get(o)?.get(m)??m);let s=Object.values(vt[o]??{}),d=s.map(m=>({value:m}));for(let m of[...a].sort((v,T)=>v.localeCompare(T)))s.includes(m)||d.push({value:m});return{key:o,label:dt[o],options:d}}).filter(o=>o.options.length>0)});onFiltersChange(t){let{labelToId:e}=this.index(),n=this.applied();this.applied.set(t.map(o=>({key:o.key,id:e.get(o.key)?.get(o.value)??n.find(a=>a.key===o.key&&a.id===o.value)?.id??o.value})))}filtered=h(()=>{let t=this.appliedByKey(),e=this.query().trim().toLowerCase();return this.rows().filter(n=>{for(let[o,a]of t)if(!n.facets.some(s=>s.key===o&&a.has(s.id)))return!1;return!e||n.text.includes(e)})});window=Ye(this.filtered,40);readUrl=()=>{let t=this.route.snapshot.queryParamMap,e=s=>(t.get(s)??"").split(",").map(d=>d.trim()).filter(Boolean),n=[];for(let{param:s,key:d}of te)for(let m of e(s))n.push({key:d,id:m});for(let s of t.getAll("target")){let d=Ze(s);d.kind==="group"?n.push({key:"group",id:d.id}):ie.includes(d.kind)&&n.push({key:d.kind,id:s})}this.applied.set(n);let o=new Date(t.get("from")??""),a=new Date(t.get("to")??"");!Number.isNaN(o.getTime())&&!Number.isNaN(a.getTime())&&o<a&&(this.customFrom.set(V(o)),this.customTo.set(V(a)),this.preset.set("custom"))};urlParams=h(()=>{let t=this.appliedByKey(),e=s=>{let d=t.get(s);return d&&d.size?[...d].join(","):null},n=ie.flatMap(s=>[...t.get(s)??[]]),o=this.preset()==="custom"?this.customRange():null,a={};for(let{param:s,key:d}of te)a[s]=e(d);return P(F({},a),{target:n.length?n:null,from:o?.from??null,to:o?.to??null})});writeUrl(t){let e=this.route.snapshot.queryParamMap;Object.entries(t).every(([o,a])=>Array.isArray(a)?ai(e.getAll(o),a):(e.get(o)??null)===a)||this.router.navigate([],{relativeTo:this.route,queryParams:t,replaceUrl:!0})}exportCsv(){let t=this.filtered();if(t.length===0)return;let e=["Timestamp","Actor","Actor kind","Action","Outcome","Subject","Target","Target name","Account","Expires","Via","Note","Reason","Request id","Batch id","Derived"],n=(m,v)=>[m.at,G(m),m.actor.kind,v,m.outcome,m.subject?J(m.subject):"",m.target??"",et(m,this.ctx()),m.accountNumber??"",m.details?.expiresAt??"",m.details?.via??"",m.details?.note??"",m.reason??m.details?.deniedReason??"",m.details?.requestId??"",m.details?.batchId??"",m.derived?"yes":""],o=t.flatMap(({e:m,effects:v})=>[n(m,m.action),...v.map(T=>n(T.e,`\u21B3 ${T.e.action}`))]),a=new Blob([ft(e,o)],{type:"text/csv;charset=utf-8;"}),s=this.range(),d=this.preset()==="custom"&&s?`activity-${s.from.slice(0,10)}-to-${s.to.slice(0,10)}.csv`:`activity-last-${this.preset()}-days.csv`;_t(a,d)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=_e({type:i,selectors:[["app-activity-page"]],hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],decls:26,vars:13,consts:[["segments",""],[3,"fill"],["pageHeader","","title","Activity","subtitle","Who did what, to whom or what, and how it came out.","subtitleInfo","Grants, requests, vends, network, catalog and user changes \u2014 including denied and failed attempts.",3,"showHeaderSearch"],["headerActions",""],["size","lg","variant","outline",3,"click","disabled"],["name","download",1,"h-4","w-4"],[1,"mb-3","flex","shrink-0","flex-wrap","items-center","gap-2"],["aria-label","Time window",1,"ui-input","h-7","w-auto","!py-0","pr-7","text-sm",3,"ngModelChange","ngModel"],[3,"ngValue"],[1,"min-w-0",3,"filtersChange","sections","filters"],["compact","","placeholder","Search names, roles, notes\u2026",1,"ml-auto","w-[260px]","shrink-0",3,"valueChange","value"],["tone","danger"],[1,"space-y-2"],["title","No activity"],["title","No matches"],["type","datetime-local","aria-label","From",1,"ui-input","h-7","w-auto","!py-0","text-sm",3,"change","value","max"],[1,"text-xs","text-muted-foreground"],["type","datetime-local","aria-label","To",1,"ui-input","h-7","w-auto","!py-0","text-sm",3,"change","value","min"],[3,"title"],[1,"font-medium"],[1,"min-w-0","truncate"],[1,"ml-1","min-w-0","shrink-[60]","truncate"],["sizeClass","h-12 w-full"],[1,"flex","min-h-0","flex-1","flex-col","overflow-x-auto"],[1,"grid","grid-cols-[minmax(0,12fr)_minmax(0,20fr)_minmax(0,52fr)_minmax(0,16fr)]","min-w-[760px]","shrink-0"],[1,"px-4","py-2.5","text-left","ui-microlabel","text-text-secondary"],[1,"flex","min-h-0","min-w-[760px]","flex-1","flex-col","overflow-hidden","rounded-lg","border","border-border","bg-card-bg"],[1,"min-h-0","flex-1","overflow-y-auto"],["appInfiniteScroll",""],[1,"flex","flex-wrap","items-center","justify-between","gap-3"],["noun","event",3,"shown","total"],["size","sm","variant","outline",1,"mt-3",3,"loading"],["data-testid","row",1,"grid","grid-cols-[minmax(0,12fr)_minmax(0,20fr)_minmax(0,52fr)_minmax(0,16fr)]","items-start","border-t","border-border","text-sm","first:border-t-0"],[1,"truncate","whitespace-nowrap","px-4","py-3","text-muted-foreground",3,"title"],[1,"min-w-0","px-4","py-3",3,"title"],[1,"truncate"],[1,"font-medium","tracking-[0.015em]"],[1,"ml-1.5","text-xs","text-muted-foreground"],["tone","gray",1,"ml-1.5","align-middle"],[1,"truncate","text-xs","text-muted-foreground"],[1,"min-w-0","px-4","py-3"],[1,"flex","flex-wrap","items-center","gap-x-1","gap-y-0.5"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"mt-0.5","flex","min-w-0","items-center","gap-1","text-xs","text-muted-foreground"],[1,"whitespace-nowrap","px-4","py-3"],[3,"tone"],[1,"min-w-0","truncate",3,"title"],["type","button",1,"inline-flex","shrink-0","items-center","gap-0.5","rounded","hover:text-surface-foreground",3,"title"],[1,"shrink-0"],["type","button",1,"inline-flex","shrink-0","items-center","gap-0.5","rounded","hover:text-surface-foreground",3,"click","title"],["name","chevron-right",1,"h-3","w-3","transition-transform",3,"strokeWidth"],["data-testid","effect",1,"grid","grid-cols-[minmax(0,12fr)_minmax(0,20fr)_minmax(0,52fr)_minmax(0,16fr)]","items-start","border-t","border-border","bg-muted","text-sm","text-muted-foreground"],["data-testid","unchanged",1,"grid","grid-cols-[minmax(0,12fr)_minmax(0,20fr)_minmax(0,52fr)_minmax(0,16fr)]","items-start","border-t","border-border","bg-muted","text-sm","text-muted-foreground"],[1,"px-4","py-2"],[1,"min-w-0","px-4","py-2",3,"title"],[1,"truncate","pl-4"],[1,"mr-1"],[1,"min-w-0","px-4","py-2"],[1,"mt-0.5","truncate","text-xs",3,"title"],[1,"whitespace-nowrap","px-4","py-2"],[1,"col-span-3","min-w-0","px-4","py-2"],[1,"truncate","pl-4",3,"title"],["appInfiniteScroll","",3,"reached"],["size","sm","variant","outline",1,"mt-3",3,"click","loading"]],template:function(e,n){if(e&1){let o=N();c(0,"app-page",1)(1,"app-page-header",2)(2,"div",3)(3,"app-button",4),S("click",function(){return C(o),b(n.exportCsv())}),M(4,"app-icon",5),p(5," Export CSV "),l()()(),c(6,"div",6)(7,"select",7),S("ngModelChange",function(s){return C(o),b(n.setPreset(s))}),c(8,"option",8),p(9,"Last 7 days"),l(),c(10,"option",8),p(11,"Last 30 days"),l(),c(12,"option",8),p(13,"Last 90 days"),l(),c(14,"option",8),p(15,"Custom range\u2026"),l()(),f(16,At,4,4),c(17,"app-filter-popup",9),S("filtersChange",function(s){return C(o),b(n.onFiltersChange(s))}),l(),c(18,"app-search-input",10),Ce("valueChange",function(s){return C(o),xe(n.query,s)||(n.query=s),b(s)}),l()(),D(19,Ft,2,0,"ng-template",null,0,be),f(21,Pt,2,1,"app-banner",11)(22,Dt,4,0,"div",12)(23,Ot,3,2,"app-empty-state",13)(24,Vt,3,1,"app-empty-state",14)(25,ii,19,8),l()}e&2&&(g("fill",!0),r(),g("showHeaderSearch",!1),r(2),g("disabled",n.filtered().length===0),r(4),g("ngModel",n.preset()),r(),g("ngValue",7),r(2),g("ngValue",30),r(2),g("ngValue",90),r(2),g("ngValue","custom"),r(2),_(n.preset()==="custom"?16:-1),r(),g("sections",n.sections())("filters",n.filterLabels()),r(),ye("value",n.query),r(3),_(n.error()?21:n.events()===null?22:n.events().length===0?23:n.filtered().length===0?24:25))},dependencies:[Oe,De,Ie,Pe,ke,Fe,we,Me,$e,Ne,Ke,qe,Be,Ee,Re,ze,je,Ve,Qe,Ue,We],encapsulation:2})};function yt(i){return i.e.details?.batchId??i.e.eventId}function oi(i,t){if(i.size!==t.size)return!1;for(let[e,n]of i)if(t.get(e)!==n)return!1;return!0}function ai(i,t){return i.length===t.length&&i.every((e,n)=>e===t[n])}function V(i){let t=e=>String(e).padStart(2,"0");return`${i.getFullYear()}-${t(i.getMonth()+1)}-${t(i.getDate())}T${t(i.getHours())}:${t(i.getMinutes())}`}export{ht as ActivityPageComponent};
@@ -0,0 +1 @@
1
+ import{Q as g,pb as c,qb as o,rb as u}from"./chunk-P5WRM37W.js";var n=5,h=n+1;function p(r,y){let l=g(""),t=g(n),d=o(()=>{let e=l().trim().toLowerCase();return e?r().filter(s=>y(s).toLowerCase().includes(e)):r()}),i=o(()=>d().slice(0,t())),a;return u(()=>{let e=r(),s=l();a&&(e!==a.rows||s!==a.query)&&c(()=>t.set(n)),a={rows:e,query:s}}),{query:l,matching:d,visible:i,more:o(()=>Math.min(n,d().length-i().length)),searchable:o(()=>r().length>=h),expanded:o(()=>i().length>n),showMore:()=>t.update(e=>e+n),showLess:()=>t.set(n)}}export{n as a,p as b};
@@ -0,0 +1 @@
1
+ import{d as mt}from"./chunk-H4AVFUDM.js";import{a as tt}from"./chunk-VWW4SA5R.js";import{a as Ke}from"./chunk-BNFKRZTP.js";import{a as ct}from"./chunk-LMLXTVZG.js";import{a as oe}from"./chunk-DCOFBAKJ.js";import"./chunk-RI77LE5V.js";import"./chunk-IKK5DQ3Z.js";import"./chunk-H5H727H6.js";import"./chunk-2V6RSAAC.js";import{i as J,j as Re,k as Ve,l as Ie,m as Oe,n as q,o as Fe,p as Le}from"./chunk-JMBXRK3I.js";import{a as $}from"./chunk-DOLRLYW7.js";import{a as ke,b as De,c as X}from"./chunk-O4QSFUXB.js";import{a as le}from"./chunk-TM43WUKM.js";import{a as pt}from"./chunk-6KFR7DYY.js";import{a as dt}from"./chunk-CP4XZPOA.js";import{a as it}from"./chunk-33SYY2JB.js";import{a as Ye,b as Qe,c as Ge,d as fe}from"./chunk-FIUVIKAN.js";import{a as Xe}from"./chunk-EVP5UVDQ.js";import{a as Ze,b as Je}from"./chunk-OATVFQXO.js";import{a as rt}from"./chunk-EQ4PF25J.js";import{a as at,d as lt,e as st}from"./chunk-ZDCURXPS.js";import{b as nt,d as ot}from"./chunk-KCCEQIXX.js";import{a as et}from"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import{a as $e}from"./chunk-PMMBJK7Q.js";import"./chunk-J3SSPCFV.js";import"./chunk-4SK6XQ6C.js";import{a as je}from"./chunk-SJMLX5AT.js";import{c as ie,d as Ue}from"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import{a as qe,b as ze,e as He,o as We,p as ae}from"./chunk-NO5D6WDF.js";import{c as ee}from"./chunk-GKI3R2JB.js";import{a as Be}from"./chunk-M6OAYNRE.js";import{a as re}from"./chunk-XJM3HDJQ.js";import{b as te}from"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import{a as ne}from"./chunk-D7TR2ORJ.js";import{$a as Ae,Aa as s,Ba as N,E as he,Eb as Ne,H as v,Ha as k,Ia as h,J as m,K as u,Ka as C,Ma as l,P as W,Pb as Ee,Q as x,Qa as _e,Ra as we,Rb as Me,Sa as D,T as ve,Ta as Te,Ua as I,Wa as d,Xa as y,Y as be,Ya as T,Z as r,Za as j,ab as K,bb as U,cb as Y,db as Se,eb as Pe,fa as L,fb as Q,ib as z,ja as E,jb as G,nb as Z,pb as B,qb as w,ra as M,rb as R,sa as _,sb as V,t as xe,ta as g,tb as A,ub as ge,va as ye,wa as S,xa as P,ya as p,za as a}from"./chunk-P5WRM37W.js";import{a as O,b as F,e as ue}from"./chunk-WFIHWVQO.js";var se=class n{api=v($);personalization=v(q);toast=v(ee);home=x(null);accounts=x(null);error=x("");favorites=w(()=>new Set(this.home()?.favoriteNumbers??[]));known=x(new Map);remember(t){t.length&&this.known.update(e=>{let o=new Map(e);for(let i of t)o.set(i.accountNumber,i);return o})}load(t={}){this.error.set(""),t.fresh&&(this.home.set(null),this.accounts.set(null)),this.api.home().subscribe({next:e=>{this.home.set(e);let o=e.sectioned?ht([...e.main,...e.favorites,...e.recent]):e.main;this.accounts.set(o),this.remember(o),this.personalization.hydrateFrom(o)},error:()=>{this.accounts.set([]),this.error.set("Could not load your accounts. Try reloading the page.")}})}isFavorite(t){return this.favorites().has(t)}toggleFavorite(t){let e=this.home();if(!e)return Promise.resolve();let o=!this.favorites().has(t.accountNumber),i=(c,f)=>F(O({},c),{favoriteNumbers:f?[...c.favoriteNumbers.filter(b=>b!==t.accountNumber),t.accountNumber]:c.favoriteNumbers.filter(b=>b!==t.accountNumber),favorites:f?[...c.favorites.filter(b=>b.accountNumber!==t.accountNumber),t]:c.favorites.filter(b=>b.accountNumber!==t.accountNumber)});return this.home.set(i(e,o)),new Promise(c=>this.api.setFavorite(t.accountNumber,o).subscribe({error:f=>{this.home.update(me=>me&&i(me,!o));let b=f?.error?.message;this.toast.error(b||"Could not save the favorite."),c()},complete:()=>c()}))}static \u0275fac=function(e){return new(e||n)};static \u0275prov=he({token:n,factory:n.\u0275fac,providedIn:"root"})};function ht(n){let t=new Set;return n.filter(e=>t.has(e.accountNumber)?!1:(t.add(e.accountNumber),!0))}var vt=(n,t)=>t.label;function bt(n,t){if(n&1){let e=h();a(0,"div",1)(1,"app-banner",4),d(2," You no longer have access to this role \u2014 the grant was revoked. The dashboard will refresh. "),s(),a(3,"app-button",5),C("click",function(){m(e);let i=l();return u(i.closed.emit())}),d(4,"Close"),s()()}}function yt(n,t){if(n&1){let e=h();a(0,"div",1)(1,"app-banner",6),d(2),s(),a(3,"app-button",7),C("click",function(){m(e);let i=l();return u(i.vend())}),d(4,"Try again"),s()()}if(n&2){let e=l();r(2),y(e.error()),r(),p("loading",e.loading())}}function wt(n,t){n&1&&(a(0,"p",2),d(1,"Vending credentials\u2026"),s())}function Tt(n,t){n&1&&d(0," Expired \u2014 re-vend to keep working. ")}function At(n,t){if(n&1&&(d(0," Expires in "),a(1,"span",14),d(2),s(),a(3,"span",15),d(4," \xB7 renews itself; re-copy after it does"),s()),n&2){let e=l(2);r(2),y(e.remaining())}}function St(n,t){if(n&1){let e=h();a(0,"app-button",21),C("click",function(){m(e);let i=l(3);return u(i.resetProfileName())}),d(1,"\u21BA Reset"),s()}if(n&2){let e=l(3);p("title","Reset to "+e.resolved().suggested)}}function Pt(n,t){if(n&1&&(a(0,"p",13),d(1," Already written to "),a(2,"code",22),d(3,"~/.aws/credentials"),s(),d(4," as "),a(5,"code",22),d(6),s(),d(7," when the credentials were generated. To use a different profile name, change "),a(8,"span",23),d(9,"Profile name"),s(),d(10," above and click the button \u2014 it updates the existing entry. "),s()),n&2){let e=l(4);r(6),T("[",e.wroteProfile(),"]")}}function Nt(n,t){if(n&1&&(a(0,"app-banner",6),d(1),s()),n&2){let e=l(4);r(),y(e.writeError())}}function Et(n,t){if(n&1){let e=h();a(0,"div",20)(1,"app-button",7),C("click",function(){m(e);let i=l(3);return u(i.writeToFile())}),d(2," Write to ~/.aws/credentials "),s(),_(3,Pt,11,1,"p",13),_(4,Nt,2,1,"app-banner",6),s()}if(n&2){let e=l(3);r(),p("loading",e.writing()),r(2),g(e.wroteProfile()?3:-1),r(),g(e.writeError()?4:-1)}}function Mt(n,t){if(n&1){let e=h();a(0,"app-field",16)(1,"div",17)(2,"input",18),C("ngModelChange",function(i){m(e);let c=l(2);return u(c.setProfileName(i))})("blur",function(){m(e);let i=l(2);return u(i.revertProfileNameIfEmpty())}),s(),_(3,St,2,1,"app-button",19),s()(),_(4,Et,5,3,"div",20)}if(n&2){let e=l(2);p("hint",e.profileHint()),r(2),p("ngModel",e.profileName()),r(),g(e.resolved().source==="override"?3:-1),r(),g(e.bridge.isDesktop?4:-1)}}function kt(n,t){if(n&1&&(a(0,"div")(1,"span",24),d(2),s(),a(3,"div",12)(4,"div",25)(5,"code",26),d(6),s()(),a(7,"div",27),N(8,"app-copy-button",28),s()()()),n&2){let e=t.$implicit;r(2),y(e.label),r(4),y(e.value),r(2),p("text",e.value)}}function Dt(n,t){if(n&1&&(a(0,"div",1),S(1,kt,9,3,"div",null,vt),s()),n&2){let e=l(2);r(),P(e.fields())}}function Rt(n,t){if(n&1&&(a(0,"div",12)(1,"pre",29),d(2),s(),a(3,"div",30),N(4,"app-copy-button",28),s()()),n&2){let e=l(2);r(2),y(e.snippet()),r(2),p("text",e.snippet())}}function Vt(n,t){if(n&1){let e=h();a(0,"div",3)(1,"div",8)(2,"p",9),_(3,Tt,1,0)(4,At,5,1),s(),a(5,"app-button",10),C("click",function(){m(e);let i=l();return u(i.vend())}),d(6," Re-vend "),s()(),a(7,"app-tabs",11),Y("selectedChange",function(i){m(e);let c=l();return U(c.tab,i)||(c.tab=i),u(i)}),s(),_(8,Mt,5,4),_(9,Dt,3,0,"div",1)(10,Rt,5,2,"div",12),a(11,"p",13),d(12," Displayed once, never stored. Anyone with these values can act as this role until they expire. "),s()()}if(n&2){let e=l();r(2),I("text-danger",e.expired())("text-muted-foreground",!e.expired()),r(),g(e.expired()?3:4),r(2),p("loading",e.loading()),r(2),p("tabs",e.tabs),K("selected",e.tab),r(),g(e.tab()==="Credentials file"?8:-1),r(),g(e.tab()==="Fields"?9:10)}}var ut=["Fields","Env vars","Credentials file","PowerShell"],It=/^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$/,Ot="Profile names are 1\u201364 characters: letters, digits, '.', '_' or '-'.",ce=class n{static AUTO_RENEW_MS=5*6e4;api=v($);personalization=v(q);cache=v(J);destroyRef=v(W);bridge=v(X);target=A.required();closed=V();grantRevoked=V();tabs=[...ut];tab=x(ut[0]);creds=x(null);loading=x(!1);error=x("");revoked=x(!1);profileName=x("");writing=x(!1);wroteProfile=x("");writeError=x("");now=x(Date.now());remaining=w(()=>{let t=this.creds();return t?ie(new Date(t.expiration).getTime()-this.now()):""});expired=w(()=>{let t=this.creds();return!!t&&new Date(t.expiration).getTime()<=this.now()});snippet=w(()=>{let t=this.creds();if(!t)return"";switch(this.tab()){case"Credentials file":return Ie(t,this.profileName());case"PowerShell":return Oe(t);default:return Ve(t)}});fields=w(()=>{let t=this.creds();return t?[{label:"Access key ID",value:t.accessKeyId},{label:"Secret access key",value:t.secretKey},{label:"Session token",value:t.sessionToken}]:[]});constructor(){let t=setInterval(()=>this.now.set(Date.now()),1e3);this.destroyRef.onDestroy(()=>clearInterval(t)),R(()=>{let e=this.creds();if(!e||this.loading()||this.error()||this.revoked())return;new Date(e.expiration).getTime()-this.now()<=n.AUTO_RENEW_MS&&this.vend()}),R(()=>{let e=this.creds();!e||!this.bridge.isDesktop||e.accessKeyId!==this.autoWrittenKey&&B(()=>this.doWrite(e,!1))})}ngOnInit(){let{accountNumber:t,role:e}=this.target();this.profileName.set(this.personalization.profileName(t,e));let o=this.cache.get(t,e);o?this.creds.set(o):this.vend()}vend(){let{accountNumber:t,role:e}=this.target();this.loading.set(!0),this.error.set(""),this.api.vendCredentials(t,e).subscribe({next:o=>{this.creds.set(o),this.cache.set(t,e,o),this.loading.set(!1)},error:o=>{this.loading.set(!1),o.status===403?(this.cache.clear(t,e),this.revoked.set(!0),this.grantRevoked.emit()):this.error.set(ae(o,"Could not vend credentials. Try again in a moment."))}})}autoWrittenKey="";writeToFile(){return ue(this,null,function*(){let t=this.creds();t&&(yield this.doWrite(t,!0))})}doWrite(t,e){return ue(this,null,function*(){let{accountNumber:o,role:i}=this.target();this.writing.set(!0),this.writeError.set("");try{let{profile:c}=yield this.bridge.writeCredentials({accountNumber:o,role:i,profile:this.profileName(),creds:t});this.wroteProfile.set(c),this.autoWrittenKey=t.accessKeyId;let f=this.profileName().trim();e&&f&&f!==this.personalization.profileName(o,i)&&this.personalization.setProfileName(o,i,f)}catch(c){if(e)if(ke(c)){let f=this.conflictSuggestion(this.profileName());this.profileName.set(f),this.writeError.set(`That profile name is taken by another connected backend \u2014 suggested "${f}"; Write again to use it, or pick your own.`)}else if(De(c)){let f=this.conflictSuggestion(this.profileName());this.profileName.set(f),this.writeError.set(`A profile with that name already exists in your ~/.aws/credentials and was not written by this app, so it was left alone \u2014 suggested "${f}"; Write again to use it, or pick your own.`)}else this.writeError.set("Could not write to ~/.aws/credentials.")}finally{this.writing.set(!1)}})}resolved=w(()=>{let{accountNumber:t,role:e}=this.target();return this.personalization.resolved(t,e)});profileHint=w(()=>{let t=this.resolved();switch(t.source){case"override":return`your own name \u2014 suggested: ${t.suggested}`;case"account":return"set by an admin for this account";case"role":return"set by an admin for this role";default:return"used in the [profile] header; saved for this role"}});setProfileName(t){this.profileName.set(t)}conflictSuggestion(t){let e=(this.bridge.project??"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,""),o=t.trim()||"profile";return(e&&!o.startsWith(`${e}-`)?`${e}-${o}`:`${o}-2`).slice(0,128)}revertProfileNameIfEmpty(){let{accountNumber:t,role:e}=this.target(),o=this.profileName().trim();o===""?(this.personalization.resetProfileName(t,e),this.profileName.set(this.personalization.profileName(t,e))):It.test(o)?(this.writeError.set(""),this.personalization.setProfileName(t,e,o)):(this.writeError.set(Ot),this.profileName.set(this.personalization.profileName(t,e)))}resetProfileName(){let{accountNumber:t,role:e}=this.target();this.personalization.resetProfileName(t,e),this.profileName.set(this.personalization.profileName(t,e))}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=L({type:n,selectors:[["app-credentials-dialog"]],inputs:{target:[1,"target"]},outputs:{closed:"closed",grantRevoked:"grantRevoked"},decls:5,vars:2,consts:[["width","max-w-2xl",3,"closed","title"],[1,"space-y-3"],[1,"py-6","text-center","text-sm","text-muted-foreground"],[1,"space-y-5"],["tone","warning"],["variant","outline",3,"click"],["tone","danger"],[3,"click","loading"],[1,"flex","items-center","justify-between"],[1,"text-sm"],["variant","outline",3,"click","loading"],[3,"selectedChange","tabs","selected"],[1,"relative"],[1,"text-xs","text-muted-foreground"],[1,"font-semibold","tabular-nums","text-brand-text"],[1,"text-placeholder"],["label","Profile name",3,"hint"],[1,"flex","items-center","gap-2"],[1,"ui-input",3,"ngModelChange","blur","ngModel"],["variant","outline","size","sm",3,"title"],[1,"space-y-2"],["variant","outline","size","sm",3,"click","title"],[1,"font-mono"],[1,"font-medium"],[1,"mb-1","block","text-sm","font-medium","text-surface-foreground"],[1,"overflow-x-auto","rounded-lg","bg-gray-900","p-3","pr-14","ring-1","ring-brand/20"],[1,"whitespace-nowrap","font-mono","text-xs","text-gray-100"],[1,"absolute","right-2","top-1/2","-translate-y-1/2"],["variant","icon",3,"text"],[1,"max-h-72","overflow-auto","rounded-lg","bg-gray-900","p-4","pr-14","text-xs","leading-relaxed","text-gray-100","ring-1","ring-brand/20"],[1,"absolute","right-2","top-2"]],template:function(e,o){e&1&&(a(0,"app-dialog",0),C("closed",function(){return o.closed.emit()}),_(1,bt,5,0,"div",1)(2,yt,5,2,"div",1)(3,wt,2,0,"p",2)(4,Vt,13,10,"div",3),s()),e&2&&(p("title",o.target().role+" in account "+o.target().accountNumber),r(),g(o.revoked()?1:o.error()?2:o.creds()?4:3))},dependencies:[We,qe,ze,He,re,ne,oe,Be,je,it],encapsulation:2})};function Ft(n,t){n&1&&N(0,"app-copy-button",8),n&2&&p("text",t)}function Lt(n,t){n&1&&(a(0,"app-chip",10),d(1),s()),n&2&&(r(),y(t))}function Bt(n,t){if(n&1&&(a(0,"span",5),d(1),s()),n&2){let e=l();p("title",e.dims()),r(),y(e.dims())}}function $t(n,t){if(n&1&&(a(0,"span",21),d(1),s(),N(2,"app-copy-button",22)),n&2){let e=l();p("title","CLI profile "+e.profile()),r(),y(e.profile()),r(),p("text",e.profile())}}function qt(n,t){if(n&1&&(a(0,"app-chip",13),d(1),s()),n&2){let e=l();r(),y(e.grant())}}function zt(n,t){if(n&1&&(a(0,"app-chip",14),N(1,"app-icon",23),d(2),s()),n&2){let e=l();r(),p("strokeWidth",2),r(),T("",e.creds()," ")}}function Ht(n,t){if(n&1){let e=h();a(0,"button",24),C("click",function(){m(e);let i=l();return u(i.favoriteToggle.emit())}),N(1,"app-icon",25),s()}if(n&2){let e=l();I("on",e.favorite()),p("title",e.favorite()?"In your favorites \u2014 click to remove":"Add to your favorites"),M("aria-pressed",e.favorite())("aria-label",(e.favorite()?"Remove ":"Add ")+e.account()+(e.favorite()?" from favorites":" to favorites")),r(),p("set",e.favorite()?"solid":void 0)}}function Wt(n,t){if(n&1){let e=h();a(0,"button",24),C("click",function(){m(e);let i=l();return u(i.autoLoginToggle.emit())}),N(1,"app-icon",26),s()}if(n&2){let e=l();I("on",e.autoLogin()),p("title",e.autoLogin()?"Auto-login on \u2014 click to turn off":"Auto-login off \u2014 click to vend and write this role's credentials when you open the app"),M("aria-pressed",e.autoLogin())("aria-label","Auto-login on sign-in for "+e.role()),r(),p("set",e.autoLogin()?"solid":void 0)}}function jt(n,t){n&1&&N(0,"app-spinner",18)}function Kt(n,t){n&1&&N(0,"app-icon",19)}var de=class n{icon=A("key");role=A.required();roleArn=A("");account=A.required();id=A.required();rawId=A();env=A();dims=A("");profile=A("");grant=A("");creds=A("");favorite=A(null);autoLogin=A(null);consoleBusy=A(!1);favoriteToggle=V();autoLoginToggle=V();console=V();getCredentials=V();static \u0275fac=function(e){return new(e||n)};static \u0275cmp=L({type:n,selectors:[["app-role-row"]],hostAttrs:["role","row",1,"block"],inputs:{icon:[1,"icon"],role:[1,"role"],roleArn:[1,"roleArn"],account:[1,"account"],id:[1,"id"],rawId:[1,"rawId"],env:[1,"env"],dims:[1,"dims"],profile:[1,"profile"],grant:[1,"grant"],creds:[1,"creds"],favorite:[1,"favorite"],autoLogin:[1,"autoLogin"],consoleBusy:[1,"consoleBusy"]},outputs:{favoriteToggle:"favoriteToggle",autoLoginToggle:"autoLoginToggle",console:"console",getCredentials:"getCredentials"},decls:29,vars:19,consts:[[1,"row"],[1,"grid","h-8","w-8","shrink-0","place-items-center","rounded-lg","bg-muted","text-muted-foreground"],[1,"h-4","w-4",3,"name"],[1,"min-w-0"],[1,"line-clamp-2","break-words","text-[13.5px]","font-semibold","leading-snug","text-surface-foreground",3,"title"],[1,"line-clamp-2","break-words","text-xs","leading-snug","text-muted-foreground",3,"title"],[1,"flex","items-center","gap-1","whitespace-nowrap","text-xs","text-muted-foreground"],[1,"font-mono","tabular-nums"],["variant","icon","label","Copy account ID",3,"text"],[1,"hidden","min-w-0","items-center","gap-1.5","md:flex"],["tone","neutral",1,"shrink-0"],[1,"hidden","min-w-0","items-center","gap-1","lg:flex"],[1,"flex","min-w-0","flex-wrap","items-center","gap-1.5"],["tone","warning"],["tone","success",1,"tabular-nums"],[1,"flex","shrink-0","items-center","justify-end","gap-0.5"],["type","button",1,"act",3,"on","title"],["type","button",1,"lnk",3,"click","disabled"],["sizeClass","h-3.5 w-3.5"],["name","external-link",1,"h-3.5","w-3.5"],["type","button",1,"lnk","brand",3,"click"],[1,"line-clamp-2","break-words","font-mono","text-xs","leading-snug","text-muted-foreground",3,"title"],["variant","icon","label","Copy profile name",3,"text"],["name","clock",1,"h-3","w-3",3,"strokeWidth"],["type","button",1,"act",3,"click","title"],["name","star",1,"h-3.5","w-3.5",3,"set"],["name","bolt",1,"h-3.5","w-3.5",3,"set"]],template:function(e,o){if(e&1&&(a(0,"div",0)(1,"span",1),N(2,"app-icon",2),s(),a(3,"span",3)(4,"span",4),d(5),s(),a(6,"span",5),d(7),s(),a(8,"span",6)(9,"span",7),d(10),s(),_(11,Ft,1,1,"app-copy-button",8),s()(),a(12,"span",9),_(13,Lt,2,1,"app-chip",10),_(14,Bt,2,2,"span",5),s(),a(15,"span",11),_(16,$t,3,3),s(),a(17,"span",12),_(18,qt,2,1,"app-chip",13),_(19,zt,3,2,"app-chip",14),s(),a(20,"span",15),_(21,Ht,2,6,"button",16),_(22,Wt,2,6,"button",16),a(23,"button",17),C("click",function(){return o.console.emit()}),_(24,jt,1,0,"app-spinner",18)(25,Kt,1,0,"app-icon",19),d(26," Console "),s(),a(27,"button",20),C("click",function(){return o.getCredentials.emit()}),d(28," Get credentials "),s()()()),e&2){let i,c;r(2),p("name",o.icon()),r(2),p("title",o.roleArn()||o.role()),r(),y(o.role()),r(),p("title",o.account()),r(),y(o.account()),r(3),y(o.id()),r(),g((i=o.rawId())?11:-1,i),r(2),g((c=o.env())?13:-1,c),r(),g(o.dims()?14:-1),r(2),g(o.profile()?16:-1),r(2),g(o.grant()?18:-1),r(),g(o.creds()?19:-1),r(2),g(o.favorite()!==null?21:-1),r(),g(o.autoLogin()!==null?22:-1),r(),p("disabled",o.consoleBusy()),M("aria-busy",o.consoleBusy()||null)("aria-label","Console for "+o.role()+" in "+o.account()),r(),g(o.consoleBusy()?24:25),r(3),M("aria-label","Get credentials for "+o.role()+" in "+o.account())}},dependencies:[te,st,oe,$e],styles:[".row[_ngcontent-%COMP%]{display:grid;grid-template-columns:32px minmax(0,2fr) minmax(0,1fr) minmax(0,1.25fr) minmax(0,.8fr) auto;align-items:center;gap:12px;padding:9px 12px;min-height:60px}@media(max-width:1023px){.row[_ngcontent-%COMP%]{grid-template-columns:32px minmax(0,2fr) minmax(0,1.1fr) minmax(0,.8fr) auto}}@media(max-width:767px){.row[_ngcontent-%COMP%]{grid-template-columns:32px minmax(0,2fr) minmax(0,.8fr) auto}}.act[_ngcontent-%COMP%]{display:inline-grid;place-items:center;height:28px;width:28px;border-radius:6px;color:var(--text-secondary)}.act[_ngcontent-%COMP%]:hover{background:var(--muted);color:var(--surface-foreground)}.act.on[_ngcontent-%COMP%]{color:var(--brand)}.lnk[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 8px;border-radius:6px;font-size:12.5px;color:var(--muted-foreground);white-space:nowrap}.lnk[_ngcontent-%COMP%]:hover{background:var(--muted)}.lnk[_ngcontent-%COMP%]:disabled{cursor:progress}.lnk.brand[_ngcontent-%COMP%]{color:var(--brand-text)}"]})};var Ut=["prod","staging","dev","sandbox"];function gt(n,t,e){let o=n.dims?.stage?.toLowerCase();if(e&&o){let c=e[o];return Ut.includes(c)?c:"sandbox"}let i=`${n.name??""} ${t.role} ${t.description??""}`.toLowerCase();return/prod|prd|live/.test(i)?"prod":/stag|preprod|test|qa|uat/.test(i)?"staging":/dev|eng/.test(i)?"dev":"sandbox"}var Yt=["panelTpl"],Qt=["toolbar"],Gt=(n,t)=>({$implicit:n,role:t,origin:"search"}),Zt=(n,t)=>({$implicit:n,role:t,origin:"signed-in"}),pe=n=>({$implicit:n}),Jt=(n,t)=>({$implicit:n,role:t,origin:"other"}),Xt=(n,t)=>t.accountNumber+"#"+t.role,en=(n,t)=>t.id,tn=(n,t)=>t.key,H=(n,t)=>t.accountNumber,Ct=(n,t)=>t.roleArn,xt=(n,t)=>t.account.accountNumber+"#"+t.role.role;function nn(n,t){if(n&1&&(a(0,"app-banner",7),d(1),s()),n&2){let e=l();r(),y(e.store.error())}}function on(n,t){n&1&&(a(0,"div",8),N(1,"app-skeleton",11)(2,"app-skeleton",11)(3,"app-skeleton",11),s())}function rn(n,t){if(n&1){let e=h();a(0,"button",19),C("click",function(){let i=m(e).$implicit,c=l(2);return u(c.jumpTo(i.id))}),d(1),a(2,"span",20),d(3),s()()}if(n&2){let e=t.$implicit;r(),T("",e.label," "),r(2),T("\xB7 ",e.count)}}function an(n,t){if(n&1&&(a(0,"option",23),d(1),s()),n&2){let e=t.$implicit,o=l(3);p("value",e),r(),T("By ",o.dimensions.label(e).toLowerCase())}}function ln(n,t){if(n&1){let e=h();a(0,"select",21),C("change",function(i){m(e);let c=l(2);return u(c.groupBy.set(i.target.value))}),a(1,"option",22),d(2,"No grouping"),s(),S(3,an,2,2,"option",23,ye),s(),a(5,"app-filter-popup",24),C("filtersChange",function(i){m(e);let c=l(2);return u(c.setDimFilters(i))}),s()}if(n&2){let e=l(2);p("value",e.groupBy()),r(3),P(e.DIMENSION_KEYS),r(2),p("sections",e.dimSections())("filters",e.dimFilters())}}function sn(n,t){n&1&&(a(0,"p",25),d(1,"Searching\u2026"),s())}function cn(n,t){if(n&1&&(a(0,"app-banner",7),d(1),s()),n&2){let e=l();r(),y(e.error())}}function dn(n,t){if(n&1&&d(0),n&2){let e=l(4);j(' Nothing matches "',e.searchText(),'"',e.dimFilters().length?" with these filters":"",". Try a different account or role name. ")}}function pn(n,t){n&1&&d(0," None of your accounts match these filters. ")}function mn(n,t){if(n&1&&(a(0,"p",26),_(1,dn,1,2)(2,pn,1,0),s()),n&2){let e=l(3);r(),g(e.searchText().trim()?1:2)}}function un(n,t){if(n&1&&(a(0,"h3",30),d(1),a(2,"span",20),d(3),s()()),n&2){let e=l().$implicit;r(),T("",e.label," "),r(2),T("\xB7 ",e.items.length)}}function _n(n,t){n&1&&k(0)}function gn(n,t){if(n&1&&E(0,_n,1,0,"ng-container",31),n&2){let e=t.$implicit,o=l().$implicit;l(5);let i=D(13);p("ngTemplateOutlet",i)("ngTemplateOutletContext",G(2,Gt,o,e))}}function fn(n,t){if(n&1&&S(0,gn,1,5,"ng-container",null,Ct),n&2){let e=t.$implicit;P(e.roles)}}function Cn(n,t){if(n&1&&(_(0,un,4,2,"h3",30),S(1,fn,2,0,null,null,H)),n&2){let e=t.$implicit;g(e.key!==null?0:-1),r(),P(e.items)}}function xn(n,t){if(n&1){let e=h();a(0,"app-load-more",32),C("reached",function(){m(e);let i=l(2);return u(i.loadMore())}),s()}}function hn(n,t){if(n&1&&(a(0,"div",27),S(1,Cn,3,1,null,null,tn),s(),_(3,xn,1,0,"app-load-more",28),a(4,"p",29),d(5),s()),n&2){let e=l(),o=l(2);r(),P(o.groupsOf(e.items())),r(2),g(e.hasMore()?3:-1),r(2),Ae(" ",e.items().length," of ",e.total()," matching account",e.total()===1?"":"s","",e.hasMore()?" \u2014 keep typing to narrow, or scroll for more":""," ")}}function vn(n,t){if(n&1&&(a(0,"div",17),_(1,sn,2,0,"p",25)(2,cn,2,1,"app-banner",7)(3,mn,3,1,"p",26)(4,hn,6,5),s()),n&2){let e=t;r(),g(e.initial()?1:e.error()?2:e.items().length===0?3:4)}}function bn(n,t){n&1&&k(0)}function yn(n,t){if(n&1&&E(0,bn,1,0,"ng-container",31),n&2){let e=t.$implicit;l(3);let o=D(13);p("ngTemplateOutlet",o)("ngTemplateOutletContext",G(2,Zt,e.account,e.role))}}function wn(n,t){if(n&1&&(a(0,"h2",33),d(1,"Signed in now "),a(2,"span",20),d(3),s()(),a(4,"div",34),S(5,yn,1,5,"ng-container",null,xt),s()),n&2){let e=l(2);r(3),T("\xB7 ",e.signedIn().length),r(2),P(e.signedIn())}}function Tn(n,t){n&1&&k(0)}function An(n,t){if(n&1&&E(0,Tn,1,0,"ng-container",31),n&2){let e=t.$implicit;l(3);let o=D(11);p("ngTemplateOutlet",o)("ngTemplateOutletContext",z(2,pe,e))}}function Sn(n,t){if(n&1&&(a(0,"h2",35),d(1,"Favorites "),a(2,"span",20),d(3),s()(),a(4,"div",36),S(5,An,1,4,"ng-container",null,H),s()),n&2){l();let e=Q(0);r(3),T("\xB7 ",e.favorites.length),r(2),P(e.favorites)}}function Pn(n,t){n&1&&k(0)}function Nn(n,t){if(n&1&&E(0,Pn,1,0,"ng-container",31),n&2){let e=t.$implicit;l(3);let o=D(11);p("ngTemplateOutlet",o)("ngTemplateOutletContext",z(2,pe,e))}}function En(n,t){if(n&1&&(a(0,"h2",37),d(1,"Main "),a(2,"span",20),d(3),s()(),a(4,"div",36),S(5,Nn,1,4,"ng-container",null,H),s()),n&2){l();let e=Q(0);r(3),T("\xB7 ",e.main.length),r(2),P(e.main)}}function Mn(n,t){n&1&&k(0)}function kn(n,t){if(n&1&&E(0,Mn,1,0,"ng-container",31),n&2){let e=t.$implicit;l(3);let o=D(11);p("ngTemplateOutlet",o)("ngTemplateOutletContext",z(2,pe,e))}}function Dn(n,t){if(n&1&&(a(0,"h2",38),d(1,"Recently vended "),a(2,"span",20),d(3),s()(),a(4,"div",36),S(5,kn,1,4,"ng-container",null,H),s()),n&2){l();let e=Q(0);r(3),T("\xB7 ",e.recent.length),r(2),P(e.recent)}}function Rn(n,t){n&1&&(a(0,"p",25),d(1,"Loading\u2026"),s())}function Vn(n,t){if(n&1&&(a(0,"app-banner",7),d(1),s()),n&2){let e=l(2);r(),y(e.error())}}function In(n,t){n&1&&k(0)}function On(n,t){if(n&1&&E(0,In,1,0,"ng-container",31),n&2){let e=t.$implicit;l(5);let o=D(13);p("ngTemplateOutlet",o)("ngTemplateOutletContext",G(2,Jt,e.account,e.role))}}function Fn(n,t){if(n&1){let e=h();a(0,"app-load-more",32),C("reached",function(){m(e);let i=l(5);return u(i.showMoreOther())}),s(),a(1,"p",41),d(2),s()}if(n&2){let e=l(3),o=l(2);r(2),j("",o.otherVisible().length," roles shown of ",e.total()," accounts \u2014 more load as you scroll; the search above is the short way")}}function Ln(n,t){if(n&1&&(a(0,"div",27),S(1,On,1,5,"ng-container",null,xt),s(),_(3,Fn,3,2)),n&2){let e=l(2),o=l(2);r(),P(o.otherVisible()),r(2),g(o.otherVisible().length<o.otherRows().length||e.hasMore()?3:-1)}}function Bn(n,t){if(n&1&&(a(0,"h2",39),d(1,"Other accounts "),a(2,"span",20),d(3),s()(),a(4,"div",40),_(5,Rn,2,0,"p",25)(6,Vn,2,1,"app-banner",7)(7,Ln,4,1),s()),n&2){let e=l();r(3),T("\xB7 ",e.total()),r(2),g(e.initial()?5:e.error()?6:7)}}function $n(n,t){n&1&&_(0,Bn,8,2),n&2&&g(t.total()>0?0:-1)}function qn(n,t){n&1&&(a(0,"p",18),d(1," Nothing pinned yet \u2014 star an account in the table or the search results to keep it on top. "),s())}function zn(n,t){if(n&1){let e=h();Se(0),a(1,"div",12,3),C("keydown.escape",function(){m(e);let i=l();return u(i.closeSearch())}),a(3,"nav",13),S(4,rn,4,2,"button",14,en),s(),a(6,"div",15),C("focusin",function(){m(e);let i=l();return u(i.searchOpen.set(!0))}),a(7,"app-search-input",16),C("valueChange",function(i){m(e);let c=l();return u(c.search(i))}),s(),_(8,ln,6,3),_(9,vn,5,1,"div",17),s()(),_(10,wn,7,1),_(11,Sn,7,1),_(12,En,7,1),_(13,Dn,7,1),_(14,$n,1,1),_(15,qn,2,0,"p",18)}if(n&2){let e,o,i=l(),c=Pe(i.store.home());r(4),P(i.jumps()),r(3),p("value",i.searchText()),r(),g(i.dimensions.enabled?8:-1),r(),g((e=i.resultsOpen()&&i.browse())?9:-1,e),r(),g(i.signedIn().length?10:-1),r(),g(c.favorites.length?11:-1),r(),g(c.main.length?12:-1),r(),g(c.recent.length?13:-1),r(),g((o=i.other())?14:-1,o),r(),g(!i.signedIn().length&&!c.main.length&&!c.favorites.length&&!c.recent.length?15:-1)}}function Hn(n,t){if(n&1){let e=h();a(0,"app-empty-state",9),d(1," An administrator needs to grant you a role before anything shows up here \u2014 you can ask for one now. "),a(2,"span",42)(3,"app-button",43),C("click",function(){m(e);let i=l();return u(i.openRequest(null))}),d(4,"Request a role"),s()()()}}function Wn(n,t){if(n&1&&(a(0,"app-empty-state",46),d(1),s()),n&2){let e=l(2);r(),T(' Nothing matches "',e.query(),'". Try a different account or role name. ')}}function jn(n,t){n&1&&k(0)}function Kn(n,t){if(n&1&&E(0,jn,1,0,"ng-container",31),n&2){let e=t.$implicit;l(3);let o=D(11);p("ngTemplateOutlet",o)("ngTemplateOutletContext",z(2,pe,e))}}function Un(n,t){if(n&1){let e=h();a(0,"app-load-more",32),C("reached",function(){m(e);let i=l(3);return u(i.window.loadMore())}),s()}}function Yn(n,t){if(n&1&&(a(0,"div",36),S(1,Kn,1,4,"ng-container",null,H),s(),_(3,Un,1,0,"app-load-more",28)),n&2){let e=l(2);r(),P(e.window.items()),r(2),g(e.window.hasMore()?3:-1)}}function Qn(n,t){if(n&1){let e=h();a(0,"div",44)(1,"app-search-input",45),Y("valueChange",function(i){m(e);let c=l();return U(c.query,i)||(c.query=i),u(i)}),s()(),_(2,Wn,2,1,"app-empty-state",46)(3,Yn,4,1)}if(n&2){let e=l();r(),K("value",e.query),r(),g(e.filtered().length===0?2:3)}}function Gn(n,t){if(n&1&&(a(0,"span",50),d(1),s()),n&2){let e=l(2);p("title",e.dimensions.label("tenant")+" \xB7 "+e.dimensions.label("project")+" \xB7 "+e.dimensions.label("stage")),r(),T("\xB7 ",t)}}function Zn(n,t){if(n&1){let e=h();a(0,"button",54),C("click",function(){m(e);let i=l().$implicit,c=l();return u(c.store.toggleFavorite(i))}),N(1,"app-icon",55),s()}if(n&2){let e=l().$implicit,o=l();I("on",o.store.isFavorite(e.accountNumber)),p("title",o.store.isFavorite(e.accountNumber)?"In your favorites \u2014 click to remove":"Add to your favorites"),M("aria-pressed",o.store.isFavorite(e.accountNumber))("aria-label",(o.store.isFavorite(e.accountNumber)?"Remove ":"Add ")+o.titleOf(e)+(o.store.isFavorite(e.accountNumber)?" from favorites":" to favorites")),r(),p("set",o.store.isFavorite(e.accountNumber)?"solid":void 0)}}function Jn(n,t){if(n&1){let e=h();a(0,"app-role-card",56),C("profileRename",function(i){let c=m(e).$implicit,f=l().$implicit,b=l();return u(b.renameProfile(f,c,i))})("profileReset",function(){let i=m(e).$implicit,c=l().$implicit,f=l();return u(f.personalization.resetProfileName(c.accountNumber,i.role))})("autoLoginToggle",function(){let i=m(e).$implicit,c=l().$implicit,f=l();return u(f.toggleAutoLogin(c.accountNumber,i.role))})("getCredentials",function(){let i=m(e).$implicit,c=l().$implicit,f=l();return u(f.vendTarget.set({accountNumber:c.accountNumber,role:i.role}))})("console",function(){let i=m(e).$implicit,c=l().$implicit,f=l();return u(f.openConsole(c.accountNumber,i.role))}),s()}if(n&2){let e=t.$implicit,o=l().$implicit,i=l();p("env",i.cardEnv(o,e))("account",i.roleDisplayOf(e))("role",i.roleDisplayOf(e))("showRoleRow",!1)("profile",i.profileOf(o,e))("profileSource",i.personalization.resolved(o.accountNumber,e.role).source)("profileSuggested",i.personalization.resolved(o.accountNumber,e.role).suggested)("profileEditable",!0)("id",i.formatId(o.accountNumber))("rawId",o.accountNumber)("grant",i.grantLabel(e))("creds",i.credsFor(o.accountNumber,e.role))("autoLogin",i.bridge.isDesktop?i.autoLogin.isEnabled(o.accountNumber,e.role):null)("icon",i.cardIcon(e))("consoleBusy",i.consoleBusyFor(o.accountNumber,e.role)),M("title",e.roleArn)}}function Xn(n,t){if(n&1&&(a(0,"section",47)(1,"header",48)(2,"span",49),d(3),s(),a(4,"span",20),d(5),s(),_(6,Gn,2,2,"span",50),_(7,Zn,2,6,"button",51),s(),a(8,"div",52),S(9,Jn,1,16,"app-role-card",53,Ct),s()()),n&2){let e,o,i=t.$implicit,c=l();Te("flex-grow",i.roles.length)("flex-basis",c.groupBasis(i.roles.length))("max-width",c.groupMax(i.roles.length)),r(3),y(c.titleOf(i)),r(2),j("\xB7 ",i.roles.length," role",i.roles.length===1?"":"s"),r(),g((e=c.dimensions.summary(i.dims))?6:-1,e),r(),g((o=c.store.home())!=null&&o.sectioned?7:-1),r(2),P(i.roles)}}function eo(n,t){if(n&1){let e=h();a(0,"app-role-row",57),C("favoriteToggle",function(){let i=m(e),c=i.$implicit,f=i.origin,b=l();return u(b.toggleFavorite(c,f))})("autoLoginToggle",function(){let i=m(e),c=i.$implicit,f=i.role,b=l();return u(b.toggleAutoLogin(c.accountNumber,f.role))})("console",function(){let i=m(e),c=i.$implicit,f=i.role,b=l();return u(b.openConsole(c.accountNumber,f.role))})("getCredentials",function(){let i=m(e),c=i.$implicit,f=i.role,b=l();return u(b.vendTarget.set({accountNumber:c.accountNumber,role:f.role}))}),s()}if(n&2){let e=t.$implicit,o=t.role,i=l();p("icon",i.cardIcon(o))("role",i.roleDisplayOf(o))("roleArn",o.roleArn)("account",i.titleOf(e))("id",i.formatId(e.accountNumber))("rawId",e.accountNumber)("env",i.cardEnv(e,o))("dims",i.dimensions.summary(e.dims)||"")("profile",i.profileOf(e,o))("grant",i.grantLabel(o))("creds",i.credsFor(e.accountNumber,o.role))("favorite",i.store.isFavorite(e.accountNumber))("autoLogin",i.bridge.isDesktop?i.autoLogin.isEnabled(e.accountNumber,o.role):null)("consoleBusy",i.consoleBusyFor(e.accountNumber,o.role))}}function to(n,t){if(n&1){let e=h();a(0,"app-credentials-dialog",58),C("closed",function(){m(e);let i=l();return u(i.vendTarget.set(null))})("grantRevoked",function(){m(e);let i=l();return u(i.store.load())}),s()}if(n&2){let e=t.$implicit;p("target",e)}}function no(n,t){if(n&1){let e=h();a(0,"app-panel",59),C("closed",function(){m(e);let i=l();return u(i.closeRequest())}),a(1,"app-request-role-form",60),C("created",function(){m(e);let i=l();return u(i.requestSent.set(!0))})("closed",function(){m(e);let i=l();return u(i.closeRequest())}),s()()}if(n&2){let e=l();p("title",e.requestSent()?"Request sent":"Request a role"),r(),p("presetAccount",e.requestAccount())}}var ft=class n{store=v(se);dimensions=v(Ge);api=v($);toast=v(ee);cache=v(J);autoLogin=v(Re);personalization=v(q);autoVend=v(Fe);bridge=v(X);destroyRef=v(W);route=v(Ee);router=v(Me);vendTarget=x(null);vendTargets=w(()=>this.vendTarget()?[this.vendTarget()]:[]);requestOpen=x(!1);requestSent=x(!1);requestAccount=x(null);panelTpl=ge("panelTpl");toolbar=ge("toolbar");host=v(ve);query=x("");searchText=x("");searchOpen=x(!1);browse=x(null);other=x(null);otherRows=w(()=>(this.other()?.items()??[]).flatMap(t=>t.roles.map(e=>({account:t,role:e}))));otherShown=x(le);otherVisible=w(()=>this.otherRows().slice(0,this.otherShown()));showMoreOther(){let t=this.otherShown()+2*le;this.otherShown.set(t),t>this.otherRows().length&&this.other()?.loadMore()}consoleBusy=x(new Set);consoleKey(t,e){return`${t}#${e}`}consoleBusyFor(t,e){return this.consoleBusy().has(this.consoleKey(t,e))}setConsoleBusy(t,e){this.consoleBusy.update(o=>{let i=new Set(o);return e?i.add(t):i.delete(t),i})}openRequest(t){this.requestAccount.set(t),this.requestOpen.set(!0)}closeRequest(){this.requestOpen.set(!1),this.requestSent.set(!1),this.requestAccount.set(null)}search(t){this.searchText.set(t),this.searchOpen.set(!0),this.browse()?.setQuery(t)}resultsOpen=w(()=>this.searchOpen()&&this.searching());closeSearch(){this.searchOpen.set(!1)}jumps=w(()=>{let t=this.store.home();if(!t?.sectioned)return[];let e=[];this.signedIn().length&&e.push({id:"section-signed-in",label:"Signed in now",count:this.signedIn().length}),t.favorites.length&&e.push({id:"section-favorites",label:"Favorites",count:t.favorites.length}),t.main.length&&e.push({id:"section-main",label:"Main",count:t.main.length}),t.recent.length&&e.push({id:"section-recent",label:"Recently vended",count:t.recent.length});let o=this.other();return o&&o.total()>0&&e.push({id:"section-other",label:"Other accounts",count:o.total()}),e});jumpTo(t){this.closeSearch();let e=this.host.nativeElement.querySelector(`[data-testid="${t}"]`),o=e?.nextElementSibling,i=e?.closest(".overflow-y-auto");if(!e||!o||!i)return;let c=this.toolbar()?.nativeElement.offsetHeight??0,f=i.scrollTop+o.getBoundingClientRect().top-i.getBoundingClientRect().top-c-e.offsetHeight;i.scrollTo({top:Math.max(0,f),behavior:"smooth"})}onDocumentMousedown(t){this.searchOpen()&&!t.target?.closest?.(".searchbox")&&this.searchOpen.set(!1)}signedIn=w(()=>{let t=this.now(),e=this.store.known();return this.cache.live(t).sort((o,i)=>o.expiration.localeCompare(i.expiration)).flatMap(o=>{let i=e.get(o.accountNumber),c=i?.roles.find(f=>f.role===o.role);return i&&c?[{account:i,role:c}]:[]})});toggleFavorite(t,e){this.store.toggleFavorite(t).then(()=>{e==="other"&&this.other()?.reload()})}dimFilters=x([]);dimSections=w(()=>this.dimensions.sections(this.browse()?.facets()));searching=w(()=>this.searchText().trim().length>0||this.dimFilters().length>0);groupBy=x("");DIMENSION_KEYS=Ye;groupsOf(t){let e=this.groupBy();if(!e)return[{key:null,label:"",items:[...t]}];let o=new Map;for(let i of t){let c=i.dims?.[e]??Qe;(o.get(c)??o.set(c,[]).get(c)).push(i)}return[...o.entries()].map(([i,c])=>({key:i,label:i,items:c}))}setDimFilters(t){this.dimFilters.set(t),this.searchOpen.set(!0);let e={};for(let o of t)(e[o.key]??=[]).push(o.value);this.browse()?.setFilters(e)}now=x(Date.now());filtered=w(()=>{let t=this.store.accounts()??[],e=this.query().trim().toLowerCase();return e?t.map(o=>{if(o.accountNumber.toLowerCase().includes(e)||o.name?.toLowerCase().includes(e))return o;let i=o.roles.filter(c=>c.role.toLowerCase().includes(e)||c.roleArn.toLowerCase().includes(e)||c.description?.toLowerCase().includes(e));return F(O({},o),{roles:i})}).filter(o=>o.roles.length>0):t});window=pt(this.filtered,8);groupBasis(t){return`${t*300+(t-1)*16+36}px`}groupMax(t){return`${t*440+(t-1)*16+36}px`}constructor(){this.store.load({fresh:!0}),nt(this.requestOpen,this.panelTpl,()=>this.closeRequest()),this.route.queryParamMap.pipe(Ke()).subscribe(o=>{let i=o.get("vend");if(i){let c=i.indexOf(":"),f=i.slice(0,c),b=decodeURIComponent(i.slice(c+1));f&&b&&this.vendTarget.set({accountNumber:f,role:b})}o.get("request")&&this.openRequest(null),(i||o.get("request"))&&this.router.navigate([],{queryParams:{},replaceUrl:!0})});let t=setInterval(()=>this.now.set(Date.now()),1e3);this.destroyRef.onDestroy(()=>clearInterval(t));let e=new ResizeObserver(([o])=>{this.host.nativeElement.style.setProperty("--toolbar-h",`${Math.round(o.contentRect.height+18)}px`)});R(()=>{let o=this.toolbar()?.nativeElement;e.disconnect(),o&&e.observe(o)}),this.destroyRef.onDestroy(()=>e.disconnect()),R(()=>{!this.store.home()?.sectioned||B(()=>this.browse())||B(()=>{this.browse.set(fe(i=>this.api.listAccountsPage(i),{limit:24,sort:"position"})),this.other.set(fe(i=>this.api.listAccountsPage(F(O({},i),{filters:F(O({},i.filters),{main:["false"],favorite:["false"]})})),{limit:le,sort:"position"}))})}),R(()=>{let o=[...this.browse()?.items()??[],...this.other()?.items()??[]];o.length&&B(()=>{this.personalization.mergeFrom(o),this.store.remember(o)})}),R(()=>{let o=this.store.accounts();o&&this.bridge.isDesktop&&this.autoLogin.hydrate().subscribe(()=>{this.autoLogin.prewarm(o),this.autoVend.start(o)})})}cardIcon(t){return mt(t.icon,t.role)}titleOf(t){return t.name||this.formatId(t.accountNumber)}roleDisplayOf(t){return t.displayName||t.role}renameProfile(t,e,o){this.personalization.setProfileName(t.accountNumber,e.role,o||null)}profileOf(t,e){return this.personalization.profileName(t.accountNumber,e.role)}formatId(t){return t.replace(/(\d{4})(?=\d)/g,"$1 ")}grantLabel(t){return t.expiresAt?`expires ${Ue(t.expiresAt)}`:""}cardEnv(t,e){return gt(t,e,this.dimensions.stages)}credsFor(t,e){let o=this.now(),i=this.cache.peekExpiration(t,e);if(!i)return"";let c=new Date(i).getTime()-o;return c<=0?"":ie(c)}toggleAutoLogin(t,e){let o=!this.autoLogin.isEnabled(t,e);this.autoLogin.setEnabled(t,e,o),this.autoVend.onToggle(t,e,o)}openConsole(t,e){let o=this.consoleKey(t,e);this.consoleBusy().has(o)||(this.setConsoleBusy(o,!0),this.api.consoleSignIn(t,e).pipe(xe(()=>this.setConsoleBusy(o,!1))).subscribe({next:({url:i})=>{this.cache.get(t,e)||this.api.vendCredentials(t,e,{background:!0}).subscribe({next:c=>{this.cache.set(t,e,c),this.bridge.isDesktop&&this.bridge.writeCredentials({accountNumber:t,role:e,profile:this.personalization.profileName(t,e),creds:c}).catch(()=>{})},error:()=>{}}),localStorage.setItem(Le,"1"),this.bridge.isDesktop?this.bridge.openConsole(i):window.open(i,"_blank","noopener")},error:i=>this.toast.error(ae(i,"Could not create a console sign-in link."),i?.status===403?{label:"Request access",path:"/accounts?request=1"}:void 0)}))}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=L({type:n,selectors:[["app-accounts-page"]],viewQuery:function(e,o){e&1&&(_e(o.panelTpl,Yt,5),_e(o.toolbar,Qt,5)),e&2&&we(2)},hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],hostBindings:function(e,o){e&1&&C("mousedown",function(c){return o.onDocumentMousedown(c)},be)},decls:18,vars:3,consts:[["groupTpl",""],["rowTpl",""],["panelTpl",""],["toolbar",""],["pageHeader","","title","Your access","subtitle","Roles you're allowed to assume, grouped by account.","subtitleInfo","Credentials are short-lived and shown only to you.",3,"showHeaderSearch"],["headerActions","",3,"click"],["name","plus",1,"h-4","w-4",3,"strokeWidth"],["tone","danger"],[1,"rolegrid"],["title","No account access yet"],[3,"target"],["sizeClass","h-56 w-full"],["data-testid","sectioned-toolbar",1,"toolbar",3,"keydown.escape"],["aria-label","Sections",1,"jump"],["type","button"],[1,"searchbox",3,"focusin"],["placeholder","Search everything you have access to \u2014 account, number or role",1,"min-w-0","flex-1",3,"valueChange","value"],["data-testid","search-results",1,"results"],["data-testid","nothing-pinned",1,"mt-4","text-xs","text-muted-foreground"],["type","button",3,"click"],[1,"cnt"],["aria-label","Group by","data-testid","group-by",1,"ui-input","h-9","w-auto","py-0","text-xs",3,"change","value"],["value",""],[3,"value"],["align","end",3,"filtersChange","sections","filters"],[1,"px-4","py-3","text-xs","text-muted-foreground"],[1,"px-4","py-3","text-sm","text-muted-foreground"],[1,"divide-y","divide-border"],["appInfiniteScroll",""],[1,"border-t","border-border","px-4","py-2","text-[11px]","text-text-secondary"],[1,"sect","sub","px-3"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["appInfiniteScroll","",3,"reached"],["data-testid","section-signed-in",1,"sect","pin"],[1,"rows","divide-y","divide-border"],["data-testid","section-favorites",1,"sect","pin"],[1,"cards"],["data-testid","section-main",1,"sect","pin"],["data-testid","section-recent",1,"sect","pin"],["data-testid","section-other",1,"sect","pin"],[1,"rows"],[1,"border-t","border-border","px-3","py-2","text-[11px]","text-text-secondary"],[1,"mt-4","flex","justify-center"],[3,"click"],[1,"mb-3","flex","justify-end"],["compact","","placeholder","Search by account or role",1,"w-[260px]",3,"valueChange","value"],["title","No matches"],[1,"acctgroup"],[1,"acctgroup-h"],[1,"ttl"],[1,"cnt",3,"title"],["type","button",1,"fav",3,"on","title"],[1,"acctgroup-b"],["variant","inline",1,"card",3,"env","account","role","showRoleRow","profile","profileSource","profileSuggested","profileEditable","id","rawId","grant","creds","autoLogin","icon","consoleBusy"],["type","button",1,"fav",3,"click","title"],["name","star",1,"h-3.5","w-3.5",3,"set"],["variant","inline",1,"card",3,"profileRename","profileReset","autoLoginToggle","getCredentials","console","env","account","role","showRoleRow","profile","profileSource","profileSuggested","profileEditable","id","rawId","grant","creds","autoLogin","icon","consoleBusy"],[3,"favoriteToggle","autoLoginToggle","console","getCredentials","icon","role","roleArn","account","id","rawId","env","dims","profile","grant","creds","favorite","autoLogin","consoleBusy"],[3,"closed","grantRevoked","target"],[3,"closed","title"],[3,"created","closed","presetAccount"]],template:function(e,o){if(e&1){let i=h();a(0,"app-page")(1,"app-page-header",4)(2,"app-button",5),C("click",function(){return m(i),u(o.openRequest(null))}),N(3,"app-icon",6),d(4," Request a role "),s()(),_(5,nn,2,1,"app-banner",7)(6,on,4,0,"div",8)(7,zn,16,10)(8,Hn,5,0,"app-empty-state",9)(9,Qn,4,2),s(),E(10,Xn,11,11,"ng-template",null,0,Z)(12,eo,1,14,"ng-template",null,1,Z),S(14,to,1,1,"app-credentials-dialog",10,Xt),E(16,no,2,2,"ng-template",null,2,Z)}e&2&&(r(),p("showHeaderSearch",!1),r(2),p("strokeWidth",2),r(2),g(o.store.error()?5:o.store.home()===null?6:o.store.home().sectioned?7:o.store.accounts().length===0?8:9),r(9),P(o.vendTargets()))},dependencies:[Ne,ce,tt,ot,rt,ne,re,et,te,dt,ct,de,at,lt,Ze,Je,Xe],styles:[".cards[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px;margin:0 -18px}.rolegrid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:0 -18px}.sect[_ngcontent-%COMP%]{margin:20px 0 10px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}.sect[_ngcontent-%COMP%]:first-child{margin-top:4px}[_nghost-%COMP%]{--toolbar-h: 84px}.toolbar[_ngcontent-%COMP%], .sect.pin[_ngcontent-%COMP%]{background:linear-gradient(var(--glass-panel-bg),var(--glass-panel-bg)),var(--glass-plate);background-attachment:scroll,fixed}.toolbar[_ngcontent-%COMP%]{position:sticky;top:0;z-index:15;margin:-24px -25px 0;padding:10px 25px 8px}.jump[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px 6px;margin-bottom:8px;min-height:22px}.jump[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);padding:2px 8px;border-radius:999px;background:var(--muted)}.jump[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{color:var(--surface-foreground)}.jump[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .cnt[_ngcontent-%COMP%]{font-weight:500;letter-spacing:0}.searchbox[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:8px}.results[_ngcontent-%COMP%]{position:absolute;inset-inline:0;top:calc(100% + 6px);z-index:30;max-height:min(60vh,560px);overflow-y:auto;border-radius:12px;border:1px solid var(--border-strong);background:var(--popover-bg);box-shadow:0 12px 32px -8px #10182840;backdrop-filter:blur(24px)}.sect.pin[_ngcontent-%COMP%]{position:sticky;top:var(--toolbar-h);z-index:10;margin:12px -25px 6px;padding:8px 25px 6px}.rows[_ngcontent-%COMP%]{border:1px solid var(--border);border-radius:calc(var(--radius) * 3);background:var(--card-bg);overflow:hidden}.sect.sub[_ngcontent-%COMP%]{margin:14px 0 8px;text-transform:none;letter-spacing:0;font-size:12px;color:var(--surface-foreground)}.sect[_ngcontent-%COMP%] .cnt[_ngcontent-%COMP%]{font-weight:500}.acctgroup[_ngcontent-%COMP%]{flex-shrink:1;min-width:min(100%,336px);max-width:100%;border:1px solid var(--border);border-radius:calc(var(--radius) * 3)}.acctgroup-h[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px;padding:14px 18px 0}.ttl[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--surface-foreground)}.cnt[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--text-secondary)}.fav[_ngcontent-%COMP%]{margin-left:auto;align-self:center;display:inline-flex;padding:4px;border-radius:6px;color:var(--text-secondary)}.fav[_ngcontent-%COMP%]:hover{background:var(--muted);color:var(--surface-foreground)}.fav.on[_ngcontent-%COMP%]{color:var(--brand)}.acctgroup-b[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px;padding:12px 18px 18px}.card[_ngcontent-%COMP%]{flex:1 1 300px;max-width:100%}"]})};export{ft as AccountsPageComponent};
@@ -0,0 +1 @@
1
+ import{a as d,b as n}from"./chunk-NABAVDRL.js";import{a as i}from"./chunk-WEDAFMID.js";import"./chunk-GK2T2SMO.js";import"./chunk-GHEU25TG.js";import"./chunk-BNFKRZTP.js";import{a as m}from"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import"./chunk-O4QSFUXB.js";import{a as c,b as t,f as s}from"./chunk-J57JB4MU.js";import"./chunk-GPKKIOHD.js";import"./chunk-TM43WUKM.js";import"./chunk-6KFR7DYY.js";import"./chunk-CP4XZPOA.js";import"./chunk-FIUVIKAN.js";import"./chunk-EVP5UVDQ.js";import"./chunk-OATVFQXO.js";import"./chunk-EQ4PF25J.js";import"./chunk-ZDCURXPS.js";import"./chunk-PSMER3HX.js";import"./chunk-KCCEQIXX.js";import"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import{a}from"./chunk-4SK6XQ6C.js";import"./chunk-SJMLX5AT.js";import"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import"./chunk-NO5D6WDF.js";import"./chunk-GKI3R2JB.js";import"./chunk-M6OAYNRE.js";import"./chunk-XJM3HDJQ.js";import"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import"./chunk-D7TR2ORJ.js";import{g as o}from"./chunk-P5WRM37W.js";import"./chunk-WFIHWVQO.js";var r="448210007710",e="990144552201",u={[r]:"Acme Production",[e]:"Acme Staging"},p={[`${r}#AdminAccess`]:"#3e63dd",[`${e}#DeployRole`]:"#e5484d",[`${e}#ReadOnly`]:"#30a46c"},l=[{resourceId:"r-payments",accountNumber:e,name:"payments-db",type:"DATABASE",cidr:"10.20.30.40/32",ports:[5432],dnsName:"payments-db.internal.acme.com",createdAt:"2026-07-10T09:00:00Z",createdBy:"ada@acme.com"},{resourceId:"r-wiki",accountNumber:r,name:"internal-wiki",type:"WEB",cidr:"10.20.31.10/32",ports:[443],createdAt:"2026-07-12T09:00:00Z",createdBy:"ada@acme.com"}],A=[{groupId:"g-platform",name:"Platform team",description:"Deploy + read access to staging.",roles:[{accountNumber:e,roleName:"DeployRole"},{accountNumber:e,roleName:"ReadOnly"}],resources:[{resourceId:"r-payments",name:"payments-db"},{resourceId:"r-wiki",name:"internal-wiki"},{resourceId:"r-legacy",name:"legacy-reports"}],members:[{userId:"u-ada",email:"ada@acme.com"},{userId:"u-grace",email:"grace@acme.com"}],createdAt:"2026-07-01T10:00:00Z",createdBy:"ada@acme.com"},{groupId:"g-admins",name:"Admins",description:"Full admin access across accounts.",roles:[{accountNumber:r,roleName:"AdminAccess"},{accountNumber:e,roleName:"DeployRole"},{accountNumber:e,roleName:"ReadOnly"}],resources:[],members:[{userId:"u-ada",email:"ada@acme.com"}],createdAt:"2026-06-15T08:30:00Z",createdBy:"ada@acme.com"},{groupId:"g-oncall",name:"On-call",roles:[],resources:[],members:[{userId:"u-grace",email:"grace@acme.com"},{userId:"u-tom",email:"tom@acme.com"}],createdAt:"2026-08-05T14:00:00Z",createdBy:"ada@acme.com"}];function g(R,S={}){return[{provide:d,useValue:s({groups:R,error:S.error??""})},{provide:m,useValue:c(u)},{provide:i,useValue:t(p)},{provide:a,useValue:{listAll:()=>o(l)}}]}function G(){return{component:n,providers:g(A)}}export{G as load};
@@ -0,0 +1 @@
1
+ import{a as Y,k as X}from"./chunk-RI77LE5V.js";import{a as j}from"./chunk-2V6RSAAC.js";import{e as z}from"./chunk-FIUVIKAN.js";import{a as G}from"./chunk-QVABVDO5.js";import{a as $}from"./chunk-SJMLX5AT.js";import{a as Q,b as U}from"./chunk-2SO4BVIT.js";import{a as T,b as V,e as D,i as I,j as P,k as L,n as O,o as B,p as q}from"./chunk-NO5D6WDF.js";import{c as F}from"./chunk-GKI3R2JB.js";import{a as H}from"./chunk-XJM3HDJQ.js";import{a as w}from"./chunk-D7TR2ORJ.js";import{Aa as a,H as b,Ia as f,J as u,K as m,Ka as _,Ma as c,Q as p,Wa as i,Xa as g,Ya as k,Z as l,fa as A,qb as C,sa as h,sb as N,ta as v,tb as S,va as E,wa as R,xa as y,ya as d,za as r}from"./chunk-P5WRM37W.js";import{a as M}from"./chunk-WFIHWVQO.js";var K=(t,o)=>o.roleName;function W(t,o){if(t&1&&(i(0," for "),r(1,"strong"),i(2),a()),t&2){let e=c(2);l(2),g(e.label(e.duration()))}}function Z(t,o){if(t&1){let e=f();r(0,"app-banner",1)(1,"span",2)(2,"span"),i(3,"\u2713"),a(),r(4,"span"),i(5," Your request for "),r(6,"strong"),i(7),a(),i(8," in "),r(9,"strong"),i(10),a(),h(11,W,3,1),i(12," is with the admins. You'll see the decision in the activity bell, and the role appears in your list once it's approved. "),a()()(),r(13,"div",3)(14,"app-button",4),_("click",function(){u(e);let s=c();return m(s.closed.emit())}),i(15,"Done"),a()()}if(t&2){let e=c();l(7),g(e.targetRole()),l(3),g(e.accountLabel()),l(),v(e.duration()!=="long"?11:-1)}}function ee(t,o){t&1&&(r(0,"p",0),i(1,"Loading available roles\u2026"),a())}function te(t,o){if(t&1){let e=f();r(0,"app-banner",5),i(1),a(),r(2,"div",3)(3,"app-button",6),_("click",function(){u(e);let s=c();return m(s.closed.emit())}),i(4,"Close"),a()()}if(t&2){let e=c();l(),g(e.loadError())}}function ne(t,o){if(t&1){let e=f();r(0,"app-empty-state",7),i(1," You already have \u2014 or have already requested \u2014 every role in the catalog. "),a(),r(2,"div",3)(3,"app-button",6),_("click",function(){u(e);let s=c();return m(s.closed.emit())}),i(4,"Close"),a()()}}function oe(t,o){if(t&1&&(i(0," Your access to "),r(1,"strong"),i(2),a(),i(3," in "),r(4,"strong"),i(5),a(),i(6," has expired. This asks the admins to grant it again. ")),t&2){let e=c(),n=c(2);l(2),g(e.roleName),l(3),g(n.names.label(e.accountNumber))}}function ie(t,o){if(t&1&&(i(0," Your access to "),r(1,"strong"),i(2),a(),i(3," in "),r(4,"strong"),i(5),a(),i(6," is ending soon. This asks the admins for more time \u2014 an approval replaces the current end date. ")),t&2){let e=c(),n=c(2);l(2),g(e.roleName),l(3),g(n.names.label(e.accountNumber))}}function re(t,o){if(t&1&&(r(0,"app-banner",9),h(1,oe,7,2)(2,ie,7,2),a()),t&2){let e=o;d("tone",e.expired?"danger":"warning"),l(),v(e.expired?1:2)}}function ae(t,o){if(t&1&&(r(0,"option",22),i(1),a()),t&2){let e=o.$implicit;d("value",e.roleName),l(),k(" ",(e.displayName||e.roleName)+(e.description?" \xB7 "+e.description:"")," ")}}function le(t,o){if(t&1){let e=f();r(0,"app-field",17)(1,"app-account-picker",18),_("picked",function(s){u(e);let x=c(2);return m(x.pickAccount(s))}),a()(),r(2,"app-field",19)(3,"select",20),_("ngModelChange",function(s){u(e);let x=c(2);return m(x.roleName.set(s))}),r(4,"option",21),i(5,"Select a role\u2026"),a(),R(6,ae,2,2,"option",22,K),a()()}if(t&2){let e=c(2);l(),d("source",e.catalogPage)("selected",e.pickedAccount())("dimensionFilters",!0),l(),d("hint",e.accountNumber()?"\u2014 what you want to assume":"\u2014 pick an account first"),l(),d("disabled",!e.accountNumber())("ngModel",e.roleName()),l(3),y(e.rolesForAccount())}}function se(t,o){if(t&1&&(r(0,"option",12),i(1),a()),t&2){let e=o.$implicit,n=c(2);d("ngValue",e),l(),g(n.label(e))}}function ce(t,o){if(t&1){let e=f();r(0,"div",8),h(1,re,3,2,"app-banner",9)(2,le,8,6),r(3,"app-field",10)(4,"select",11),_("ngModelChange",function(s){u(e);let x=c();return m(x.duration.set(s))}),R(5,se,2,2,"option",12,E),r(7,"option",12),i(8,"Long-term (indefinite)"),a()()(),r(9,"app-field",13)(10,"textarea",14),_("ngModelChange",function(s){u(e);let x=c();return m(x.reason.set(s))}),a()()(),r(11,"div",15)(12,"app-button",6),_("click",function(){u(e);let s=c();return m(s.closed.emit())}),i(13,"Cancel"),a(),r(14,"app-button",16),_("click",function(){u(e);let s=c();return m(s.submit())}),i(15," Send request "),a()()}if(t&2){let e,n=c();l(),v((e=n.preset())?1:2,e),l(3),d("ngModel",n.duration()),l(),y(n.PRESETS),l(2),d("ngValue","long"),l(2),d("error",n.error()),l(),d("maxlength",n.REASON_MAX)("ngModel",n.reason()),l(4),d("loading",n.busy())("disabled",!n.canSubmit())}}var J=class t{api=b(Y);names=b(j);constructor(){this.names.ensure()}toast=b(F);notifications=b(X);preset=S(null);presetAccount=S(null);created=N();closed=N();REASON_MAX=500;PRESETS=Q;label(o){return o==="long"?"long-term":U(o)}catalog=p(null);loadError=p("");catalogPage=o=>this.api.listCatalogPage(o);pickedAccount=p(null);accountNumber=C(()=>this.pickedAccount()?.accountNumber??"");roleName=p("");duration=p("long");reason=p("");busy=p(!1);error=p("");sent=p(!1);rolesForAccount=C(()=>this.pickedAccount()?.roles??[]);targetAccount=C(()=>this.preset()?.accountNumber??this.accountNumber());targetRole=C(()=>this.preset()?.roleName??this.roleName());canSubmit=C(()=>!!this.targetAccount()&&!!this.targetRole());accountLabel=C(()=>{let o=this.pickedAccount();return o?.name?`${o.name} (${o.accountNumber})`:this.targetAccount()});ngOnInit(){if(this.preset()){this.duration.set(24);return}let e=this.presetAccount();this.api.listCatalogPage(M({limit:5},e?{q:e}:{})).subscribe({next:n=>{if(this.catalog.set(n.items),e){let s=n.items.find(x=>x.accountNumber===e);s&&this.pickAccount(s)}},error:n=>{this.catalog.set([]),this.loadError.set(q(n,"Could not load the role catalog. Try again shortly."))}})}pickAccount(o){this.pickedAccount.set(o),this.roleName.set("")}submit(){if(!this.canSubmit())return;this.error.set(""),this.busy.set(!0);let o=this.duration();this.api.create(this.targetAccount(),this.targetRole(),this.reason().trim()||void 0,o==="long"?void 0:o).subscribe({next:()=>{this.busy.set(!1),this.sent.set(!0),this.toast.success(`Requested ${this.targetRole()}`),this.notifications.load(),this.created.emit()},error:e=>{this.busy.set(!1),this.error.set(q(e,"Could not send the request."))}})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["app-request-role-form"]],inputs:{preset:[1,"preset"],presetAccount:[1,"presetAccount"]},outputs:{created:"created",closed:"closed"},decls:5,vars:1,consts:[[1,"py-4","text-xs","text-muted-foreground"],["tone","success"],[1,"flex","items-start","gap-2"],[1,"mt-5","flex","justify-end"],[3,"click"],["tone","danger"],["variant","outline",3,"click"],["title","Nothing left to request","size","dialog"],[1,"space-y-5"],[3,"tone"],["label","Access duration","hint","temporary access expires on its own; the admin has the final say"],[1,"ui-input",3,"ngModelChange","ngModel"],[3,"ngValue"],["label","Reason","hint","optional, but it's what the admin decides on",3,"error"],["rows","3","placeholder","e.g. Debugging the payment queue in staging this week.",1,"ui-input",3,"ngModelChange","maxlength","ngModel"],[1,"mt-5","flex","justify-end","gap-2"],[3,"click","loading","disabled"],["label","Account","hint","where the role lives \u2014 type a name or number"],["placeholder","Search accounts you could ask for",3,"picked","source","selected","dimensionFilters"],["label","Role",3,"hint"],[1,"ui-input",3,"ngModelChange","disabled","ngModel"],["value","","disabled",""],[3,"value"]],template:function(e,n){e&1&&h(0,Z,16,3)(1,ee,2,0,"p",0)(2,te,5,1)(3,ne,5,0)(4,ce,16,8),e&2&&v(n.sent()?0:!n.preset()&&n.catalog()===null?1:!n.preset()&&n.loadError()?2:!n.preset()&&!n.presetAccount()&&n.catalog().length===0?3:4)},dependencies:[B,P,L,T,I,V,O,D,w,$,H,G,z],encapsulation:2})};export{J as a};
@@ -0,0 +1 @@
1
+ import{a as O}from"./chunk-GK2T2SMO.js";import{c as I}from"./chunk-GHEU25TG.js";import{v as S}from"./chunk-JMBXRK3I.js";import{b as G,c as j}from"./chunk-GPKKIOHD.js";import{d as E}from"./chunk-2SO4BVIT.js";import{a as T}from"./chunk-KPNHT4MK.js";import{a as R}from"./chunk-D7TR2ORJ.js";import{Aa as d,E as C,H as p,Ia as k,J as w,K as P,Ka as h,Ma as f,Q as l,Wa as _,Ya as $,Z as u,fa as A,qb as b,sa as D,sb as F,ta as M,tb as c,ya as m,za as g}from"./chunk-P5WRM37W.js";import{a as N}from"./chunk-WFIHWVQO.js";var V=class r{api=p(T);colors=l(new Map);inFlight=!1;lastFetched=0;ensure(){this.inFlight||Date.now()-this.lastFetched<5e3||(this.inFlight=!0,this.api.listAccounts().subscribe({next:t=>{let n=new Map;for(let e of t)for(let i of e.roles)i.color&&n.set(`${e.accountNumber}#${i.roleName}`,i.color);this.colors.set(n),this.inFlight=!1,this.lastFetched=Date.now()},error:()=>{this.inFlight=!1,this.lastFetched=Date.now()}}))}colorOf(t,n){return this.colors().get(`${t}#${n}`)??null}static \u0275fac=function(n){return new(n||r)};static \u0275prov=C({token:r,factory:r.\u0275fac,providedIn:"root"})};function L(r,t){if(r&1){let n=k();g(0,"app-grant-dialog",6),h("granted",function(i){w(n);let s=f();return P(s.grant(i.ids,i.durationHours))})("closed",function(){w(n);let i=f();return P(i.granting.set(!1))}),d()}if(r&2){let n=f();m("intro",n.intro())("options",n.options())("withDuration",n.principal().kind==="user")("busy",n.busy())}}var x="|",y=(r,t,n)=>[r,t,n].join(x),B=class r{api=p(S);store=p(I);principal=c.required();holder=c.required();assignments=c.required();capabilities=c([]);groupNames=c({});changed=F();granting=l(!1);busy=l(!1);catalog=l([]);constructor(){this.api.catalog().subscribe({next:t=>this.catalog.set(t.plugins),error:()=>this.catalog.set([])})}intro=b(()=>this.principal().kind==="group"?`${this.holder()} \u2014 every member gets this while they are in the group, long-term.`:`${this.holder()} \u2014 takes effect on their next request to the plugin.`);rows=b(()=>{let t=this.assignments().map(e=>this.row(e.pluginId,e.accountNumber,e.permission,e.available,e.reason,e)),n=new Set(t.map(e=>e.id));for(let e of this.capabilities())n.has(y(e.pluginId,e.accountNumber,e.permission))||this.groupsOf(e.pluginId,e.accountNumber,e.permission).length&&t.push(this.row(e.pluginId,e.accountNumber,e.permission,e.available,e.reason));return t});row(t,n,e,i,s,a){let o=this.catalog().find(q=>q.id===t),v=[{text:e,tone:"gray"}];return i||v.push({text:"dormant",tone:"amber",title:this.dormantReason(s)}),v.push(...this.whyBadges(a,this.groupsOf(t,n,e))),N({id:y(t,n,e),title:o?.displayName??t,subtitle:n,chipColor:O(n),pillClass:"role-chip",badges:v},a?{action:{label:"Revoke"}}:{})}groupsOf(t,n,e){let i=this.groupNames(),s=this.capabilities().find(o=>o.pluginId===t&&o.accountNumber===n&&o.permission===e);return[...new Set(s?.sources.flatMap(o=>o.groups)??[])].map(o=>i[o]??o).sort()}whyBadges(t,n){let e=n.map(i=>({text:`via ${i}`,tone:"gray",title:`Granted through the group ${i}`}));if(t){let i=this.principal().kind==="user"?"direct \xB7 ":"";e.unshift(t.expired?{text:`${i}expired`,tone:"amber",title:"Direct grant, expired \u2014 revoke to tidy it away"}:t.expiresAt?{text:`${i}expires ${E(t.expiresAt)}`,tone:"amber",title:"Direct grant, temporary"}:{text:`${i}long-term`,tone:"gray",title:"Direct grant, long-term"})}return e}options=b(()=>{let t=new Set(this.assignments().map(e=>y(e.pluginId,e.accountNumber,e.permission))),n=[];for(let e of this.catalog())if(e.status==="active"){for(let i of e.accounts)if(i.available)for(let s of e.permissions){let a=y(e.id,i.accountNumber,s.id);t.has(a)||n.push({id:a,label:`${e.displayName} \xB7 ${s.label}`,sublabel:s.implies.length?`includes ${s.implies.join(", ")}`:void 0,group:i.displayName?`${i.displayName} \xB7 ${i.accountNumber}`:i.accountNumber})}}return n});grant(t,n){this.busy.set(!0),this.granting.set(!1);let e=t.length;for(let i of t){let[s,a,o]=i.split(x);this.api.assign(s,a,this.principal(),o,n).subscribe({next:()=>this.done(--e),error:()=>this.done(--e)})}t.length||this.busy.set(!1)}revoke(t){let[n,e,i]=t.split(x);this.busy.set(!0),this.api.revoke(n,e,this.principal(),i).subscribe({next:()=>this.done(0),error:()=>this.done(0)})}done(t){t>0||(this.busy.set(!1),this.changed.emit(),this.store.refresh())}dormantReason(t){switch(t){case"plugin-disabled":return"The plugin is turned off in this deployment.";case"plugin-removed":return"The plugin was removed; the row is kept so its history stays readable.";case"plugin-unsupported":return"The plugin was built for a different version of the portal.";case"plugin-unknown":return"No such plugin is installed.";case"permission-undeclared":return"The plugin no longer offers this permission.";case"account-unbound":return"The plugin is no longer bound to this account.";case"account-unregistered":return"This account is not registered in the portal.";default:return"This assignment cannot authorize anything right now."}}static \u0275fac=function(n){return new(n||r)};static \u0275cmp=A({type:r,selectors:[["app-plugin-access-panel"]],inputs:{principal:[1,"principal"],holder:[1,"holder"],assignments:[1,"assignments"],capabilities:[1,"capabilities"],groupNames:[1,"groupNames"]},outputs:{changed:"changed"},decls:8,vars:4,consts:[[1,"mt-5","rounded-lg","border","border-border","px-5","pb-5","pt-2.5"],[1,"-ml-1.5","px-1.5","text-xs","font-medium","text-muted-foreground"],[1,"-mt-1","mb-2","flex","justify-end"],["variant","secondary","size","sm",3,"click","disabled"],["empty","No plugin access.",3,"action","rows"],["title","Grant plugin access","placeholder","Filter by plugin, account or permission","emptyText","Every available binding is already held.",3,"intro","options","withDuration","busy"],["title","Grant plugin access","placeholder","Filter by plugin, account or permission","emptyText","Every available binding is already held.",3,"granted","closed","intro","options","withDuration","busy"]],template:function(n,e){n&1&&(g(0,"fieldset",0)(1,"legend",1),_(2),d(),g(3,"div",2)(4,"app-button",3),h("click",function(){return e.granting.set(!0)}),_(5," \uFF0B Grant plugin access "),d()(),g(6,"app-access-list",4),h("action",function(s){return e.revoke(s)}),d()(),D(7,L,1,4,"app-grant-dialog",5)),n&2&&(u(2),$(" Plugins \xB7 ",e.assignments().length," "),u(2),m("disabled",!e.options().length),u(2),m("rows",e.rows()),u(),M(e.granting()?7:-1))},dependencies:[G,R,j],encapsulation:2,changeDetection:0})};export{V as a,B as b};
@@ -0,0 +1 @@
1
+ var o=Object.defineProperty,p=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable;var j=(b,a,c)=>a in b?o(b,a,{enumerable:!0,configurable:!0,writable:!0,value:c}):b[a]=c,r=(b,a)=>{for(var c in a||={})k.call(a,c)&&j(b,c,a[c]);if(f)for(var c of f(a))l.call(a,c)&&j(b,c,a[c]);return b},s=(b,a)=>p(b,q(a));var t=(b,a)=>{var c={};for(var d in b)k.call(b,d)&&a.indexOf(d)<0&&(c[d]=b[d]);if(b!=null&&f)for(var d of f(b))a.indexOf(d)<0&&l.call(b,d)&&(c[d]=b[d]);return c};var u=(b,a)=>()=>{try{return a||b((a={exports:{}}).exports,a),a.exports}catch(c){throw a=0,c}};var v=(b,a,c)=>new Promise((d,i)=>{var m=e=>{try{g(c.next(e))}catch(h){i(h)}},n=e=>{try{g(c.throw(e))}catch(h){i(h)}},g=e=>e.done?d(e.value):Promise.resolve(e.value).then(m,n);g((c=c.apply(b,a)).next())});export{r as a,s as b,t as c,u as d,v as e};
@@ -0,0 +1 @@
1
+ import{b as h}from"./chunk-2MOGDYK4.js";import{Aa as g,Ba as a,Ma as b,Na as f,Oa as x,Va as i,fa as c,qb as o,sa as p,ta as l,tb as s,ya as m,za as u}from"./chunk-P5WRM37W.js";var v=["*"];function w(n,t){n&1&&a(0,"span",3),n&2&&i(t==="expiring"?"bg-[var(--dot-expiring)]":"bg-[var(--dot-active)]")}function B(n,t){if(n&1&&a(0,"app-icon",1),n&2){let e=b();m("name",e.icon())("strokeWidth",e.stroke())}}var _={info:"bell",success:"check",warning:"clock",danger:"warning",neutral:"bell"},N={info:1.5,success:2,warning:1.5,danger:2,neutral:1.5},C=class n{tone=s("info");dot=s(void 0);icon=o(()=>_[this.tone()]);stroke=o(()=>N[this.tone()]);classes=o(()=>"flex gap-2.5 rounded-lg border py-[11px] px-[13px] text-[13px] leading-[1.45] "+{info:"bg-brand-muted-2 text-brand-muted-foreground border-brand-muted",success:"bg-success-muted text-success border-transparent",warning:"bg-warning-muted text-warning border-warning/30",danger:"bg-danger-muted text-danger border-transparent",neutral:"bg-transparent text-muted-foreground border-border-strong/50"}[this.tone()]);static \u0275fac=function(e){return new(e||n)};static \u0275cmp=c({type:n,selectors:[["app-banner"]],hostAttrs:["role","status"],hostVars:2,hostBindings:function(e,r){e&2&&i(r.classes())},inputs:{tone:[1,"tone"],dot:[1,"dot"]},ngContentSelectors:v,decls:4,vars:1,consts:[[1,"mt-[5px]","h-2","w-2","shrink-0","rounded-full",3,"class"],[1,"mt-px","h-[17px]","w-[17px]","shrink-0",3,"name","strokeWidth"],[1,"min-w-0"],[1,"mt-[5px]","h-2","w-2","shrink-0","rounded-full"]],template:function(e,r){if(e&1&&(f(),p(0,w,1,2,"span",0)(1,B,1,2,"app-icon",1),u(2,"div",2),x(3),g()),e&2){let d;l((d=r.dot())?0:1,d)}},dependencies:[h],encapsulation:2})};export{C as a};
@@ -0,0 +1 @@
1
+ import{c as a}from"./chunk-HZUB7LFV.js";import"./chunk-IMH56UBX.js";import"./chunk-KEBESIXR.js";import"./chunk-GPKKIOHD.js";import"./chunk-TM43WUKM.js";import"./chunk-6KFR7DYY.js";import"./chunk-CP4XZPOA.js";import"./chunk-33SYY2JB.js";import"./chunk-FIUVIKAN.js";import"./chunk-EVP5UVDQ.js";import"./chunk-OATVFQXO.js";import"./chunk-EQ4PF25J.js";import"./chunk-ZDCURXPS.js";import"./chunk-PSMER3HX.js";import"./chunk-KCCEQIXX.js";import"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import"./chunk-J3SSPCFV.js";import"./chunk-4SK6XQ6C.js";import"./chunk-SJMLX5AT.js";import"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import"./chunk-NO5D6WDF.js";import"./chunk-GKI3R2JB.js";import"./chunk-M6OAYNRE.js";import"./chunk-XJM3HDJQ.js";import"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import"./chunk-D7TR2ORJ.js";import"./chunk-P5WRM37W.js";import"./chunk-WFIHWVQO.js";export{a as AdminResourcesPageComponent};
@@ -0,0 +1 @@
1
+ import{c as y}from"./chunk-O4QSFUXB.js";import{E as u,H as l,Kb as p,Q as i,i as f,qb as c}from"./chunk-P5WRM37W.js";import{e as o}from"./chunk-WFIHWVQO.js";var h=class s{http=l(p);info(){return this.http.get("/api/network")}mintDeviceKey(e){return this.http.post("/api/network/device-key",e?{siteId:e}:{})}networkPrefs(){return this.http.get("/api/preferences/network")}saveNetworkPrefs(e){return this.http.put("/api/preferences/network",e)}static \u0275fac=function(t){return new(t||s)};static \u0275prov=u({token:s,factory:s.\u0275fac,providedIn:"root"})};var d="network:autoReconnect",m="network:firstConnectShown",g="network:lastSite",v=class s{bridge=l(y);api=l(h);enabled=i(!1);busyOp=i(null);daemon=i("unknown");installed=i(!0);foreignTailnet=i(!1);controlUrl=i(null);tailnetIp=i(null);lastError=i(null);autoReconnect=i(localStorage.getItem(d)==="1");setupOpen=i(!1);sites=i([]);activeSiteId=i(null);pendingSiteId=i(null);siteName(e){return e?this.sites().find(t=>t.id===e)?.displayName||e:""}siteOfAccount=c(()=>{let e=new Map;for(let t of this.sites())for(let n of t.accounts)e.set(n,t.id);return e});isAccountOnActiveSite(e){if(this.sites().length<=1)return!0;let t=this.siteOfAccount().get(e);if(!t)return!0;let n=this.activeSiteId();return n===null||n===t}setupReason=c(()=>this.installed()?this.daemon()==="daemon-off"?"daemon-off":null:"not-installed");state=c(()=>!this.bridge.isDesktop||!this.bridge.networkSupported||!this.enabled()?"hidden":this.busyOp()==="connect"?"connecting":this.busyOp()==="disconnect"?"disconnecting":this.setupReason()?"setup":this.daemon()==="connected"&&!this.foreignTailnet()?"connected":"off");controlHost=c(()=>{let t=this.sites().find(n=>n.id===this.activeSiteId())?.controlUrl??this.controlUrl();try{return t?new URL(t).host:null}catch{return null}});shellSiteAware=i(!1);leftover=i(!1);init(){!this.bridge.isDesktop||!this.bridge.networkSupported||(this.bridge.onNetworkChanged(()=>{this.refresh()}),this.bridge.onTrayConnect(e=>{e&&!(this.state()==="connected"&&this.activeSiteId()===e)?this.connect({userInitiated:!0,siteId:e}):!e&&this.state()!=="connected"&&this.connect({userInitiated:!0})}),this.tryInfo(3))}tryInfo(e){this.api.info().subscribe({next:t=>o(this,null,function*(){this.enabled.set(t.enabled),this.controlUrl.set(t.controlUrl),this.sites.set(t.sites??[]),t.enabled&&(yield this.hydratePrefs(),yield this.refresh(),this.autoReconnect()&&this.state()==="off"&&!this.foreignTailnet()?this.connect({userInitiated:!1}):!this.autoReconnect()&&this.state()==="connected"&&this.leftover()&&(yield this.disconnect()))}),error:()=>{e>1?setTimeout(()=>this.tryInfo(e-1),3e3):this.enabled.set(!1)}})}hydratePrefs(){return o(this,null,function*(){try{let e=yield f(this.api.networkPrefs());this.autoReconnect.set(e.autoReconnect),e.autoReconnect?localStorage.setItem(d,"1"):localStorage.removeItem(d),e.lastSiteId&&localStorage.setItem(g,e.lastSiteId)}catch{}})}refresh(){return o(this,null,function*(){try{let e=yield this.bridge.networkStatus();this.installed.set(e.installed),this.daemon.set(e.state),this.tailnetIp.set(e.self?.ips?.[0]??null),this.shellSiteAware.set("activeSiteId"in e),this.foreignTailnet.set(e.foreignTailnet===!0),this.leftover.set(e.ownedThisRun===!1),this.activeSiteId.set(e.activeSiteId??(!e.foreignTailnet&&this.sites().length===1?this.sites()[0].id:null))}catch{this.daemon.set("unknown"),this.foreignTailnet.set(!1)}})}defaultSiteId(){let e=this.sites();if(!e.length)return;let t=localStorage.getItem(g);return e.some(n=>n.id===t)?t:e[0].id}connect(e){if(this.busyOp())return;this.busyOp.set("connect"),this.lastError.set(null);let t=e?.siteId??this.defaultSiteId();this.pendingSiteId.set(t??null),this.doConnect(e?.userInitiated??!0,t).finally(()=>{this.busyOp.set(null),this.pendingSiteId.set(null)})}switchTo(e){this.state()==="connected"&&this.activeSiteId()===e||this.connect({siteId:e})}doConnect(e,t){return o(this,null,function*(){if(t&&this.sites().length>1&&t!==this.sites()[0].id&&!this.shellSiteAware()){this.lastError.set("Switching networks needs the updated desktop app \u2014 quit it via the tray icon and reopen, then try again.");return}try{let n=yield this.attempt(t);if(!n.ok&&n.code==="key-rejected"&&(n=yield this.attempt(t)),n.ok)t&&(localStorage.setItem(g,t),this.api.saveNetworkPrefs({lastSiteId:t}).subscribe({error:()=>{}})),yield this.awaitRunning(),e&&this.daemon()==="connected"&&!localStorage.getItem(m)&&(localStorage.setItem(m,"1"),this.setupOpen.set(!0));else{let r=n.code??n.error,a=n.detail??(n.code?void 0:n.error);a&&console.warn("network connect failed:",a),this.lastError.set(this.friendly(r)),e&&(r==="not-installed"||r==="daemon-not-running")&&this.setupOpen.set(!0)}yield this.refresh()}catch(n){this.lastError.set(n?.status===501?"Network access is not enabled on this deployment.":"Could not get a network key. Try again.")}})}attempt(e){return o(this,null,function*(){let t=r=>this.bridge.networkConnect(r,e).catch(a=>({ok:!1,code:"cli-error",detail:String(a?.message??a)}));if(this.bridge.networkLazyKey){let r=yield t("");if(r.code!=="needs-key")return r}let{key:n}=yield f(this.api.mintDeviceKey(e));return t(n)})}awaitRunning(e=15e3){return o(this,null,function*(){let t=Date.now()+e;for(;;){if(yield this.refresh(),this.daemon()==="connected")return;if(Date.now()>=t){this.lastError.set("Connected the client, but the network hasn\u2019t confirmed yet \u2014 give it a few seconds and check the pill.");return}yield new Promise(n=>setTimeout(n,1e3))}})}disconnect(){return o(this,null,function*(){this.busyOp()||(this.busyOp.set("disconnect"),yield this.bridge.networkDisconnect().catch(()=>{}),yield this.refresh(),this.busyOp.set(null))})}setAutoReconnect(e){this.autoReconnect.set(e),e?localStorage.setItem(d,"1"):localStorage.removeItem(d),this.api.saveNetworkPrefs({autoReconnect:e}).subscribe({error:()=>{}})}friendly(e){switch(e){case"not-installed":return"Tailscale isn\u2019t installed on this machine.";case"daemon-not-running":return"Tailscale is installed but not running. Open the Tailscale app, then try again.";case"key-rejected":return"The network rejected the connection key, even after retrying with a fresh one. Wait a minute and try again \u2014 if it keeps happening, tell your admin.";case"timeout":return"Connecting took too long. Check your internet connection and try again.";case"cli-error":return"Couldn\u2019t reach the private network. Make sure Tailscale is running, then try again \u2014 if it keeps happening, tell your admin.";case"bad-key":return"Could not get a valid network key. Try again.";case"no-network-config":return"This backend doesn\u2019t offer network access.";case"unknown-site":return"The desktop app doesn\u2019t know that network yet \u2014 quit it via the tray icon and relaunch, then try again.";case"insecure-control-url":return"Refused: control plane is not HTTPS.";default:return"Could not connect."}}static \u0275fac=function(t){return new(t||s)};static \u0275prov=u({token:s,factory:s.\u0275fac,providedIn:"root"})};export{v as a};