@portaidentity/cli 1.7.3 → 1.9.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 (328) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +125 -105
  3. package/dist/admin/admin-date-time.d.ts +6 -0
  4. package/dist/admin/admin-date-time.d.ts.map +1 -0
  5. package/dist/admin/admin-date-time.js +33 -0
  6. package/dist/admin/admin-date-time.js.map +1 -0
  7. package/dist/admin/application-client-features.d.ts +38 -0
  8. package/dist/admin/application-client-features.d.ts.map +1 -0
  9. package/dist/admin/application-client-features.js +545 -0
  10. package/dist/admin/application-client-features.js.map +1 -0
  11. package/dist/admin/application-controller.d.ts +58 -0
  12. package/dist/admin/application-controller.d.ts.map +1 -0
  13. package/dist/admin/application-controller.js +286 -0
  14. package/dist/admin/application-controller.js.map +1 -0
  15. package/dist/admin/application-dialogs.d.ts +91 -0
  16. package/dist/admin/application-dialogs.d.ts.map +1 -0
  17. package/dist/admin/application-dialogs.js +250 -0
  18. package/dist/admin/application-dialogs.js.map +1 -0
  19. package/dist/admin/application-rbac-controller.d.ts +56 -0
  20. package/dist/admin/application-rbac-controller.d.ts.map +1 -0
  21. package/dist/admin/application-rbac-controller.js +280 -0
  22. package/dist/admin/application-rbac-controller.js.map +1 -0
  23. package/dist/admin/application-rbac-features.d.ts +51 -0
  24. package/dist/admin/application-rbac-features.d.ts.map +1 -0
  25. package/dist/admin/application-rbac-features.js +175 -0
  26. package/dist/admin/application-rbac-features.js.map +1 -0
  27. package/dist/admin/application-rbac-workspace.d.ts +62 -0
  28. package/dist/admin/application-rbac-workspace.d.ts.map +1 -0
  29. package/dist/admin/application-rbac-workspace.js +344 -0
  30. package/dist/admin/application-rbac-workspace.js.map +1 -0
  31. package/dist/admin/application-runtime.d.ts +44 -0
  32. package/dist/admin/application-runtime.d.ts.map +1 -0
  33. package/dist/admin/application-runtime.js +183 -0
  34. package/dist/admin/application-runtime.js.map +1 -0
  35. package/dist/admin/application-service.d.ts +39 -0
  36. package/dist/admin/application-service.d.ts.map +1 -0
  37. package/dist/admin/application-service.js +248 -0
  38. package/dist/admin/application-service.js.map +1 -0
  39. package/dist/admin/application-state.d.ts +109 -0
  40. package/dist/admin/application-state.d.ts.map +1 -0
  41. package/dist/admin/application-state.js +3 -0
  42. package/dist/admin/application-state.js.map +1 -0
  43. package/dist/admin/application-workspace.d.ts +77 -0
  44. package/dist/admin/application-workspace.d.ts.map +1 -0
  45. package/dist/admin/application-workspace.js +302 -0
  46. package/dist/admin/application-workspace.js.map +1 -0
  47. package/dist/admin/application.d.ts +88 -0
  48. package/dist/admin/application.d.ts.map +1 -0
  49. package/dist/admin/application.js +932 -0
  50. package/dist/admin/application.js.map +1 -0
  51. package/dist/admin/client-authentication-dialog.d.ts +77 -0
  52. package/dist/admin/client-authentication-dialog.d.ts.map +1 -0
  53. package/dist/admin/client-authentication-dialog.js +217 -0
  54. package/dist/admin/client-authentication-dialog.js.map +1 -0
  55. package/dist/admin/client-controller.d.ts +58 -0
  56. package/dist/admin/client-controller.d.ts.map +1 -0
  57. package/dist/admin/client-controller.js +462 -0
  58. package/dist/admin/client-controller.js.map +1 -0
  59. package/dist/admin/client-credential-dialogs.d.ts +36 -0
  60. package/dist/admin/client-credential-dialogs.d.ts.map +1 -0
  61. package/dist/admin/client-credential-dialogs.js +145 -0
  62. package/dist/admin/client-credential-dialogs.js.map +1 -0
  63. package/dist/admin/client-dialogs.d.ts +64 -0
  64. package/dist/admin/client-dialogs.d.ts.map +1 -0
  65. package/dist/admin/client-dialogs.js +110 -0
  66. package/dist/admin/client-dialogs.js.map +1 -0
  67. package/dist/admin/client-form-scroller.d.ts +17 -0
  68. package/dist/admin/client-form-scroller.d.ts.map +1 -0
  69. package/dist/admin/client-form-scroller.js +67 -0
  70. package/dist/admin/client-form-scroller.js.map +1 -0
  71. package/dist/admin/client-registration-dialog.d.ts +27 -0
  72. package/dist/admin/client-registration-dialog.d.ts.map +1 -0
  73. package/dist/admin/client-registration-dialog.js +195 -0
  74. package/dist/admin/client-registration-dialog.js.map +1 -0
  75. package/dist/admin/client-service.d.ts +41 -0
  76. package/dist/admin/client-service.d.ts.map +1 -0
  77. package/dist/admin/client-service.js +486 -0
  78. package/dist/admin/client-service.js.map +1 -0
  79. package/dist/admin/client-state.d.ts +159 -0
  80. package/dist/admin/client-state.d.ts.map +1 -0
  81. package/dist/admin/client-state.js +3 -0
  82. package/dist/admin/client-state.js.map +1 -0
  83. package/dist/admin/client-workspace.d.ts +88 -0
  84. package/dist/admin/client-workspace.d.ts.map +1 -0
  85. package/dist/admin/client-workspace.js +491 -0
  86. package/dist/admin/client-workspace.js.map +1 -0
  87. package/dist/admin/delete-confirmation-layout.d.ts +38 -0
  88. package/dist/admin/delete-confirmation-layout.d.ts.map +1 -0
  89. package/dist/admin/delete-confirmation-layout.js +52 -0
  90. package/dist/admin/delete-confirmation-layout.js.map +1 -0
  91. package/dist/admin/index.d.ts +64 -0
  92. package/dist/admin/index.d.ts.map +1 -0
  93. package/dist/admin/index.js +31 -0
  94. package/dist/admin/index.js.map +1 -0
  95. package/dist/admin/organization-controller.d.ts +77 -0
  96. package/dist/admin/organization-controller.d.ts.map +1 -0
  97. package/dist/admin/organization-controller.js +472 -0
  98. package/dist/admin/organization-controller.js.map +1 -0
  99. package/dist/admin/organization-dialogs.d.ts +63 -0
  100. package/dist/admin/organization-dialogs.d.ts.map +1 -0
  101. package/dist/admin/organization-dialogs.js +303 -0
  102. package/dist/admin/organization-dialogs.js.map +1 -0
  103. package/dist/admin/organization-service.d.ts +110 -0
  104. package/dist/admin/organization-service.d.ts.map +1 -0
  105. package/dist/admin/organization-service.js +548 -0
  106. package/dist/admin/organization-service.js.map +1 -0
  107. package/dist/admin/organization-workspace.d.ts +29 -0
  108. package/dist/admin/organization-workspace.d.ts.map +1 -0
  109. package/dist/admin/organization-workspace.js +421 -0
  110. package/dist/admin/organization-workspace.js.map +1 -0
  111. package/dist/admin/portability-controller.d.ts +83 -0
  112. package/dist/admin/portability-controller.d.ts.map +1 -0
  113. package/dist/admin/portability-controller.js +466 -0
  114. package/dist/admin/portability-controller.js.map +1 -0
  115. package/dist/admin/portability-service.d.ts +31 -0
  116. package/dist/admin/portability-service.d.ts.map +1 -0
  117. package/dist/admin/portability-service.js +51 -0
  118. package/dist/admin/portability-service.js.map +1 -0
  119. package/dist/admin/portability-state.d.ts +88 -0
  120. package/dist/admin/portability-state.d.ts.map +1 -0
  121. package/dist/admin/portability-state.js +3 -0
  122. package/dist/admin/portability-state.js.map +1 -0
  123. package/dist/admin/portability-workspace.d.ts +78 -0
  124. package/dist/admin/portability-workspace.d.ts.map +1 -0
  125. package/dist/admin/portability-workspace.js +337 -0
  126. package/dist/admin/portability-workspace.js.map +1 -0
  127. package/dist/admin/presentation.d.ts +46 -0
  128. package/dist/admin/presentation.d.ts.map +1 -0
  129. package/dist/admin/presentation.js +271 -0
  130. package/dist/admin/presentation.js.map +1 -0
  131. package/dist/admin/rbac-dialogs.d.ts +73 -0
  132. package/dist/admin/rbac-dialogs.d.ts.map +1 -0
  133. package/dist/admin/rbac-dialogs.js +345 -0
  134. package/dist/admin/rbac-dialogs.js.map +1 -0
  135. package/dist/admin/rbac-service.d.ts +47 -0
  136. package/dist/admin/rbac-service.d.ts.map +1 -0
  137. package/dist/admin/rbac-service.js +258 -0
  138. package/dist/admin/rbac-service.js.map +1 -0
  139. package/dist/admin/rbac-state.d.ts +129 -0
  140. package/dist/admin/rbac-state.d.ts.map +1 -0
  141. package/dist/admin/rbac-state.js +136 -0
  142. package/dist/admin/rbac-state.js.map +1 -0
  143. package/dist/admin/selectable-read-only-input.d.ts +18 -0
  144. package/dist/admin/selectable-read-only-input.d.ts.map +1 -0
  145. package/dist/admin/selectable-read-only-input.js +24 -0
  146. package/dist/admin/selectable-read-only-input.js.map +1 -0
  147. package/dist/admin/session-service.d.ts +169 -0
  148. package/dist/admin/session-service.d.ts.map +1 -0
  149. package/dist/admin/session-service.js +353 -0
  150. package/dist/admin/session-service.js.map +1 -0
  151. package/dist/admin/state.d.ts +301 -0
  152. package/dist/admin/state.d.ts.map +1 -0
  153. package/dist/admin/state.js +10 -0
  154. package/dist/admin/state.js.map +1 -0
  155. package/dist/admin/system-config-controller.d.ts +58 -0
  156. package/dist/admin/system-config-controller.d.ts.map +1 -0
  157. package/dist/admin/system-config-controller.js +218 -0
  158. package/dist/admin/system-config-controller.js.map +1 -0
  159. package/dist/admin/system-config-service.d.ts +54 -0
  160. package/dist/admin/system-config-service.d.ts.map +1 -0
  161. package/dist/admin/system-config-service.js +180 -0
  162. package/dist/admin/system-config-service.js.map +1 -0
  163. package/dist/admin/system-config-state.d.ts +77 -0
  164. package/dist/admin/system-config-state.d.ts.map +1 -0
  165. package/dist/admin/system-config-state.js +78 -0
  166. package/dist/admin/system-config-state.js.map +1 -0
  167. package/dist/admin/system-config-workspace.d.ts +47 -0
  168. package/dist/admin/system-config-workspace.d.ts.map +1 -0
  169. package/dist/admin/system-config-workspace.js +217 -0
  170. package/dist/admin/system-config-workspace.js.map +1 -0
  171. package/dist/admin/user-controller-types.d.ts +67 -0
  172. package/dist/admin/user-controller-types.d.ts.map +1 -0
  173. package/dist/admin/user-controller-types.js +3 -0
  174. package/dist/admin/user-controller-types.js.map +1 -0
  175. package/dist/admin/user-controller.d.ts +6 -0
  176. package/dist/admin/user-controller.d.ts.map +1 -0
  177. package/dist/admin/user-controller.js +674 -0
  178. package/dist/admin/user-controller.js.map +1 -0
  179. package/dist/admin/user-dialog-fields.d.ts +44 -0
  180. package/dist/admin/user-dialog-fields.d.ts.map +1 -0
  181. package/dist/admin/user-dialog-fields.js +130 -0
  182. package/dist/admin/user-dialog-fields.js.map +1 -0
  183. package/dist/admin/user-dialogs.d.ts +66 -0
  184. package/dist/admin/user-dialogs.d.ts.map +1 -0
  185. package/dist/admin/user-dialogs.js +374 -0
  186. package/dist/admin/user-dialogs.js.map +1 -0
  187. package/dist/admin/user-role-controller.d.ts +82 -0
  188. package/dist/admin/user-role-controller.d.ts.map +1 -0
  189. package/dist/admin/user-role-controller.js +337 -0
  190. package/dist/admin/user-role-controller.js.map +1 -0
  191. package/dist/admin/user-role-dialog.d.ts +94 -0
  192. package/dist/admin/user-role-dialog.d.ts.map +1 -0
  193. package/dist/admin/user-role-dialog.js +265 -0
  194. package/dist/admin/user-role-dialog.js.map +1 -0
  195. package/dist/admin/user-service-types.d.ts +100 -0
  196. package/dist/admin/user-service-types.d.ts.map +1 -0
  197. package/dist/admin/user-service-types.js +3 -0
  198. package/dist/admin/user-service-types.js.map +1 -0
  199. package/dist/admin/user-service.d.ts +14 -0
  200. package/dist/admin/user-service.d.ts.map +1 -0
  201. package/dist/admin/user-service.js +612 -0
  202. package/dist/admin/user-service.js.map +1 -0
  203. package/dist/admin/user-state.d.ts +158 -0
  204. package/dist/admin/user-state.d.ts.map +1 -0
  205. package/dist/admin/user-state.js +3 -0
  206. package/dist/admin/user-state.js.map +1 -0
  207. package/dist/admin/user-workspace.d.ts +65 -0
  208. package/dist/admin/user-workspace.d.ts.map +1 -0
  209. package/dist/admin/user-workspace.js +366 -0
  210. package/dist/admin/user-workspace.js.map +1 -0
  211. package/dist/auth/browser-flow.d.ts +27 -1
  212. package/dist/auth/browser-flow.d.ts.map +1 -1
  213. package/dist/auth/browser-flow.js +55 -33
  214. package/dist/auth/browser-flow.js.map +1 -1
  215. package/dist/auth/callback-server.d.ts.map +1 -1
  216. package/dist/auth/callback-server.js +5 -9
  217. package/dist/auth/callback-server.js.map +1 -1
  218. package/dist/auth/id-token-verifier.d.ts +39 -0
  219. package/dist/auth/id-token-verifier.d.ts.map +1 -0
  220. package/dist/auth/id-token-verifier.js +104 -0
  221. package/dist/auth/id-token-verifier.js.map +1 -0
  222. package/dist/auth/login-coordinator.d.ts +72 -0
  223. package/dist/auth/login-coordinator.d.ts.map +1 -0
  224. package/dist/auth/login-coordinator.js +190 -0
  225. package/dist/auth/login-coordinator.js.map +1 -0
  226. package/dist/auth/metadata.d.ts +2 -1
  227. package/dist/auth/metadata.d.ts.map +1 -1
  228. package/dist/auth/metadata.js +67 -6
  229. package/dist/auth/metadata.js.map +1 -1
  230. package/dist/auth/types.d.ts +14 -0
  231. package/dist/auth/types.d.ts.map +1 -1
  232. package/dist/client-factory.d.ts.map +1 -1
  233. package/dist/client-factory.js +15 -2
  234. package/dist/client-factory.js.map +1 -1
  235. package/dist/commands/admin.d.ts +22 -0
  236. package/dist/commands/admin.d.ts.map +1 -0
  237. package/dist/commands/admin.js +112 -0
  238. package/dist/commands/admin.js.map +1 -0
  239. package/dist/commands/app-claim.d.ts.map +1 -1
  240. package/dist/commands/app-claim.js +11 -4
  241. package/dist/commands/app-claim.js.map +1 -1
  242. package/dist/commands/app-module.d.ts.map +1 -1
  243. package/dist/commands/app-module.js +61 -12
  244. package/dist/commands/app-module.js.map +1 -1
  245. package/dist/commands/app-permission.d.ts.map +1 -1
  246. package/dist/commands/app-permission.js +66 -24
  247. package/dist/commands/app-permission.js.map +1 -1
  248. package/dist/commands/app-role.d.ts.map +1 -1
  249. package/dist/commands/app-role.js +48 -27
  250. package/dist/commands/app-role.js.map +1 -1
  251. package/dist/commands/app.d.ts.map +1 -1
  252. package/dist/commands/app.js +37 -25
  253. package/dist/commands/app.js.map +1 -1
  254. package/dist/commands/bulk.d.ts.map +1 -1
  255. package/dist/commands/bulk.js +9 -2
  256. package/dist/commands/bulk.js.map +1 -1
  257. package/dist/commands/client-secret.d.ts.map +1 -1
  258. package/dist/commands/client-secret.js +12 -6
  259. package/dist/commands/client-secret.js.map +1 -1
  260. package/dist/commands/client.d.ts +3 -2
  261. package/dist/commands/client.d.ts.map +1 -1
  262. package/dist/commands/client.js +102 -43
  263. package/dist/commands/client.js.map +1 -1
  264. package/dist/commands/config.d.ts +4 -0
  265. package/dist/commands/config.d.ts.map +1 -1
  266. package/dist/commands/config.js +68 -7
  267. package/dist/commands/config.js.map +1 -1
  268. package/dist/commands/export.d.ts +6 -0
  269. package/dist/commands/export.d.ts.map +1 -0
  270. package/dist/commands/export.js +182 -0
  271. package/dist/commands/export.js.map +1 -0
  272. package/dist/commands/import.d.ts +6 -0
  273. package/dist/commands/import.d.ts.map +1 -0
  274. package/dist/commands/import.js +142 -0
  275. package/dist/commands/import.js.map +1 -0
  276. package/dist/commands/keys.d.ts.map +1 -1
  277. package/dist/commands/keys.js +11 -4
  278. package/dist/commands/keys.js.map +1 -1
  279. package/dist/commands/login.d.ts.map +1 -1
  280. package/dist/commands/login.js +24 -10
  281. package/dist/commands/login.js.map +1 -1
  282. package/dist/commands/org.d.ts +2 -4
  283. package/dist/commands/org.d.ts.map +1 -1
  284. package/dist/commands/org.js +16 -76
  285. package/dist/commands/org.js.map +1 -1
  286. package/dist/commands/user-role.d.ts.map +1 -1
  287. package/dist/commands/user-role.js +19 -14
  288. package/dist/commands/user-role.js.map +1 -1
  289. package/dist/commands/user.d.ts +3 -2
  290. package/dist/commands/user.d.ts.map +1 -1
  291. package/dist/commands/user.js +47 -71
  292. package/dist/commands/user.js.map +1 -1
  293. package/dist/commands/version.d.ts +1 -1
  294. package/dist/commands/version.js +1 -1
  295. package/dist/credential-lock.d.ts +20 -0
  296. package/dist/credential-lock.d.ts.map +1 -0
  297. package/dist/credential-lock.js +130 -0
  298. package/dist/credential-lock.js.map +1 -0
  299. package/dist/credential-store.d.ts +14 -0
  300. package/dist/credential-store.d.ts.map +1 -1
  301. package/dist/credential-store.js +114 -3
  302. package/dist/credential-store.js.map +1 -1
  303. package/dist/error-handler.d.ts.map +1 -1
  304. package/dist/error-handler.js +2 -0
  305. package/dist/error-handler.js.map +1 -1
  306. package/dist/global-options.d.ts +8 -0
  307. package/dist/global-options.d.ts.map +1 -1
  308. package/dist/global-options.js +19 -8
  309. package/dist/global-options.js.map +1 -1
  310. package/dist/index.js +7 -5
  311. package/dist/index.js.map +1 -1
  312. package/dist/output.d.ts +11 -0
  313. package/dist/output.d.ts.map +1 -1
  314. package/dist/output.js +25 -6
  315. package/dist/output.js.map +1 -1
  316. package/dist/prompt.d.ts +2 -2
  317. package/dist/prompt.d.ts.map +1 -1
  318. package/dist/prompt.js +27 -7
  319. package/dist/prompt.js.map +1 -1
  320. package/package.json +7 -3
  321. package/dist/commands/gui.d.ts +0 -21
  322. package/dist/commands/gui.d.ts.map +0 -1
  323. package/dist/commands/gui.js +0 -67
  324. package/dist/commands/gui.js.map +0 -1
  325. package/dist/commands/provision.d.ts +0 -47
  326. package/dist/commands/provision.d.ts.map +0 -1
  327. package/dist/commands/provision.js +0 -444
  328. package/dist/commands/provision.js.map +0 -1
@@ -0,0 +1,548 @@
1
+ /** Sanitized organization operations for the embedded administration UI. */
2
+ import { PortaAuthenticationError, PortaConflictError, PortaForbiddenError, PortaHttpError, PortaValidationError, } from '@portaidentity/sdk';
3
+ const ORGANIZATION_SLUG = /^[a-z0-9][a-z0-9-]{1,98}[a-z0-9]$/;
4
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5
+ const ORGANIZATION_STATUSES = new Set(['active', 'suspended']);
6
+ const LOGIN_METHODS = new Set(['password', 'magic_link']);
7
+ const TWO_FACTOR_POLICIES = new Set(['optional', 'required_email', 'required_totp', 'required_any']);
8
+ const ASSET_CONTENT_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/x-icon', 'image/vnd.microsoft.icon', 'image/svg+xml']);
9
+ const ASSET_LIMITS = {
10
+ logo: 2 * 1024 * 1024,
11
+ favicon: 512 * 1024,
12
+ };
13
+ /** Narrows an untrusted value to a supported organization lifecycle state. */
14
+ function isOrganizationStatus(value) {
15
+ return typeof value === 'string' && ORGANIZATION_STATUSES.has(value);
16
+ }
17
+ /** Returns true when text contains a terminal control character. */
18
+ function containsTerminalControl(value) {
19
+ for (const character of value) {
20
+ const codePoint = character.codePointAt(0) ?? 0;
21
+ if (codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f))
22
+ return true;
23
+ }
24
+ return false;
25
+ }
26
+ /** Returns true for a bounded, terminal-safe text value. */
27
+ function isText(value, maximum, minimum = 0) {
28
+ return (typeof value === 'string' &&
29
+ value.length >= minimum &&
30
+ value.length <= maximum &&
31
+ !containsTerminalControl(value));
32
+ }
33
+ /** Validates an ISO timestamp retained only for human-readable display. */
34
+ function isTimestamp(value) {
35
+ if (!isText(value, 40, 20) ||
36
+ !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/.test(value)) {
37
+ return false;
38
+ }
39
+ const parsed = new Date(value);
40
+ return Number.isFinite(parsed.getTime()) && parsed.toISOString().slice(0, 19) === value.slice(0, 19);
41
+ }
42
+ /** Narrows one value to the supported organization login-method set. */
43
+ function isLoginMethod(value) {
44
+ return typeof value === 'string' && LOGIN_METHODS.has(value);
45
+ }
46
+ /** Projects a non-empty, duplicate-free login-method collection. */
47
+ function loginMethodValue(value) {
48
+ if (!Array.isArray(value) || value.length < 1 || value.length > LOGIN_METHODS.size) {
49
+ return undefined;
50
+ }
51
+ const methods = [];
52
+ for (const method of value) {
53
+ if (!isLoginMethod(method) || methods.includes(method))
54
+ return undefined;
55
+ methods.push(method);
56
+ }
57
+ return Object.freeze(methods);
58
+ }
59
+ /** Narrows one value to the supported organization two-factor policy set. */
60
+ function isTwoFactorPolicy(value) {
61
+ return (typeof value === 'string' &&
62
+ TWO_FACTOR_POLICIES.has(value));
63
+ }
64
+ /** Validates an optional organization branding image URL. */
65
+ function isBrandingUrl(value) {
66
+ if (value === null)
67
+ return true;
68
+ if (!isText(value, 2_048, 1) || value.trim() !== value)
69
+ return false;
70
+ try {
71
+ const url = new URL(value);
72
+ if (url.username || url.password)
73
+ return false;
74
+ if (url.protocol === 'https:')
75
+ return true;
76
+ return (url.protocol === 'http:' &&
77
+ (url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '[::1]'));
78
+ }
79
+ catch {
80
+ return false;
81
+ }
82
+ }
83
+ /**
84
+ * Projects the full organization settings used by the focused workspace.
85
+ *
86
+ * @param value - Untrusted organization returned by the SDK.
87
+ * @returns A frozen safe projection, or `undefined` when any retained field is invalid.
88
+ * @example
89
+ * ```ts
90
+ * const settings = validateOrganizationSettings(sdkOrganization);
91
+ * ```
92
+ */
93
+ export function validateOrganizationSettings(value) {
94
+ const context = validateOrganizationContext(value);
95
+ if (!context || !value || typeof value !== 'object')
96
+ return undefined;
97
+ const candidate = value;
98
+ const methods = loginMethodValue(candidate.defaultLoginMethods);
99
+ if (typeof candidate.isSuperAdmin !== 'boolean' ||
100
+ !isText(candidate.defaultLocale, 10, 2) ||
101
+ !/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(candidate.defaultLocale) ||
102
+ !methods ||
103
+ !isTwoFactorPolicy(candidate.twoFactorPolicy) ||
104
+ !(candidate.brandingCompanyName === null || isText(candidate.brandingCompanyName, 255)) ||
105
+ !(candidate.brandingPrimaryColor === null ||
106
+ (typeof candidate.brandingPrimaryColor === 'string' &&
107
+ /^#[0-9A-Fa-f]{6}$/.test(candidate.brandingPrimaryColor))) ||
108
+ !isBrandingUrl(candidate.brandingLogoUrl) ||
109
+ !isBrandingUrl(candidate.brandingFaviconUrl) ||
110
+ !isTimestamp(candidate.createdAt) ||
111
+ !isTimestamp(candidate.updatedAt)) {
112
+ return undefined;
113
+ }
114
+ return Object.freeze({
115
+ ...context,
116
+ isSuperAdmin: candidate.isSuperAdmin,
117
+ defaultLocale: candidate.defaultLocale,
118
+ defaultLoginMethods: methods,
119
+ twoFactorPolicy: candidate.twoFactorPolicy,
120
+ brandingCompanyName: candidate.brandingCompanyName,
121
+ brandingPrimaryColor: candidate.brandingPrimaryColor,
122
+ brandingLogoUrl: candidate.brandingLogoUrl,
123
+ brandingFaviconUrl: candidate.brandingFaviconUrl,
124
+ createdAt: candidate.createdAt,
125
+ updatedAt: candidate.updatedAt,
126
+ });
127
+ }
128
+ /** Projects one branding asset and verifies its organization and decoded-size boundary. */
129
+ function assetValue(value, organizationId) {
130
+ if (!value || typeof value !== 'object')
131
+ return undefined;
132
+ const candidate = value;
133
+ if (typeof candidate.id !== 'string' ||
134
+ !UUID.test(candidate.id) ||
135
+ candidate.organizationId !== organizationId ||
136
+ !(candidate.assetType === 'logo' || candidate.assetType === 'favicon') ||
137
+ typeof candidate.contentType !== 'string' ||
138
+ !ASSET_CONTENT_TYPES.has(candidate.contentType) ||
139
+ typeof candidate.fileSize !== 'number' ||
140
+ !Number.isSafeInteger(candidate.fileSize) ||
141
+ candidate.fileSize < 1 ||
142
+ candidate.fileSize > ASSET_LIMITS[candidate.assetType] ||
143
+ !isTimestamp(candidate.updatedAt)) {
144
+ return undefined;
145
+ }
146
+ return Object.freeze({
147
+ assetType: candidate.assetType,
148
+ contentType: candidate.contentType,
149
+ size: candidate.fileSize,
150
+ updatedAt: candidate.updatedAt,
151
+ });
152
+ }
153
+ /** Projects a complete asset collection without duplicates or partial values. */
154
+ function assetCollection(value, organizationId) {
155
+ if (!Array.isArray(value) || value.length > 2)
156
+ return undefined;
157
+ const slots = new Set();
158
+ const assets = [];
159
+ for (const row of value) {
160
+ const asset = assetValue(row, organizationId);
161
+ if (!asset || slots.has(asset.assetType))
162
+ return undefined;
163
+ slots.add(asset.assetType);
164
+ assets.push(asset);
165
+ }
166
+ return Object.freeze(assets);
167
+ }
168
+ /**
169
+ * Converts one untrusted SDK row to the only fields retained by the UI.
170
+ *
171
+ * @param value - Untrusted organization data returned by the SDK.
172
+ * @returns The validated four-field projection, or `undefined` for any malformed field.
173
+ * @example
174
+ * ```ts
175
+ * const context = validateOrganizationContext(sdkOrganization);
176
+ * ```
177
+ */
178
+ export function validateOrganizationContext(value) {
179
+ if (!value || typeof value !== 'object')
180
+ return undefined;
181
+ const candidate = value;
182
+ if (typeof candidate.id !== 'string' ||
183
+ !UUID.test(candidate.id) ||
184
+ typeof candidate.name !== 'string' ||
185
+ candidate.name.length === 0 ||
186
+ candidate.name.length > 255 ||
187
+ containsTerminalControl(candidate.name) ||
188
+ typeof candidate.slug !== 'string' ||
189
+ !ORGANIZATION_SLUG.test(candidate.slug) ||
190
+ !isOrganizationStatus(candidate.status) ||
191
+ (candidate.isSuperAdmin !== undefined && typeof candidate.isSuperAdmin !== 'boolean')) {
192
+ return undefined;
193
+ }
194
+ return {
195
+ id: candidate.id,
196
+ name: candidate.name,
197
+ slug: candidate.slug,
198
+ status: candidate.status,
199
+ ...(candidate.isSuperAdmin === true ? { isSuperAdmin: true } : {}),
200
+ };
201
+ }
202
+ /** Maps an SDK error to a fixed result without retaining remote details. */
203
+ function mapOrganizationError(error) {
204
+ if (!(error instanceof PortaHttpError)) {
205
+ return { kind: 'failure', failure: 'unavailable' };
206
+ }
207
+ switch (error.status) {
208
+ case 400:
209
+ return { kind: 'failure', failure: 'validation' };
210
+ case 401:
211
+ return { kind: 'session-invalid' };
212
+ case 403:
213
+ return { kind: 'failure', failure: 'unauthorized' };
214
+ case 409:
215
+ return { kind: 'failure', failure: 'conflict' };
216
+ default:
217
+ return { kind: 'failure', failure: 'unavailable' };
218
+ }
219
+ }
220
+ /** Maps an SDK error to the equivalent fixed reconciliation result. */
221
+ function mapReconciliationError(error) {
222
+ return mapOrganizationError(error);
223
+ }
224
+ /**
225
+ * Creates the narrow organization boundary used by the terminal application.
226
+ *
227
+ * The SDK domain is obtained lazily so no authenticated client is constructed before an
228
+ * organization operation is actually requested.
229
+ *
230
+ * @param domain - Returns the organization methods for the currently verified server.
231
+ * @returns Sanitized list, create, and reconciliation operations.
232
+ * @example
233
+ * ```ts
234
+ * const operations = createAdminOrganizationOperations(() => client.organizations);
235
+ * const result = await operations.listAll();
236
+ * ```
237
+ */
238
+ export function createAdminOrganizationOperations(domain) {
239
+ return {
240
+ async listAll() {
241
+ try {
242
+ const rows = await domain().listAll();
243
+ if (!Array.isArray(rows)) {
244
+ return { kind: 'failure', failure: 'invalid-response' };
245
+ }
246
+ const organizations = [];
247
+ for (const row of rows) {
248
+ const organization = validateOrganizationContext(row);
249
+ if (!organization)
250
+ return { kind: 'failure', failure: 'invalid-response' };
251
+ organizations.push(organization);
252
+ }
253
+ return { kind: 'success', value: organizations };
254
+ }
255
+ catch (error) {
256
+ return mapOrganizationError(error);
257
+ }
258
+ },
259
+ async reconcile(selectedId) {
260
+ try {
261
+ const rows = await domain().listAll();
262
+ if (!Array.isArray(rows)) {
263
+ return { kind: 'failure', failure: 'invalid-response' };
264
+ }
265
+ let matchedRow;
266
+ let matchCount = 0;
267
+ let matchingInvalid = false;
268
+ let unrelatedInvalid = false;
269
+ for (const row of rows) {
270
+ const rawId = row && typeof row === 'object' ? row.id : undefined;
271
+ const isMatch = rawId === selectedId;
272
+ if (isMatch) {
273
+ matchCount += 1;
274
+ matchedRow = row;
275
+ }
276
+ const validated = validateOrganizationContext(row);
277
+ if (!validated) {
278
+ if (isMatch)
279
+ matchingInvalid = true;
280
+ else
281
+ unrelatedInvalid = true;
282
+ }
283
+ }
284
+ if (matchCount > 1 || unrelatedInvalid) {
285
+ return { kind: 'failure', failure: 'invalid-response' };
286
+ }
287
+ if (matchingInvalid)
288
+ return { kind: 'matching-invalid' };
289
+ if (matchCount === 0)
290
+ return { kind: 'absent' };
291
+ const organization = validateOrganizationContext(matchedRow);
292
+ return organization ? { kind: 'match', organization } : { kind: 'matching-invalid' };
293
+ }
294
+ catch (error) {
295
+ return mapReconciliationError(error);
296
+ }
297
+ },
298
+ async create(input) {
299
+ const payload = { name: input.name };
300
+ if (input.slug)
301
+ payload.slug = input.slug;
302
+ if (input.defaultLocale)
303
+ payload.defaultLocale = input.defaultLocale;
304
+ try {
305
+ const created = await domain().create(payload);
306
+ const organization = validateOrganizationContext(created);
307
+ return organization
308
+ ? { kind: 'success', value: organization }
309
+ : { kind: 'failure', failure: 'invalid-response' };
310
+ }
311
+ catch (error) {
312
+ return mapOrganizationError(error);
313
+ }
314
+ },
315
+ async delete(id) {
316
+ if (!UUID.test(id))
317
+ return { kind: 'failure', failure: 'validation' };
318
+ try {
319
+ await domain().delete(id);
320
+ return { kind: 'success', value: undefined };
321
+ }
322
+ catch (error) {
323
+ return mapOrganizationError(error);
324
+ }
325
+ },
326
+ };
327
+ }
328
+ /** Maps an SDK read failure to a fixed workspace result. */
329
+ function workspaceReadError(error) {
330
+ if (error instanceof PortaAuthenticationError)
331
+ return { kind: 'session-invalid' };
332
+ if (error instanceof PortaValidationError)
333
+ return { kind: 'failure', failure: 'validation' };
334
+ if (error instanceof PortaForbiddenError)
335
+ return { kind: 'failure', failure: 'unauthorized' };
336
+ if (error instanceof PortaConflictError)
337
+ return { kind: 'failure', failure: 'conflict' };
338
+ return { kind: 'failure', failure: 'unavailable' };
339
+ }
340
+ /** Maps an SDK mutation failure without exposing its response or message. */
341
+ function workspaceMutationError(error) {
342
+ if (error instanceof DOMException && error.name === 'AbortError')
343
+ return { kind: 'cancelled' };
344
+ if (error instanceof PortaAuthenticationError)
345
+ return { kind: 'session-invalid' };
346
+ if (error instanceof PortaValidationError)
347
+ return { kind: 'failure', failure: 'validation' };
348
+ if (error instanceof PortaForbiddenError)
349
+ return { kind: 'failure', failure: 'unauthorized' };
350
+ if (error instanceof PortaConflictError)
351
+ return { kind: 'failure', failure: 'conflict' };
352
+ return { kind: 'outcome-unknown' };
353
+ }
354
+ /** Extracts the organization payload from the SDK's ETag wrapper. */
355
+ function organizationPayload(value) {
356
+ return value && typeof value === 'object' && 'data' in value
357
+ ? value.data
358
+ : undefined;
359
+ }
360
+ /** Loads and validates a complete organization without retaining its ETag. */
361
+ async function loadWorkspaceOrganization(domains, organizationId) {
362
+ if (!UUID.test(organizationId))
363
+ return { kind: 'failure', failure: 'validation' };
364
+ try {
365
+ const organization = validateOrganizationSettings(organizationPayload(await domains.organizations().get(organizationId)));
366
+ return organization
367
+ ? { kind: 'success', value: organization }
368
+ : { kind: 'failure', failure: 'invalid-response' };
369
+ }
370
+ catch (error) {
371
+ return workspaceReadError(error);
372
+ }
373
+ }
374
+ /** Validates the two editable Overview values and rejects empty updates. */
375
+ function isOverviewInput(value) {
376
+ const keys = Object.keys(value);
377
+ if (keys.length < 1 || keys.some((key) => key !== 'name' && key !== 'defaultLocale'))
378
+ return false;
379
+ if (value.name !== undefined && !isText(value.name, 255, 1))
380
+ return false;
381
+ return !(value.defaultLocale !== undefined &&
382
+ (!isText(value.defaultLocale, 10, 2) ||
383
+ !/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(value.defaultLocale)));
384
+ }
385
+ /** Validates a changed branding payload while deliberately excluding custom CSS. */
386
+ function isBrandingInput(value) {
387
+ const keys = Object.keys(value);
388
+ const allowed = new Set(['companyName', 'primaryColor', 'logoUrl', 'faviconUrl']);
389
+ if (keys.length < 1 || keys.some((key) => !allowed.has(key)))
390
+ return false;
391
+ if (!(value.companyName === undefined ||
392
+ value.companyName === null ||
393
+ isText(value.companyName, 255))) {
394
+ return false;
395
+ }
396
+ if (!(value.primaryColor === undefined ||
397
+ value.primaryColor === null ||
398
+ /^#[0-9A-Fa-f]{6}$/.test(value.primaryColor))) {
399
+ return false;
400
+ }
401
+ return ((value.logoUrl === undefined || isBrandingUrl(value.logoUrl)) &&
402
+ (value.faviconUrl === undefined || isBrandingUrl(value.faviconUrl)));
403
+ }
404
+ /** Validates the JSON/base64 upload envelope before it reaches the SDK. */
405
+ function isAssetUploadInput(input, assetType) {
406
+ if (!ASSET_CONTENT_TYPES.has(input.contentType) || input.data.length === 0)
407
+ return false;
408
+ const bytes = Buffer.from(input.data, 'base64');
409
+ return (bytes.length > 0 &&
410
+ bytes.length <= ASSET_LIMITS[assetType] &&
411
+ bytes.toString('base64') === input.data);
412
+ }
413
+ /** Invokes a void workspace mutation exactly once. */
414
+ async function workspaceVoidMutation(invoke) {
415
+ try {
416
+ await invoke();
417
+ return { kind: 'success' };
418
+ }
419
+ catch (error) {
420
+ return workspaceMutationError(error);
421
+ }
422
+ }
423
+ /**
424
+ * Creates the direct SDK adapter used only by the selected-organization workspace.
425
+ *
426
+ * @param domains - Lazy access to the verified session's existing SDK domains.
427
+ * @returns Validated operations that expose only fixed safe outcomes.
428
+ * @example
429
+ * ```ts
430
+ * const operations = createAdminOrganizationWorkspaceOperations(domains);
431
+ * ```
432
+ */
433
+ export function createAdminOrganizationWorkspaceOperations(domains) {
434
+ return {
435
+ get: (organizationId) => loadWorkspaceOrganization(domains, organizationId),
436
+ async update(organizationId, input) {
437
+ if (!UUID.test(organizationId) || !isOverviewInput(input)) {
438
+ return { kind: 'failure', failure: 'validation' };
439
+ }
440
+ try {
441
+ const organization = validateOrganizationSettings(await domains.organizations().update(organizationId, input));
442
+ return organization ? { kind: 'success' } : { kind: 'outcome-unknown' };
443
+ }
444
+ catch (error) {
445
+ return workspaceMutationError(error);
446
+ }
447
+ },
448
+ activate: (organizationId) => UUID.test(organizationId)
449
+ ? workspaceVoidMutation(() => domains.organizations().activate(organizationId))
450
+ : Promise.resolve({ kind: 'failure', failure: 'validation' }),
451
+ suspend: (organizationId) => UUID.test(organizationId)
452
+ ? workspaceVoidMutation(() => domains.organizations().suspend(organizationId))
453
+ : Promise.resolve({ kind: 'failure', failure: 'validation' }),
454
+ async getLoginMethods(organizationId) {
455
+ const result = await loadWorkspaceOrganization(domains, organizationId);
456
+ return result.kind === 'success'
457
+ ? { kind: 'success', value: result.value.defaultLoginMethods }
458
+ : result;
459
+ },
460
+ async updateLoginMethods(organizationId, methods) {
461
+ const validated = loginMethodValue(methods);
462
+ if (!UUID.test(organizationId) || !validated) {
463
+ return { kind: 'failure', failure: 'validation' };
464
+ }
465
+ try {
466
+ const organization = validateOrganizationSettings(await domains.organizations().update(organizationId, {
467
+ defaultLoginMethods: [...validated],
468
+ }));
469
+ return organization ? { kind: 'success' } : { kind: 'outcome-unknown' };
470
+ }
471
+ catch (error) {
472
+ return workspaceMutationError(error);
473
+ }
474
+ },
475
+ async getTwoFactorPolicy(organizationId) {
476
+ if (!UUID.test(organizationId))
477
+ return { kind: 'failure', failure: 'validation' };
478
+ try {
479
+ const value = await domains.twoFactor().getPolicy(organizationId);
480
+ const candidate = value && typeof value === 'object' ? value : undefined;
481
+ return candidate && isTwoFactorPolicy(candidate.twoFactorPolicy)
482
+ ? { kind: 'success', value: candidate.twoFactorPolicy }
483
+ : { kind: 'failure', failure: 'invalid-response' };
484
+ }
485
+ catch (error) {
486
+ return workspaceReadError(error);
487
+ }
488
+ },
489
+ async updateTwoFactorPolicy(organizationId, policy) {
490
+ if (!UUID.test(organizationId) || !isTwoFactorPolicy(policy)) {
491
+ return { kind: 'failure', failure: 'validation' };
492
+ }
493
+ try {
494
+ const value = await domains.twoFactor().setPolicy(organizationId, policy);
495
+ const candidate = value && typeof value === 'object' ? value : undefined;
496
+ return candidate && candidate.twoFactorPolicy === policy
497
+ ? { kind: 'success' }
498
+ : { kind: 'outcome-unknown' };
499
+ }
500
+ catch (error) {
501
+ return workspaceMutationError(error);
502
+ }
503
+ },
504
+ async updateBranding(organizationId, input) {
505
+ if (!UUID.test(organizationId) || !isBrandingInput(input)) {
506
+ return { kind: 'failure', failure: 'validation' };
507
+ }
508
+ try {
509
+ const organization = validateOrganizationSettings(await domains.branding().updateSettings(organizationId, input));
510
+ return organization ? { kind: 'success' } : { kind: 'outcome-unknown' };
511
+ }
512
+ catch (error) {
513
+ return workspaceMutationError(error);
514
+ }
515
+ },
516
+ async listAssets(organizationId) {
517
+ if (!UUID.test(organizationId))
518
+ return { kind: 'failure', failure: 'validation' };
519
+ try {
520
+ const assets = assetCollection(await domains.branding().listAssets(organizationId), organizationId);
521
+ return assets
522
+ ? { kind: 'success', value: assets }
523
+ : { kind: 'failure', failure: 'invalid-response' };
524
+ }
525
+ catch (error) {
526
+ return workspaceReadError(error);
527
+ }
528
+ },
529
+ async uploadAsset(organizationId, assetType, input) {
530
+ if (!UUID.test(organizationId) || !isAssetUploadInput(input, assetType)) {
531
+ return { kind: 'failure', failure: 'validation' };
532
+ }
533
+ try {
534
+ const asset = assetValue(await domains.branding().uploadAsset(organizationId, assetType, input), organizationId);
535
+ return asset && asset.assetType === assetType
536
+ ? { kind: 'success' }
537
+ : { kind: 'outcome-unknown' };
538
+ }
539
+ catch (error) {
540
+ return workspaceMutationError(error);
541
+ }
542
+ },
543
+ deleteAsset: (organizationId, assetType) => UUID.test(organizationId) && (assetType === 'logo' || assetType === 'favicon')
544
+ ? workspaceVoidMutation(() => domains.branding().deleteAsset(organizationId, assetType))
545
+ : Promise.resolve({ kind: 'failure', failure: 'validation' }),
546
+ };
547
+ }
548
+ //# sourceMappingURL=organization-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization-service.js","sourceRoot":"","sources":["../../src/admin/organization-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** Direct JSVision workspace for the selected organization's settings. */
2
+ import { Dialog } from '@jsvision/ui';
3
+ import type { View } from '@jsvision/ui';
4
+ import type { AdminCapabilities, AdminOrganizationIntent, AdminOrganizationWorkspaceState } from './state.js';
5
+ /** Construction values for one selected-organization workspace. */
6
+ export interface AdminOrganizationWorkspaceOptions {
7
+ /** Capabilities from the currently verified administration session. */
8
+ readonly capabilities: AdminCapabilities;
9
+ /** Receives closed user intents while the controller owns remote work. */
10
+ readonly onIntent: (intent: AdminOrganizationIntent) => void;
11
+ /** Focuses one mounted control through the application event loop. */
12
+ readonly focusView?: (view: View) => void;
13
+ /** Releases controller ownership when the modeless window is closed directly. */
14
+ readonly onClose?: () => void;
15
+ }
16
+ /** Mounted organization workspace controlled by validated immutable state. */
17
+ export interface AdminOrganizationWorkspace {
18
+ /** Maximized modeless dialog mounted into the administration desktop. */
19
+ readonly content: Dialog;
20
+ /** Replaces the complete validated workspace state. */
21
+ readonly setState: (state: AdminOrganizationWorkspaceState) => void;
22
+ /** Restores focus within the currently selected tab. */
23
+ readonly focusCurrent: () => void;
24
+ /** Removes retained state and controls. */
25
+ readonly clear: () => void;
26
+ }
27
+ /** Builds the maximized organization workspace with one direct page per concern. */
28
+ export declare function createAdminOrganizationWorkspace(options: AdminOrganizationWorkspaceOptions): AdminOrganizationWorkspace;
29
+ //# sourceMappingURL=organization-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization-workspace.d.ts","sourceRoot":"","sources":["../../src/admin/organization-workspace.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAML,MAAM,EAYP,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,cAAc,CAAC;AAItD,OAAO,KAAK,EACV,iBAAiB,EAEjB,uBAAuB,EAKvB,+BAA+B,EAChC,MAAM,YAAY,CAAC;AAGpB,mEAAmE;AACnE,MAAM,WAAW,iCAAiC;IAChD,uEAAuE;IACvE,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC7D,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1C,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI,CAAC;IACpE,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AA8FD,oFAAoF;AACpF,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,iCAAiC,GACzC,0BAA0B,CAic5B"}