@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,8 @@
1
+ import{a as De,i as Dt,k as Ut,p as Et,x as It,y as Nt,z as Vt}from"./chunk-EW2VMNHE.js";import{a as Ue,b as Tt}from"./chunk-WEDAFMID.js";import{a as oe}from"./chunk-GK2T2SMO.js";import{f as Te}from"./chunk-CV7EODPO.js";import{c as pt}from"./chunk-GHEU25TG.js";import{a as ve}from"./chunk-BNFKRZTP.js";import{a as j}from"./chunk-DCOFBAKJ.js";import{a as _t}from"./chunk-IKK5DQ3Z.js";import{a as ut}from"./chunk-H5H727H6.js";import{a as W}from"./chunk-2V6RSAAC.js";import{v as ct}from"./chunk-JMBXRK3I.js";import{a as bt}from"./chunk-KEBESIXR.js";import{a as ne,b as St,c as ie,d as kt}from"./chunk-GPKKIOHD.js";import{b as wt}from"./chunk-TM43WUKM.js";import{a as yt}from"./chunk-6KFR7DYY.js";import{a as ke}from"./chunk-CP4XZPOA.js";import{a as Se}from"./chunk-33SYY2JB.js";import{a as xt}from"./chunk-EVP5UVDQ.js";import{a as gt,b as ft}from"./chunk-OATVFQXO.js";import{a as te}from"./chunk-EQ4PF25J.js";import{a as ht,d as vt,e as Q}from"./chunk-ZDCURXPS.js";import{a as G}from"./chunk-PSMER3HX.js";import{b as ye,d as we}from"./chunk-KCCEQIXX.js";import{a as be}from"./chunk-QVABVDO5.js";import{a as Ct}from"./chunk-J3SSPCFV.js";import{a as mt}from"./chunk-4SK6XQ6C.js";import{a as dt}from"./chunk-SJMLX5AT.js";import{d as ce}from"./chunk-2SO4BVIT.js";import{a as M}from"./chunk-KPNHT4MK.js";import{a as q,b as H,e as z,o as K,p as w}from"./chunk-NO5D6WDF.js";import{a as de,c as V}from"./chunk-GKI3R2JB.js";import{a as L}from"./chunk-M6OAYNRE.js";import{a as A}from"./chunk-XJM3HDJQ.js";import{b as ee}from"./chunk-2MOGDYK4.js";import{a as I}from"./chunk-D7TR2ORJ.js";import{$a as it,A as Xe,Aa as r,Ba as S,E as Ye,Fa as ge,Ga as fe,H as h,Ia as C,J as p,K as m,Ka as u,Ma as d,Na as et,Oa as tt,P as me,Pb as at,Q as x,Qa as se,Ra as xe,Rb as st,Sb as lt,Ta as Ge,Ua as nt,Va as R,Wa as l,Xa as v,Ya as y,Z as s,Za as Y,_a as Z,ab as P,bb as F,cb as B,fa as U,g as qe,hb as ot,ib as Ce,ja as ue,k as He,m as ze,nb as he,pb as J,qb as b,r as Ke,ra as _e,rb as X,sa as _,sb as N,ta as g,tb as E,u as Qe,ua as Ze,ub as le,v as Je,va as Oe,wa as k,wb as rt,xa as T,ya as f,za as a}from"./chunk-P5WRM37W.js";import{c as je}from"./chunk-WFIHWVQO.js";var Ee=class i{api=h(M);groupsApi=h(ne);users=x(null);groups=x([]);error=x("");groupsOf=b(()=>{let t=new Map;for(let e of this.groups())for(let n of e.members){let o=t.get(n.userId)??[];o.push(e),t.set(n.userId,o)}return t});upsert(t){this.users.update(e=>[...(e??[]).filter(n=>n.userId!==t.userId),t])}load(){this.error.set(""),this.api.listUsers().subscribe({next:t=>this.users.set(t),error:()=>{this.users.set([]),this.error.set("Could not load users. Try reloading the page.")}}),this.groupsApi.list().subscribe({next:t=>this.groups.set(t),error:()=>this.groups.set([])})}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Ye({token:i,factory:i.\u0275fac,providedIn:"root"})};var $t=["*"],re=class i{maxHeight=E("max-h-56");classes=b(()=>`block overflow-y-auto rounded-lg border border-border-strong ${this.maxHeight()}`);static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-checklist"]],hostVars:2,hostBindings:function(e,n){e&2&&R(n.classes())},inputs:{maxHeight:[1,"maxHeight"]},ngContentSelectors:$t,decls:1,vars:0,template:function(e,n){e&1&&(et(),tt(0))},encapsulation:2})};var Mt=(i,t)=>t.userId;function Ot(i,t){if(i&1&&(a(0,"span",8),l(1),r()),i&2){let e=d().$implicit;s(),v(e.message)}}function Gt(i,t){if(i&1&&(a(0,"div",3)(1,"span"),l(2),r(),a(3,"span",6)(4,"span",7),l(5),r(),_(6,Ot,2,1,"span",8),r()()),i&2){let e=t.$implicit,n=d(2);s(),R(e.status==="DELETED"?"text-success":"text-danger"),s(),y(" ",e.status==="DELETED"?"\u2713":"\u2715"," "),s(3),v(n.emailOf(e.userId)),s(),g(e.message?6:-1)}}function Lt(i,t){if(i&1){let e=C();a(0,"p",1),l(1),r(),a(2,"div",2),k(3,Gt,7,5,"div",3,Mt),r(),a(5,"div",4)(6,"app-button",5),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(7,"Done"),r()()}if(i&2){let e=t,n=d();s(),Z(" ",n.deletedCount()," of ",e.length," user",e.length===1?"":"s"," deleted. "),s(2),T(e)}}function Wt(i,t){if(i&1){let e=C();a(0,"label",12)(1,"input",18),u("change",function(){let o=p(e).$implicit,c=d(2);return m(c.toggle(o.userId))}),r(),a(2,"span",19),l(3),r()()}if(i&2){let e=t.$implicit,n=d(2);s(),f("checked",n.picked().has(e.userId)),s(2),v(e.email||e.userId)}}function jt(i,t){if(i&1&&(a(0,"p",13),l(1),r()),i&2){let e=d(2);s(),y('No users match "',e.query(),'".')}}function qt(i,t){if(i&1&&(a(0,"p",14),l(1),r()),i&2){let e=d(2);s(),v(e.error())}}function Ht(i,t){if(i&1){let e=C();a(0,"app-banner",9),l(1," Deleting removes each checked user's account, role grants, open requests, and group memberships \u2014 immediately. This can't be undone. "),r(),a(2,"input",10),u("ngModelChange",function(o){p(e);let c=d();return m(c.query.set(o))}),r(),a(3,"app-checklist",11),k(4,Wt,4,2,"label",12,Mt,!1,jt,2,1,"p",13),r(),_(7,qt,2,1,"p",14),a(8,"div",15)(9,"app-button",16),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(10,"Cancel"),r(),a(11,"app-button",17),u("click",function(){p(e);let o=d();return m(o.confirm())}),l(12),r()()}if(i&2){let e=d();s(2),f("ngModel",e.query()),s(2),T(e.filtered()),s(3),g(e.error()?7:-1),s(4),f("loading",e.busy())("disabled",e.picked().size===0),s(),Y(" Delete ",e.picked().size||""," user",e.picked().size===1?"":"s"," ")}}var Ie=class i{api=h(M);toast=h(V);users=E.required();preselect=E([]);deleted=N();closed=N();query=x("");picked=x(new Set);busy=x(!1);error=x("");results=x(null);filtered=b(()=>{let t=this.query().trim().toLowerCase();return t?this.users().filter(e=>e.email.toLowerCase().includes(t)):this.users()});deletedCount=b(()=>(this.results()??[]).filter(t=>t.status==="DELETED").length);ngOnInit(){this.picked.set(new Set(this.preselect()))}emailOf(t){return this.users().find(e=>e.userId===t)?.email??t}toggle(t){this.picked.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}confirm(){this.picked().size!==0&&(this.error.set(""),this.busy.set(!0),this.api.deleteUsers([...this.picked()]).subscribe({next:t=>{this.busy.set(!1),this.results.set(t);let e=t.filter(n=>n.status==="DELETED").length;e?(this.toast.success(`Deleted ${e} user${e===1?"":"s"}`),this.deleted.emit()):this.toast.error("No users were deleted \u2014 see the details.")},error:t=>{this.busy.set(!1),this.error.set(w(t,"Could not delete the users."))}}))}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-bulk-delete-dialog"]],inputs:{users:[1,"users"],preselect:[1,"preselect"]},outputs:{deleted:"deleted",closed:"closed"},decls:3,vars:2,consts:[[3,"closed","title"],[1,"mb-2","text-sm","text-muted-foreground"],[1,"max-h-72","overflow-y-auto","rounded-lg","border","border-border-strong"],[1,"flex","items-start","gap-2.5","border-b","border-border","px-3","py-2","text-sm","last:border-b-0"],[1,"mt-5","flex","justify-end"],[3,"click"],[1,"min-w-0","flex-1"],[1,"block","truncate","text-surface-foreground"],[1,"block","text-xs","text-danger"],["tone","danger"],["placeholder","Filter by email",1,"ui-input","mb-2","mt-3",3,"ngModelChange","ngModel"],["maxHeight","max-h-56"],[1,"ui-check-row","text-sm"],[1,"px-3","py-3","text-sm","text-muted-foreground"],[1,"mt-2","text-sm","text-danger"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],["variant","danger",3,"click","loading","disabled"],["type","checkbox",1,"ui-checkbox",3,"change","checked"],[1,"min-w-0","flex-1","truncate","text-surface-foreground"]],template:function(e,n){if(e&1&&(a(0,"app-dialog",0),u("closed",function(){return n.closed.emit()}),_(1,Lt,8,3)(2,Ht,13,7),r()),e&2){let o;f("title",n.results()?"Users deleted":"Delete users"),s(),g((o=n.results())?1:2,o)}},dependencies:[K,q,H,z,L,I,A,re],encapsulation:2})};var Rt=(i,t)=>t.userId;function zt(i,t){if(i&1&&(a(0,"span",7),l(1),r()),i&2){let e=d().$implicit;s(),v(e.message)}}function Kt(i,t){if(i&1&&(a(0,"div",2)(1,"span"),l(2),r(),a(3,"span",5)(4,"span",6),l(5),r(),_(6,zt,2,1,"span",7),r()()),i&2){let e=t.$implicit,n=d(2);s(),R(e.ok?"text-success":"text-danger"),s(),y(" ",e.ok?"\u2713":"\u2715"," "),s(3),v(n.emailOf(e.userId)),s(),g(e.message?6:-1)}}function Qt(i,t){if(i&1){let e=C();a(0,"p",0),l(1),r(),a(2,"div",1),k(3,Kt,7,5,"div",2,Rt),r(),a(5,"div",3)(6,"app-button",4),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(7,"Done"),r()()}if(i&2){let e=t,n=d();s(),Z(" ",n.sentCount()," of ",e.length," invitation email",e.length===1?"":"s"," sent. "),s(2),T(e)}}function Jt(i,t){if(i&1){let e=C();a(0,"label",11)(1,"input",17),u("change",function(){let o=p(e).$implicit,c=d(2);return m(c.toggle(o.userId))}),r(),a(2,"span",18),l(3),r()()}if(i&2){let e=t.$implicit,n=d(2);s(),f("checked",n.picked().has(e.userId)),s(2),v(e.email||e.userId)}}function Xt(i,t){if(i&1&&(a(0,"p",12),l(1),r()),i&2){let e=d(2);s(),y('No users match "',e.query(),'".')}}function Yt(i,t){if(i&1&&(a(0,"p",13),l(1),r()),i&2){let e=d(2);s(),v(e.error())}}function Zt(i,t){if(i&1){let e=C();a(0,"p",8),l(1," Only selected users still on their invite's temporary password are listed. Each checked user gets a fresh set-password email. "),r(),a(2,"input",9),u("ngModelChange",function(o){p(e);let c=d();return m(c.query.set(o))}),r(),a(3,"app-checklist",10),k(4,Jt,4,2,"label",11,Rt,!1,Xt,2,1,"p",12),r(),_(7,Yt,2,1,"p",13),a(8,"div",14)(9,"app-button",15),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(10,"Cancel"),r(),a(11,"app-button",16),u("click",function(){p(e);let o=d();return m(o.send())}),l(12),r()()}if(i&2){let e=d();s(2),f("ngModel",e.query()),s(2),T(e.filtered()),s(3),g(e.error()?7:-1),s(4),f("loading",e.busy())("disabled",e.picked().size===0),s(),Y(" Send ",e.picked().size||""," invite",e.picked().size===1?"":"s"," ")}}var Ne=class i{api=h(M);toast=h(V);users=E.required();preselect=E([]);sentAny=N();closed=N();query=x("");picked=x(new Set);busy=x(!1);error=x("");results=x(null);filtered=b(()=>{let t=this.query().trim().toLowerCase();return t?this.users().filter(e=>e.email.toLowerCase().includes(t)):this.users()});sentCount=b(()=>(this.results()??[]).filter(t=>t.ok).length);ngOnInit(){this.picked.set(new Set(this.preselect()))}emailOf(t){return this.users().find(e=>e.userId===t)?.email??t}toggle(t){this.picked.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}send(){if(this.picked().size===0)return;this.error.set(""),this.busy.set(!0);let t=[...this.picked()].map(e=>this.api.resendInvite(e).pipe(He(()=>({userId:e,ok:!0})),Ke(n=>qe({userId:e,ok:!1,message:w(n,"Could not send the invite email")}))));ze(t).subscribe(e=>{this.busy.set(!1),this.results.set(e);let n=e.filter(o=>o.ok).length;n?(this.toast.success(`Re-sent ${n} invitation${n===1?"":"s"}`),this.sentAny.emit()):this.toast.error("No invitations were sent \u2014 see the details.")})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-resend-invites"]],inputs:{users:[1,"users"],preselect:[1,"preselect"]},outputs:{sentAny:"sentAny",closed:"closed"},decls:2,vars:1,consts:[[1,"mb-2","text-xs","text-muted-foreground"],[1,"max-h-72","overflow-y-auto","rounded-lg","border","border-border-strong"],[1,"flex","items-start","gap-2.5","border-b","border-border","px-3","py-2","text-sm","last:border-b-0"],[1,"mt-5","flex","justify-end"],[3,"click"],[1,"min-w-0","flex-1"],[1,"block","truncate","text-surface-foreground"],[1,"block","text-xs","text-danger"],[1,"mb-3","text-xs","text-muted-foreground"],["placeholder","Filter by email",1,"ui-input","mb-2",3,"ngModelChange","ngModel"],["maxHeight","max-h-56"],[1,"ui-check-row","text-sm"],[1,"px-3","py-3","text-xs","text-muted-foreground"],[1,"mt-2","text-xs","text-danger"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],[3,"click","loading","disabled"],["type","checkbox",1,"ui-checkbox",3,"change","checked"],[1,"min-w-0","flex-1","truncate","text-surface-foreground"]],template:function(e,n){if(e&1&&_(0,Qt,8,3)(1,Zt,13,7),e&2){let o;g((o=n.results())?0:1,o)}},dependencies:[K,q,H,z,I,re],encapsulation:2})};var en=(i,t)=>t.email;function tn(i,t){if(i&1&&(a(0,"div",1)(1,"span",6),l(2,"App"),r(),a(3,"span",7),l(4),r(),S(5,"app-copy-button",8),r()),i&2){let e=d(2);s(4),v(e.appUrl),s(),f("text",e.appUrl)}}function nn(i,t){if(i&1&&(a(0,"span",11),l(1),r()),i&2){let e=d().$implicit;s(),v(e.message)}}function on(i,t){if(i&1&&S(0,"app-copy-button",12),i&2){let e=d(3);f("text",e.absolute(t))}}function rn(i,t){if(i&1&&(a(0,"div",3)(1,"span"),l(2),r(),a(3,"span",9)(4,"span",10),l(5),r(),_(6,nn,2,1,"span",11),r(),_(7,on,1,1,"app-copy-button",12),r()),i&2){let e,n=t.$implicit;s(),R(n.status==="CREATED"?"text-success":"text-danger"),s(),y(" ",n.status==="CREATED"?"\u2713":"\u2715"," "),s(3),v(n.email),s(),g(n.message?6:-1),s(),g((e=n.signupLink)?7:-1,e)}}function an(i,t){if(i&1){let e=C();a(0,"p",0),l(1),r(),_(2,tn,6,2,"div",1),a(3,"div",2),k(4,rn,8,6,"div",3,en),r(),a(6,"div",4)(7,"app-button",5),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(8,"Done"),r()()}if(i&2){let e=d();s(),it(" ",e.createdCount()," of ",e.results().length," user",e.results().length===1?"":"s"," created",e.sendEmail()?" and invited by email":" \u2014 no emails sent; copy each sign-up link below",". Everyone sets their own password on first sign-in. "),s(),g(e.sendEmail()?-1:2),s(2),T(e.results())}}function sn(i,t){if(i&1&&(a(0,"p",19),l(1),r()),i&2){let e=d(2);s(),y(" ",e.parsed().length," addresses \u2014 every one gets the same admin setting below. ")}}function ln(i,t){if(i&1&&l(0),i&2){let e=d(2);y(" Cognito emails ",e.parsed().length>1?"each of them":"them"," a set-your-password link, valid 7 days, from a generic address (about 50 a day). No sign-up link is shown here. To hand the invitation over yourself, switch this off. ")}}function dn(i,t){i&1&&l(0," The sign-up link works for 7 days and lets whoever holds it set the password \u2014 send it privately. ")}function cn(i,t){if(i&1&&l(0),i&2){let e=d(2);y(" ",e.parsed().length>1?"Send "+e.parsed().length+" invites":"Send invite"," ")}}function pn(i,t){if(i&1&&l(0),i&2){let e=d(2);y(" ",e.parsed().length>1?"Create "+e.parsed().length+" users":"Create user"," ")}}function mn(i,t){if(i&1){let e=C();a(0,"div",13)(1,"app-field",14)(2,"textarea",15),u("ngModelChange",function(o){p(e);let c=d();return m(c.input.set(o))}),r()(),a(3,"label",16),S(4,"app-icon",17),l(5," Upload a .txt or .csv list "),a(6,"input",18),u("change",function(o){p(e);let c=d();return m(c.onListFile(o))}),r()(),_(7,sn,2,1,"p",19),a(8,"div",20),u("click",function(){p(e);let o=d();return m(o.admin.set(!o.admin()))}),a(9,"span")(10,"span",21),l(11,"Admin"),r(),a(12,"span",22),l(13),r()(),a(14,"app-toggle",23),B("checkedChange",function(o){p(e);let c=d();return F(c.admin,o)||(c.admin=o),m(o)}),r()(),a(15,"div",20),u("click",function(){p(e);let o=d();return m(o.sendEmail.set(!o.sendEmail()))}),a(16,"span")(17,"span",21),l(18,"Send invitation email"),r(),a(19,"span",22),l(20," Off: nobody is emailed \u2014 you get a sign-up link to pass on yourself. "),r()(),a(21,"app-toggle",24),B("checkedChange",function(o){p(e);let c=d();return F(c.sendEmail,o)||(c.sendEmail=o),m(o)}),r()(),a(22,"app-banner",25)(23,"span",26),_(24,ln,1,1)(25,dn,1,0),r()()(),a(26,"div",27)(27,"app-button",28),u("click",function(){p(e);let o=d();return m(o.closed.emit())}),l(28,"Cancel"),r(),a(29,"app-button",29),u("click",function(){p(e);let o=d();return m(o.submit())}),_(30,cn,1,1)(31,pn,1,1),r()()}if(i&2){let e=d();s(),f("error",e.error()),s(),f("ngModel",e.input()),s(5),g(e.parsed().length>1?7:-1),s(6),y(" Adds ",e.parsed().length>1?"all of them":"them"," to the admins group. "),s(),P("checked",e.admin),s(7),P("checked",e.sendEmail),s(3),g(e.sendEmail()?24:25),s(5),f("loading",e.busy()),s(),g(e.sendEmail()?30:31)}}var un=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,At=50,Ve=class i{api=h(M);toast=h(V);created=N();createdOne=N();closed=N();appUrl=location.origin;input=x("");admin=x(!1);sendEmail=x(!0);busy=x(!1);error=x("");results=x(null);parsed=b(()=>{let t=new Set,e=[];for(let n of this.input().split(/[\n,;]+/)){let o=n.trim();!o||t.has(o.toLowerCase())||(t.add(o.toLowerCase()),e.push(o))}return e});createdCount=b(()=>(this.results()??[]).filter(t=>t.status==="CREATED").length);absolute(t){return t.startsWith("/")?`${location.origin}${t}`:t}onListFile(t){let e=t.target,n=e.files?.[0];n&&n.text().then(o=>{let c=o.split(/[\s,;"]+/).filter(D=>D.includes("@"));if(!c.length){this.error.set(`No email addresses found in ${n.name}.`);return}this.error.set(""),this.input.update(D=>D.trim()?`${D.trimEnd()}
2
+ ${c.join(`
3
+ `)}`:c.join(`
4
+ `)),e.value=""})}submit(){let t=this.parsed();if(t.length===0){this.error.set("Enter at least one email address.");return}let e=t.filter(n=>!un.test(n));if(e.length){this.error.set(e.length===1?`"${e[0]}" is not a valid email address.`:`${e.length} entries are not valid email addresses (first: "${e[0]}").`);return}if(t.length>At){this.error.set(`At most ${At} invites at once.`);return}if(this.error.set(""),this.busy.set(!0),t.length===1){this.api.createUser(t[0],this.admin(),this.sendEmail()).subscribe({next:({user:n,signupLink:o})=>{this.busy.set(!1),this.toast.success(this.sendEmail()?`Invitation sent to ${n.email}`:`Created ${n.email}`),this.createdOne.emit({user:n,emailed:this.sendEmail(),signupLink:o??null})},error:n=>{this.busy.set(!1),this.error.set(w(n,"Could not create the user."))}});return}this.api.createUsers(t,this.admin(),this.sendEmail()).subscribe({next:n=>{this.busy.set(!1),this.results.set(n);let o=n.filter(D=>D.status==="CREATED").length,c=n.length-o;o?(this.toast.success(`${this.sendEmail()?"Sent":"Created"} ${o} ${this.sendEmail()?"invitation":"user"}${o===1?"":"s"}${c?`, ${c} failed`:""}`),this.created.emit()):this.toast.error("No users were created \u2014 see the details.")},error:n=>{this.busy.set(!1),this.error.set(w(n,"Could not send the invitations."))}})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-user-create-form"]],outputs:{created:"created",createdOne:"createdOne",closed:"closed"},decls:2,vars:1,consts:[[1,"mb-2","text-xs","text-muted-foreground"],[1,"mb-2","flex","items-center","gap-2","rounded-lg","border","border-border-strong","bg-muted/40","p-3","text-xs"],[1,"max-h-72","overflow-y-auto","rounded-lg","border","border-border-strong"],[1,"flex","items-start","gap-2.5","border-b","border-border","px-3","py-2","text-sm","last:border-b-0"],[1,"mt-5","flex","justify-end"],[3,"click"],[1,"w-20","shrink-0","ui-microlabel","text-text-secondary"],[1,"min-w-0","flex-1","truncate","font-mono","text-surface-foreground"],["label","Copy app URL",3,"text"],[1,"min-w-0","flex-1"],[1,"block","truncate","text-surface-foreground"],[1,"block","text-xs","text-danger"],["variant","icon","label","Copy sign-up link",3,"text"],[1,"space-y-5"],["label","Emails","hint","One per line \u2014 commas work too, or upload a list. Each address gets its own invite.",3,"error"],["rows","5","placeholder",`person@company.com
5
+ teammate@company.com`,1,"ui-input",3,"ngModelChange","ngModel"],[1,"-mt-3","inline-flex","cursor-pointer","items-center","gap-1.5","text-xs","font-medium","text-brand-text"],["name","download",1,"h-3.5","w-3.5","rotate-180"],["type","file","accept",".txt,.csv,text/plain,text/csv",1,"hidden",3,"change"],[1,"-mt-2","text-xs","text-muted-foreground"],[1,"flex","w-full","cursor-pointer","items-center","justify-between","rounded-lg","border","border-border","p-3","text-left",3,"click"],[1,"block","text-sm","font-medium","text-surface-foreground"],[1,"block","text-xs","text-muted-foreground"],["ariaLabel","Admin",3,"checkedChange","checked"],["ariaLabel","Send invitation email",3,"checkedChange","checked"],["tone","info"],[1,"text-xs"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],[3,"click","loading"]],template:function(e,n){e&1&&_(0,an,9,5)(1,mn,32,9),e&2&&g(n.results()!==null?0:1)},dependencies:[K,q,H,z,I,dt,A,Ct,ee,j],encapsulation:2})};function _n(i,t){if(i&1&&(a(0,"p",3),l(1),r()),i&2){let e=d();s(),v(e.error())}}var Me=class i{api=h(M);toast=h(V);user=E.required();deleted=N();closed=N();busy=x(!1);error=x("");confirm(){this.busy.set(!0),this.error.set(""),this.api.deleteUser(this.user().userId).subscribe({next:()=>{this.busy.set(!1),this.toast.success(`Deleted ${this.user().email||"user"}`),this.deleted.emit()},error:t=>{this.busy.set(!1),this.error.set(w(t,"Could not delete the user."))}})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-user-delete-dialog"]],inputs:{user:[1,"user"]},outputs:{deleted:"deleted",closed:"closed"},decls:16,vars:3,consts:[["title","Delete user",3,"closed"],["tone","danger"],[1,"flex","items-start","gap-2.5"],[1,"mt-3","text-sm","text-danger"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],["variant","danger",3,"click","loading"]],template:function(e,n){e&1&&(a(0,"app-dialog",0),u("closed",function(){return n.closed.emit()}),a(1,"app-banner",1)(2,"span",2)(3,"span"),l(4,"\u{1F5D1}\uFE0F"),r(),a(5,"span"),l(6," Permanently delete "),a(7,"strong"),l(8),r(),l(9," from Cognito and remove all of their role grants. This can't be undone. "),r()()(),_(10,_n,2,1,"p",3),a(11,"div",4)(12,"app-button",5),u("click",function(){return n.closed.emit()}),l(13,"Cancel"),r(),a(14,"app-button",6),u("click",function(){return n.confirm()}),l(15," Delete user "),r()()()),e&2&&(s(8),v(n.user().email||n.user().userId),s(2),g(n.error()?10:-1),s(4),f("loading",n.busy()))},dependencies:[L,I,A],encapsulation:2})};var Re=class i{link=E.required();appUrl=location.origin;href=b(()=>this.link().startsWith("/")?`${this.appUrl}${this.link()}`:this.link());static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-signup-link-box"]],inputs:{link:[1,"link"]},decls:15,vars:5,consts:[[1,"rounded-lg","border","border-border-strong","bg-muted/40","p-3","text-xs"],[1,"flex","items-center","gap-2"],[1,"w-20","shrink-0","ui-microlabel","text-text-secondary"],[1,"min-w-0","flex-1","truncate","font-mono","text-surface-foreground",3,"title"],["label","Copy link",3,"text"],[1,"mt-2","flex","items-center","gap-2"],[1,"min-w-0","flex-1","truncate","font-mono","text-surface-foreground"],["label","Copy app URL",3,"text"],[1,"mt-2.5","text-muted-foreground"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"div",1)(2,"span",2),l(3,"Sign-up link"),r(),a(4,"span",3),l(5),r(),S(6,"app-copy-button",4),r(),a(7,"div",5)(8,"span",2),l(9,"App"),r(),a(10,"span",6),l(11),r(),S(12,"app-copy-button",7),r(),a(13,"p",8),l(14," Anyone with the link can set this person's password \u2014 send it privately. It works for 7 days; a resent email or a new link replaces it. "),r()()),e&2&&(s(4),f("title",n.href()),s(),v(n.href()),s(),f("text",n.href()),s(5),v(n.appUrl),s(),f("text",n.appUrl))},dependencies:[j],encapsulation:2})};var gn=i=>({user:i}),fn=(i,t)=>t.id;function xn(i,t){i&1&&(a(0,"p",0),l(1),r()),i&2&&(s(),v(t))}function Cn(i,t){i&1&&(a(0,"div",1),S(1,"app-skeleton",8)(2,"app-skeleton",8)(3,"app-skeleton",8),r())}function hn(i,t){if(i&1&&(a(0,"p",2),l(1),r()),i&2){let e=d();s(),y("Nothing recorded in the last ",e.days," days.")}}function vn(i,t){if(i&1&&(a(0,"span",18),l(1),r()),i&2){let e=d(2).$implicit;s(),v(e.detail)}}function bn(i,t){if(i&1&&(a(0,"app-chip",15)(1,"span",17),l(2),r(),_(3,vn,2,1,"span",18),r()),i&2){let e=d().$implicit;f("title",e.title),s(2),v(e.text),s(),g(e.detail?3:-1)}}function yn(i,t){if(i&1&&(a(0,"span",16),l(1),r()),i&2){let e=d().$implicit;s(),v(e.text)}}function wn(i,t){if(i&1&&(a(0,"span"),l(1),r()),i&2){let e=d().$implicit;s(),v(e.text)}}function Sn(i,t){if(i&1&&_(0,bn,4,3,"app-chip",15)(1,yn,2,1,"span",16)(2,wn,2,1,"span"),i&2){let e,n=t.$implicit;g((e=n.kind)==="chip"?0:e==="name"?1:2)}}function kn(i,t){if(i&1&&(a(0,"span",13),l(1),r()),i&2){let e=d().$implicit;s(),v(e.sub)}}function Tn(i,t){if(i&1&&(a(0,"li",9)(1,"span",10),l(2),r(),a(3,"span",11)(4,"span",12),k(5,Sn,3,1,null,null,Ze),r(),_(7,kn,2,1,"span",13),r(),a(8,"app-badge",14),l(9),r()()),i&2){let e=t.$implicit;s(),f("title",e.exact),s(),v(e.when),s(3),T(e.what),s(2),g(e.sub?7:-1),s(),f("tone",e.badge.tone),_e("title",e.reason||null),s(),v(e.badge.label)}}function Dn(i,t){if(i&1&&(a(0,"ul",3),k(1,Tn,10,6,"li",9,fn),r()),i&2){let e=d();s(),T(e.rows())}}function Un(i,t){if(i&1){let e=C();a(0,"app-button",19),u("click",function(){p(e);let o=d();return m(o.loadOlder())}),l(1,"Load older"),r()}if(i&2){let e=d();f("loading",e.loadingOlder())}}function En(i,t){i&1&&S(0,"span")}var We=90,Pt=25,Ae=class i{api=h(De);names=h(W);toast=h(V);userId=E.required();days=We;events=x(null);nextBefore=x(null);error=x(null);loadingOlder=x(!1);seq=0;reload=X(()=>{let t=this.userId();J(()=>this.load(t))});groupNames=b(()=>Vt(this.events()??[]));ctx=b(()=>{let t=this.groupNames();return this.names.label(""),{accountLabel:e=>this.names.label(e),groupName:e=>t.get(e)}});rows=b(()=>{let t=this.events();if(!t)return null;let e=this.ctx();return t.map(n=>({id:n.eventId,when:ut(n.at),exact:n.at,what:Dt(n,e,{subjectShown:!0,byActor:!n.derived}),sub:Et(n,e,!!n.derived).join(" \xB7 "),badge:Ut(n),reason:n.reason}))});load(t){let e=++this.seq;this.events.set(null),this.nextBefore.set(null),this.error.set(null),this.api.listEvents({user:[t],days:We,limit:Pt}).subscribe({next:n=>{e===this.seq&&(this.events.set(n.events),this.nextBefore.set(n.nextBefore??null))},error:n=>{e===this.seq&&this.error.set(w(n,"Could not load this person's history."))}})}loadOlder(){let t=this.nextBefore();if(!t||this.loadingOlder())return;let e=this.seq;this.loadingOlder.set(!0);let n=Nt(this.events()??[],t);this.api.listEvents({user:[this.userId()],days:We,limit:Pt,before:t,skip:n}).subscribe({next:o=>{this.loadingOlder.set(!1),e===this.seq&&(this.events.update(c=>It([...c??[],...o.events])),this.nextBefore.set(o.nextBefore??null))},error:o=>{this.loadingOlder.set(!1),e===this.seq&&this.toast.error(w(o,"Could not load older history."))}})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-user-history"]],inputs:{userId:[1,"userId"]},decls:10,vars:5,consts:[[1,"text-xs","text-danger"],[1,"space-y-2"],[1,"text-xs","text-muted-foreground"],[1,"divide-y","divide-border"],[1,"mt-3","flex","items-center","justify-between","gap-2"],["size","sm","variant","outline",3,"loading"],["routerLink","/admin/activity","title","Leaves this page: the Activity page with every filter, showing this person",1,"inline-flex","items-center","gap-1","text-xs","font-medium","text-brand-text","hover:underline",3,"queryParams"],["name","external-link",1,"h-3.5","w-3.5"],["sizeClass","h-8 w-full"],[1,"grid","grid-cols-[6.5rem_minmax(0,1fr)_max-content]","items-start","gap-3","py-2","text-xs"],[1,"font-mono","text-[11px]","text-muted-foreground",3,"title"],[1,"min-w-0"],[1,"flex","flex-wrap","items-center","gap-x-1","gap-y-0.5","text-surface-foreground"],[1,"mt-0.5","block","text-muted-foreground"],[3,"tone"],[3,"title"],[1,"font-medium"],[1,"min-w-0","truncate"],[1,"ml-1","min-w-0","shrink-[60]","truncate"],["size","sm","variant","outline",3,"click","loading"]],template:function(e,n){if(e&1&&(_(0,xn,2,1,"p",0)(1,Cn,4,0,"div",1)(2,hn,2,1,"p",2)(3,Dn,3,0,"ul",3),a(4,"div",4),_(5,Un,2,1,"app-button",5)(6,En,1,0,"span"),a(7,"a",6),l(8," Open in Activity "),S(9,"app-icon",7),r()()),e&2){let o;g((o=n.error())?0:n.rows()===null?1:n.rows().length===0?2:3,o),s(5),g(n.nextBefore()?5:6),s(2),f("queryParams",Ce(3,gn,n.userId()))}},dependencies:[lt,G,I,Q,ee,te],encapsulation:2})};var In=i=>({kind:"user",userId:i}),Nn=(i,t)=>t.key;function Vn(i,t){if(i&1&&S(0,"app-user-history",2),i&2){let e=d();f("userId",e.user().userId)}}function Mn(i,t){i&1&&l(0," Invitation emailed. They set their password on first sign-in. Grant access below, or close the panel \u2014 nothing else is needed. ")}function Rn(i,t){i&1&&l(0," Nobody has been emailed. The sign-up link below is the only invitation: copy it and send it privately. ")}function An(i,t){if(i&1&&(a(0,"div",6)(1,"app-banner",21),_(2,Mn,1,0)(3,Rn,1,0),r()()),i&2){let e=t;s(),f("tone",e.emailed?"success":"warning"),s(),g(e.emailed?2:3)}}function Pn(i,t){i&1&&(a(0,"app-badge",11),l(1,"admin"),r())}function Fn(i,t){if(i&1){let e=C();a(0,"app-button",22),u("click",function(){p(e);let o=d(2);return m(o.resetMfa())}),l(1," Reset MFA "),r()}if(i&2){let e=d(2);f("loading",e.mfaBusy())}}function Bn(i,t){if(i&1){let e=C();a(0,"app-button",12),u("click",function(){p(e);let o=d(3);return m(o.mintLink())}),l(1,"Copy sign-up link"),r()}if(i&2){let e=d(3);f("loading",e.linkBusy())}}function $n(i,t){i&1&&(a(0,"p",26),l(1,"This link replaced the previous one \u2014 the emailed link no longer works."),r())}function On(i,t){if(i&1&&(S(0,"app-signup-link-box",25),_(1,$n,2,0,"p",26)),i&2){let e=d(3);f("link",t),s(),g(e.minted()?1:-1)}}function Gn(i,t){if(i&1){let e=C();a(0,"div",10)(1,"app-badge",23),l(2,"invited"),r(),_(3,Bn,2,1,"app-button",24),a(4,"app-button",22),u("click",function(){p(e);let o=d(2);return m(o.resend())}),l(5,"Send invite email"),r()(),_(6,On,2,2)}if(i&2){let e,n=d(2);s(3),g(n.signupLink()?-1:3),s(),nt("ml-auto",!!n.signupLink()),f("loading",n.resendBusy()),s(2),g((e=n.signupLink())?6:-1,e)}}function Ln(i,t){if(i&1&&(a(0,"p",14),l(1),a(2,"span",27),l(3),r()()),i&2){let e=t.$implicit;s(),y("",e.label,": "),s(2),v(e.value)}}function Wn(i,t){if(i&1&&l(0),i&2){let e=d(2);y(" Last seen ",e.ago(t)," ")}}function jn(i,t){i&1&&l(0," No activity recorded yet ")}function qn(i,t){if(i&1){let e=C();a(0,"app-plugin-access-panel",28),u("changed",function(){p(e);let o=d(2);return m(o.loadPluginAccess(o.user().userId))}),r()}if(i&2){let e=d(2);f("principal",Ce(5,In,e.user().userId))("holder",e.user().email)("assignments",e.pluginAccess().assignments)("capabilities",e.pluginAccess().capabilities)("groupNames",e.groupNameById())}}function Hn(i,t){if(i&1){let e=C();_(0,An,4,2,"div",6),a(1,"fieldset",7)(2,"legend",8),l(3,"Account"),r(),a(4,"div",9)(5,"div",10),_(6,Pn,2,0,"app-badge",11),a(7,"app-button",12),u("click",function(){p(e);let o=d();return m(o.toggleAdmin())}),l(8),r(),_(9,Fn,2,1,"app-button",13),r(),_(10,Gn,7,5),k(11,Ln,4,2,"p",14,Nn),a(13,"p",14),_(14,Wn,1,1)(15,jn,1,0),r()()(),a(16,"fieldset",7)(17,"legend",8),l(18),r(),a(19,"div",15)(20,"app-button",16),u("click",function(){p(e);let o=d();return m(o.grantingGroups.set(!0))}),l(21,"\uFF0B Add to group"),r()(),a(22,"app-access-list",17),u("action",function(o){p(e);let c=d();return m(c.leaveGroup(o))}),r()(),a(23,"fieldset",7)(24,"legend",8),l(25),r(),a(26,"div",15)(27,"app-button",16),u("click",function(){p(e);let o=d();return m(o.grantingRoles.set(!0))}),l(28,"\uFF0B Grant role"),r()(),a(29,"app-access-list",18),u("action",function(o){p(e);let c=d();return m(c.revokeRole(o))}),r()(),_(30,qn,1,7,"app-plugin-access-panel",19),a(31,"fieldset",7)(32,"legend",8),l(33),r(),a(34,"div",15)(35,"app-button",16),u("click",function(){p(e);let o=d();return m(o.grantingResources.set(!0))}),l(36,"\uFF0B Grant resource"),r()(),a(37,"app-access-list",20),u("action",function(o){p(e);let c=d();return m(c.revokeResource(o))}),r()()}if(i&2){let e,n,o,c=d();g((e=c.justCreated())?0:-1,e),s(6),g(c.user().admin?6:-1),s(),f("loading",c.adminBusy()),s(),y(" ",c.user().admin?"Remove admin":"Make admin"," "),s(),g(c.mfaEnabled?9:-1),s(),g(c.user().pendingInvite?10:-1),s(),T(c.claimRows()),s(3),g((n=c.user().lastSeenAt)?14:15,n),s(4),y("Groups \xB7 ",c.memberOf().length),s(4),f("rows",c.groupRows()),s(3),y("Roles \xB7 ",c.shown().roles.length),s(4),f("rows",c.roleRows()),s(),g(c.pluginsOn?30:-1),s(3),y("Network resources \xB7 ",((o=c.shown().resources)==null?null:o.length)||0),s(4),f("rows",c.resourceRows())}}function zn(i,t){if(i&1){let e=C();a(0,"app-grant-dialog",29),u("granted",function(o){p(e);let c=d();return m(c.joinGroups(o.ids))})("closed",function(){p(e);let o=d();return m(o.grantingGroups.set(!1))}),r()}if(i&2){let e=d();f("intro",e.user().email+" gets each group's whole bundle (roles + resources), long-term, while a member.")("options",e.groupOptions())("busy",e.busy())}}function Kn(i,t){if(i&1){let e=C();a(0,"app-grant-dialog",30),u("granted",function(o){p(e);let c=d();return m(c.grantRoles(o.ids,o.durationHours))})("closed",function(){p(e);let o=d();return m(o.grantingRoles.set(!1))}),r()}if(i&2){let e=d();f("intro",e.user().email+" \u2014 takes effect at their next vend.")("accountSource",e.accountsPage)("optionsFor",e.rolesOf)("busy",e.busy())}}function Qn(i,t){if(i&1){let e=C();a(0,"app-grant-dialog",31),u("granted",function(o){p(e);let c=d();return m(c.grantResources(o.ids,o.durationHours))})("closed",function(){p(e);let o=d();return m(o.grantingResources.set(!1))}),r()}if(i&2){let e=d();f("intro",e.user().email+" \u2014 reaches the network within about 5 minutes.")("options",e.resourceOptions())("busy",e.busy())}}var Pe=class i{api=h(M);pluginsApi=h(ct);pluginsStore=h(pt);resourcesApi=h(mt);groupsApi=h(ne);toast=h(V);names=h(W);mfaEnabled=!!h(de).config.mfa;roleColors=h(Ue);user=E.required();justCreated=E(null);tabs=["Access","History"];tab=x("Access");federation=h(Te);claimRows=b(()=>this.federation.claimRows(this.user().claims));changed=N();busy=x(!1);adminBusy=x(!1);resendBusy=x(!1);linkBusy=x(!1);signupLink=x(null);minted=x(!1);mfaBusy=x(!1);roleGrants=x([]);resourceGrants=x([]);resources=x([]);groups=x([]);grantingGroups=x(!1);grantingRoles=x(!1);grantingResources=x(!1);memberOf=b(()=>this.groups().filter(t=>t.members.some(e=>e.userId===this.user().userId)));groupNameById=b(()=>Object.fromEntries(this.groups().map(t=>[t.groupId,t.name])));groupRows=b(()=>this.memberOf().map(t=>({id:t.groupId,title:t.name,subtitle:`${t.roles.length} role${t.roles.length===1?"":"s"}, ${t.resources?.length||0} resource${(t.resources?.length||0)===1?"":"s"}`,pillClass:"bg-muted text-muted-foreground",badges:[],action:{label:"Remove",disabled:this.busy()}})));whyBadges(t,e,n){let o=e.map(c=>({text:`via ${c}`,tone:"gray",title:`Granted through the group ${c}`}));return t&&o.unshift(n?{text:`direct \xB7 expires ${n}`,tone:"amber",title:"Direct grant, temporary"}:{text:"direct \xB7 long-term",tone:"gray",title:"Direct grant, long-term"}),o}full=x(null);fullRequest=0;destroyRef=h(me);shown=b(()=>{let t=this.full();return t&&t.userId===this.user().userId?t:this.user()});roleRows=b(()=>this.shown().roles.map(t=>({id:`${t.accountNumber}#${t.roleName}`,title:t.roleName,subtitle:this.names.label(t.accountNumber),pillClass:"role-chip",chipColor:this.roleColors.colorOf(t.accountNumber,t.roleName)||oe(t.accountNumber),badges:this.whyBadges(t.direct,t.groups,this.roleExpiry(t.accountNumber,t.roleName)),action:t.direct?{label:"Revoke",disabled:this.busy()}:void 0})));resourceRows=b(()=>(this.shown().resources??[]).map(t=>({id:t.resourceId,title:t.name,subtitle:t.accountNumber?this.names.label(t.accountNumber):void 0,pillClass:t.accountNumber?"role-chip":"bg-muted text-surface-foreground ring-1 ring-border",chipColor:t.accountNumber?oe(t.accountNumber):null,badges:this.whyBadges(t.direct,t.groups,this.resourceExpiry(t.resourceId)),action:t.direct?{label:"Revoke",disabled:this.busy()}:void 0})));groupOptions=b(()=>this.groups().filter(t=>!t.members.some(e=>e.userId===this.user().userId)).map(t=>({id:t.groupId,label:t.name,sublabel:`${t.members.length} member${t.members.length===1?"":"s"}`})));accountsPage=t=>this.api.listAccountsPage(t);rolesOf=t=>{let e=new Set(this.shown().roles.filter(n=>n.direct).map(n=>`${n.accountNumber}#${n.roleName}`));return t.roles.filter(n=>!e.has(`${t.accountNumber}#${n.roleName}`)).map(n=>({id:`${t.accountNumber}#${n.roleName}`,label:n.displayName||n.roleName,sublabel:n.displayName?n.roleName:void 0}))};resourceOptions=b(()=>{let t=new Set((this.shown().resources??[]).filter(e=>e.direct).map(e=>e.resourceId));return this.resources().filter(e=>!t.has(e.resourceId)).map(e=>({id:e.resourceId,label:e.name,sublabel:e.cidr,group:this.names.label(e.accountNumber)}))});constructor(){X(()=>{let t=this.user().userId,e=this.justCreated(),n=this.user();J(()=>{if(this.loadGrants(t),this.signupLink.set(e?.signupLink??null),this.minted.set(!1),this.full.set(null),(n.roleCount??0)>n.roles.length||(n.resourceCount??0)>(n.resources?.length??0)){let c=++this.fullRequest;this.api.getUser(t).pipe(ve(this.destroyRef)).subscribe({next:D=>c===this.fullRequest&&this.full.set(D),error:()=>{}})}})})}ngOnInit(){this.roleColors.ensure(),this.resourcesApi.listAll().subscribe({next:t=>this.resources.set(t),error:()=>this.resources.set([])}),this.loadGroups()}loadGroups(){this.groupsApi.list().subscribe({next:t=>this.groups.set(t),error:()=>this.groups.set([])})}pluginAccess=x({assignments:[],capabilities:[]});pluginsOn=!!h(de).config.plugins?.enabled;loadPluginAccess(t){this.pluginsOn&&this.pluginsApi.userAccess(t).subscribe({next:e=>this.pluginAccess.set(e),error:()=>this.pluginAccess.set({assignments:[],capabilities:[]})})}loadGrants(t){this.loadPluginAccess(t),this.api.listUserGrants(t).subscribe({next:e=>this.roleGrants.set(e),error:()=>this.roleGrants.set([])}),this.api.listUserResourceGrants(t).subscribe({next:e=>this.resourceGrants.set(e),error:()=>this.resourceGrants.set([])})}roleExpiry(t,e){let n=this.roleGrants().find(o=>o.accountNumber===t&&o.roleName===e);return n?.expiresAt?ce(n.expiresAt):null}resourceExpiry(t){let e=this.resourceGrants().find(n=>n.resourceId===t);return e?.expiresAt?ce(e.expiresAt):null}done(t){this.busy.set(!1),this.toast.success(t),this.loadGrants(this.user().userId),this.loadGroups(),this.changed.emit()}membershipChanged(t){this.done(t),this.pluginsStore.refresh()}fail(t,e){this.busy.set(!1),this.toast.error(w(t,e))}ago=_t;saveEmail(t){t&&this.api.updateUser(this.user().userId,{email:t}).subscribe({next:()=>{this.toast.success("Saved"),this.changed.emit()},error:e=>this.toast.error(w(e,"Could not change the email."))})}toggleAdmin(){let t=!this.user().admin;this.adminBusy.set(!0),this.api.updateUser(this.user().userId,{admin:t}).subscribe({next:()=>{this.adminBusy.set(!1),this.toast.success(t?"Now an admin":"Admin removed"),this.changed.emit()},error:e=>{this.adminBusy.set(!1),this.toast.error(w(e,"Could not change admin status."))}})}mintLink(){this.linkBusy.set(!0),this.api.mintSignupLink(this.user().userId).subscribe({next:t=>{this.linkBusy.set(!1),this.signupLink.set(t),this.minted.set(!0)},error:t=>{this.linkBusy.set(!1),this.toast.error(w(t,"Could not create a sign-up link."))}})}resend(){this.resendBusy.set(!0),this.api.resendInvite(this.user().userId).subscribe({next:()=>{this.resendBusy.set(!1),this.signupLink.set(null),this.minted.set(!1),this.toast.success(`Invitation email sent to ${this.user().email}`)},error:t=>{this.resendBusy.set(!1),this.toast.error(w(t,"Could not send the invitation email."))}})}resetMfa(){this.mfaBusy.set(!0),this.api.resetMfa(this.user().userId).subscribe({next:()=>{this.mfaBusy.set(!1),this.toast.success(`MFA reset \u2014 ${this.user().email} signs in with just their password again`)},error:t=>{this.mfaBusy.set(!1),this.toast.error(w(t,"Could not reset MFA."))}})}joinGroups(t){if(!t.length)return;this.grantingGroups.set(!1);let e=n=>{if(n>=t.length)return this.membershipChanged(`Added to ${t.length} group${t.length===1?"":"s"}`);this.busy.set(!0),this.groupsApi.addMembers(t[n],[this.user().userId]).subscribe({next:()=>e(n+1),error:o=>this.fail(o,"Could not add to the group.")})};e(0)}leaveGroup(t){let e=this.groups().find(n=>n.groupId===t);this.busy.set(!0),this.groupsApi.removeMembers(t,[this.user().userId]).subscribe({next:()=>this.membershipChanged(`Removed from ${e?.name??"the group"}`),error:n=>this.fail(n,"Could not remove from the group.")})}grantRoles(t,e){if(!t.length)return;let n=t.map(o=>{let c=o.indexOf("#");return{accountNumber:o.slice(0,c),roleName:o.slice(c+1)}});this.grantingRoles.set(!1),this.busy.set(!0),this.api.assignRoles([this.user().userId],n,e).subscribe({next:o=>{let c=o.filter(D=>D.status==="FAILED").length;c?this.fail(null,`${c} grant${c===1?"":"s"} failed.`):this.done(`Granted ${n.length} role${n.length===1?"":"s"}`),c&&this.changed.emit()},error:o=>this.fail(o,"Could not grant the roles.")})}revokeRole(t){let e=t.indexOf("#"),n=t.slice(0,e),o=t.slice(e+1);this.busy.set(!0),this.api.revokeGrant(n,o,this.user().userId).subscribe({next:()=>this.done(`Revoked ${o}`),error:c=>this.fail(c,"Could not revoke the role.")})}grantResources(t,e){if(!t.length)return;this.grantingResources.set(!1);let n=o=>{if(o>=t.length)return this.done(`Granted ${t.length} resource${t.length===1?"":"s"}`);this.busy.set(!0),this.resourcesApi.grant(t[o],this.user().userId,e).subscribe({next:()=>n(o+1),error:c=>this.fail(c,"Could not grant the resource.")})};n(0)}revokeResource(t){let e=this.shown().resources?.find(n=>n.resourceId===t)?.name??"resource";this.busy.set(!0),this.resourcesApi.revoke(t,this.user().userId).subscribe({next:()=>this.done(`Revoked ${e}`),error:n=>this.fail(n,"Could not revoke the resource.")})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-user-detail"]],inputs:{user:[1,"user"],justCreated:[1,"justCreated"]},outputs:{changed:"changed"},decls:7,vars:7,consts:[["size","lg","align","start","ariaLabel","email",3,"save","value"],[1,"mt-4","block",3,"selectedChange","tabs","selected"],[1,"mt-4","block",3,"userId"],["title","Add to groups","placeholder","Filter groups","emptyText","Already in every group.","verb","Add to",3,"intro","options","busy"],["title","Grant roles","placeholder","Filter the account's roles","emptyText","Every catalogued role is already held directly.","withDuration","",3,"intro","accountSource","optionsFor","busy"],["title","Grant network resources","placeholder","Filter by resource or account","emptyText","Every resource is already held directly.","withDuration","",3,"intro","options","busy"],[1,"mt-4"],[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,"space-y-2.5","text-xs"],[1,"flex","flex-wrap","items-center","gap-2"],["tone","brand"],["variant","outline","size","sm",1,"ml-auto",3,"click","loading"],["variant","outline","size","sm",3,"loading"],[1,"text-muted-foreground"],[1,"-mt-1","mb-2","flex","justify-end"],["variant","secondary","size","sm",3,"click"],["empty","Not in any group.",3,"action","rows"],["empty","No roles.",3,"action","rows"],[3,"principal","holder","assignments","capabilities","groupNames"],["empty","No network resources.",3,"action","rows"],[3,"tone"],["variant","outline","size","sm",3,"click","loading"],["tone","amber","icon","clock"],["variant","outline","size","sm",1,"ml-auto",3,"loading"],[3,"link"],[1,"text-warning"],[1,"text-surface-foreground"],[3,"changed","principal","holder","assignments","capabilities","groupNames"],["title","Add to groups","placeholder","Filter groups","emptyText","Already in every group.","verb","Add to",3,"granted","closed","intro","options","busy"],["title","Grant roles","placeholder","Filter the account's roles","emptyText","Every catalogued role is already held directly.","withDuration","",3,"granted","closed","intro","accountSource","optionsFor","busy"],["title","Grant network resources","placeholder","Filter by resource or account","emptyText","Every resource is already held directly.","withDuration","",3,"granted","closed","intro","options","busy"]],template:function(e,n){e&1&&(a(0,"app-inline-edit",0),u("save",function(c){return n.saveEmail(c)}),r(),a(1,"app-tabs",1),B("selectedChange",function(c){return F(n.tab,c)||(n.tab=c),c}),r(),_(2,Vn,1,1,"app-user-history",2)(3,Hn,38,14),_(4,zn,1,3,"app-grant-dialog",3),_(5,Kn,1,4,"app-grant-dialog",4),_(6,Qn,1,3,"app-grant-dialog",5)),e&2&&(f("value",n.user().email),s(),f("tabs",n.tabs),P("selected",n.tab),s(),g(n.tab()==="History"?2:3),s(2),g(n.grantingGroups()?4:-1),s(),g(n.grantingRoles()?5:-1),s(),g(n.grantingResources()?6:-1))},dependencies:[St,G,I,ie,kt,Tt,Re,Se,Ae,A],encapsulation:2})};function Fe(i,t=Date.now()){if(!i)return"never";let e=Date.parse(i);if(Number.isNaN(e))return"never";let n=Math.floor((t-e)/6e4);if(n<1)return"just now";if(n<60)return`${n} min ago`;let o=Math.floor(n/60);return o<48?`${o} h ago`:`${Math.floor(o/24)} days ago`}var Jn=(i,t)=>t.accountNumber+"#"+t.roleName;function Xn(i,t){i&1&&(a(0,"app-badge",2),l(1,"previous secret active"),r())}function Yn(i,t){if(i&1){let e=C();a(0,"dt",4),l(1,"Previous client"),r(),a(2,"dd",17)(3,"code",18),l(4),r(),a(5,"app-badge",19),l(6,"still works"),r(),a(7,"app-button",20),u("click",function(){p(e);let o=d();return m(o.confirmingRemovePrev.set(!0))}),l(8," Remove "),r()()}if(i&2){let e=d();s(4),v(t.clientId),s(3),f("disabled",e.busy())}}function Zn(i,t){i&1&&(a(0,"p",9),l(1," Switch the automation to the new client ID + secret, wait for \u201CLast used\u201D to show the new client authenticating, then remove the previous one. "),r())}function ei(i,t){i&1&&(a(0,"p",14),l(1," No roles \u2014 it can get tokens, but every API call is denied until one is granted. "),r())}function ti(i,t){if(i&1){let e=C();a(0,"app-search-input",26),B("valueChange",function(o){p(e);let c=d(2);return F(c.rolesFold.query,o)||(c.rolesFold.query=o),m(o)}),r()}if(i&2){let e=d(2);P("value",e.rolesFold.query)}}function ni(i,t){if(i&1&&(a(0,"app-badge",31),l(1),r()),i&2){let e=d().$implicit,n=d(2);s(),y("expires ",n.until(e.expiresAt))}}function ii(i,t){i&1&&(a(0,"app-badge",32),l(1,"long-term"),r())}function oi(i,t){if(i&1){let e=C();a(0,"div",23)(1,"app-chip",27)(2,"span",28),l(3),r()(),a(4,"span",29),l(5),r(),a(6,"span",30),_(7,ni,2,1,"app-badge",31)(8,ii,2,0,"app-badge",32),a(9,"app-button",33),u("click",function(){let o=p(e).$implicit,c=d(2);return m(c.revokeRole(o.accountNumber,o.roleName))}),l(10,"Revoke"),r()()()}if(i&2){let e=t.$implicit,n=d(2);s(3),v(e.roleName),s(2),y("\xB7 ",n.names.label(e.accountNumber)),s(2),g(e.expiresAt?7:8),s(2),f("disabled",n.busy())}}function ri(i,t){if(i&1&&(a(0,"p",24),l(1),r()),i&2){let e=d(2);s(),y('Nothing matches "',e.rolesFold.query(),'".')}}function ai(i,t){if(i&1){let e=C();a(0,"button",35),u("click",function(){p(e);let o=d(3);return m(o.rolesFold.showMore())}),l(1),r()}if(i&2){let e=d(3);s(),y(" Show ",e.rolesFold.more()," more ")}}function si(i,t){if(i&1){let e=C();a(0,"button",35),u("click",function(){p(e);let o=d(3);return m(o.rolesFold.showLess())}),l(1,"Show less"),r()}}function li(i,t){if(i&1&&(a(0,"p",25),_(1,ai,2,1,"button",34),_(2,si,2,0,"button",34),a(3,"span"),l(4),r()()),i&2){let e=d(2);s(),g(e.rolesFold.more()?1:-1),s(),g(e.rolesFold.expanded()?2:-1),s(2),Z("",e.rolesFold.visible().length," of ",e.rolesFold.matching().length,"",e.rolesFold.searchable()?" \u2014 or search":"")}}function di(i,t){if(i&1&&(_(0,ti,1,1,"app-search-input",21),a(1,"div",22),k(2,oi,11,4,"div",23,Jn,!1,ri,2,1,"p",24),r(),_(5,li,5,5,"p",25)),i&2){let e=d();g(e.rolesFold.searchable()?0:-1),s(2),T(e.rolesFold.visible()),s(3),g(e.rolesFold.more()||e.rolesFold.expanded()?5:-1)}}function ci(i,t){if(i&1){let e=C();a(0,"app-grant-dialog",36),u("granted",function(o){p(e);let c=d();return m(c.grantRoles(o.ids,o.durationHours))})("closed",function(){p(e);let o=d();return m(o.grantingRole.set(!1))}),r()}if(i&2){let e=d();f("intro",e.serviceUser().name+" \u2014 takes effect on its next API call.")("accountSource",e.accountsPage)("optionsFor",e.rolesOf)("busy",e.busy())}}function pi(i,t){if(i&1){let e=C();a(0,"app-dialog",37),u("closed",function(){p(e);let o=d();return m(o.confirmingRemovePrev.set(!1))}),a(1,"p",38),l(2," The old client ID and secret stop working immediately. Make sure the automation already authenticates with the new credentials \u2014 \u201CLast used\u201D above should reflect a call made with them. "),r(),a(3,"div",39)(4,"app-button",40),u("click",function(){p(e);let o=d();return m(o.confirmingRemovePrev.set(!1))}),l(5,"Cancel"),r(),a(6,"app-button",41),u("click",function(){p(e);let o=d();return m(o.removePrevious())}),l(7,"Remove previous secret"),r()()()}if(i&2){let e=d();s(6),f("loading",e.busy())}}var Be=class i{api=h(M);toast=h(V);names=h(W);serviceUser=E.required();changed=N();until(t){return ce(t)}lastUsed(){return Fe(this.serviceUser().lastUsedAt)}createdDay=b(()=>this.serviceUser().createdAt.slice(0,10));busy=x(!1);rolesFold=wt(b(()=>this.serviceUser().roles),t=>`${t.roleName} ${this.names.label(t.accountNumber)} ${t.accountNumber}`);grantingRole=x(!1);confirmingRemovePrev=x(!1);accountsPage=t=>this.api.listAccountsPage(t);rolesOf=t=>{let e=new Set(this.serviceUser().roles.map(n=>`${n.accountNumber}#${n.roleName}`));return t.roles.filter(n=>!e.has(`${t.accountNumber}#${n.roleName}`)).map(n=>({id:`${t.accountNumber}#${n.roleName}`,label:n.displayName||n.roleName,sublabel:n.displayName?n.roleName:void 0}))};ngOnInit(){}done(t){this.busy.set(!1),this.toast.success(t),this.changed.emit()}fail(t,e){this.busy.set(!1),this.toast.error(w(t,e))}openGrantRole(){this.grantingRole.set(!0)}grantRoles(t,e){if(!t.length)return;let n=t.map(o=>{let c=o.indexOf("#");return{accountNumber:o.slice(0,c),roleName:o.slice(c+1)}});this.grantingRole.set(!1),this.busy.set(!0),this.api.assignRoles([this.serviceUser().clientId],n,e).subscribe({next:o=>{let c=o.filter(D=>D.status==="FAILED").length;c?this.fail(null,`${c} grant${c===1?"":"s"} failed.`):this.done(`Granted ${n.length} role${n.length===1?"":"s"}`),c&&this.changed.emit()},error:o=>this.fail(o,"Could not grant the roles.")})}revokeRole(t,e){this.busy.set(!0),this.api.revokeGrant(t,e,this.serviceUser().clientId).subscribe({next:()=>this.done(`Revoked ${e} \u2014 denied from its next call`),error:n=>this.fail(n,"Could not revoke the role.")})}removePrevious(){this.busy.set(!0),this.api.removePreviousSecret(this.serviceUser().clientId).subscribe({next:()=>{this.confirmingRemovePrev.set(!1),this.done("Previous secret removed \u2014 rotation finished")},error:t=>this.fail(t,"Could not remove the previous secret.")})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-service-user-detail"]],inputs:{serviceUser:[1,"serviceUser"]},outputs:{changed:"changed"},decls:31,vars:11,consts:[[1,"flex","flex-wrap","items-center","gap-2"],["tone","gray"],["tone","amber"],[1,"mt-4","grid","gap-x-4","gap-y-2","text-sm",2,"grid-template-columns","auto 1fr"],[1,"text-xs","font-medium","text-muted-foreground"],[1,"flex","min-w-0","items-center","gap-1.5"],[1,"min-w-0","truncate","font-mono","text-xs"],["variant","icon","label","Copy client ID",3,"text"],[1,"text-xs","text-surface-foreground"],[1,"mt-2","text-xs","text-muted-foreground"],[1,"mt-5","rounded-lg","border","border-border","px-5","pb-3","pt-2.5"],[1,"-ml-1.5","px-1.5","text-xs","font-medium","text-muted-foreground"],[1,"-mt-1","mb-1","flex","justify-end"],["variant","ghost","size","sm",3,"click"],[1,"pb-1","text-xs","text-placeholder"],["title","Grant roles","placeholder","Filter the account's roles","emptyText","Every catalogued role is already granted.","withDuration","",3,"intro","accountSource","optionsFor","busy"],["title","Remove the previous secret?"],[1,"flex","min-w-0","flex-wrap","items-center","gap-1.5"],[1,"min-w-0","truncate","font-mono","text-xs","text-muted-foreground"],["tone","amber","title","The old secret still authenticates until removed"],["size","sm","variant","danger",1,"ml-auto",3,"click","disabled"],["compact","","placeholder","Search roles by name or account",1,"mb-2","block",3,"value"],[1,"divide-y","divide-border"],[1,"flex","items-center","gap-2","py-1.5","text-sm"],[1,"py-2","text-xs","text-muted-foreground"],[1,"mt-1.5","flex","items-center","gap-2","text-[11px]","text-text-secondary"],["compact","","placeholder","Search roles by name or account",1,"mb-2","block",3,"valueChange","value"],[1,"min-w-0"],[1,"min-w-0","truncate"],[1,"min-w-0","truncate","text-xs","text-muted-foreground"],[1,"ml-auto","flex","shrink-0","flex-wrap","items-center","justify-end","gap-1"],["tone","amber","title","Temporary grant"],["tone","gray","title","Standing access"],["size","sm","variant","danger",3,"click","disabled"],["type","button",1,"text-xs","text-muted-foreground","underline","hover:text-surface-foreground"],["type","button",1,"text-xs","text-muted-foreground","underline","hover:text-surface-foreground",3,"click"],["title","Grant roles","placeholder","Filter the account's roles","emptyText","Every catalogued role is already granted.","withDuration","",3,"granted","closed","intro","accountSource","optionsFor","busy"],["title","Remove the previous secret?",3,"closed"],[1,"text-sm","text-muted-foreground"],[1,"mt-4","flex","justify-end","gap-2"],["variant","outline",3,"click"],["variant","danger",3,"click","loading"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"app-badge",1),l(2,"service user"),r(),_(3,Xn,2,0,"app-badge",2),r(),a(4,"dl",3)(5,"dt",4),l(6,"Client ID"),r(),a(7,"dd",5)(8,"code",6),l(9),r(),S(10,"app-copy-button",7),r(),a(11,"dt",4),l(12,"Created"),r(),a(13,"dd",8),l(14),r(),a(15,"dt",4),l(16,"Last used"),r(),a(17,"dd",8),l(18),r(),_(19,Yn,9,2),r(),_(20,Zn,2,0,"p",9),a(21,"fieldset",10)(22,"legend",11),l(23),r(),a(24,"div",12)(25,"app-button",13),u("click",function(){return n.openGrantRole()}),l(26,"\uFF0B Grant role"),r()(),_(27,ei,2,0,"p",14)(28,di,6,3),r(),_(29,ci,1,4,"app-grant-dialog",15),_(30,pi,8,1,"app-dialog",16)),e&2){let o,c;s(3),g(n.serviceUser().previous?3:-1),s(6),v(n.serviceUser().clientId),s(),f("text",n.serviceUser().clientId),s(4),v(n.createdDay()),s(4),v(n.lastUsed()),s(),g((o=n.serviceUser().previous)?19:-1,o),s(),g((c=n.serviceUser().previous)?20:-1,c),s(3),y("Roles \xB7 ",n.serviceUser().roles.length),s(4),g(n.serviceUser().roles.length===0?27:28),s(2),g(n.grantingRole()?29:-1),s(),g(n.confirmingRemovePrev()?30:-1)}},dependencies:[G,I,Q,j,L,ie,ke],encapsulation:2})};function mi(i,t){i&1&&(a(0,"p",8),l(1," Both values changed \u2014 update the client ID "),a(2,"span",15),l(3,"and"),r(),l(4," the secret in the automation. The previous secret keeps working until you remove it from this service user's panel. "),r())}var $e=class i{configService=h(de);created=E.required();rotated=E(!1);closed=N();curl=b(()=>[`curl -s -X POST ${this.configService.config.hostedUiDomain.replace(/\/$/,"")}/oauth2/token \\`,` -u '${this.created().serviceUser.clientId}:CLIENT_SECRET' \\`," -d 'grant_type=client_credentials&scope=api/invoke'"].join(`
6
+ `));static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-service-user-secret"]],inputs:{created:[1,"created"],rotated:[1,"rotated"]},outputs:{closed:"closed"},decls:34,vars:7,consts:[["tone","warning"],[1,"mt-4","grid","gap-y-1","text-sm"],[1,"text-xs","font-medium","text-muted-foreground"],[1,"mb-3","flex","items-center","justify-between","gap-2","rounded-md","bg-muted","px-3","py-2"],[1,"min-w-0","truncate","font-mono","text-xs"],["variant","icon","label","Copy client ID",3,"text"],[1,"flex","items-center","justify-between","gap-2","rounded-md","bg-muted","px-3","py-2"],["variant","icon","label","Copy client secret",3,"text"],[1,"mt-3","text-xs","text-muted-foreground"],[1,"mt-5"],[1,"mb-1","flex","items-center","justify-between"],["variant","icon","label","Copy command",3,"text"],[1,"overflow-x-auto","rounded-md","bg-muted","px-3","py-2","font-mono","text-[11px]","leading-relaxed","text-muted-foreground"],[1,"mt-2","text-xs","text-muted-foreground"],[1,"font-mono"],[1,"font-medium"],[1,"mt-5","flex","justify-end"],["size","lg",3,"click"]],template:function(e,n){e&1&&(a(0,"app-banner",0),l(1," Copy the secret now \u2014 it can't be shown again. If it's lost, rotate it from this service user's panel. "),r(),a(2,"dl",1)(3,"dt",2),l(4,"Client ID"),r(),a(5,"dd",3)(6,"code",4),l(7),r(),S(8,"app-copy-button",5),r(),a(9,"dt",2),l(10,"Client secret"),r(),a(11,"dd",6)(12,"code",4),l(13),r(),S(14,"app-copy-button",7),r()(),_(15,mi,5,0,"p",8),a(16,"div",9)(17,"div",10)(18,"span",2),l(19,"Get a token"),r(),S(20,"app-copy-button",11),r(),a(21,"pre",12),l(22),r(),a(23,"p",13),l(24," Tokens last 1 hour \u2014 the automation just requests a new one each run and sends it as "),a(25,"code",14),l(26,"Authorization: Bearer \u2026"),r(),l(27," on API calls. The token can perform "),a(28,"span",15),l(29,"admin actions"),r(),l(30," in this app, so keep the secret in a secret store, never in code or logs. "),r()(),a(31,"div",16)(32,"app-button",17),u("click",function(){return n.closed.emit()}),l(33,"Done"),r()()),e&2&&(s(7),v(n.created().serviceUser.clientId),s(),f("text",n.created().serviceUser.clientId),s(5),v(n.created().clientSecret),s(),f("text",n.created().clientSecret),s(),g(n.rotated()?15:-1),s(5),f("text",n.curl()),s(2),v(n.curl()))},dependencies:[A,I,j],encapsulation:2})};var ui=["panelTpl"],_i=(i,t)=>t.clientId,gi=(i,t)=>t.accountNumber+"#"+t.roleName;function fi(i,t){if(i&1&&(a(0,"app-banner",1),l(1),r()),i&2){let e=d();s(),v(e.error())}}function xi(i,t){i&1&&(a(0,"div",2),S(1,"app-skeleton",7)(2,"app-skeleton",7),r())}function Ci(i,t){i&1&&(a(0,"app-empty-state",3)(1,"span",8),l(2,"Add service user"),r(),l(3," creates a client ID + secret an automation (CI job, script, another system) uses to call the API \u2014 including admin actions. AWS role access is granted per role, just like a person. "),r())}function hi(i,t){if(i&1&&(a(0,"app-empty-state",4),l(1),r()),i&2){let e=d();s(),y(' Nothing matches "',e.query(),'". Try a different name, client ID, or role. ')}}function vi(i,t){i&1&&(a(0,"app-badge",19),l(1,"previous secret active"),r())}function bi(i,t){i&1&&(a(0,"app-badge",21),l(1,"No roles"),r())}function yi(i,t){if(i&1&&(a(0,"app-chip",24)(1,"span",26),l(2),r(),a(3,"span",27),l(4),r()()),i&2){let e=t.$implicit,n=d(4);s(2),v(e.roleName),s(2),y("\xB7 ",n.names.label(e.accountNumber))}}function wi(i,t){if(i&1&&(a(0,"app-badge",25),l(1),r()),i&2){let e=d(2).$implicit;s(),y("+",e.roles.length-2," more")}}function Si(i,t){if(i&1&&(a(0,"div",22),k(1,yi,5,2,"app-chip",24,gi),_(3,wi,2,1,"app-badge",25),r()),i&2){let e=d().$implicit;s(),T(e.roles.slice(0,2)),s(2),g(e.roles.length>2?3:-1)}}function ki(i,t){if(i&1){let e=C();a(0,"div",14),u("click",function(){let o=p(e).$implicit,c=d(2);return m(c.openDetail(o))}),a(1,"div",15)(2,"span",16),l(3),r(),a(4,"span",17)(5,"app-badge",18),l(6,"admin"),r(),_(7,vi,2,0,"app-badge",19),r()(),a(8,"div",15)(9,"code",20),l(10),r()(),a(11,"div",15),_(12,bi,2,0,"app-badge",21)(13,Si,4,1,"div",22),r(),a(14,"div",23),l(15),r(),a(16,"div",23),l(17),r()()}if(i&2){let e=t.$implicit,n=d(2);R(n.panelClientId()===e.clientId?"bg-brand/5":""),s(3),v(e.name),s(4),g(e.previous?7:-1),s(3),v(n.shortId(e.clientId)),s(2),g(e.roles.length===0?12:13),s(3),v(n.ago(e.lastUsedAt)),s(2),v(e.createdAt.slice(0,10))}}function Ti(i,t){if(i&1&&(a(0,"div",5)(1,"div",9)(2,"div",10),l(3,"Name"),r(),a(4,"div",10),l(5,"Client ID"),r(),a(6,"div",10),l(7,"Roles"),r(),a(8,"div",10),l(9,"Last used"),r(),a(10,"div",10),l(11,"Created"),r()(),a(12,"div",11)(13,"div",12),k(14,ki,18,8,"div",13,_i),r()()()),i&2){let e=d();s(14),T(e.filtered())}}function Di(i,t){if(i&1){let e=C();a(0,"label",30),l(1,"Name"),r(),a(2,"input",31),u("ngModelChange",function(o){p(e);let c=d(2);return m(c.newName.set(o))}),r(),a(3,"p",32),l(4," Lowercase letters, digits, and hyphens \u2014 shown in this list and the activity log. Name it after what the automation does. "),r(),a(5,"p",33),l(6," Creating it generates a client ID and secret (shown once, on the next screen). The secret is a "),a(7,"span",8),l(8,"full admin credential"),r(),l(9," for this app \u2014 store it like one. AWS role access starts empty; grant roles from its panel afterwards. "),r(),a(10,"div",34)(11,"app-button",35),u("click",function(){p(e);let o=d(2);return m(o.create())}),l(12,"Create"),r()()}if(i&2){let e=d(2);s(2),f("ngModel",e.newName()),s(9),f("loading",e.creating())("disabled",!e.newName().trim())}}function Ui(i,t){if(i&1){let e=C();a(0,"app-service-user-secret",37),u("closed",function(){p(e);let o=d(3);return m(o.afterSecretDone())}),r()}if(i&2){let e=d(3);f("created",t)("rotated",e.lastSecretWasRotation())}}function Ei(i,t){if(i&1&&_(0,Ui,1,2,"app-service-user-secret",36),i&2){let e,n=d(2);g((e=n.lastSecret())?0:-1,e)}}function Ii(i,t){if(i&1){let e=C();a(0,"app-service-user-detail",39),u("changed",function(){p(e);let o=d(3);return m(o.load())}),r()}i&2&&f("serviceUser",t)}function Ni(i,t){if(i&1&&_(0,Ii,1,1,"app-service-user-detail",38),i&2){let e,n=d(2);g((e=n.panelServiceUser())?0:-1,e)}}function Vi(i,t){if(i&1){let e=C();a(0,"app-button",40),u("click",function(){let o=p(e),c=d(3);return m(c.confirmingRotate.set(o))}),l(1," Rotate secret "),r(),a(2,"app-button",41),u("click",function(){let o=p(e),c=d(3);return m(c.confirmingDelete.set(o))}),l(3,"Delete service user"),r()}if(i&2){let e=t;f("disabled",!!e.previous)("title",e.previous?"Finish the current rotation first \u2014 remove the previous secret":"")}}function Mi(i,t){if(i&1&&_(0,Vi,4,2),i&2){let e,n=d(2);g((e=n.panelServiceUser())?0:-1,e)}}function Ri(i,t){if(i&1){let e=C();a(0,"app-panel",28),u("closed",function(){p(e);let o=d();return m(o.closePanel())}),_(1,Di,13,3)(2,Ei,1,1)(3,Ni,1,1),ge(4,29),_(5,Mi,1,1),fe(),r()}if(i&2){let e,n=d();f("title",n.panelTitle())("contentKey",n.panelKind()+":"+n.panelClientId()),s(),g((e=n.panelKind())==="create"?1:e==="secret"?2:e==="detail"?3:-1),s(4),g(n.panelKind()==="detail"?5:-1)}}function Ai(i,t){if(i&1){let e=C();a(0,"app-dialog",42),u("closed",function(){p(e);let o=d();return m(o.confirmingRotate.set(null))}),a(1,"p",43),l(2," This issues a "),a(3,"span",44),l(4,"new client ID and secret"),r(),l(5," and copies all roles to it. You'll see the new secret once, on the next screen. "),r(),a(6,"p",45),l(7," The "),a(8,"span",44),l(9,"previous secret keeps working"),r(),l(10," until you remove it \u2014 switch the automation over first, then remove it from the panel. "),r(),a(11,"div",46)(12,"app-button",47),u("click",function(){p(e);let o=d();return m(o.confirmingRotate.set(null))}),l(13,"Cancel"),r(),a(14,"app-button",48),u("click",function(){let o=p(e),c=d();return m(c.rotate(o))}),l(15,"Rotate"),r()()()}if(i&2){let e=d();f("title","Rotate secret for "+t.name+"?"),s(14),f("loading",e.rotating())}}function Pi(i,t){if(i&1){let e=C();a(0,"app-dialog",42),u("closed",function(){p(e);let o=d();return m(o.confirmingDelete.set(null))}),a(1,"p",43),l(2," Its credentials stop working and all its role grants are removed. Any automation still using them will start failing. This can't be undone. "),r(),a(3,"div",46)(4,"app-button",47),u("click",function(){p(e);let o=d();return m(o.confirmingDelete.set(null))}),l(5,"Cancel"),r(),a(6,"app-button",49),u("click",function(){let o=p(e),c=d();return m(c.doDelete(o))}),l(7,"Delete service user"),r()()()}if(i&2){let e=d();f("title","Delete "+t.name+"?"),s(6),f("loading",e.deleting())}}var ae=class i{api=h(M);toast=h(V);names=h(W);query=rt("");serviceUsers=x(null);error=x(null);panelKind=x(null);panelClientId=x(null);panelTpl=le("panelTpl");newName=x("");creating=x(!1);rotating=x(!1);deleting=x(!1);lastSecret=x(null);lastSecretWasRotation=x(!1);confirmingRotate=x(null);confirmingDelete=x(null);filtered=b(()=>{let t=this.query().trim().toLowerCase(),e=this.serviceUsers()??[];return t?e.filter(n=>n.name.toLowerCase().includes(t)||n.clientId.toLowerCase().includes(t)||n.roles.some(o=>o.roleName.toLowerCase().includes(t)||this.names.label(o.accountNumber).toLowerCase().includes(t))):e});panelServiceUser=b(()=>(this.serviceUsers()??[]).find(t=>t.clientId===this.panelClientId())??null);panelTitle=b(()=>{switch(this.panelKind()){case"create":return"New service user";case"secret":return this.lastSecret()?.serviceUser.name??"Credentials";default:return this.panelServiceUser()?.name??"Service user"}});constructor(){ye(()=>this.panelKind(),()=>this.panelTpl(),()=>this.closePanel())}ngOnInit(){this.load()}load(){this.api.listServiceUsers().subscribe({next:t=>this.serviceUsers.set(t),error:t=>this.error.set(w(t,"Could not load service users."))})}ago(t){return Fe(t)}shortId(t){return t.length<=12?t:`${t.slice(0,5)}\u2026${t.slice(-4)}`}openCreate(){this.newName.set(""),this.panelClientId.set(null),this.panelKind.set("create")}openDetail(t){this.panelClientId.set(t.clientId),this.panelKind.set("detail")}closePanel(){this.panelKind.set(null),this.panelClientId.set(null),this.lastSecret.set(null)}create(){this.creating.set(!0),this.api.createServiceUser(this.newName().trim()).subscribe({next:t=>{this.creating.set(!1),this.lastSecret.set(t),this.lastSecretWasRotation.set(!1),this.panelClientId.set(t.serviceUser.clientId),this.panelKind.set("secret"),this.load()},error:t=>{this.creating.set(!1),this.toast.error(w(t,"Could not create the service user."))}})}rotate(t){this.rotating.set(!0),this.api.rotateServiceUser(t.clientId).subscribe({next:e=>{this.rotating.set(!1),this.confirmingRotate.set(null),this.lastSecret.set(e),this.lastSecretWasRotation.set(!0),this.panelClientId.set(e.serviceUser.clientId),this.panelKind.set("secret"),this.load()},error:e=>{this.rotating.set(!1),this.toast.error(w(e,"Could not rotate the secret."))}})}afterSecretDone(){let t=this.panelClientId();this.lastSecret.set(null),t?this.panelKind.set("detail"):this.closePanel()}doDelete(t){this.deleting.set(!0),this.api.deleteServiceUser(t.clientId).subscribe({next:()=>{this.deleting.set(!1),this.confirmingDelete.set(null),this.toast.success(`Deleted ${t.name}`),this.closePanel(),this.load()},error:e=>{this.deleting.set(!1),this.toast.error(w(e,"Could not delete the service user."))}})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-service-users-tab"]],viewQuery:function(e,n){e&1&&se(n.panelTpl,ui,5),e&2&&xe()},hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],inputs:{query:[1,"query"]},outputs:{query:"queryChange"},decls:9,vars:3,consts:[["panelTpl",""],["tone","danger"],[1,"space-y-2"],["title","No service users yet"],["title","No matches"],[1,"flex","min-h-0","flex-1","flex-col","overflow-x-auto"],[3,"title"],["sizeClass","h-12 w-full"],[1,"font-medium"],[1,"grid","min-w-[720px]","shrink-0","grid-cols-[26%_20%_30%_13%_minmax(0,1fr)]"],[1,"px-4","py-2.5","text-left","ui-microlabel","text-text-secondary"],[1,"flex","min-h-0","min-w-[720px]","flex-1","flex-col","overflow-hidden","rounded-lg","border","border-border","bg-card-bg"],[1,"min-h-0","flex-1","overflow-y-auto"],["data-testid","row",1,"grid","cursor-pointer","grid-cols-[26%_20%_30%_13%_minmax(0,1fr)]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-state-hover",3,"class"],["data-testid","row",1,"grid","cursor-pointer","grid-cols-[26%_20%_30%_13%_minmax(0,1fr)]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-state-hover",3,"click"],[1,"px-4","py-3"],[1,"block","break-words","font-medium","tracking-[0.015em]","text-surface-foreground"],[1,"mt-1","flex","flex-wrap","gap-1.5"],["tone","brand"],["tone","amber"],[1,"font-mono","text-xs","text-muted-foreground"],["tone","dashed"],[1,"flex","flex-wrap","gap-1.5"],[1,"px-4","py-3","text-xs","tabular-nums","text-muted-foreground"],[1,"min-w-0"],["tone","gray"],[1,"min-w-0","truncate"],[1,"ml-1","min-w-0","truncate","text-muted-foreground"],["size","lg",3,"closed","title","contentKey"],["ngProjectAs","[panel-footer]",5,["","panel-footer",""]],["for","su-name",1,"text-xs","font-medium","text-muted-foreground"],["id","su-name","placeholder","github-actions-deploy","autocomplete","off",1,"ui-input","mt-1",3,"ngModelChange","ngModel"],[1,"mt-1.5","text-xs","text-muted-foreground"],[1,"mt-4","text-xs","text-muted-foreground"],[1,"mt-5","flex","justify-end"],["size","lg",3,"click","loading","disabled"],[3,"created","rotated"],[3,"closed","created","rotated"],[3,"serviceUser"],[3,"changed","serviceUser"],["size","lg","variant","outline",3,"click","disabled","title"],["size","lg","variant","danger",3,"click"],[3,"closed","title"],[1,"text-sm","text-muted-foreground"],[1,"font-medium","text-surface-foreground"],[1,"mt-2","text-sm","text-muted-foreground"],[1,"mt-4","flex","justify-end","gap-2"],["variant","outline",3,"click"],[3,"click","loading"],["variant","danger",3,"click","loading"]],template:function(e,n){if(e&1&&(_(0,fi,2,1,"app-banner",1)(1,xi,3,0,"div",2)(2,Ci,4,0,"app-empty-state",3)(3,hi,2,1,"app-empty-state",4)(4,Ti,16,0,"div",5),ue(5,Ri,6,4,"ng-template",null,0,he),_(7,Ai,16,2,"app-dialog",6),_(8,Pi,8,2,"app-dialog",6)),e&2){let o,c;g(n.error()?0:n.serviceUsers()===null?1:n.serviceUsers().length===0?2:n.filtered().length===0?3:4),s(7),g((o=n.confirmingRotate())?7:-1,o),s(),g((c=n.confirmingDelete())?8:-1,c)}},dependencies:[K,q,H,z,G,A,I,Q,L,be,we,te,Be,$e],encapsulation:2})};var Fi=["panelTpl"],Bi=()=>[],$i=(i,t)=>t.userId,Oi=(i,t)=>t.key,Gi=(i,t)=>t.groupId,Li=(i,t)=>t.accountNumber+"#"+t.roleName,Wi=(i,t)=>t.resourceId;function ji(i,t){if(i&1){let e=C();a(0,"app-button",14),u("click",function(){p(e);let o=d();return m(o.accessReport())}),S(1,"app-icon",15),l(2," Access report "),r(),a(3,"app-button",16),u("click",function(){p(e);let o=d();return m(o.openCreate())}),S(4,"app-icon",17),l(5," Create user "),r()}if(i&2){let e=d();f("loading",e.reportBusy()),s(4),f("strokeWidth",2)}}function qi(i,t){if(i&1){let e=C();a(0,"app-button",16),u("click",function(){let o;p(e);let c=d();return m((o=c.serviceTab())==null?null:o.openCreate())}),S(1,"app-icon",17),l(2," Add service user "),r()}i&2&&(s(),f("strokeWidth",2))}function Hi(i,t){if(i&1){let e=C();a(0,"div",18)(1,"app-search-input",19),B("valueChange",function(o){p(e);let c=d();return F(c.serviceQuery,o)||(c.serviceQuery=o),m(o)}),r()(),a(2,"app-service-users-tab",20),B("queryChange",function(o){p(e);let c=d();return F(c.serviceQuery,o)||(c.serviceQuery=o),m(o)}),r()}if(i&2){let e=d();s(),P("value",e.serviceQuery),s(),P("query",e.serviceQuery)}}function zi(i,t){if(i&1&&(a(0,"app-banner",6),l(1),r()),i&2){let e=d();s(),v(e.store.error())}}function Ki(i,t){i&1&&(a(0,"div",7),S(1,"app-skeleton",21)(2,"app-skeleton",21)(3,"app-skeleton",21),r())}function Qi(i,t){i&1&&(a(0,"app-empty-state",8),l(1," Invite someone with "),a(2,"span",22),l(3,"Create user"),r(),l(4," \u2014 they'll get an email to set their password. "),r())}function Ji(i,t){if(i&1&&l(0),i&2){let e=d(3);y(' Nothing matches "',e.query(),'". Try a different email, role, account, or resource, or clear the filters. ')}}function Xi(i,t){i&1&&l(0," No users match the current filters. ")}function Yi(i,t){if(i&1&&(a(0,"app-empty-state",26),_(1,Ji,1,1)(2,Xi,1,0),r()),i&2){let e=d(2);s(),g(e.query()?1:2)}}function Zi(i,t){if(i&1&&(a(0,"span",41),l(1),r()),i&2){let e=t.$implicit;s(),Y("",e.label," \xB7 ",e.value)}}function eo(i,t){i&1&&(a(0,"app-badge",45),l(1,"admin"),r())}function to(i,t){i&1&&(a(0,"app-badge",46),l(1,"invited"),r())}function no(i,t){if(i&1&&(a(0,"span",42),_(1,eo,2,0,"app-badge",45),_(2,to,2,0,"app-badge",46),r()),i&2){let e=d().$implicit;s(),g(e.admin?1:-1),s(),g(e.pendingInvite?2:-1)}}function io(i,t){i&1&&(a(0,"app-badge",43),l(1,"No groups"),r())}function oo(i,t){if(i&1&&(a(0,"app-chip")(1,"span",47),l(2),r()()),i&2){let e=t.$implicit;s(2),v(e.name)}}function ro(i,t){if(i&1&&(a(0,"div",44),k(1,oo,3,1,"app-chip",null,Gi),r()),i&2){let e=d().$implicit,n=d(3);s(),T(n.store.groupsOf().get(e.userId))}}function ao(i,t){i&1&&(a(0,"app-badge",43),l(1,"No roles"),r())}function so(i,t){i&1&&(a(0,"span",52),l(1," direct "),r())}function lo(i,t){if(i&1&&(a(0,"span",53),l(1),r()),i&2){let e=t.$implicit;s(),y(" ",e," ")}}function co(i,t){if(i&1&&(a(0,"span",50)(1,"span",47),l(2),r(),a(3,"span",51),l(4),r(),_(5,so,2,0,"span",52),k(6,lo,2,1,"span",53,Oe),r()),i&2){let e=t.$implicit,n=d(5);R(n.acctChip(e.accountNumber)),Ge("--role-c",n.roleChipColor(e)),f("title",n.roleTitle(e)),s(2),v(e.roleName),s(2),y("\xB7 ",n.names.label(e.accountNumber)),s(),g(e.direct&&e.groups.length?5:-1),s(),T(e.groups)}}function po(i,t){if(i&1&&(a(0,"span",49),l(1),r()),i&2){let e=d(2).$implicit,n=d(3);f("title",n.hiddenRolesTitle(e)),s(),y(" +",(e.roleCount??e.roles.length)-2," more ")}}function mo(i,t){if(i&1&&(a(0,"div",44),k(1,co,8,8,"span",48,Li),_(3,po,2,2,"span",49),r()),i&2){let e=d().$implicit;s(),T(e.roles.slice(0,2)),s(2),g((e.roleCount??e.roles.length)>2?3:-1)}}function uo(i,t){i&1&&(a(0,"app-badge",43),l(1,"No network resources"),r())}function _o(i,t){if(i&1&&(a(0,"span",51),l(1),r()),i&2){let e=d().$implicit,n=d(5);s(),y("\xB7 ",n.names.label(e.accountNumber))}}function go(i,t){i&1&&(a(0,"span",52),l(1," direct "),r())}function fo(i,t){if(i&1&&(a(0,"span",53),l(1),r()),i&2){let e=t.$implicit;s(),y(" ",e," ")}}function xo(i,t){if(i&1&&(a(0,"span",50)(1,"span",47),l(2),r(),_(3,_o,2,1,"span",51),_(4,go,2,0,"span",52),k(5,fo,2,1,"span",53,Oe),r()),i&2){let e=t.$implicit,n=d(5);R(n.acctChip(e.accountNumber)),Ge("--role-c",n.acctChipColor(e.accountNumber)),f("title",n.resourceTitle(e)),s(2),v(e.name),s(),g(e.accountNumber?3:-1),s(),g(e.direct&&e.groups.length?4:-1),s(),T(e.groups)}}function Co(i,t){if(i&1&&(a(0,"span",49),l(1),r()),i&2){let e=d(2).$implicit,n=d(3);f("title",n.hiddenResourcesTitle(e)),s(),y(" +",(e.resourceCount??e.resources.length)-2," more ")}}function ho(i,t){if(i&1&&(a(0,"div",44),k(1,xo,7,8,"span",48,Wi),_(3,Co,2,2,"span",49),r()),i&2){let e=d().$implicit;s(),T(e.resources.slice(0,2)),s(2),g((e.resourceCount??e.resources.length)>2?3:-1)}}function vo(i,t){if(i&1){let e=C();a(0,"div",37),u("click",function(){let o=p(e).$implicit,c=d(3);return m(c.openDetail(o))}),a(1,"div",38)(2,"input",39),u("click",function(o){return p(e),m(o.stopPropagation())})("change",function(){let o=p(e).$implicit,c=d(3);return m(c.toggleSelect(o.userId))}),r()(),a(3,"div",38)(4,"span",40),l(5),r(),k(6,Zi,2,2,"span",41,Oi),_(8,no,3,2,"span",42),r(),a(9,"div",38),_(10,io,2,0,"app-badge",43)(11,ro,3,0,"div",44),r(),a(12,"div",38),_(13,ao,2,0,"app-badge",43)(14,mo,4,1,"div",44),r(),a(15,"div",38),_(16,uo,2,0,"app-badge",43)(17,ho,4,1,"div",44),r()()}if(i&2){let e,n=t.$implicit,o=d(3);R(o.selected().has(n.userId)||o.panelUserId()===n.userId?"bg-brand/5":""),s(2),f("checked",o.selected().has(n.userId)),_e("aria-label","Select "+(n.email||n.userId)),s(3),y(" ",n.email||"(no email)"," "),s(),T(o.claimRows(n)),s(2),g(n.admin||n.pendingInvite?8:-1),s(2),g((e=o.store.groupsOf().get(n.userId))!=null&&e.length?11:10),s(3),g(n.roles.length===0?13:14),s(3),g(n.resources!=null&&n.resources.length?17:16)}}function bo(i,t){if(i&1){let e=C();a(0,"app-load-more",54),u("reached",function(){p(e);let o=d(3);return m(o.window.loadMore())}),r()}}function yo(i,t){if(i&1&&l(0),i&2){let e=d(3);y(" (filtered from ",e.store.users().length,") ")}}function wo(i,t){if(i&1){let e=C();a(0,"div",27)(1,"div",28)(2,"div",29)(3,"input",30),u("change",function(){p(e);let o=d(2);return m(o.toggleSelectAll())}),r()(),a(4,"div",31),l(5,"User"),r(),a(6,"div",31),l(7,"Groups"),r(),a(8,"div",31),l(9,"Roles"),r(),a(10,"div",31),l(11,"Network"),r()(),a(12,"div",32)(13,"div",33),k(14,vo,18,9,"div",34,$i),_(16,bo,1,0,"app-load-more",35),r()()(),a(17,"app-result-count",36),_(18,yo,1,1),r()}if(i&2){let e=d(2);s(3),f("checked",e.allSelected()),s(11),T(e.window.items()),s(2),g(e.window.hasMore()?16:-1),s(),f("shown",e.window.shown())("total",e.filtered().length),s(),g(e.filtered().length!==e.store.users().length?18:-1)}}function So(i,t){if(i&1){let e=C();a(0,"div",23)(1,"app-filter-popup",24),B("filtersChange",function(o){p(e);let c=d();return F(c.filters,o)||(c.filters=o),m(o)}),r(),a(2,"app-search-input",25),B("valueChange",function(o){p(e);let c=d();return F(c.query,o)||(c.query=o),m(o)}),r()(),_(3,Yi,3,1,"app-empty-state",26)(4,wo,19,5)}if(i&2){let e=d();s(),f("sections",e.filterSections()),P("filters",e.filters),s(),P("value",e.query),s(),g(e.filtered().length===0?3:4)}}function ko(i,t){if(i&1){let e=C();a(0,"div",9)(1,"span",55),l(2),r(),a(3,"button",56),u("click",function(){p(e);let o=d();return m(o.selected.set(o.emptySet))}),l(4," Clear "),r(),S(5,"span",57),a(6,"app-button",58),u("click",function(){p(e);let o=d();return m(o.openResend())}),l(7," Send invite emails "),r(),a(8,"app-button",59),u("click",function(){p(e);let o=d();return m(o.openAddToGroup())}),l(9," Add to group "),r(),a(10,"app-button",60),u("click",function(){p(e);let o=d();return m(o.openDelete())}),l(11," Delete "),r()()}if(i&2){let e=d();s(2),y(" ",e.selected().size," selected "),s(4),f("disabled",e.resendCandidates().length===0)("title",e.resendCandidates().length?"":"Only users still waiting on their invite")}}function To(i,t){if(i&1){let e=C();a(0,"app-user-create-form",63),u("created",function(){p(e);let o=d(2);return m(o.store.load())})("createdOne",function(o){p(e);let c=d(2);return m(c.openCreated(o))})("closed",function(){p(e);let o=d(2);return m(o.closePanel())}),r()}}function Do(i,t){if(i&1){let e=C();a(0,"app-user-detail",65),u("changed",function(){p(e);let o=d(3);return m(o.store.load())}),r()}if(i&2){let e=d(3);f("user",t)("justCreated",e.justCreated())}}function Uo(i,t){if(i&1&&_(0,Do,1,2,"app-user-detail",64),i&2){let e,n=d(2);g((e=n.panelUser())?0:-1,e)}}function Eo(i,t){if(i&1){let e=C();a(0,"app-resend-invites",66),u("sentAny",function(){p(e);let o=d(2);return m(o.store.load())})("closed",function(){p(e);let o=d(2);return m(o.closePanel())}),r()}if(i&2){let e=d(2);f("users",e.resendCandidates())("preselect",e.resendCandidateIds())}}function Io(i,t){if(i&1){let e=C();a(0,"app-button",67),u("click",function(){let o=p(e),c=d(3);return m(c.revokingAll.set(o))}),l(1,"Revoke everything"),r(),a(2,"app-button",68),u("click",function(){let o=p(e),c=d(3);return m(c.deleting.set(o))}),l(3,"Delete user"),r()}}function No(i,t){if(i&1&&_(0,Io,4,0),i&2){let e,n=d(2);g((e=n.panelUser())?0:-1,e)}}function Vo(i,t){if(i&1){let e=C();a(0,"app-panel",61),u("closed",function(){p(e);let o=d();return m(o.closePanel())}),_(1,To,1,0,"app-user-create-form")(2,Uo,1,1)(3,Eo,1,2,"app-resend-invites",10),ge(4,62),_(5,No,1,1),fe(),r()}if(i&2){let e,n=d();f("title",n.panelTitle())("contentKey",n.panelKind()+":"+n.panelUserId()),s(),g((e=n.panelKind())==="create"?1:e==="detail"?2:e==="resend"?3:-1),s(4),g(n.panelKind()==="detail"?5:-1)}}function Mo(i,t){if(i&1){let e=C();a(0,"app-bulk-delete-dialog",69),u("deleted",function(){p(e);let o=d();return m(o.afterBulk())})("closed",function(){p(e);let o=d();return m(o.bulkDeleteOpen.set(!1))}),r()}if(i&2){let e=d();f("users",e.store.users()??ot(2,Bi))("preselect",e.selectedIds())}}function Ro(i,t){if(i&1){let e=C();a(0,"app-grant-dialog",70),u("granted",function(o){p(e);let c=d();return m(c.addToGroups(o.ids))})("closed",function(){p(e);let o=d();return m(o.addToGroupOpen.set(!1))}),r()}if(i&2){let e=d();f("intro",e.addToGroupIntro())("options",e.groupOptions())("busy",e.groupBusy())}}function Ao(i,t){if(i&1){let e=C();a(0,"app-dialog",71),u("closed",function(){p(e);let o=d();return m(o.revokingAll.set(null))}),a(1,"p",72),l(2," Remove "),a(3,"b"),l(4,"every"),r(),l(5),r(),a(6,"div",73)(7,"app-button",74),u("click",function(){p(e);let o=d();return m(o.revokingAll.set(null))}),l(8,"Cancel"),r(),a(9,"app-button",75),u("click",function(){let o=p(e),c=d();return m(c.revokeAll(o))}),l(10,"Revoke everything"),r()()()}if(i&2){let e=d();s(5),y(" role and network-resource grant of ",t.email," and take them out of all groups? The user account stays (they can be granted access again); this cannot be undone in one step. "),s(4),f("loading",e.revokeBusy())}}function Po(i,t){if(i&1){let e=C();a(0,"app-user-delete-dialog",76),u("deleted",function(){p(e);let o=d();return m(o.afterDeleted())})("closed",function(){p(e);let o=d();return m(o.deleting.set(null))}),r()}i&2&&f("user",t)}var Fo=[],Ft=class i{federation=h(Te);claimRows(t){if(!t.claims)return Fo;let e=this.claimRowCache.get(t);return e||(e=this.federation.claimRows(t.claims),this.claimRowCache.set(t,e)),e}claimRowCache=new WeakMap;store=h(Ee);api=h(M);groupsApi=h(ne);names=h(W);roleColors=h(Ue);toast=h(V);query=x("");bulkDeleteOpen=x(!1);addToGroupOpen=x(!1);groups=this.store.groups;groupBusy=x(!1);addToGroupIntro=b(()=>`${this.selected().size} user${this.selected().size===1?"":"s"} selected \u2014 each gets every picked group's whole bundle (roles + resources), long-term.`);groupOptions=b(()=>this.groups().map(t=>({id:t.groupId,label:t.name,sublabel:`${t.members.length} member${t.members.length===1?"":"s"}`})));openAddToGroup(){this.addToGroupOpen.set(!0)}addToGroups(t){if(!t.length)return;let e=this.selectedIds(),n=o=>{if(o>=t.length){this.groupBusy.set(!1),this.addToGroupOpen.set(!1),this.toast.success(`Added ${e.length} user${e.length===1?"":"s"} to ${t.length} group${t.length===1?"":"s"}`),this.selected.set(new Set),this.store.load();return}this.groupBusy.set(!0),this.groupsApi.addMembers(t[o],e).subscribe({next:()=>n(o+1),error:c=>{this.groupBusy.set(!1),this.toast.error(w(c,"Could not add to the group."))}})};n(0)}TABS=["People","Service users"];tab=x("People");serviceQuery=x("");serviceTab=le(ae);selected=x(new Set);emptySet=new Set;panelKind=x(null);panelUserId=x(null);justCreated=x(null);panelTpl=le("panelTpl");selectedUsers=b(()=>(this.store.users()??[]).filter(t=>this.selected().has(t.userId)));selectedIds=b(()=>Array.from(this.selected()));singleSelected=b(()=>this.selectedUsers().length===1?this.selectedUsers()[0]:null);panelUser=b(()=>(this.store.users()??[]).find(t=>t.userId===this.panelUserId())??null);panelTitle=b(()=>{switch(this.panelKind()){case"create":return"Invite users";case"detail":return"User info";case"resend":return"Send invite emails";default:return"User info"}});openCreate(){this.panelUserId.set(null),this.panelKind.set("create")}openDetail(t){this.justCreated.set(null),this.panelUserId.set(t.userId),this.panelKind.set("detail")}openCreated(n){var o=n,{user:t}=o,e=je(o,["user"]);this.store.upsert(t),this.justCreated.set(e),this.panelUserId.set(t.userId),this.panelKind.set("detail")}closePanel(){this.panelKind.set(null),this.panelUserId.set(null),this.justCreated.set(null)}openDelete(){let t=this.singleSelected();t?this.deleting.set(t):this.bulkDeleteOpen.set(!0)}resendCandidates=b(()=>this.selectedUsers().filter(t=>t.pendingInvite));resendCandidateIds=b(()=>this.resendCandidates().map(t=>t.userId));openResend(){if(this.resendCandidates().length===0){this.toast.error("None of the selected users are waiting on an invite.");return}this.panelUserId.set(null),this.panelKind.set("resend")}allSelected=b(()=>{let t=this.filtered();return t.length>0&&t.every(e=>this.selected().has(e.userId))});toggleSelect(t){this.selected.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}toggleSelectAll(){let t=this.filtered();this.selected.update(e=>{let n=new Set(e);if(t.every(o=>n.has(o.userId)))for(let o of t)n.delete(o.userId);else for(let o of t)n.add(o.userId);return n})}afterBulk(){this.selected.set(new Set),this.closePanel(),this.store.load()}deleting=x(null);revokingAll=x(null);revokeBusy=x(!1);revokeAll(t){this.revokeBusy.set(!0),this.api.revokeAllAccess(t.userId).subscribe({next:({removed:e})=>{this.revokeBusy.set(!1),this.revokingAll.set(null),this.toast.success(`Revoked everything for ${t.email} (${e} entr${e===1?"y":"ies"})`),this.store.load()},error:e=>{this.revokeBusy.set(!1),this.toast.error(w(e,"Could not revoke everything."))}})}auditApi=h(De);reportBusy=x(!1);destroyRef=h(me);accessReport(){this.reportBusy.set(!0);let t=e=>{this.reportBusy.set(!1),this.toast.error(w(e,"Could not build the access report."))};this.auditApi.startAccessReport().subscribe({next:e=>{this.auditApi.accessReportJob(e.jobId).pipe(Je({delay:2e3}),Xe(n=>n.status==="running",!0),Qe(),ve(this.destroyRef)).subscribe({next:n=>{this.reportBusy.set(!1),n.status==="done"&&n.url?(this.toast.success(`Access report ready \u2014 ${n.rows??0} rows`),window.open(n.url,"_blank","noopener")):this.toast.error(n.error||"Could not build the access report.")},error:t})},error:t})}filters=x([]);filterSections=b(()=>{let t=["role","resource","team","user","status"],e={role:"Role",resource:"Resource",team:"Team",user:"User",status:"Status"},n=new Map(t.map(o=>[o,new Map]));for(let o of this.store.users()??[])for(let c of t){let D=n.get(c);for(let pe of new Set(this.facetValues(o,c)))D.set(pe,(D.get(pe)??0)+1)}return t.map(o=>({key:o,label:e[o],options:[...n.get(o).entries()].sort((c,D)=>c[0].localeCompare(D[0])).map(([c,D])=>({value:c,count:D}))}))});selectedByKey=b(()=>{let t=new Map;for(let e of this.filters()){let n=t.get(e.key);n||t.set(e.key,n=new Set),n.add(e.value)}return t});serverHits=x(null);serverSearchSeq=0;filtered=b(()=>{let t=this.store.users()??[],e=this.query().trim().toLowerCase(),n=this.selectedByKey();if(!e&&n.size===0)return t;let o=e?this.serverHits():null;return t.filter(c=>{if(o?!o.has(c.userId):!this.matchesSearch(c,e))return!1;for(let[D,pe]of n)if(!this.facetValues(c,D).some(Bt=>pe.has(Bt)))return!1;return!0})});serverSearch(t){let e=++this.serverSearchSeq;if(!t){this.serverHits.set(null);return}this.api.listUsersPage({q:t,limit:200}).subscribe({next:n=>{e===this.serverSearchSeq&&this.serverHits.set(new Set(n.items.map(o=>o.userId)))},error:()=>{}})}facetValues(t,e){switch(e){case"role":return t.roleNames??t.roles.map(n=>n.roleName);case"resource":return(t.resources??[]).map(n=>n.name);case"team":return t.groupNames??[...t.roles.flatMap(n=>n.groups),...(t.resources??[]).flatMap(n=>n.groups)];case"user":return[t.email];case"status":{let n=[];return t.admin&&n.push("Admin"),t.pendingInvite&&n.push("Pending invite"),t.roles.length===0&&n.push("No roles"),n}default:return[]}}matchesSearch(t,e){return e?t.email.toLowerCase().includes(e)||this.claimRows(t).some(n=>n.value.toLowerCase().includes(e))||t.roles.some(n=>n.roleName.toLowerCase().includes(e)||n.accountNumber.toLowerCase().includes(e)||this.names.label(n.accountNumber).toLowerCase().includes(e)||n.groups.some(o=>o.toLowerCase().includes(e)))||(t.resources??[]).some(n=>n.name.toLowerCase().includes(e)||n.groups.some(o=>o.toLowerCase().includes(e))):!0}window=yt(this.filtered,30);acctChip(t){return t?"role-chip":"bg-muted text-surface-foreground ring-1 ring-border"}acctChipColor(t){return t?oe(t):null}roleChipColor(t){return this.roleColors.colorOf(t.accountNumber,t.roleName)||oe(t.accountNumber)}roleSource(t){let e=t.groups.length?`the ${t.groups.join(", ")} team${t.groups.length===1?"":"s"}`:"";return t.direct&&e?`Held directly, and via ${e}`:e?`Granted via ${e}`:"Granted directly"}roleTitle(t){return`${t.roleName} \xB7 ${this.names.label(t.accountNumber)} \u2014 ${this.roleSource(t)}`}resourceTitle(t){let e=t.accountNumber?` \xB7 ${this.names.label(t.accountNumber)}`:"";return`${t.name}${e} \u2014 ${this.resourceSource(t)}`}hiddenRolesTitle(t){return t.roles.slice(2).map(e=>`${e.roleName} \xB7 ${this.names.label(e.accountNumber)}`).join(`
7
+ `)}hiddenResourcesTitle(t){return(t.resources??[]).slice(2).map(e=>`${e.name}${e.accountNumber?` \xB7 ${this.names.label(e.accountNumber)}`:""}`).join(`
8
+ `)}resourceSource(t){let e=t.groups.length?`the ${t.groups.join(", ")} team${t.groups.length===1?"":"s"}`:"";return t.direct&&e?`Held directly, and via ${e}`:e?`Granted via ${e}`:"Granted directly"}afterDeleted(){let t=this.deleting()?.userId??null;this.deleting.set(null),t&&t===this.panelUserId()&&this.closePanel(),this.selected.set(new Set),this.store.load()}constructor(){this.store.load(),this.names.ensure(),this.roleColors.ensure(),ye(this.panelKind,this.panelTpl,()=>this.closePanel());let t;X(()=>{let o=this.query().trim();t&&clearTimeout(t),J(()=>{if(!o){this.serverSearch("");return}t=setTimeout(()=>this.serverSearch(o),250)})});let e=h(at),n=h(st);e.queryParamMap.subscribe(o=>{this.tab.set(o.get("tab")==="service-users"?"Service users":"People")}),X(()=>{let o=this.tab()==="Service users"?"service-users":null;J(()=>{this.closePanel(),(e.snapshot.queryParamMap.get("tab")??null)!==o&&n.navigate([],{relativeTo:e,queryParams:{tab:o},replaceUrl:!0})})})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=U({type:i,selectors:[["app-users-page"]],viewQuery:function(e,n){e&1&&(se(n.serviceTab,ae,5),se(n.panelTpl,Fi,5)),e&2&&xe(2)},hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],decls:18,vars:14,consts:[["panelTpl",""],[3,"tabbed","fill"],["pageHeader","","title","Users",3,"subtitle","subtitleInfo","showHeaderSearch"],["headerActions","",1,"flex","items-center","gap-3"],["size","lg"],[1,"mt-4","block",3,"selectedChange","tabs","selected"],["tone","danger"],[1,"space-y-2"],["title","No users yet"],["floatingBar","",1,"floating-bar","pointer-events-auto","flex","items-center","gap-2.5","rounded-xl","border-[1.5px]","border-brand/60","px-3","py-2"],[3,"users","preselect"],["title","Add to groups","placeholder","Filter groups","verb","Add to",3,"intro","options","busy"],["title","Revoke everything"],[3,"user"],["size","lg","variant","outline",3,"click","loading"],["name","download",1,"h-4","w-4"],["size","lg",3,"click"],["name","plus",1,"h-4","w-4",3,"strokeWidth"],[1,"mb-3","flex","shrink-0","justify-end"],["compact","","placeholder","Search by name or role",1,"w-[260px]",3,"valueChange","value"],[3,"queryChange","query"],["sizeClass","h-12 w-full"],[1,"font-medium"],[1,"mb-3","flex","shrink-0","items-start","gap-2"],[1,"min-w-0",3,"filtersChange","sections","filters"],["compact","","placeholder","Search by email or role",1,"ml-auto","w-[260px]","shrink-0",3,"valueChange","value"],["title","No matches"],[1,"flex","min-h-0","flex-1","flex-col","overflow-x-auto"],[1,"grid","min-w-[760px]","shrink-0","grid-cols-[40px_22%_18%_30%_minmax(0,1fr)]"],[1,"flex","items-center","px-4","py-2.5"],["type","checkbox","aria-label","Select all listed users",1,"ui-checkbox",3,"change","checked"],[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"],["data-testid","row",1,"group","grid","cursor-pointer","grid-cols-[40px_22%_18%_30%_minmax(0,1fr)]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-state-hover",3,"class"],["appInfiniteScroll",""],["noun","user",3,"shown","total"],["data-testid","row",1,"group","grid","cursor-pointer","grid-cols-[40px_22%_18%_30%_minmax(0,1fr)]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-state-hover",3,"click"],[1,"px-4","py-3"],["type","checkbox",1,"ui-checkbox",3,"click","change","checked"],[1,"block","break-words","font-medium","tracking-[0.015em]","text-surface-foreground"],[1,"block","text-xs","text-muted-foreground"],[1,"mt-1","flex","flex-wrap","gap-1.5"],["tone","dashed"],[1,"flex","flex-wrap","gap-1.5"],["tone","brand"],["tone","amber","icon","clock"],[1,"min-w-0","truncate"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium",3,"class","--role-c","title"],[1,"inline-flex","items-center","whitespace-nowrap","rounded-full","border","border-border","px-2","py-0.5","text-xs","font-medium","text-muted-foreground",3,"title"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium",3,"title"],[1,"ml-1","min-w-0","shrink-[60]","truncate","text-muted-foreground"],[1,"ml-1.5","chip-tag","min-w-0","shrink-[400]"],[1,"ml-1","chip-tag","min-w-0","shrink-[400]"],["appInfiniteScroll","",3,"reached"],[1,"text-sm","font-medium","text-brand-muted-foreground"],[1,"text-xs","text-muted-foreground","hover:text-surface-foreground","hover:underline",3,"click"],[1,"mx-0.5","h-4","w-px","bg-border"],["size","sm","variant","outline",3,"click","disabled","title"],["size","sm","variant","outline",3,"click"],["size","sm","variant","danger",3,"click"],["size","lg",3,"closed","title","contentKey"],["ngProjectAs","[panel-footer]",5,["","panel-footer",""]],[3,"created","createdOne","closed"],[3,"user","justCreated"],[3,"changed","user","justCreated"],[3,"sentAny","closed","users","preselect"],["size","lg","variant","outline",1,"mr-auto",3,"click"],["size","lg","variant","danger",3,"click"],[3,"deleted","closed","users","preselect"],["title","Add to groups","placeholder","Filter groups","verb","Add to",3,"granted","closed","intro","options","busy"],["title","Revoke everything",3,"closed"],[1,"text-sm","text-surface-foreground"],[1,"mt-4","flex","justify-end","gap-2"],["variant","outline",3,"click"],["variant","danger",3,"click","loading"],[3,"deleted","closed","user"]],template:function(e,n){if(e&1){let o=C();a(0,"app-page",1)(1,"app-page-header",2)(2,"div",3),_(3,ji,6,2)(4,qi,3,1,"app-button",4),r(),a(5,"app-tabs",5),B("selectedChange",function(D){return p(o),F(n.tab,D)||(n.tab=D),m(D)}),r()(),_(6,Hi,3,2)(7,zi,2,1,"app-banner",6)(8,Ki,4,0,"div",7)(9,Qi,5,0,"app-empty-state",8)(10,So,5,4),_(11,ko,12,3,"div",9),r(),ue(12,Vo,6,4,"ng-template",null,0,he),_(14,Mo,1,3,"app-bulk-delete-dialog",10),_(15,Ro,1,3,"app-grant-dialog",11),_(16,Ao,11,2,"app-dialog",12),_(17,Po,1,1,"app-user-delete-dialog",13)}if(e&2){let o,c;f("tabbed",!0)("fill",!0),s(),f("subtitle",n.tab()==="People"?"Everyone in the directory and the roles they can assume.":"Machine identities for automation.")("subtitleInfo",n.tab()==="People"?"Search freely, or add filters for role, resource, account, or team.":"Each gets a client ID + secret and calls the API directly, no login.")("showHeaderSearch",!1),s(2),g(n.tab()==="People"?3:4),s(2),f("tabs",n.TABS),P("selected",n.tab),s(),g(n.tab()!=="People"?6:n.store.error()?7:n.store.users()===null?8:n.store.users().length===0?9:10),s(5),g(n.tab()==="People"&&n.store.users()!==null&&!n.store.error()&&n.selected().size>0?11:-1),s(3),g(n.bulkDeleteOpen()?14:-1),s(),g(n.addToGroupOpen()?15:-1),s(),g((o=n.revokingAll())?16:-1,o),s(),g((c=n.deleting())?17:-1,c)}},dependencies:[G,I,te,Ie,Ne,Ve,Pe,Q,ie,L,Me,ft,ht,vt,A,be,ke,xt,gt,ee,bt,we,Se,ae],encapsulation:2})};export{Ee as a,Ft as b};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-J4C7C5KO.js";import"./chunk-LMLXTVZG.js";import"./chunk-HK56COCB.js";import"./chunk-DCOFBAKJ.js";import"./chunk-RI77LE5V.js";import"./chunk-IKK5DQ3Z.js";import"./chunk-H5H727H6.js";import"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import"./chunk-Z3KONI7L.js";import"./chunk-O4QSFUXB.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 ResourcesPageComponent};
@@ -0,0 +1 @@
1
+ import{Q as d,pb as i,qb as o,rb as a}from"./chunk-P5WRM37W.js";function p(e,t=24,l={}){let n=d(t),g=l.rewindOn??e;a(()=>{g(),i(()=>n.set(t))});let r=o(()=>e().length),s=o(()=>e().slice(0,n())),m=o(()=>Math.min(n(),e().length)),w=o(()=>n()<e().length);return{items:s,shown:m,total:r,hasMore:w,loadMore:()=>n.update(M=>M+t)}}export{p as a};
@@ -0,0 +1,8 @@
1
+ import{d as g}from"./chunk-WFIHWVQO.js";var _t=g((Mn,Lt)=>{"use strict";Lt.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var I=g(P=>{"use strict";var st,Le=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];P.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};P.getSymbolTotalCodewords=function(t){return Le[t]};P.getBCHDigit=function(n){let t=0;for(;n!==0;)t++,n>>>=1;return t};P.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');st=t};P.isKanjiModeEnabled=function(){return typeof st<"u"};P.toSJIS=function(t){return st(t)}});var j=g(m=>{"use strict";m.L={bit:1};m.M={bit:0};m.Q={bit:3};m.H={bit:2};function _e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return m.L;case"m":case"medium":return m.M;case"q":case"quartile":return m.Q;case"h":case"high":return m.H;default:throw new Error("Unknown EC Level: "+n)}}m.isValid=function(t){return t&&typeof t.bit<"u"&&t.bit>=0&&t.bit<4};m.from=function(t,e){if(m.isValid(t))return t;try{return _e(t)}catch{return e}}});var qt=g((bn,Ut)=>{"use strict";function xt(){this.buffer=[],this.length=0}xt.prototype={get:function(n){let t=Math.floor(n/8);return(this.buffer[t]>>>7-n%8&1)===1},put:function(n,t){for(let e=0;e<t;e++)this.putBit((n>>>t-e-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(n){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),n&&(this.buffer[t]|=128>>>this.length%8),this.length++}};Ut.exports=xt});var Ft=g((Rn,Dt)=>{"use strict";function k(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}k.prototype.set=function(n,t,e,r){let o=n*this.size+t;this.data[o]=e,r&&(this.reservedBit[o]=!0)};k.prototype.get=function(n,t){return this.data[n*this.size+t]};k.prototype.xor=function(n,t,e){this.data[n*this.size+t]^=e};k.prototype.isReserved=function(n,t){return this.reservedBit[n*this.size+t]};Dt.exports=k});var kt=g(G=>{"use strict";var xe=I().getSymbolSize;G.getRowColCoords=function(t){if(t===1)return[];let e=Math.floor(t/7)+2,r=xe(t),o=r===145?26:Math.ceil((r-13)/(2*e-2))*2,i=[r-7];for(let s=1;s<e-1;s++)i[s]=i[s-1]-o;return i.push(6),i.reverse()};G.getPositions=function(t){let e=[],r=G.getRowColCoords(t),o=r.length;for(let i=0;i<o;i++)for(let s=0;s<o;s++)i===0&&s===0||i===0&&s===o-1||i===o-1&&s===0||e.push([r[i],r[s]]);return e}});var Ht=g(Vt=>{"use strict";var Ue=I().getSymbolSize,zt=7;Vt.getPositions=function(t){let e=Ue(t);return[[0,0],[e-zt,0],[0,e-zt]]}});var Kt=g(d=>{"use strict";d.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var b={N1:3,N2:3,N3:40,N4:10};d.isValid=function(t){return t!=null&&t!==""&&!isNaN(t)&&t>=0&&t<=7};d.from=function(t){return d.isValid(t)?parseInt(t,10):void 0};d.getPenaltyN1=function(t){let e=t.size,r=0,o=0,i=0,s=null,u=null;for(let c=0;c<e;c++){o=i=0,s=u=null;for(let l=0;l<e;l++){let a=t.get(c,l);a===s?o++:(o>=5&&(r+=b.N1+(o-5)),s=a,o=1),a=t.get(l,c),a===u?i++:(i>=5&&(r+=b.N1+(i-5)),u=a,i=1)}o>=5&&(r+=b.N1+(o-5)),i>=5&&(r+=b.N1+(i-5))}return r};d.getPenaltyN2=function(t){let e=t.size,r=0;for(let o=0;o<e-1;o++)for(let i=0;i<e-1;i++){let s=t.get(o,i)+t.get(o,i+1)+t.get(o+1,i)+t.get(o+1,i+1);(s===4||s===0)&&r++}return r*b.N2};d.getPenaltyN3=function(t){let e=t.size,r=0,o=0,i=0;for(let s=0;s<e;s++){o=i=0;for(let u=0;u<e;u++)o=o<<1&2047|t.get(s,u),u>=10&&(o===1488||o===93)&&r++,i=i<<1&2047|t.get(u,s),u>=10&&(i===1488||i===93)&&r++}return r*b.N3};d.getPenaltyN4=function(t){let e=0,r=t.data.length;for(let i=0;i<r;i++)e+=t.data[i];return Math.abs(Math.ceil(e*100/r/5)-10)*b.N4};function qe(n,t,e){switch(n){case d.Patterns.PATTERN000:return(t+e)%2===0;case d.Patterns.PATTERN001:return t%2===0;case d.Patterns.PATTERN010:return e%3===0;case d.Patterns.PATTERN011:return(t+e)%3===0;case d.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(e/3))%2===0;case d.Patterns.PATTERN101:return t*e%2+t*e%3===0;case d.Patterns.PATTERN110:return(t*e%2+t*e%3)%2===0;case d.Patterns.PATTERN111:return(t*e%3+(t+e)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}d.applyMask=function(t,e){let r=e.size;for(let o=0;o<r;o++)for(let i=0;i<r;i++)e.isReserved(i,o)||e.xor(i,o,qe(t,i,o))};d.getBestMask=function(t,e){let r=Object.keys(d.Patterns).length,o=0,i=1/0;for(let s=0;s<r;s++){e(s),d.applyMask(s,t);let u=d.getPenaltyN1(t)+d.getPenaltyN2(t)+d.getPenaltyN3(t)+d.getPenaltyN4(t);d.applyMask(s,t),u<i&&(i=u,o=s)}return o}});var ct=g(ut=>{"use strict";var N=j(),Q=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],$=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ut.getBlocksCount=function(t,e){switch(e){case N.L:return Q[(t-1)*4+0];case N.M:return Q[(t-1)*4+1];case N.Q:return Q[(t-1)*4+2];case N.H:return Q[(t-1)*4+3];default:return}};ut.getTotalCodewordsCount=function(t,e){switch(e){case N.L:return $[(t-1)*4+0];case N.M:return $[(t-1)*4+1];case N.Q:return $[(t-1)*4+2];case N.H:return $[(t-1)*4+3];default:return}}});var Jt=g(Z=>{"use strict";var z=new Uint8Array(512),W=new Uint8Array(256);(function(){let t=1;for(let e=0;e<255;e++)z[e]=t,W[t]=e,t<<=1,t&256&&(t^=285);for(let e=255;e<512;e++)z[e]=z[e-255]})();Z.log=function(t){if(t<1)throw new Error("log("+t+")");return W[t]};Z.exp=function(t){return z[t]};Z.mul=function(t,e){return t===0||e===0?0:z[W[t]+W[e]]}});var Yt=g(V=>{"use strict";var lt=Jt();V.mul=function(t,e){let r=new Uint8Array(t.length+e.length-1);for(let o=0;o<t.length;o++)for(let i=0;i<e.length;i++)r[o+i]^=lt.mul(t[o],e[i]);return r};V.mod=function(t,e){let r=new Uint8Array(t);for(;r.length-e.length>=0;){let o=r[0];for(let s=0;s<e.length;s++)r[s]^=lt.mul(e[s],o);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r};V.generateECPolynomial=function(t){let e=new Uint8Array([1]);for(let r=0;r<t;r++)e=V.mul(e,new Uint8Array([1,lt.exp(r)]));return e}});var Gt=g((Fn,jt)=>{"use strict";var Ot=Yt();function at(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}at.prototype.initialize=function(t){this.degree=t,this.genPoly=Ot.generateECPolynomial(this.degree)};at.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");let e=new Uint8Array(t.length+this.degree);e.set(t);let r=Ot.mod(e,this.genPoly),o=this.degree-r.length;if(o>0){let i=new Uint8Array(this.degree);return i.set(r,o),i}return r};jt.exports=at});var ft=g(Qt=>{"use strict";Qt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}});var gt=g(B=>{"use strict";var $t="[0-9]+",De="[A-Z $%*+\\-./:]+",H="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";H=H.replace(/u/g,"\\u");var Fe="(?:(?![A-Z0-9 $%*+\\-./:]|"+H+`)(?:.|[\r
2
+ ]))+`;B.KANJI=new RegExp(H,"g");B.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");B.BYTE=new RegExp(Fe,"g");B.NUMERIC=new RegExp($t,"g");B.ALPHANUMERIC=new RegExp(De,"g");var ke=new RegExp("^"+H+"$"),ze=new RegExp("^"+$t+"$"),Ve=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");B.testKanji=function(t){return ke.test(t)};B.testNumeric=function(t){return ze.test(t)};B.testAlphanumeric=function(t){return Ve.test(t)}});var M=g(p=>{"use strict";var He=ft(),dt=gt();p.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};p.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};p.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};p.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};p.MIXED={bit:-1};p.getCharCountIndicator=function(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!He.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]};p.getBestModeForData=function(t){return dt.testNumeric(t)?p.NUMERIC:dt.testAlphanumeric(t)?p.ALPHANUMERIC:dt.testKanji(t)?p.KANJI:p.BYTE};p.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")};p.isValid=function(t){return t&&t.bit&&t.ccBits};function Ke(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return p.NUMERIC;case"alphanumeric":return p.ALPHANUMERIC;case"kanji":return p.KANJI;case"byte":return p.BYTE;default:throw new Error("Unknown mode: "+n)}}p.from=function(t,e){if(p.isValid(t))return t;try{return Ke(t)}catch{return e}}});var te=g(R=>{"use strict";var X=I(),Je=ct(),Wt=j(),S=M(),ht=ft(),Xt=7973,Zt=X.getBCHDigit(Xt);function Ye(n,t,e){for(let r=1;r<=40;r++)if(t<=R.getCapacity(r,e,n))return r}function vt(n,t){return S.getCharCountIndicator(n,t)+4}function Oe(n,t){let e=0;return n.forEach(function(r){let o=vt(r.mode,t);e+=o+r.getBitsLength()}),e}function je(n,t){for(let e=1;e<=40;e++)if(Oe(n,e)<=R.getCapacity(e,t,S.MIXED))return e}R.from=function(t,e){return ht.isValid(t)?parseInt(t,10):e};R.getCapacity=function(t,e,r){if(!ht.isValid(t))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=S.BYTE);let o=X.getSymbolTotalCodewords(t),i=Je.getTotalCodewordsCount(t,e),s=(o-i)*8;if(r===S.MIXED)return s;let u=s-vt(r,t);switch(r){case S.NUMERIC:return Math.floor(u/10*3);case S.ALPHANUMERIC:return Math.floor(u/11*2);case S.KANJI:return Math.floor(u/13);case S.BYTE:default:return Math.floor(u/8)}};R.getBestVersionForData=function(t,e){let r,o=Wt.from(e,Wt.M);if(Array.isArray(t)){if(t.length>1)return je(t,o);if(t.length===0)return 1;r=t[0]}else r=t;return Ye(r.mode,r.getLength(),o)};R.getEncodedBits=function(t){if(!ht.isValid(t)||t<7)throw new Error("Invalid QR Code version");let e=t<<12;for(;X.getBCHDigit(e)-Zt>=0;)e^=Xt<<X.getBCHDigit(e)-Zt;return t<<12|e}});var oe=g(re=>{"use strict";var pt=I(),ne=1335,Ge=21522,ee=pt.getBCHDigit(ne);re.getEncodedBits=function(t,e){let r=t.bit<<3|e,o=r<<10;for(;pt.getBCHDigit(o)-ee>=0;)o^=ne<<pt.getBCHDigit(o)-ee;return(r<<10|o)^Ge}});var se=g((Jn,ie)=>{"use strict";var Qe=M();function x(n){this.mode=Qe.NUMERIC,this.data=n.toString()}x.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)};x.prototype.getLength=function(){return this.data.length};x.prototype.getBitsLength=function(){return x.getBitsLength(this.data.length)};x.prototype.write=function(t){let e,r,o;for(e=0;e+3<=this.data.length;e+=3)r=this.data.substr(e,3),o=parseInt(r,10),t.put(o,10);let i=this.data.length-e;i>0&&(r=this.data.substr(e),o=parseInt(r,10),t.put(o,i*3+1))};ie.exports=x});var ce=g((Yn,ue)=>{"use strict";var $e=M(),wt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function U(n){this.mode=$e.ALPHANUMERIC,this.data=n}U.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};U.prototype.getLength=function(){return this.data.length};U.prototype.getBitsLength=function(){return U.getBitsLength(this.data.length)};U.prototype.write=function(t){let e;for(e=0;e+2<=this.data.length;e+=2){let r=wt.indexOf(this.data[e])*45;r+=wt.indexOf(this.data[e+1]),t.put(r,11)}this.data.length%2&&t.put(wt.indexOf(this.data[e]),6)};ue.exports=U});var ae=g((On,le)=>{"use strict";var We=M();function q(n){this.mode=We.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}q.getBitsLength=function(t){return t*8};q.prototype.getLength=function(){return this.data.length};q.prototype.getBitsLength=function(){return q.getBitsLength(this.data.length)};q.prototype.write=function(n){for(let t=0,e=this.data.length;t<e;t++)n.put(this.data[t],8)};le.exports=q});var ge=g((jn,fe)=>{"use strict";var Ze=M(),Xe=I();function D(n){this.mode=Ze.KANJI,this.data=n}D.getBitsLength=function(t){return t*13};D.prototype.getLength=function(){return this.data.length};D.prototype.getBitsLength=function(){return D.getBitsLength(this.data.length)};D.prototype.write=function(n){let t;for(t=0;t<this.data.length;t++){let e=Xe.toSJIS(this.data[t]);if(e>=33088&&e<=40956)e-=33088;else if(e>=57408&&e<=60351)e-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+`
3
+ Make sure your charset is UTF-8`);e=(e>>>8&255)*192+(e&255),n.put(e,13)}};fe.exports=D});var de=g((Gn,mt)=>{"use strict";var K={single_source_shortest_paths:function(n,t,e){var r={},o={};o[t]=0;var i=K.PriorityQueue.make();i.push(t,0);for(var s,u,c,l,a,w,h,y,A;!i.empty();){s=i.pop(),u=s.value,l=s.cost,a=n[u]||{};for(c in a)a.hasOwnProperty(c)&&(w=a[c],h=l+w,y=o[c],A=typeof o[c]>"u",(A||y>h)&&(o[c]=h,i.push(c,h),r[c]=u))}if(typeof e<"u"&&typeof o[e]>"u"){var T=["Could not find a path from ",t," to ",e,"."].join("");throw new Error(T)}return r},extract_shortest_path_from_predecessor_list:function(n,t){for(var e=[],r=t,o;r;)e.push(r),o=n[r],r=n[r];return e.reverse(),e},find_path:function(n,t,e){var r=K.single_source_shortest_paths(n,t,e);return K.extract_shortest_path_from_predecessor_list(r,e)},PriorityQueue:{make:function(n){var t=K.PriorityQueue,e={},r;n=n||{};for(r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e.queue=[],e.sorter=n.sorter||t.default_sorter,e},default_sorter:function(n,t){return n.cost-t.cost},push:function(n,t){var e={value:n,cost:t};this.queue.push(e),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof mt<"u"&&(mt.exports=K)});var Be=g(F=>{"use strict";var f=M(),we=se(),me=ce(),ye=ae(),Ee=ge(),J=gt(),v=I(),ve=de();function he(n){return unescape(encodeURIComponent(n)).length}function Y(n,t,e){let r=[],o;for(;(o=n.exec(e))!==null;)r.push({data:o[0],index:o.index,mode:t,length:o[0].length});return r}function Ce(n){let t=Y(J.NUMERIC,f.NUMERIC,n),e=Y(J.ALPHANUMERIC,f.ALPHANUMERIC,n),r,o;return v.isKanjiModeEnabled()?(r=Y(J.BYTE,f.BYTE,n),o=Y(J.KANJI,f.KANJI,n)):(r=Y(J.BYTE_KANJI,f.BYTE,n),o=[]),t.concat(e,r,o).sort(function(s,u){return s.index-u.index}).map(function(s){return{data:s.data,mode:s.mode,length:s.length}})}function yt(n,t){switch(t){case f.NUMERIC:return we.getBitsLength(n);case f.ALPHANUMERIC:return me.getBitsLength(n);case f.KANJI:return Ee.getBitsLength(n);case f.BYTE:return ye.getBitsLength(n)}}function tn(n){return n.reduce(function(t,e){let r=t.length-1>=0?t[t.length-1]:null;return r&&r.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)},[])}function en(n){let t=[];for(let e=0;e<n.length;e++){let r=n[e];switch(r.mode){case f.NUMERIC:t.push([r,{data:r.data,mode:f.ALPHANUMERIC,length:r.length},{data:r.data,mode:f.BYTE,length:r.length}]);break;case f.ALPHANUMERIC:t.push([r,{data:r.data,mode:f.BYTE,length:r.length}]);break;case f.KANJI:t.push([r,{data:r.data,mode:f.BYTE,length:he(r.data)}]);break;case f.BYTE:t.push([{data:r.data,mode:f.BYTE,length:he(r.data)}])}}return t}function nn(n,t){let e={},r={start:{}},o=["start"];for(let i=0;i<n.length;i++){let s=n[i],u=[];for(let c=0;c<s.length;c++){let l=s[c],a=""+i+c;u.push(a),e[a]={node:l,lastCount:0},r[a]={};for(let w=0;w<o.length;w++){let h=o[w];e[h]&&e[h].node.mode===l.mode?(r[h][a]=yt(e[h].lastCount+l.length,l.mode)-yt(e[h].lastCount,l.mode),e[h].lastCount+=l.length):(e[h]&&(e[h].lastCount=l.length),r[h][a]=yt(l.length,l.mode)+4+f.getCharCountIndicator(l.mode,t))}}o=u}for(let i=0;i<o.length;i++)r[o[i]].end=0;return{map:r,table:e}}function pe(n,t){let e,r=f.getBestModeForData(n);if(e=f.from(t,r),e!==f.BYTE&&e.bit<r.bit)throw new Error('"'+n+'" cannot be encoded with mode '+f.toString(e)+`.
4
+ Suggested mode is: `+f.toString(r));switch(e===f.KANJI&&!v.isKanjiModeEnabled()&&(e=f.BYTE),e){case f.NUMERIC:return new we(n);case f.ALPHANUMERIC:return new me(n);case f.KANJI:return new Ee(n);case f.BYTE:return new ye(n)}}F.fromArray=function(t){return t.reduce(function(e,r){return typeof r=="string"?e.push(pe(r,null)):r.data&&e.push(pe(r.data,r.mode)),e},[])};F.fromString=function(t,e){let r=Ce(t,v.isKanjiModeEnabled()),o=en(r),i=nn(o,e),s=ve.find_path(i.map,"start","end"),u=[];for(let c=1;c<s.length-1;c++)u.push(i.table[s[c]].node);return F.fromArray(tn(u))};F.rawSplit=function(t){return F.fromArray(Ce(t,v.isKanjiModeEnabled()))}});var Te=g(Ae=>{"use strict";var et=I(),Et=j(),rn=qt(),on=Ft(),sn=kt(),un=Ht(),At=Kt(),Tt=ct(),cn=Gt(),tt=te(),ln=oe(),an=M(),Ct=Be();function fn(n,t){let e=n.size,r=un.getPositions(t);for(let o=0;o<r.length;o++){let i=r[o][0],s=r[o][1];for(let u=-1;u<=7;u++)if(!(i+u<=-1||e<=i+u))for(let c=-1;c<=7;c++)s+c<=-1||e<=s+c||(u>=0&&u<=6&&(c===0||c===6)||c>=0&&c<=6&&(u===0||u===6)||u>=2&&u<=4&&c>=2&&c<=4?n.set(i+u,s+c,!0,!0):n.set(i+u,s+c,!1,!0))}}function gn(n){let t=n.size;for(let e=8;e<t-8;e++){let r=e%2===0;n.set(e,6,r,!0),n.set(6,e,r,!0)}}function dn(n,t){let e=sn.getPositions(t);for(let r=0;r<e.length;r++){let o=e[r][0],i=e[r][1];for(let s=-2;s<=2;s++)for(let u=-2;u<=2;u++)s===-2||s===2||u===-2||u===2||s===0&&u===0?n.set(o+s,i+u,!0,!0):n.set(o+s,i+u,!1,!0)}}function hn(n,t){let e=n.size,r=tt.getEncodedBits(t),o,i,s;for(let u=0;u<18;u++)o=Math.floor(u/3),i=u%3+e-8-3,s=(r>>u&1)===1,n.set(o,i,s,!0),n.set(i,o,s,!0)}function Bt(n,t,e){let r=n.size,o=ln.getEncodedBits(t,e),i,s;for(i=0;i<15;i++)s=(o>>i&1)===1,i<6?n.set(i,8,s,!0):i<8?n.set(i+1,8,s,!0):n.set(r-15+i,8,s,!0),i<8?n.set(8,r-i-1,s,!0):i<9?n.set(8,15-i-1+1,s,!0):n.set(8,15-i-1,s,!0);n.set(r-8,8,1,!0)}function pn(n,t){let e=n.size,r=-1,o=e-1,i=7,s=0;for(let u=e-1;u>0;u-=2)for(u===6&&u--;;){for(let c=0;c<2;c++)if(!n.isReserved(o,u-c)){let l=!1;s<t.length&&(l=(t[s]>>>i&1)===1),n.set(o,u-c,l),i--,i===-1&&(s++,i=7)}if(o+=r,o<0||e<=o){o-=r,r=-r;break}}}function wn(n,t,e){let r=new rn;e.forEach(function(c){r.put(c.mode.bit,4),r.put(c.getLength(),an.getCharCountIndicator(c.mode,n)),c.write(r)});let o=et.getSymbolTotalCodewords(n),i=Tt.getTotalCodewordsCount(n,t),s=(o-i)*8;for(r.getLengthInBits()+4<=s&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);let u=(s-r.getLengthInBits())/8;for(let c=0;c<u;c++)r.put(c%2?17:236,8);return mn(r,n,t)}function mn(n,t,e){let r=et.getSymbolTotalCodewords(t),o=Tt.getTotalCodewordsCount(t,e),i=r-o,s=Tt.getBlocksCount(t,e),u=r%s,c=s-u,l=Math.floor(r/s),a=Math.floor(i/s),w=a+1,h=l-a,y=new cn(h),A=0,T=new Array(s),bt=new Array(s),rt=0,Re=new Uint8Array(n.buffer);for(let _=0;_<s;_++){let it=_<c?a:w;T[_]=Re.slice(A,A+it),bt[_]=y.encode(T[_]),A+=it,rt=Math.max(rt,it)}let ot=new Uint8Array(r),Rt=0,E,C;for(E=0;E<rt;E++)for(C=0;C<s;C++)E<T[C].length&&(ot[Rt++]=T[C][E]);for(E=0;E<h;E++)for(C=0;C<s;C++)ot[Rt++]=bt[C][E];return ot}function yn(n,t,e,r){let o;if(Array.isArray(n))o=Ct.fromArray(n);else if(typeof n=="string"){let l=t;if(!l){let a=Ct.rawSplit(n);l=tt.getBestVersionForData(a,e)}o=Ct.fromString(n,l||40)}else throw new Error("Invalid data");let i=tt.getBestVersionForData(o,e);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!t)t=i;else if(t<i)throw new Error(`
5
+ The chosen QR Code version cannot contain this amount of data.
6
+ Minimum version required to store current data is: `+i+`.
7
+ `);let s=wn(t,e,o),u=et.getSymbolSize(t),c=new on(u);return fn(c,t),gn(c),dn(c,t),Bt(c,e,0),t>=7&&hn(c,t),pn(c,s),isNaN(r)&&(r=At.getBestMask(c,Bt.bind(null,c,e))),At.applyMask(r,c),Bt(c,e,r),{modules:c,version:t,errorCorrectionLevel:e,maskPattern:r,segments:o}}Ae.create=function(t,e){if(typeof t>"u"||t==="")throw new Error("No input text");let r=Et.M,o,i;return typeof e<"u"&&(r=Et.from(e.errorCorrectionLevel,Et.M),o=tt.from(e.version),i=At.from(e.maskPattern),e.toSJISFunc&&et.setToSJISFunction(e.toSJISFunc)),yn(t,o,r,i)}});var It=g(L=>{"use strict";function Ie(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let t=n.slice().replace("#","").split("");if(t.length<3||t.length===5||t.length>8)throw new Error("Invalid hex color: "+n);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(r){return[r,r]}))),t.length===6&&t.push("F","F");let e=parseInt(t.join(""),16);return{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:e&255,hex:"#"+t.slice(0,6).join("")}}L.getOptions=function(t){t||(t={}),t.color||(t.color={});let e=typeof t.margin>"u"||t.margin===null||t.margin<0?4:t.margin,r=t.width&&t.width>=21?t.width:void 0,o=t.scale||4;return{width:r,scale:r?4:o,margin:e,color:{dark:Ie(t.color.dark||"#000000ff"),light:Ie(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}};L.getScale=function(t,e){return e.width&&e.width>=t+e.margin*2?e.width/(t+e.margin*2):e.scale};L.getImageWidth=function(t,e){let r=L.getScale(t,e);return Math.floor((t+e.margin*2)*r)};L.qrToImageData=function(t,e,r){let o=e.modules.size,i=e.modules.data,s=L.getScale(o,r),u=Math.floor((o+r.margin*2)*s),c=r.margin*s,l=[r.color.light,r.color.dark];for(let a=0;a<u;a++)for(let w=0;w<u;w++){let h=(a*u+w)*4,y=r.color.light;if(a>=c&&w>=c&&a<u-c&&w<u-c){let A=Math.floor((a-c)/s),T=Math.floor((w-c)/s);y=l[i[A*o+T]?1:0]}t[h++]=y.r,t[h++]=y.g,t[h++]=y.b,t[h]=y.a}}});var Ne=g(nt=>{"use strict";var Nt=It();function En(n,t,e){n.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=e,t.width=e,t.style.height=e+"px",t.style.width=e+"px"}function Cn(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}nt.render=function(t,e,r){let o=r,i=e;typeof o>"u"&&(!e||!e.getContext)&&(o=e,e=void 0),e||(i=Cn()),o=Nt.getOptions(o);let s=Nt.getImageWidth(t.modules.size,o),u=i.getContext("2d"),c=u.createImageData(s,s);return Nt.qrToImageData(c.data,t,o),En(u,i,s),u.putImageData(c,0,0),i};nt.renderToDataURL=function(t,e,r){let o=r;typeof o>"u"&&(!e||!e.getContext)&&(o=e,e=void 0),o||(o={});let i=nt.render(t,e,o),s=o.type||"image/png",u=o.rendererOpts||{};return i.toDataURL(s,u.quality)}});var Pe=g(Se=>{"use strict";var Bn=It();function Me(n,t){let e=n.a/255,r=t+'="'+n.hex+'"';return e<1?r+" "+t+'-opacity="'+e.toFixed(2).slice(1)+'"':r}function Mt(n,t,e){let r=n+t;return typeof e<"u"&&(r+=" "+e),r}function An(n,t,e){let r="",o=0,i=!1,s=0;for(let u=0;u<n.length;u++){let c=Math.floor(u%t),l=Math.floor(u/t);!c&&!i&&(i=!0),n[u]?(s++,u>0&&c>0&&n[u-1]||(r+=i?Mt("M",c+e,.5+l+e):Mt("m",o,0),o=0,i=!1),c+1<t&&n[u+1]||(r+=Mt("h",s),s=0)):o++}return r}Se.render=function(t,e,r){let o=Bn.getOptions(e),i=t.modules.size,s=t.modules.data,u=i+o.margin*2,c=o.color.light.a?"<path "+Me(o.color.light,"fill")+' d="M0 0h'+u+"v"+u+'H0z"/>':"",l="<path "+Me(o.color.dark,"stroke")+' d="'+An(s,i,o.margin)+'"/>',a='viewBox="0 0 '+u+" "+u+'"',h='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+a+' shape-rendering="crispEdges">'+c+l+`</svg>
8
+ `;return typeof r=="function"&&r(null,h),h}});var Nn=g(O=>{var Tn=_t(),St=Te(),be=Ne(),In=Pe();function Pt(n,t,e,r,o){let i=[].slice.call(arguments,1),s=i.length,u=typeof i[s-1]=="function";if(!u&&!Tn())throw new Error("Callback required as last argument");if(u){if(s<2)throw new Error("Too few arguments provided");s===2?(o=e,e=t,t=r=void 0):s===3&&(t.getContext&&typeof o>"u"?(o=r,r=void 0):(o=r,r=e,e=t,t=void 0))}else{if(s<1)throw new Error("Too few arguments provided");return s===1?(e=t,t=r=void 0):s===2&&!t.getContext&&(r=e,e=t,t=void 0),new Promise(function(c,l){try{let a=St.create(e,r);c(n(a,t,r))}catch(a){l(a)}})}try{let c=St.create(e,r);o(null,n(c,t,r))}catch(c){o(c)}}O.create=St.create;O.toCanvas=Pt.bind(null,be.render);O.toDataURL=Pt.bind(null,be.renderToDataURL);O.toString=Pt.bind(null,function(n,t,e){return In.render(n,e)})});export default Nn();
@@ -0,0 +1 @@
1
+ import{C as u,H as c,P as s,Q as a,b as v,qb as p,z as f}from"./chunk-P5WRM37W.js";function U(n){n||(n=c(s));let e=new v(t=>{if(n.destroyed){t.next();return}return n.onDestroy(t.next.bind(t))});return t=>t.pipe(f(e))}function T(n,e){let d=!e?.manualCleanup?e?.injector?.get(s)??c(s):null,l=g(e?.equal),o;e?.requireSync?o=a({kind:0},{equal:l}):o=a({kind:1,value:e?.initialValue},{equal:l});let i,b=n.subscribe({next:r=>o.set({kind:1,value:r}),error:r=>{o.set({kind:2,error:r}),i?.()},complete:()=>{i?.()}});if(e?.requireSync&&o().kind===0)throw new u(601,!1);return i=d?.onDestroy(b.unsubscribe.bind(b)),p(()=>{let r=o();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new u(601,!1)}},{equal:e?.equal})}function g(n=Object.is){return(e,t)=>e.kind===1&&t.kind===1&&n(e.value,t.value)}export{U as a,T as b};
@@ -0,0 +1 @@
1
+ import{a as o,b as N,c as h,d as x}from"./chunk-QPBWZLCT.js";import{Aa as v,Ba as s,Na as u,Oa as b,Z as c,fa as m,qb as f,tb as t,ya as g,za as i}from"./chunk-P5WRM37W.js";import{a as l,b as d}from"./chunk-WFIHWVQO.js";var M=["*"],w=class p{audience=t("admin");active=t("accounts");brandName=t("Acme Cloud");logoUrl=t("");logoText=t("A");nav=f(()=>{let r=this.audience()==="admin"&&this.active()!=="accounts"?"admin":"user",n=(e,S)=>d(l({},o[e]),{active:e===this.active()&&S===r}),a={label:"Your access",items:N.map(e=>n(e,"user"))};return this.audience()==="user"?[a]:[a,{label:"Administration",accent:!0,items:h.map(e=>e==="requests"?d(l({},o[e]),{badge:3}):e==="activity"?o[e]:n(e,"admin"))}]});static \u0275fac=function(n){return new(n||p)};static \u0275cmp=m({type:p,selectors:[["app-preview-shell"]],inputs:{audience:[1,"audience"],active:[1,"active"],brandName:[1,"brandName"],logoUrl:[1,"logoUrl"],logoText:[1,"logoText"]},ngContentSelectors:M,decls:6,vars:5,consts:[[1,"frame"],[1,"plate"],[1,"app"],["variant","glass",3,"nav","brandName","logoUrl","logoText","userRole"],[1,"main"]],template:function(n,a){n&1&&(u(),i(0,"div",0),s(1,"div",1),i(2,"div",2),s(3,"app-sidebar",3),i(4,"div",4),b(5),v()()()),n&2&&(c(3),g("nav",a.nav())("brandName",a.brandName())("logoUrl",a.logoUrl())("logoText",a.logoText())("userRole",a.audience()==="admin"?"admin":"member"))},dependencies:[x],styles:['[_nghost-%COMP%]{display:block;height:760px}.frame[_ngcontent-%COMP%]{position:relative;height:100%;border-radius:14px;overflow:hidden;isolation:isolate;box-shadow:0 0 0 1px #8c96a533,0 10px 28px -12px #0f121933}.plate[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:0;background:var(--glass-plate, linear-gradient(165deg, #eef1f6, #dfe3ea))}.plate[_ngcontent-%COMP%]:after{content:"";position:absolute;inset:-18%;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%)}.app[_ngcontent-%COMP%]{position:relative;z-index:1;display:flex;height:100%;padding:12px;gap:12px}.main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;border-radius:16px;overflow:hidden;-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));box-shadow:var(--shadow-card)}']})};export{w as a};
@@ -0,0 +1 @@
1
+ import{a as R}from"./chunk-Z3KONI7L.js";import{c as L}from"./chunk-O4QSFUXB.js";import{a as B}from"./chunk-M6OAYNRE.js";import{a as M}from"./chunk-XJM3HDJQ.js";import{b as O}from"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import{a as P}from"./chunk-D7TR2ORJ.js";import{Aa as i,Ba as w,H as f,Ia as x,J as m,K as _,Ka as u,Ma as c,P as b,Q as k,Rb as A,Va as S,Wa as a,Xa as h,Ya as E,Z as l,fa as D,qb as V,rb as I,sa as p,ta as d,va as T,wa as y,xa as N,ya as g,za as o}from"./chunk-P5WRM37W.js";import{e as v}from"./chunk-WFIHWVQO.js";function $(e,n){e&1&&w(0,"li",3)}function j(e,n){e&1&&w(0,"app-icon",6),e&2&&g("strokeWidth",2.5)}function W(e,n){if(e&1&&a(0),e&2){let t=c().$index;E(" ",t+1," ")}}function Y(e,n){if(e&1&&(p(0,$,1,0,"li",3),o(1,"li",4)(2,"span",5),p(3,j,1,1,"app-icon",6)(4,W,1,1),i(),o(5,"span"),a(6),i()()),e&2){let t=n.$implicit,s=n.$index,r=c();d(s>0?0:-1),l(2),S(r.railDot(s)),l(),d(r.stepDone(s)?3:4),l(2),S(r.railLabel(s)),l(),h(t)}}function U(e,n){e&1&&(o(0,"div",2)(1,"app-banner",7),a(2),i()()),e&2&&(l(2),h(n))}function z(e,n){e&1&&(o(0,"p",9),a(1," After installing, open Tailscale once and click Allow when macOS asks about adding a VPN configuration. You don\u2019t need a Tailscale account. "),i())}function q(e,n){e&1&&(o(0,"p",9),a(1," Still not detected \u2014 finish the installer, then check again. "),i())}function G(e,n){if(e&1){let t=x();o(0,"p",8),a(1),i(),p(2,z,2,0,"p",9),o(3,"div",10)(4,"app-button",11),u("click",function(){m(t);let r=c();return _(r.openDownload())}),a(5,"Download Tailscale"),i(),o(6,"app-button",12),u("click",function(){m(t);let r=c();return _(r.checkAgain())}),a(7," Check again "),i()(),p(8,q,2,0,"p",9)}if(e&2){let t=c();l(),h(t.installCopy),l(),d(t.platform==="darwin"?2:-1),l(4),g("loading",t.checking()),l(2),d(t.stillStuck()?8:-1)}}function H(e,n){e&1&&(o(0,"p",9),a(1,"You don\u2019t need to sign in to Tailscale."),i())}function J(e,n){e&1&&(o(0,"p",9),a(1," Still not running \u2014 open the Tailscale app, then check again. "),i())}function K(e,n){if(e&1){let t=x();o(0,"p",8),a(1),i(),p(2,H,2,0,"p",9),o(3,"div",13)(4,"app-button",12),u("click",function(){m(t);let r=c();return _(r.checkAgain())}),a(5," Check again "),i()(),p(6,J,2,0,"p",9)}if(e&2){let t=c();l(),h(t.launchCopy),l(),d(t.platform==="darwin"?2:-1),l(2),g("loading",t.checking()),l(2),d(t.stillStuck()?6:-1)}}function Q(e,n){if(e&1){let t=x();o(0,"p",8),a(1," Tailscale is ready. Connecting creates a single-use key for this device and joins your organization\u2019s private network. "),i(),o(2,"div",13)(3,"app-button",14),u("click",function(){m(t);let r=c();return _(r.store.connect())}),a(4," Connect "),i()()}if(e&2){let t=c();l(3),g("loading",t.store.state()==="connecting")}}function X(e,n){if(e&1){let t=x();o(0,"app-banner",15)(1,"strong"),a(2,"You\u2019re connected."),i(),a(3," This device is now enrolled. Access rules finish syncing within about 5 minutes of a first connection \u2014 resources may not answer until then. "),i(),o(4,"p",16),a(5," Everything you can reach is listed on the Network page. "),i(),o(6,"div",17)(7,"app-button",11),u("click",function(){m(t);let r=c();return _(r.viewResources())}),a(8,"View network resources"),i(),o(9,"app-button",18),u("click",function(){m(t);let r=c();return _(r.close())}),a(10,"Done"),i()()}}var Z="https://tailscale.com/download",ee=["install","launch","connect","done"],F=class e{store=f(R);bridge=f(L);router=f(A);LABELS=["Install","Open Tailscale","Connect"];platform=this.bridge.platform;checking=k(!1);stillStuck=k(!1);step=V(()=>{let n=this.store.setupReason();return n==="not-installed"?"install":n==="daemon-off"?"launch":this.store.state()==="connected"?"done":"connect"});installCopy=this.platform==="darwin"?"Private network access uses the Tailscale app. Download and install it \u2014 the App Store and direct-download versions both work.":this.platform==="win32"?"Private network access uses the Tailscale app. Download and run the installer \u2014 the service starts automatically.":"Private network access uses the Tailscale client. Install it for your platform, then come back.";launchCopy=this.platform==="darwin"?"Tailscale is installed but not running. Open the Tailscale app \u2014 the first time it opens, macOS asks to allow a VPN configuration. Click Allow.":this.platform==="win32"?"Tailscale is installed but not running. Start Tailscale from the Start menu, then check again.":"Tailscale is installed but not running. Start it, then check again.";constructor(){this.store.refresh();let n=setInterval(()=>{let t=this.step();(t==="install"||t==="launch")&&this.store.refresh()},3e3);f(b).onDestroy(()=>clearInterval(n)),I(()=>{this.step(),this.stillStuck.set(!1)})}stepIndex(){return ee.indexOf(this.step())}stepDone(n){return n<this.stepIndex()}railDot(n){return this.stepDone(n)?"bg-success-muted text-success":n===this.stepIndex()?"bg-brand text-brand-foreground":"bg-muted text-muted-foreground"}railLabel(n){return n===this.stepIndex()?"font-semibold text-surface-foreground":this.stepDone(n)?"text-text-secondary":"text-muted-foreground"}checkAgain(){return v(this,null,function*(){this.checking.set(!0);let n=this.step();yield this.store.refresh(),this.checking.set(!1),this.step()===n&&this.stillStuck.set(!0)})}openDownload(){this.bridge.openConsole(Z).catch(()=>{})}viewResources(){this.router.navigateByUrl("/resources"),this.close()}close(){this.store.lastError.set(null),this.store.setupOpen.set(!1)}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=D({type:e,selectors:[["app-network-setup-dialog"]],decls:9,vars:2,consts:[["title","Set up private network access",3,"closed"],[1,"mb-5","flex","items-center","gap-2","text-xs"],[1,"mb-4"],["aria-hidden","true",1,"h-px","w-5","bg-border-strong"],[1,"flex","items-center","gap-1.5"],[1,"flex","h-5","w-5","shrink-0","items-center","justify-center","rounded-full","text-[11px]","font-semibold"],["name","check",1,"h-3","w-3",3,"strokeWidth"],["tone","danger"],[1,"text-[13px]","text-muted-foreground"],[1,"mt-2","text-xs","text-placeholder"],[1,"mt-4","flex","flex-wrap","items-center","gap-2"],[3,"click"],["variant","outline",3,"click","loading"],[1,"mt-4"],[3,"click","loading"],["tone","success"],[1,"mt-3","text-xs","text-placeholder"],[1,"mt-4","flex","gap-2"],["variant","outline",3,"click"]],template:function(t,s){if(t&1&&(o(0,"app-dialog",0),u("closed",function(){return s.close()}),o(1,"ol",1),y(2,Y,7,7,null,null,T),i(),p(4,U,3,1,"div",2),p(5,G,9,4)(6,K,7,4)(7,Q,5,1)(8,X,11,0),i()),t&2){let r,C;l(2),N(s.LABELS),l(2),d((r=s.store.lastError())?4:-1,r),l(),d((C=s.step())==="install"?5:C==="launch"?6:C==="connect"?7:C==="done"?8:-1)}},dependencies:[B,P,M,O],encapsulation:2})};export{F as NetworkSetupDialogComponent};
@@ -0,0 +1 @@
1
+ import{b as v}from"./chunk-2MOGDYK4.js";import{Aa as c,Ba as u,Ka as d,Va as o,Z as a,fa as r,qb as p,tb as l,wb as m,ya as i,za as n,zb as h}from"./chunk-P5WRM37W.js";var f=class s{value=m("");placeholder=l("Search\u2026");compact=l(!1,{transform:h});iconClasses=p(()=>this.compact()?"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-placeholder":"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-placeholder");inputClasses=p(()=>this.compact()?"ui-input h-7 py-1 pr-3 pl-7 text-xs":"ui-input py-2 pr-3.5 pl-9");static \u0275fac=function(t){return new(t||s)};static \u0275cmp=r({type:s,selectors:[["app-search-input"]],hostAttrs:[1,"block"],inputs:{value:[1,"value"],placeholder:[1,"placeholder"],compact:[1,"compact"]},outputs:{value:"valueChange"},decls:3,vars:6,consts:[[1,"relative"],["name","search"],["type","text",3,"input","placeholder","value"]],template:function(t,e){t&1&&(n(0,"div",0),u(1,"app-icon",1),n(2,"input",2),d("input",function(C){return e.value.set(C.target.value)}),c()()),t&2&&(a(),o(e.iconClasses()),a(),o(e.inputClasses()),i("placeholder",e.placeholder())("value",e.value()))},dependencies:[v],encapsulation:2})};export{f as a};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-GKI3R2JB.js";import{E as f,H as m,qb as g}from"./chunk-P5WRM37W.js";import{e as l}from"./chunk-WFIHWVQO.js";function u(n){let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=atob(e),r=new Uint8Array(new ArrayBuffer(t.length));for(let i=0;i<t.length;i++)r[i]=t.charCodeAt(i);return r}function s(n){let e="";for(let t of new Uint8Array(n))e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function A(){return typeof window<"u"&&"credentials"in navigator&&"PublicKeyCredential"in window}function y(n){return Promise.race([n,new Promise((e,t)=>setTimeout(()=>t(new DOMException("Passkey prompt timed out","NotAllowedError")),7e4))])}function T(n){return l(this,null,function*(){let e=n,t={rp:e.rp,user:{id:u(e.user.id),name:e.user.name,displayName:e.user.displayName},challenge:u(e.challenge),pubKeyCredParams:e.pubKeyCredParams,timeout:e.timeout,excludeCredentials:(e.excludeCredentials??[]).map(o=>({id:u(o.id),type:o.type,transports:o.transports})),authenticatorSelection:e.authenticatorSelection,attestation:e.attestation},r=yield y(navigator.credentials.create({publicKey:t}));if(!r)throw new Error("No credential returned");let i=r.response;return{id:r.id,rawId:s(r.rawId),type:r.type,authenticatorAttachment:r.authenticatorAttachment??void 0,response:{clientDataJSON:s(i.clientDataJSON),attestationObject:s(i.attestationObject),transports:i.getTransports?i.getTransports():void 0},clientExtensionResults:r.getClientExtensionResults()}})}function _(n){return(JSON.parse(n).allowCredentials??[]).map(t=>t.id)}function R(n){return l(this,null,function*(){let e=JSON.parse(n),t={challenge:u(e.challenge),rpId:e.rpId,timeout:e.timeout,userVerification:e.userVerification,allowCredentials:(e.allowCredentials??[]).map(a=>({id:u(a.id),type:a.type,transports:a.transports}))},r=yield y(navigator.credentials.get({publicKey:t}));if(!r)throw new Error("No credential returned");let i=r.response,o=JSON.stringify({id:r.id,rawId:s(r.rawId),type:r.type,authenticatorAttachment:r.authenticatorAttachment??void 0,response:{clientDataJSON:s(i.clientDataJSON),authenticatorData:s(i.authenticatorData),signature:s(i.signature),userHandle:i.userHandle?s(i.userHandle):null},clientExtensionResults:r.getClientExtensionResults()});return{credentialId:r.id,credential:o}})}var c={verifier:"sso.verifier",state:"sso.state",provider:"sso.provider",retried:"sso.retried"},d=class extends Error{constructor(t,r){super(r);this.verdict=t}verdict};function w(n=32){let e=new Uint8Array(n);return crypto.getRandomValues(e),s(e.buffer)}function b(n){return l(this,null,function*(){return s(yield crypto.subtle.digest("SHA-256",new TextEncoder().encode(n)))})}function C(n,e){let t=new URLSearchParams({identity_provider:e.provider,client_id:e.clientId,response_type:"code",scope:"openid email profile",redirect_uri:e.redirectUri,state:e.state,code_challenge:e.challenge,code_challenge_method:"S256"});return`${n.replace(/\/$/,"")}/oauth2/authorize?${t}`}function I(n){let e=new URLSearchParams(n);return{code:e.get("code")??void 0,state:e.get("state")??void 0,error:e.get("error")??void 0,errorDescription:e.get("error_description")??void 0}}function S(n,e){let t=e??"";return t.includes("FEDERATION_LINKED_RETRY")||/Already found an entry for username/i.test(t)?"linked-retry":t.includes("FEDERATION_NOT_INVITED")?"not-invited":t.includes("FEDERATION_NO_EMAIL")?"no-email":n==="access_denied"?"cancelled":"error"}function $(n){switch(n instanceof d?n.verdict:"error"){case"not-invited":return"Your account isn't set up here yet. Ask an admin to invite you with the email address your organization uses, then sign in again.";case"no-email":return"Your organization\u2019s sign-in did not share an email address, so this portal cannot match you to an invite. Ask your admin.";case"linked-retry":return"Your account was just connected \u2014 please sign in once more.";case"cancelled":return"The sign-in was cancelled.";default:return"The sign-in did not complete. Please try again."}}function k(n,e){return l(this,null,function*(){let t=yield fetch(`${n.replace(/\/$/,"")}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,code:e.code,redirect_uri:e.redirectUri,code_verifier:e.verifier}),signal:AbortSignal.timeout(15e3)}),r=yield t.json().catch(()=>({}));if(!t.ok||typeof r.id_token!="string")throw new d("error",String(r.error??`token exchange failed (${t.status})`));return{IdToken:r.id_token,AccessToken:r.access_token,RefreshToken:r.refresh_token,ExpiresIn:Number(r.expires_in)||3600}})}function x(n,e){return n?Object.entries(n).filter(([,t])=>t).map(([t,r])=>({key:t,label:e.get(t)??t,value:r})).sort((t,r)=>t.label.localeCompare(r.label)):[]}var v=class n{configService=m(h);get federation(){try{return this.configService.config.federation}catch{return}}providers=g(()=>this.federation?.providers??[]);labels=g(()=>new Map((this.federation?.claims??[]).map(e=>[e.key,e.label])));claimRows(e){return x(e,this.labels())}redirectUri=`${location.origin}/auth/callback`;start(r){return l(this,arguments,function*(e,t={}){let i=this.federation;if(!i)throw new d("error","Federated sign-in is not configured.");let o=w(),a=w(16);sessionStorage.setItem(c.verifier,o),sessionStorage.setItem(c.state,a),sessionStorage.setItem(c.provider,e),t.retry?sessionStorage.setItem(c.retried,"1"):sessionStorage.removeItem(c.retried),location.assign(C(this.configService.config.hostedUiDomain,{clientId:i.clientId,provider:e,redirectUri:this.redirectUri,state:a,challenge:yield b(o)}))})}complete(e){return l(this,null,function*(){let t=I(e),r=sessionStorage.getItem(c.provider)??"";if(t.error){let p=S(t.error,t.errorDescription);if(p==="linked-retry"&&r&&!sessionStorage.getItem(c.retried))return yield this.start(r,{retry:!0}),null;throw this.clear(),console.warn("federated sign-in failed",t.error,t.errorDescription),new d(p,t.error)}if(!t.code)throw new d("error","No sign-in in progress.");let i=sessionStorage.getItem(c.verifier),o=sessionStorage.getItem(c.state);if(this.clear(),!i||!o||t.state!==o)throw new d("error","This sign-in started somewhere else \u2014 please start again.");let a=this.federation;if(!a)throw new d("error","Federated sign-in is not configured.");return{tokens:yield k(this.configService.config.hostedUiDomain,{clientId:a.clientId,code:t.code,redirectUri:this.redirectUri,verifier:i}),provider:r,clientId:a.clientId}})}clear(){for(let e of Object.values(c))sessionStorage.removeItem(e)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=f({token:n,factory:n.\u0275fac,providedIn:"root"})};export{A as a,T as b,_ as c,R as d,$ as e,v as f};
@@ -0,0 +1 @@
1
+ import{Ca as m,Da as b,Ea as p,Ja as f,Ma as h,Na as v,Oa as y,Va as r,Z as d,fa as l,qb as s,ra as u,rb as z,sa as g,ta as c,tb as t,xb as x}from"./chunk-P5WRM37W.js";var M=["*"];function B(i,o){if(i&1&&p(0,"span"),i&2){let e=h();r(e.spinnerClasses())}}var w=class i{variant=t("primary");size=t("md");type=t("button");disabled=t(!1);loading=t(!1);ariaLabel=t(null);classes=s(()=>{let o="inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand disabled:opacity-50 disabled:cursor-not-allowed",e={sm:"h-6 px-2.5 text-xs rounded-lg",md:"h-8 px-3 text-sm rounded-lg",lg:"h-9 px-4 text-sm rounded-lg",icon:"h-7 w-7 text-sm leading-none rounded-lg","icon-sm":"h-4 w-4 text-xs leading-none rounded"},n={outline:"font-medium",danger:"font-medium"},C={primary:"bg-brand text-brand-foreground hover:bg-brand-hover",secondary:"bg-brand/12 text-brand-muted-foreground ring-1 ring-inset ring-brand/25 hover:bg-brand/18",outline:"bg-transparent text-surface-foreground ring-1 ring-inset ring-border-strong hover:bg-muted",danger:"bg-transparent text-danger ring-1 ring-inset ring-border-strong hover:bg-danger-muted",ghost:"text-muted-foreground hover:bg-muted"},D=this.size()==="sm"?"font-medium":n[this.variant()]??"font-normal",a=C[this.variant()];return this.size()==="icon-sm"&&this.variant()==="outline"&&(a=a.replace("text-surface-foreground","text-muted-foreground hover:text-surface-foreground")),`${o} ${e[this.size()]} ${D} ${a}`});spinnerClasses=s(()=>`${{sm:"h-3 w-3",md:"h-3.5 w-3.5",lg:"h-4 w-4",icon:"h-3.5 w-3.5","icon-sm":"h-2.5 w-2.5"}[this.size()]} animate-spin rounded-full border-2 border-current border-t-transparent`);constructor(){x()&&z(()=>{this.ariaLabel()&&this.size()!=="icon"&&this.size()!=="icon-sm"&&console.warn(`app-button: ariaLabel="${this.ariaLabel()}" with size="${this.size()}" \u2014 icon-only buttons need size="icon" or size="icon-sm" for a square hit target.`)})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=l({type:i,selectors:[["app-button"]],inputs:{variant:[1,"variant"],size:[1,"size"],type:[1,"type"],disabled:[1,"disabled"],loading:[1,"loading"],ariaLabel:[1,"ariaLabel"]},ngContentSelectors:M,decls:3,vars:6,consts:[[3,"type","disabled"],[3,"class"]],template:function(e,n){e&1&&(v(),m(0,"button",0),g(1,B,1,2,"span",1),y(2),b()),e&2&&(r(n.classes()),f("type",n.type())("disabled",n.disabled()||n.loading()),u("aria-label",n.ariaLabel()),d(),c(n.loading()?1:-1))},encapsulation:2})};export{w as a};
@@ -0,0 +1 @@
1
+ import{b as B}from"./chunk-2MOGDYK4.js";import{a as h}from"./chunk-D7TR2ORJ.js";import{Aa as a,Ba as b,Ia as x,J as u,K as m,Ka as C,Ma as o,Q as g,Wa as p,Ya as y,Z as l,fa as v,sa as d,ta as s,tb as _,ya as f,za as i}from"./chunk-P5WRM37W.js";function T(t,n){t&1&&(i(0,"span",4),p(1,"\u2713 Copied"),a())}function k(t,n){if(t&1&&(b(0,"app-icon",5),p(1)),t&2){let e=o(2);l(),y(" ",e.label()," ")}}function V(t,n){if(t&1){let e=x();i(0,"button",3),C("click",function(){u(e);let r=o();return m(r.copy())}),d(1,T,2,0,"span",4)(2,k,2,1),a()}if(t&2){let e=o();f("disabled",!e.text()),l(),s(e.copied()?1:2)}}function D(t,n){t&1&&(i(0,"span",7),p(1,"\u2713"),a())}function E(t,n){t&1&&b(0,"app-icon",8)}function S(t,n){if(t&1){let e=x();i(0,"app-button",6),C("click",function(){u(e);let r=o();return m(r.copy())}),d(1,D,2,0,"span",7)(2,E,1,0,"app-icon",8),a()}if(t&2){let e=o();f("ariaLabel",e.label())("title",e.label()),l(),s(e.copied()?1:2)}}function M(t,n){t&1&&(i(0,"span",4),p(1,"\u2713 Copied"),a())}function N(t,n){if(t&1&&(i(0,"span"),p(1),a()),t&2){let e=o(2);l(),y("\u29C9 ",e.label())}}function I(t,n){if(t&1){let e=x();i(0,"button",9),C("click",function(){u(e);let r=o();return m(r.copy())}),d(1,M,2,0,"span",4)(2,N,2,1,"span"),a()}if(t&2){let e=o();l(),s(e.copied()?1:2)}}var w=class t{text=_.required();label=_("Copy");variant=_("pill");copied=g(!1);copy(){navigator.clipboard.writeText(this.text()).then(()=>{this.copied.set(!0),setTimeout(()=>this.copied.set(!1),1500)}).catch(()=>{})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=v({type:t,selectors:[["app-copy-button"]],inputs:{text:[1,"text"],label:[1,"label"],variant:[1,"variant"]},decls:3,vars:1,consts:[["type","button",1,"inline-flex","w-full","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-brand-text","transition-colors","hover:bg-brand/12","disabled:opacity-50",3,"disabled"],["variant","ghost","size","icon-sm",3,"ariaLabel","title"],["type","button",1,"inline-flex","items-center","gap-1.5","rounded-md","bg-surface","px-2.5","py-1","text-xs","font-medium","text-muted-foreground","ring-1","ring-border-strong","hover:bg-muted"],["type","button",1,"inline-flex","w-full","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-brand-text","transition-colors","hover:bg-brand/12","disabled:opacity-50",3,"click","disabled"],[1,"text-success"],["name","copy",1,"h-[15px]","w-[15px]"],["variant","ghost","size","icon-sm",3,"click","ariaLabel","title"],[1,"text-xs","text-success"],["name","copy",1,"h-3.5","w-3.5"],["type","button",1,"inline-flex","items-center","gap-1.5","rounded-md","bg-surface","px-2.5","py-1","text-xs","font-medium","text-muted-foreground","ring-1","ring-border-strong","hover:bg-muted",3,"click"]],template:function(e,c){e&1&&d(0,V,3,2,"button",0)(1,S,3,3,"app-button",1)(2,I,3,1,"button",2),e&2&&s(c.variant()==="footer"?0:c.variant()==="icon"?1:2)},dependencies:[h,B],encapsulation:2})};export{w as a};
@@ -0,0 +1 @@
1
+ import{b as p}from"./chunk-GKI3R2JB.js";import{E as i,H as a,Kb as c,k as n}from"./chunk-P5WRM37W.js";import{a as o}from"./chunk-WFIHWVQO.js";var l=class s{http=a(c);listAccounts(){return this.http.get("/api/accounts").pipe(n(e=>e.accounts))}listAccountNames(){return this.http.get("/api/accounts/names").pipe(n(e=>e.names))}listAccountsPage(e){return this.http.get("/api/accounts",{params:p(e)})}vendCredentials(e,t,r={}){return this.http.post("/api/credentials",o({accountNumber:e,role:t},r.background?{background:!0}:{}))}home(){return this.http.get("/api/accounts/home")}setFavorite(e,t){return this.http.put(`/api/preferences/favorites/${e}`,{favorite:t}).pipe(n(r=>r.favorite))}expiryFeed(){return this.http.get("/api/accounts/expiry")}markExpirySeen(){return this.http.post("/api/accounts/expiry/seen",{}).pipe(n(e=>e.cleared))}consoleSignIn(e,t){return this.http.post(`/api/accounts/${e}/roles/${encodeURIComponent(t)}/console`,{})}getProfileName(e,t){return this.http.get(`/api/preferences/profile-name/${e}/${encodeURIComponent(t)}`).pipe(n(r=>r.profileName))}setProfileName(e,t,r){return this.http.put(`/api/preferences/profile-name/${e}/${encodeURIComponent(t)}`,{profileName:r})}clearProfileName(e,t){return this.http.delete(`/api/preferences/profile-name/${e}/${encodeURIComponent(t)}`)}getPreferences(){return this.http.get("/api/preferences").pipe(n(e=>e.preferences))}setAutoVend(e,t,r){return this.http.put(`/api/preferences/auto-vend/${e}/${encodeURIComponent(t)}`,{autoVend:r})}static \u0275fac=function(t){return new(t||s)};static \u0275prov=i({token:s,factory:s.\u0275fac,providedIn:"root"})};export{l as a};
@@ -0,0 +1 @@
1
+ import{b as a}from"./chunk-65WE5MXA.js";import"./chunk-EW2VMNHE.js";import"./chunk-WEDAFMID.js";import"./chunk-GK2T2SMO.js";import"./chunk-CV7EODPO.js";import"./chunk-GHEU25TG.js";import"./chunk-BNFKRZTP.js";import"./chunk-DCOFBAKJ.js";import"./chunk-IKK5DQ3Z.js";import"./chunk-H5H727H6.js";import"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import"./chunk-O4QSFUXB.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 UsersPageComponent};
@@ -0,0 +1 @@
1
+ import{Ea as t,Va as o,fa as n,tb as a}from"./chunk-P5WRM37W.js";var i=class s{sizeClass=a("h-4 w-full");static \u0275fac=function(e){return new(e||s)};static \u0275cmp=n({type:s,selectors:[["app-skeleton"]],hostAttrs:[1,"block"],inputs:{sizeClass:[1,"sizeClass"]},decls:1,vars:2,consts:[[1,"animate-pulse","rounded-lg","bg-border"]],template:function(e,p){e&1&&t(0,"div",0),e&2&&o(p.sizeClass())},encapsulation:2})};export{i as a};
@@ -0,0 +1 @@
1
+ import{a as N}from"./chunk-RROPCBUH.js";import{b as I}from"./chunk-2MOGDYK4.js";import{Aa as l,Ba as F,H as P,Ia as g,J as m,K as x,Ka as d,Ma as s,Q as b,T,Ua as M,Wa as c,Xa as f,Y as E,Ya as v,Z as o,fa as V,qb as k,ra as h,sa as u,ta as _,tb as S,wa as y,wb as D,xa as w,ya as C,za as a}from"./chunk-P5WRM37W.js";var $=(n,t)=>t.key,O=(n,t)=>t.key+"#"+t.value,L=(n,t)=>t.value;function A(n,t){if(n&1&&(a(0,"span",3),c(1),l()),n&2){let e=s();o(),v(" ",e.filters().length," ")}}function B(n,t){if(n&1&&(a(0,"span",7)(1,"span",9),c(2),l(),a(3,"span",10),c(4),l()()),n&2){let e=s().$implicit;o(2),v("",e.label,":"),o(2),f(e.firstValue)}}function H(n,t){if(n&1&&(a(0,"span",7)(1,"span",9),c(2),l(),a(3,"span",9),c(4,"\xB7"),l(),a(5,"span",10),c(6),l()()),n&2){let e=s().$implicit;o(2),f(e.label),o(4),f(e.count)}}function q(n,t){if(n&1){let e=g();a(0,"span",4)(1,"button",6),d("click",function(){let r=m(e).$implicit,p=s();return x(p.openCategory(r.key))}),u(2,B,5,2,"span",7)(3,H,7,2,"span",7),l(),a(4,"button",8),d("click",function(){let r=m(e).$implicit,p=s();return x(p.clearCategory(r.key))}),c(5," \u2715 "),l()()}if(n&2){let e=t.$implicit,i=s();o(),h("aria-label","Edit "+e.label+" filter \u2014 "+e.count+" selected")("aria-expanded",i.open()&&i.level()===e.key),o(),_(e.count===1?2:3),o(2),h("aria-label","Clear "+e.label+" filters")}}function z(n,t){if(n&1&&c(0),n&2){let e=s().$implicit;v(" \xB7 ",e.count)}}function G(n,t){if(n&1){let e=g();a(0,"label",16)(1,"input",18),d("change",function(){let r=m(e).$implicit,p=s(4);return x(p.toggle(r.key,r.value))}),l(),a(2,"span",19),c(3),l(),a(4,"span",20),c(5),u(6,z,1,1),l()()}if(n&2){let e=t.$implicit,i=s(4);o(),C("checked",i.isOn(e.key,e.value)),o(),C("title",e.value),o(),f(e.value),o(2),v(" ",e.label),o(),_(e.count!==void 0?6:-1)}}function j(n,t){n&1&&(a(0,"p",17),c(1," Nothing named that in any category. "),l())}function W(n,t){if(n&1&&(a(0,"div",14),y(1,G,7,5,"label",16,O,!1,j,2,0,"p",17),l()),n&2){let e=s(3);o(),w(e.rootMatches())}}function R(n,t){n&1&&(a(0,"span",24),c(1),l()),n&2&&(o(),v("",t," selected"))}function J(n,t){if(n&1){let e=g();a(0,"button",22),d("click",function(){let r=m(e).$implicit,p=s(4);return x(p.enter(r.key))}),a(1,"span",23),c(2),l(),u(3,R,2,1,"span",24),F(4,"app-icon",25),l()}if(n&2){let e,i=t.$implicit,r=s(4);o(2),f(i.label),o(),_((e=r.selectedCount(i.key))?3:-1,e)}}function K(n,t){if(n&1&&(a(0,"div",15),y(1,J,5,2,"button",21,$),l()),n&2){let e=s(3);o(),w(e.sections())}}function U(n,t){if(n&1){let e=g();a(0,"input",13),d("input",function(r){m(e);let p=s(2);return x(p.rootQuery.set(r.target.value))}),l(),u(1,W,4,1,"div",14)(2,K,3,0,"div",15)}if(n&2){let e=s(2);C("value",e.rootQuery()),o(),_(e.rootQuery().trim()?1:2)}}function X(n,t){n&1&&(a(0,"span",30),c(1),l()),n&2&&(o(),v("",t," selected"))}function Y(n,t){if(n&1&&(a(0,"span",32),c(1),l()),n&2){let e=s().$implicit;o(),f(e.count)}}function Z(n,t){if(n&1){let e=g();a(0,"label",16)(1,"input",18),d("change",function(){let r=m(e).$implicit,p=s(3);return x(p.toggle(p.level(),r.value))}),l(),a(2,"span",19),c(3),l(),u(4,Y,2,1,"span",32),l()}if(n&2){let e=t.$implicit,i=s(3);o(),C("checked",i.isOn(i.level(),e.value)),o(),C("title",e.value),o(),f(e.value),o(),_(e.count!==void 0?4:-1)}}function ee(n,t){n&1&&(a(0,"p",17),c(1,"No matches."),l())}function te(n,t){if(n&1){let e=g();a(0,"div",26)(1,"button",27),d("click",function(){m(e);let r=s(2);return x(r.back())}),F(2,"app-icon",28),l(),a(3,"span",29),c(4),l(),u(5,X,2,1,"span",30),l(),a(6,"input",31),d("input",function(r){m(e);let p=s(2);return x(p.sectionQuery.set(r.target.value))}),l(),a(7,"div",14),y(8,Z,5,4,"label",16,L,!1,ee,2,0,"p",17),l()}if(n&2){let e,i=s(2);o(4),f(i.labelOf(i.level())),o(),_((e=i.selectedCount(i.level()))?5:-1,e),o(),C("placeholder","Search "+i.labelOf(i.level()).toLowerCase()+"s")("value",i.sectionQuery()),h("aria-label","Search "+i.labelOf(i.level()).toLowerCase()+"s"),o(2),w(i.sectionMatches())}}function ne(n,t){if(n&1){let e=g();a(0,"div",12)(1,"button",33),d("click",function(){m(e);let r=s(2);return x(r.clearAll())}),c(2," Clear all filters "),l()()}}function ie(n,t){if(n&1&&(a(0,"div",11),u(1,U,3,2)(2,te,11,6),u(3,ne,3,0,"div",12),l()),n&2){let e=s();M("left-0",e.align()==="start")("right-0",e.align()==="end"),o(),_(e.level()==="root"?1:2),o(2),_(e.filters().length?3:-1)}}var Q=class n{sections=S.required();align=S("start");filters=D([]);open=b(!1);level=b("root");rootQuery=b("");sectionQuery=b("");selected=k(()=>{let t=new Map;for(let e of this.filters()){let i=t.get(e.key);i||t.set(e.key,i=new Set),i.add(e.value)}return t});pillGroups=k(()=>{let t=this.selected();return this.sections().filter(e=>t.has(e.key)).map(e=>{let i=[...t.get(e.key)??[]];return{key:e.key,label:e.label,count:i.length,firstValue:i[0]}})});rootMatches=k(()=>{let t=this.rootQuery().trim().toLowerCase();if(!t)return[];let e=[];for(let i of this.sections())for(let r of i.options)if(r.value.toLowerCase().includes(t)&&(e.push({key:i.key,label:i.label,value:r.value,count:r.count}),e.length>=50))return e;return e});sectionMatches=k(()=>{let t=this.sections().find(r=>r.key===this.level());if(!t)return[];let e=this.sectionQuery().trim().toLowerCase();return(e?t.options.filter(r=>r.value.toLowerCase().includes(e)):t.options).slice(0,200)});labelOf(t){return this.sections().find(e=>e.key===t)?.label??t}toggleOpen(){let t=!this.open();this.open.set(t),t&&(this.level.set("root"),this.rootQuery.set(""),this.sectionQuery.set(""))}enter(t){this.level.set(t),this.sectionQuery.set("")}openCategory(t){this.open.set(!0),this.rootQuery.set(""),this.enter(t)}back(){this.level.set("root"),this.sectionQuery.set("")}isOn(t,e){return this.selected().get(t)?.has(e)??!1}selectedCount(t){return this.selected().get(t)?.size??0}toggle(t,e){let i=this.filters().filter(r=>!(r.key===t&&r.value===e));this.filters.set(i.length===this.filters().length?[...i,{key:t,value:e}]:i)}clearAll(){this.filters.set([])}clearCategory(t){this.filters.set(this.filters().filter(e=>e.key!==t))}host=P(T);onDocumentMousedown(t){this.host.nativeElement.contains(t.target)||this.open.set(!1)}onEscape(){this.open.set(!1)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=V({type:n,selectors:[["app-filter-popup"]],hostAttrs:[1,"relative","block"],hostBindings:function(e,i){e&1&&d("mousedown",function(p){return i.onDocumentMousedown(p)},E)("keydown.escape",function(){return i.onEscape()},E)},inputs:{sections:[1,"sections"],align:[1,"align"],filters:[1,"filters"]},outputs:{filters:"filtersChange"},decls:7,vars:4,consts:[[1,"flex","flex-wrap","items-center","gap-2"],["type","button","aria-label","Filter",1,"ui-input","relative","flex","h-7","w-7","shrink-0","items-center","justify-center","!p-0","text-muted-foreground",3,"click"],["name","filter",1,"h-4","w-4",3,"strokeWidth"],[1,"absolute","-right-1","-top-1","grid","h-4","min-w-4","place-items-center","rounded-full","bg-brand","px-1","text-[10px]","font-bold","text-brand-foreground"],[1,"inline-flex","items-center","gap-0.5","rounded-full","bg-brand/10","py-1","pl-1","pr-1.5","text-xs","font-medium","text-brand-text","transition-colors","hover:bg-brand/20"],[1,"absolute","top-full","z-20","mt-1","w-80","max-w-[88vw]","rounded-xl","border","border-border-strong","bg-popover","p-2.5","shadow-lg","backdrop-blur-2xl",3,"left-0","right-0"],["type","button",1,"rounded-full","py-0.5","pl-2","pr-1",3,"click"],[1,"inline-flex","items-center","gap-1"],["type","button",1,"grid","h-4","w-4","shrink-0","place-items-center","rounded-full","text-[9px]","opacity-70","transition-opacity","hover:opacity-100",3,"click"],[1,"opacity-70"],[1,"max-w-44","truncate"],[1,"absolute","top-full","z-20","mt-1","w-80","max-w-[88vw]","rounded-xl","border","border-border-strong","bg-popover","p-2.5","shadow-lg","backdrop-blur-2xl"],[1,"mt-2","border-t","border-border","pt-2"],["placeholder","Search all filters","aria-label","Search values across every filter category",1,"ui-input",3,"input","value"],[1,"mt-1.5","max-h-64","overflow-y-auto"],[1,"mt-1.5"],[1,"flex","cursor-pointer","items-center","gap-2","rounded-md","px-2","py-1.5","text-sm","text-surface-foreground","hover:bg-muted"],[1,"px-2","py-1.5","text-xs","text-muted-foreground"],["type","checkbox",1,"h-3.5","w-3.5","shrink-0","rounded","border-border-strong","text-brand",3,"change","checked"],[1,"min-w-0","flex-1","truncate",3,"title"],[1,"shrink-0","text-[11px]","text-muted-foreground"],["type","button",1,"flex","w-full","items-center","gap-2","rounded-md","px-2","py-2","text-left","text-sm","text-surface-foreground","hover:bg-muted"],["type","button",1,"flex","w-full","items-center","gap-2","rounded-md","px-2","py-2","text-left","text-sm","text-surface-foreground","hover:bg-muted",3,"click"],[1,"flex-1","font-medium"],[1,"text-[11px]","font-medium","text-brand-text"],["name","chevron-right",1,"h-3.5","w-3.5","text-muted-foreground"],[1,"mb-1.5","flex","items-center","gap-1"],["type","button","aria-label","Back to all categories",1,"grid","h-6","w-6","place-items-center","rounded-md","text-muted-foreground","hover:bg-muted","hover:text-surface-foreground",3,"click"],["name","chevron-right",1,"h-3.5","w-3.5","rotate-180"],[1,"text-sm","font-medium","text-surface-foreground"],[1,"ml-auto","text-[11px]","font-medium","text-brand-text"],["appAutofocusSelect","",1,"ui-input",3,"input","placeholder","value"],[1,"text-[11px]","tabular-nums","text-muted-foreground"],["type","button",1,"text-xs","text-muted-foreground","underline","hover:text-surface-foreground",3,"click"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"button",1),d("click",function(){return i.toggleOpen()}),F(2,"app-icon",2),u(3,A,2,1,"span",3),l(),y(4,q,6,4,"span",4,$),l(),u(6,ie,4,6,"div",5)),e&2&&(o(),h("aria-expanded",i.open()),o(),C("strokeWidth",1.75),o(),_(i.filters().length?3:-1),o(),w(i.pillGroups()),o(2),_(i.open()?6:-1))},dependencies:[I,N],encapsulation:2})};export{Q as a};
@@ -0,0 +1 @@
1
+ import{a as E}from"./chunk-H5H727H6.js";import{b as N}from"./chunk-2SO4BVIT.js";import{E as w,H as k,Kb as x,k as h}from"./chunk-P5WRM37W.js";import{a as A}from"./chunk-WFIHWVQO.js";var S=class e{http=k(x);listEvents(r){let t=new URLSearchParams;for(let[o,s]of Object.entries(r))if(!(s==null||s===""||s===!1)){if(Array.isArray(s)){if(o==="target")for(let c of s)t.append(o,c);else s.length&&t.set(o,s.join(","));continue}t.set(o,String(s))}t.set("derived","true");let n=t.toString();return this.http.get(`/api/admin/audit${n?`?${n}`:""}`)}accessReport(){return this.http.get("/api/admin/access-report",{responseType:"blob"})}startAccessReport(){return this.http.post("/api/admin/access-report/jobs",{}).pipe(h(r=>r.job))}accessReportJob(r){return this.http.get(`/api/admin/access-report/jobs/${encodeURIComponent(r)}`).pipe(h(t=>t.job))}static \u0275fac=function(t){return new(t||e)};static \u0275prov=w({token:e,factory:e.\u0275fac,providedIn:"root"})};var R={access:"Access changes",request:"Requests",vend:"Credentials & console",network:"Network",catalog:"Catalog",users:"Users & admins",auth:"Refused calls"},O={OK:"Succeeded",DENIED:"Denied",FAILED:"Failed"},$={REAPPROVAL:"yearly review lapsed",EXPIRY:"expired",CASCADE:"cascade of a delete",OWNER:"by the owner"},D={reapproval:"yearly review",reconciler:"network reconciler",expiry:"expiry sweep",deploy:"deploy",unknown:"background job"},I={NO_GRANT:"no grant",NO_ROLE:"role no longer registered",EXPIRED:"grant expired"};function p(e){let r=e.indexOf("#");if(r<0)return{kind:"other",id:e};let t=e.slice(0,r),n=e.slice(r+1);if(t==="role"){let o=n.indexOf("#");return o<0?{kind:t,id:n,roleName:n}:{kind:t,id:n,accountNumber:n.slice(0,o),roleName:n.slice(o+1)}}if(t==="plugin"){let[o,s,c]=n.split("#");return{kind:t,id:o,accountNumber:s,permission:c}}return{kind:t,id:n}}var i=(e,r,t,n={})=>A({past:e,base:r,rest:t},n),L={"role.grant":i("granted","grant",["{obj}","to {subj}"]),"resource.grant":i("granted","grant",["{obj}","to {subj}"]),"plugin.grant":i("granted","grant",["{obj}","to {subj}"]),"role.revoke":i("revoked","revoke",["{obj}","from {subj}"]),"resource.revoke":i("revoked","revoke",["{obj}","from {subj}"]),"plugin.revoke":i("revoked","revoke",["{obj}","from {subj}"]),"share.create":i("started sharing","share",["{obj}"],{badge:"shared"}),"share.stop":i("stopped sharing","stop sharing",["{obj}"],{badge:"stopped"}),"group.member.add":i("added","add",["{subj}","to group {obj}"]),"group.member.remove":i("removed","remove",["{subj}","from group {obj}"]),"group.bundle.add":i("added","add",["{thing}","to the bundle of {group}"]),"group.bundle.remove":i("removed","remove",["{thing}","from the bundle of {group}"]),"group.create":i("created","create",["group {thing}"]),"group.update":i("updated","update",["group {thing}"]),"group.delete":i("deleted","delete",["group {thing}"]),"user.revoke_all":i("revoked everything","revoke everything",["from {subj}"],{badge:"revoked"}),"access.gain":i("gained","gain",["{obj}","via group {group}"]),"access.lose":i("lost","lose",["{obj}","via group {group}"]),"access.expire":i("lost","keep",["{obj}","(expired)"],{badge:"expired"}),"request.create":i("requested","request",["{obj}"]),"request.approve":i("approved","approve",["{subj}'s request","for {obj}"],{done:["the request","for {obj}"]}),"request.deny":i("denied","deny",["{subj}'s request","for {obj}"],{done:["the request","for {obj}"]}),"review.raise":i("raised a review","raise a review",["of {subj}","in group {obj}"],{badge:"review raised"}),"credentials.vend":i("vended credentials","vend credentials",["for {obj}"],{noun:"credentials",badge:"vended"}),"console.open":i("opened the console","open the console",["for {obj}"],{noun:"the console",badge:"opened"}),"device.enroll":i("enrolled a VPN device","enroll a VPN device",["for VPN {obj}"],{noun:"a device key",badge:"enrolled"}),"role.test":i("tested a session","test a session",["for {obj}"],{noun:"a test session",badge:"tested"}),"vpn.connect":i("connected","connect",["to VPN {obj}"]),"vpn.disconnect":i("disconnected","disconnect",["from VPN {obj}"]),"sg.rule.add":i("added a firewall rule","add a firewall rule",["for {obj}"],{badge:"added"}),"sg.rule.remove":i("removed a firewall rule","remove a firewall rule",["for {obj}"],{badge:"removed"}),"connector.prune":i("pruned connector","prune connector",["{obj}"],{badge:"pruned"}),"connector.online":i("saw connector","see connector",["{obj}","come online"],{badge:"online"}),"account.create":i("registered","register",["account {thing}"],{badge:"registered"}),"account.update":i("updated","update",["account {thing}"]),"account.reorder":i("reordered","reorder",["the account list"]),"account.delete":i("removed","remove",["account {thing}"]),"role.create":i("registered","register",["role {thing}"],{badge:"registered"}),"role.update":i("updated","update",["role {thing}"]),"role.delete":i("removed","remove",["role {thing}"]),"resource.create":i("registered","register",["resource {thing}"],{badge:"registered"}),"resource.update":i("updated","update",["resource {thing}"]),"resource.delete":i("removed","remove",["resource {thing}"]),"plugin.activate":i("activated plugin","activate plugin",["{thing}"],{badge:"activated"}),"plugin.tombstone":i("removed plugin","remove plugin",["{thing}"],{badge:"removed"}),"user.invite":i("invited","invite",["{subj}"]),"user.reinvite":i("re-invited","re-invite",["{subj}"],{badge:"re-invited"}),"user.delete":i("deleted user","delete user",["{subj}"],{badge:"deleted"}),"user.admin.grant":i("made","make",["{subj}","an admin"],{badge:"granted"}),"user.admin.revoke":i("removed admin","remove admin",["from {subj}"],{badge:"revoked"}),"user.email.change":i("changed the email","change the email",["of {subj}"],{badge:"changed"}),"user.mfa.reset":i("reset MFA","reset MFA",["for {subj}"],{badge:"reset"}),"serviceuser.create":i("created service user","create service user",["{thing}"],{badge:"created"}),"serviceuser.rotate":i("started rotating the secret of","rotate the secret of",["{thing}"],{badge:"rotating"}),"serviceuser.rotate.finish":i("finished rotating the secret of","finish rotating the secret of",["{thing}"],{badge:"rotated"}),"serviceuser.delete":i("deleted service user","delete service user",["{thing}"],{badge:"deleted"}),"branding.update":i("updated the branding","update the branding",[],{badge:"updated"}),"dashboard-layout.update":i("changed the dashboard layout","change the dashboard layout",["to {to}"],{badge:"changed"}),"admin.access":i("opened","open",["{obj}"],{noun:""}),"plugin.access":i("used plugin","use plugin",["{obj}"],{noun:"plugin",badge:"used"})};function V(e){let r=L[e];if(r)return r;let t=e.lastIndexOf("."),n=t<0?e:e.slice(t+1),o=t<0?"":e.slice(0,t).replace(/\./g," "),s=o?`${n} ${o}`:n;return i(s,s,["{thing}"])}var g=e=>({kind:"text",text:e});function T(e){return(e.actor.name??e.actor.id)+(e.actor.deleted?" (deleted)":"")}function v(e){return(e.name??e.id)+(e.deleted?" (deleted)":"")}function ae(e){let r=e.subject;return r&&r.kind!=="group"&&r.id!==e.actor.id?r:null}function m(e,r){if(!e.target)return null;let t=p(e.target);switch(t.kind){case"role":{let n=t.accountNumber??e.accountNumber,o=n?`\xB7 ${r.accountLabel(n)}`:void 0;return{kind:"chip",text:t.roleName??t.id,detail:o,title:[t.roleName??t.id,o].filter(Boolean).join(" ")}}case"plugin":{let n=(e.targetName??t.id)+(t.permission==="admin"?" (admin)":""),o=t.accountNumber?`\xB7 ${r.accountLabel(t.accountNumber)}`:void 0;return{kind:"chip",text:n,detail:o,title:[n,o].filter(Boolean).join(" ")}}case"account":return{kind:"chip",text:r.accountLabel(t.id),title:t.id};case"route":return{kind:"chip",text:t.id.replace(/^[A-Z]+\s+/,""),title:t.id};case"group":return{kind:"chip",text:e.targetName??r.groupName(t.id)??t.id,title:e.target};case"settings":return{kind:"chip",text:e.targetName??t.id.replace(/-/g," "),title:e.target};default:return{kind:"chip",text:e.targetName??t.id,title:e.target}}}function q(e,r){let t=m(e,r);return!t||t.kind!=="chip"?"":t.detail?`${t.text} ${t.detail}`:t.text}function y(e){let r=e.subject;if(!r)return g("someone");let t=v(r);return r.kind==="group"?{kind:"chip",text:t,title:`group#${r.id}`}:{kind:"name",text:t}}var C=new Set(["vpn.connect","vpn.disconnect"]),F=new Set([...C,"access.expire"]);function _(e){return e.actor.kind==="system"?F.has(e.action)?[]:[g(`by the ${Y(e.actor.id,e.actor.name)}`)]:[g("by"),{kind:"name",text:T(e)}]}function B(e,r){if(e.subject?.kind==="group")return y(e);if(e.target?.startsWith("group#"))return m(e,r);let t=e.details?.groupId;return t?{kind:"chip",text:e.details?.groupName??r.groupName(t)??t,title:`group#${t}`}:null}function M(e){let r=e.details?.count;return typeof r=="number"&&r>0?g(`${r} access grants`):null}var H=/\{(obj|thing|subj|group|to)\}/g;function W(e){let r=Object.values(e.details?.changed??{});if(r.length!==1)return null;let t=r[0]?.to;return t==null||t===""?null:g(String(t))}function J(e,r,t,n){let o=[],s=0;for(let d of e.matchAll(H)){let u=e.slice(s,d.index);u.trim()&&o.push(g(u.trim())),s=d.index+d[0].length;let a;switch(d[1]){case"obj":a=m(r,t)??M(r);break;case"thing":a=m(r,t)??(r.subject&&!n?y(r):null);break;case"subj":a=n?null:y(r);break;case"to":a=W(r);break;default:a=B(r,t)}if(!a)return null;o.push(a)}let c=e.slice(s);return c.trim()&&o.push(g(c.trim())),o}function ce(e,r,t={}){let n=t.subjectShown??!1,o=V(e.action),s=[];e.outcome==="OK"?s.push(g(o.past)):e.outcome==="FAILED"?s.push(g(`failed to ${o.base}`)):s.push(g(o.noun===void 0?`was refused: ${o.base}`:`was refused ${o.noun}`.replace(/\s+$/,"")));for(let c of n&&o.done?o.done:o.rest){let d=J(c,e,r,n);d&&s.push(...d)}return n&&t.byActor!==!1&&s.push(..._(e)),s}function de(e){return e.map(r=>r.kind==="chip"&&r.detail?`${r.text} ${r.detail}`:r.text).join(" ").replace(/\s+'/g,"'").replace(/\s+\)/g,")")}function ue(e){if(e.derived)return e.details?.via==="EXPIRY"?{tone:"amber",label:"expired"}:e.details?.via==="REAPPROVAL"?{tone:"amber",label:"lapsed"}:e.action==="access.lose"?{tone:"green",label:"removed"}:{tone:"green",label:"granted"};if(e.outcome==="DENIED")return{tone:"red",label:"denied"};if(e.outcome==="FAILED")return{tone:"amber",label:"failed"};switch(e.details?.via){case"REAPPROVAL":return{tone:"amber",label:"revoked \xB7 lapsed"};case"EXPIRY":return{tone:"amber",label:"expired"};case"CASCADE":return{tone:"amber",label:"removed"}}let r=V(e.action);return{tone:"green",label:r.badge??r.past.split(" ")[0]}}function f(e){return e===1?"1 person":`${e} people`}function U(e,r){let t=new Set,n=new Set;for(let o of e)(o.change==="lost"?n:t).add(o.userId);return r&&r>e.length?`affects ${f(r)}`:t.size&&n.size?`${f(t.size)} gained, ${n.size} lost`:t.size?`${f(t.size)} gained access`:n.size?`${f(n.size)} lost access`:null}function P(e,r){let t=r.some(o=>o.change==="lost"),n=r.some(o=>o.change==="gained");return t!==n?t:/\.(remove|delete|revoke|revoke_all)$/.test(e)}function z(e){let r=new Map;for(let t of new Set(e)){let n=p(t).kind;r.set(n,(r.get(n)??0)+1)}return[...r].map(([t,n])=>`${n} ${t}${n===1?"":"s"}`).join(", ")}function le(e,r,t){let n=e.details??{},o=P(e.action,r),s=n.alreadyHeld?.length??0;if(s){let a=r.map(b=>b.target).filter(b=>!!b),l=a.length?z(a):r.length?"access":"nothing";return`${o?"lost":"gained"} ${l} \xB7 ${o?"still holds":"already had"} ${s}`}let c=U(r,t),d=n.unchangedCount??n.unchanged?.length??0;if(!d)return c;let u=o?`${d} still ${d===1?"has":"have"} it another way`:`${d} already had it`;return`${c??(o?"Nobody lost access":"Nobody gained access")} \xB7 ${u}`}function ge(e,r,t){let n=e.details??{},o=P(e.action,r),s,c,d;if(n.alreadyHeld?.length)s=n.alreadyHeld.map(l=>K(p(l).kind,l,t)),c=o?"Still holds":"Already had",d=s.length;else if(n.unchanged?.length)s=n.unchanged.map(l=>l.name??l.userId),c=o?"Still have it another way":"Already had it",d=Math.max(n.unchangedCount??0,s.length);else return null;let u=s.slice(0,3),a=d-u.length;return{label:c,text:u.join(", ")+(a>0?` +${a} more`:""),all:s}}function pe(e){return!e.derived||e.subject?.kind!=="user"?null:{userId:e.subject.id,name:e.subject.name,change:e.action==="access.lose"?"lost":"gained",target:e.target}}function be(e){let r=new Map;for(let s of e){let c=s.details?.batchId;if(!s.derived||!c)continue;let d=r.get(c);d||r.set(c,d=[]),d.push(s)}let t=new Map;for(let s of e){let c=s.details?.batchId;!s.derived&&c&&r.has(c)&&!t.has(c)&&t.set(c,s.eventId)}let n=new Map;for(let[s,c]of r){let d=t.get(s);d&&(c.sort((u,a)=>u.action!==a.action?u.action==="access.lose"?1:-1:(u.subject?v(u.subject):"").localeCompare(a.subject?v(a.subject):"")),n.set(d,c))}return{top:e.filter(s=>!s.derived||!s.details?.batchId||!t.has(s.details.batchId)),effects:n}}function j(e){return e==null||e===""?"\u2014":Array.isArray(e)?e.map(j).join(", "):typeof e=="object"?JSON.stringify(e):String(e)}function fe(e,r,t=!1){let n=e.details??{},o=[];n.expiresAt&&o.push(`until ${E(n.expiresAt)}`),typeof n.durationHours=="number"&&o.push(`for ${N(n.durationHours)}`);let s=e.action.startsWith("access.")||e.action.startsWith("group.bundle.");n.via==="GROUP"&&n.groupId&&!s?o.push(`via group ${n.groupName??r.groupName(n.groupId)??n.groupId}`):n.via&&$[n.via]&&o.push($[n.via]),n.requestId&&!e.action.startsWith("request.")&&!e.action.startsWith("review.")&&o.push(e.action.endsWith(".grant")&&e.subject?`approving ${e.subject.name??e.subject.id}'s request`:`request ${n.requestId.slice(0,8)}`),n.note&&o.push(`"${n.note}"`);let c=e.reason&&(I[e.reason]??e.reason);if(c&&o.push(c),n.deniedReason&&n.deniedReason!==e.reason&&o.push(I[n.deniedReason]??n.deniedReason),n.changed)for(let[d,u]of Object.entries(n.changed))o.push(`${d}: ${j(u?.from)} \u2192 ${j(u?.to)}`);if(n.stillHeldVia){let u=(Array.isArray(n.stillHeldVia)?n.stillHeldVia:[]).map((a,l)=>n.stillHeldViaNames?.[l]??r.groupName(a)??a);u.length?o.push(`still held through group${u.length>1?"s":""} ${u.join(", ")}`):o.push(e.target?.startsWith("plugin#")?"still held another way":"still held through a group")}return n.provider&&o.push(`via ${n.provider}`),n.siteId&&!e.target?.startsWith("site#")&&o.push(`VPN ${n.siteId}`),e.derived&&!t&&o.push(n.via==="CASCADE"?"per-user effect of a cascade":n.via==="GROUP"?"per-user effect of a group change":"per-user effect of a group/cascade change"),o}function Y(e,r){let t=e.replace(/^system:/,"");return r&&r!==t?r:D[t]??t}function me(e,r,t=[]){let n=[],o=(a,l,b)=>{l&&n.push({key:a,id:l,label:b||l})};o("type",e.category,R[e.category]??e.category),o("outcome",e.outcome,O[e.outcome]??e.outcome);let s=e.target?p(e.target):null,c=e.accountNumber??s?.accountNumber;o("account",c,c&&r.accountLabel(c));let d=C.has(e.action)&&e.subject?.kind==="user"?e.subject:null;d?o("who",d.id,d.name):e.actor.kind==="system"?o("who",X,"System"):o("who",e.actor.id,e.actor.name),e.subject?.kind==="user"&&o("person",e.subject.id,e.subject.name);for(let a of e.details?.affected??[])o("person",a.userId,a.name);for(let a of t)a.subject?.kind==="user"&&o("person",a.subject.id,a.subject.name);if(e.subject?.kind==="group"&&o("group",e.subject.id,e.subject.name??r.groupName(e.subject.id)),e.subject?.kind==="serviceUser"&&o("serviceuser",`serviceuser#${e.subject.id}`,e.subject.name),e.details?.groupId&&o("group",e.details.groupId,e.details.groupName??r.groupName(e.details.groupId)),s&&e.target){let a=q(e,r);switch(s.kind){case"role":case"resource":case"site":case"plugin":case"share":case"serviceuser":o(s.kind,e.target,a);break;case"group":o("group",s.id,a);break}}e.details?.siteId&&!e.target?.startsWith("site#")&&o("site",`site#${e.details.siteId}`,e.details.siteId);let u=new Set;return n.filter(a=>{let l=`${a.key}:${a.id}`;return u.has(l)?!1:(u.add(l),!0)})}var X="system",he=["system:reapproval","system:reconciler","system:deploy","system:expiry","system:unknown"],G={type:"Type",outcome:"Outcome",account:"Account",who:"Done by",person:"Done to",role:"Role",resource:"Resource",group:"Group",site:"VPN",plugin:"Plugin",share:"Share",serviceuser:"Service user"},ve=Object.keys(G);function K(e,r,t){switch(e){case"type":return R[r]??r;case"outcome":return O[r]??r;case"account":return t.accountLabel(r);case"group":return t.groupName(r)??r;case"role":{let n=p(r);return n.accountNumber?`${n.roleName} \xB7 ${t.accountLabel(n.accountNumber)}`:n.roleName??r}case"plugin":return p(r).id;case"resource":case"site":case"share":case"serviceuser":return p(r).id;default:return r}}function ye(e){let r=new Set;return e.filter(t=>r.has(t.eventId)?!1:(r.add(t.eventId),!0))}function je(e,r){return e.filter(t=>t.at===r).map(t=>t.eventId)}function Ae(e){let r=new Map;for(let t of e)t.target?.startsWith("group#")&&t.targetName&&r.set(t.target.slice(6),t.targetName),t.subject?.kind==="group"&&t.subject.name&&r.set(t.subject.id,t.subject.name),t.details?.groupId&&t.details.groupName&&r.set(t.details.groupId,t.details.groupName);return r}export{S as a,R as b,O as c,p as d,T as e,v as f,ae as g,q as h,ce as i,de as j,ue as k,le as l,ge as m,pe as n,be as o,fe as p,Y as q,me as r,X as s,he as t,G as u,ve as v,K as w,ye as x,je as y,Ae as z};