ldap-rest 1.2.1 → 2.0.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 (358) hide show
  1. package/bin/sync-james.mjs +13 -2
  2. package/dist/abstract/ldapFlat.js +1 -1
  3. package/dist/abstract/plugin.js +1 -1
  4. package/dist/abstract/twakePlugin.js +1 -1
  5. package/dist/bin/index.js +1 -1
  6. package/dist/config/args.js +1 -1
  7. package/dist/config/options.js +1 -0
  8. package/dist/config/schema.js +1 -1
  9. package/dist/lib/auth/base.js +1 -1
  10. package/dist/lib/authz/base.js +1 -1
  11. package/dist/lib/entitySchema/validator.js +1 -1
  12. package/dist/lib/errors.js +1 -1
  13. package/dist/lib/expressFormatedResponses.js +1 -1
  14. package/dist/lib/health.js +1 -1
  15. package/dist/lib/hookBus.js +1 -0
  16. package/dist/lib/instanceProviders.js +1 -1
  17. package/dist/lib/ldap/callerView.js +1 -0
  18. package/dist/lib/ldap/pool.js +1 -0
  19. package/dist/lib/ldap/schema.js +1 -0
  20. package/dist/lib/ldap/searchCache.js +1 -0
  21. package/dist/lib/ldapActions.js +1 -1
  22. package/dist/lib/ldapSchema.js +1 -1
  23. package/dist/lib/parseConfig.js +1 -1
  24. package/dist/lib/route.js +1 -0
  25. package/dist/lib/schemaFile.js +1 -1
  26. package/dist/lib/services/index.js +1 -0
  27. package/dist/lib/storage/store.js +1 -1
  28. package/dist/lib/utils.js +1 -1
  29. package/dist/lib/version.js +1 -0
  30. package/dist/logger/winston.js +1 -1
  31. package/dist/plugins/auth/auth.options.js +1 -0
  32. package/dist/plugins/auth/authzDynamic.js +1 -1
  33. package/dist/plugins/auth/authzLinid1.js +1 -1
  34. package/dist/plugins/auth/authzPerBranch.js +1 -1
  35. package/dist/plugins/auth/authzPerRoute.js +1 -1
  36. package/dist/plugins/auth/authzScope.js +1 -1
  37. package/dist/plugins/auth/crowdsec.js +1 -1
  38. package/dist/plugins/auth/fake.js +1 -1
  39. package/dist/plugins/auth/hmac.js +1 -1
  40. package/dist/plugins/auth/llng.js +1 -1
  41. package/dist/plugins/auth/openidconnect.js +1 -1
  42. package/dist/plugins/auth/rateLimit.js +1 -1
  43. package/dist/plugins/auth/token.js +1 -1
  44. package/dist/plugins/auth/totp.js +1 -1
  45. package/dist/plugins/auth/trustedProxy.js +1 -1
  46. package/dist/plugins/bcl.js +1 -1
  47. package/dist/plugins/bcl.options.js +1 -0
  48. package/dist/plugins/configApi.js +1 -1
  49. package/dist/plugins/demo/helloworld.js +1 -1
  50. package/dist/plugins/ldap/accountLifecycle.js +1 -1
  51. package/dist/plugins/ldap/bulkImport.js +1 -1
  52. package/dist/plugins/ldap/departmentSync.js +1 -1
  53. package/dist/plugins/ldap/enterpriseRules.js +1 -1
  54. package/dist/plugins/ldap/externalUsersInGroups.js +1 -1
  55. package/dist/plugins/ldap/flatGeneric.js +1 -1
  56. package/dist/plugins/ldap/groups.js +1 -1
  57. package/dist/plugins/ldap/ldap.options.js +1 -0
  58. package/dist/plugins/ldap/onChange.js +1 -1
  59. package/dist/plugins/ldap/organizations.js +1 -1
  60. package/dist/plugins/ldap/passwordPolicy.js +1 -1
  61. package/dist/plugins/ldap/raw.js +1 -1
  62. package/dist/plugins/ldap/trash.js +1 -1
  63. package/dist/plugins/metrics.js +1 -1
  64. package/dist/plugins/metrics.options.js +1 -0
  65. package/dist/plugins/rabbitmq.js +1 -1
  66. package/dist/plugins/rabbitmq.options.js +1 -0
  67. package/dist/plugins/scim/baseResolver.js +1 -1
  68. package/dist/plugins/scim/bulk.js +1 -1
  69. package/dist/plugins/scim/discovery.js +1 -1
  70. package/dist/plugins/scim/errors.js +1 -1
  71. package/dist/plugins/scim/filter.js +1 -1
  72. package/dist/plugins/scim/groups.js +1 -1
  73. package/dist/plugins/scim/mapping.js +1 -1
  74. package/dist/plugins/scim/patch.js +1 -1
  75. package/dist/plugins/scim/scim.js +1 -1
  76. package/dist/plugins/scim/scim.options.js +1 -0
  77. package/dist/plugins/scim/users.js +1 -1
  78. package/dist/plugins/static.js +1 -1
  79. package/dist/plugins/static.options.js +1 -0
  80. package/dist/plugins/storage/file.js +1 -1
  81. package/dist/plugins/storage/ldap.js +1 -1
  82. package/dist/plugins/storage/postgres.js +1 -1
  83. package/dist/plugins/storage/valkey.js +1 -1
  84. package/dist/plugins/storage.js +1 -1
  85. package/dist/plugins/storage.options.js +1 -0
  86. package/dist/plugins/twake/appAccounts.options.js +1 -0
  87. package/dist/plugins/twake/appAccountsApi.js +1 -1
  88. package/dist/plugins/twake/appAccountsConsistency.js +1 -1
  89. package/dist/plugins/twake/calendar.js +1 -1
  90. package/dist/plugins/twake/calendar.options.js +1 -0
  91. package/dist/plugins/twake/calendarResources.js +1 -1
  92. package/dist/plugins/twake/cloudery.options.js +1 -0
  93. package/dist/plugins/twake/clouderyProvision.js +1 -1
  94. package/dist/plugins/twake/cozy.options.js +1 -0
  95. package/dist/plugins/twake/cozyProvision.js +1 -1
  96. package/dist/plugins/twake/drive.js +1 -1
  97. package/dist/plugins/twake/drive.options.js +1 -0
  98. package/dist/plugins/twake/groups.js +1 -1
  99. package/dist/plugins/twake/instances.js +1 -1
  100. package/dist/plugins/twake/james.js +1 -1
  101. package/dist/plugins/twake/james.options.js +1 -0
  102. package/dist/plugins/twake/lifecycleAttributes.js +1 -1
  103. package/dist/plugins/twake/lifecycleEvents.js +1 -1
  104. package/dist/plugins/twake/migrationProxy.js +1 -1
  105. package/dist/plugins/twake/migrationProxy.options.js +1 -0
  106. package/dist/plugins/twake/spaces.js +1 -1
  107. package/dist/plugins/twake/tombstone.js +1 -1
  108. package/dist/plugins/twake/twakeGroups.options.js +1 -0
  109. package/dist/plugins/twake/twakeInstances.options.js +1 -0
  110. package/dist/plugins/twake/twakeLifecycle.options.js +1 -0
  111. package/dist/plugins/twake/twakeSpaces.options.js +1 -0
  112. package/dist/plugins/twake/twakeTombstone.options.js +1 -0
  113. package/dist/plugins/weblogs.js +1 -1
  114. package/dist/src/abstract/ldapFlat.d.ts +41 -10
  115. package/dist/src/abstract/plugin.d.ts +31 -5
  116. package/dist/src/abstract/twakePlugin.d.ts +14 -4
  117. package/dist/src/bin/index.d.ts +35 -4
  118. package/dist/src/config/args.d.ts +2 -4
  119. package/dist/src/config/options.d.ts +104 -0
  120. package/dist/src/config/schema.d.ts +50 -1
  121. package/dist/src/hooks.d.ts +60 -22
  122. package/dist/src/lib/authz/base.d.ts +4 -51
  123. package/dist/src/lib/authz/composition.d.ts +2 -2
  124. package/dist/src/lib/entitySchema/validator.d.ts +63 -6
  125. package/dist/src/lib/errors.d.ts +57 -1
  126. package/dist/src/lib/expressFormatedResponses.d.ts +49 -7
  127. package/dist/src/lib/hookBus.d.ts +226 -0
  128. package/dist/src/lib/instanceProviders.d.ts +0 -8
  129. package/dist/src/lib/ldap/callerView.d.ts +45 -0
  130. package/dist/src/lib/ldap/pool.d.ts +108 -0
  131. package/dist/src/lib/ldap/schema.d.ts +157 -0
  132. package/dist/src/lib/ldap/searchCache.d.ts +112 -0
  133. package/dist/src/lib/ldapActions.d.ts +26 -256
  134. package/dist/src/lib/parseConfig.d.ts +31 -2
  135. package/dist/src/lib/route.d.ts +99 -0
  136. package/dist/src/lib/services/index.d.ts +56 -0
  137. package/dist/src/lib/utils.d.ts +100 -36
  138. package/dist/src/lib/version.d.ts +12 -0
  139. package/dist/src/plugins/auth/auth.options.d.ts +88 -0
  140. package/dist/src/plugins/auth/authzDynamic.d.ts +10 -1
  141. package/dist/src/plugins/auth/authzLinid1.d.ts +6 -0
  142. package/dist/src/plugins/auth/authzPerBranch.d.ts +9 -0
  143. package/dist/src/plugins/auth/authzPerRoute.d.ts +3 -0
  144. package/dist/src/plugins/auth/authzScope.d.ts +23 -14
  145. package/dist/src/plugins/auth/crowdsec.d.ts +5 -0
  146. package/dist/src/plugins/auth/fake.d.ts +3 -0
  147. package/dist/src/plugins/auth/hmac.d.ts +4 -0
  148. package/dist/src/plugins/auth/llng.d.ts +4 -0
  149. package/dist/src/plugins/auth/openidconnect.d.ts +7 -0
  150. package/dist/src/plugins/auth/rateLimit.d.ts +4 -0
  151. package/dist/src/plugins/auth/token.d.ts +3 -0
  152. package/dist/src/plugins/auth/totp.d.ts +5 -0
  153. package/dist/src/plugins/auth/trustedProxy.d.ts +4 -0
  154. package/dist/src/plugins/bcl.d.ts +3 -0
  155. package/dist/src/plugins/bcl.options.d.ts +8 -0
  156. package/dist/src/plugins/configApi.d.ts +24 -5
  157. package/dist/src/plugins/demo/helloworld.d.ts +8 -19
  158. package/dist/src/plugins/ldap/accountLifecycle.d.ts +17 -0
  159. package/dist/src/plugins/ldap/bulkImport.d.ts +6 -76
  160. package/dist/src/plugins/ldap/departmentSync.d.ts +1 -0
  161. package/dist/src/plugins/ldap/enterpriseRules.d.ts +8 -15
  162. package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +4 -0
  163. package/dist/src/plugins/ldap/flatGeneric.d.ts +4 -0
  164. package/dist/src/plugins/ldap/groups.d.ts +27 -11
  165. package/dist/src/plugins/ldap/ldap.options.d.ts +75 -0
  166. package/dist/src/plugins/ldap/onChange.d.ts +10 -2
  167. package/dist/src/plugins/ldap/organizations.d.ts +16 -0
  168. package/dist/src/plugins/ldap/passwordPolicy.d.ts +35 -3
  169. package/dist/src/plugins/ldap/raw.d.ts +50 -19
  170. package/dist/src/plugins/ldap/trash.d.ts +6 -0
  171. package/dist/src/plugins/metrics.d.ts +3 -0
  172. package/dist/src/plugins/metrics.options.d.ts +8 -0
  173. package/dist/src/plugins/rabbitmq.d.ts +3 -0
  174. package/dist/src/plugins/rabbitmq.options.d.ts +8 -0
  175. package/dist/src/plugins/scim/baseResolver.d.ts +2 -1
  176. package/dist/src/plugins/scim/bulk.d.ts +6 -7
  177. package/dist/src/plugins/scim/discovery.d.ts +3 -0
  178. package/dist/src/plugins/scim/errors.d.ts +2 -1
  179. package/dist/src/plugins/scim/groups.d.ts +6 -4
  180. package/dist/src/plugins/scim/mapping.d.ts +16 -3
  181. package/dist/src/plugins/scim/scim.d.ts +37 -3
  182. package/dist/src/plugins/scim/scim.options.d.ts +35 -0
  183. package/dist/src/plugins/scim/types.d.ts +2 -0
  184. package/dist/src/plugins/scim/users.d.ts +6 -7
  185. package/dist/src/plugins/static.d.ts +9 -0
  186. package/dist/src/plugins/static.options.d.ts +13 -0
  187. package/dist/src/plugins/storage.d.ts +12 -1
  188. package/dist/src/plugins/storage.options.d.ts +16 -0
  189. package/dist/src/plugins/twake/appAccounts.options.d.ts +13 -0
  190. package/dist/src/plugins/twake/appAccountsApi.d.ts +18 -0
  191. package/dist/src/plugins/twake/appAccountsConsistency.d.ts +8 -0
  192. package/dist/src/plugins/twake/calendar.d.ts +25 -2
  193. package/dist/src/plugins/twake/calendar.options.d.ts +19 -0
  194. package/dist/src/plugins/twake/cloudery.options.d.ts +26 -0
  195. package/dist/src/plugins/twake/clouderyProvision.d.ts +18 -0
  196. package/dist/src/plugins/twake/cozy.options.d.ts +23 -0
  197. package/dist/src/plugins/twake/cozyProvision.d.ts +14 -0
  198. package/dist/src/plugins/twake/drive.d.ts +7 -0
  199. package/dist/src/plugins/twake/drive.options.d.ts +15 -0
  200. package/dist/src/plugins/twake/groups.d.ts +29 -1
  201. package/dist/src/plugins/twake/instances.d.ts +74 -10
  202. package/dist/src/plugins/twake/james.d.ts +17 -0
  203. package/dist/src/plugins/twake/james.options.d.ts +21 -0
  204. package/dist/src/plugins/twake/lifecycleAttributes.d.ts +13 -2
  205. package/dist/src/plugins/twake/lifecycleEvents.d.ts +12 -0
  206. package/dist/src/plugins/twake/migrationProxy.d.ts +11 -11
  207. package/dist/src/plugins/twake/migrationProxy.options.d.ts +16 -0
  208. package/dist/src/plugins/twake/spaces.d.ts +30 -0
  209. package/dist/src/plugins/twake/tombstone.d.ts +25 -16
  210. package/dist/src/plugins/twake/twakeGroups.options.d.ts +20 -0
  211. package/dist/src/plugins/twake/twakeInstances.options.d.ts +43 -0
  212. package/dist/src/plugins/twake/twakeLifecycle.options.d.ts +21 -0
  213. package/dist/src/plugins/twake/twakeSpaces.options.d.ts +19 -0
  214. package/dist/src/plugins/twake/twakeTombstone.options.d.ts +17 -0
  215. package/docs/README.md +17 -2
  216. package/docs/client-development/api/rest-api.md +13 -3
  217. package/docs/client-development/schemas/README.md +96 -32
  218. package/docs/development/contracts.md +109 -0
  219. package/docs/plugin-development/README.md +53 -95
  220. package/docs/plugin-development/dependencies.md +24 -8
  221. package/docs/plugin-development/hooks.md +143 -23
  222. package/docs/plugin-development/openapi.md +14 -1
  223. package/docs/plugin-development/options.md +136 -0
  224. package/docs/plugin-development/routes.md +152 -0
  225. package/docs/plugin-development/services.md +95 -0
  226. package/docs/plugin-development/testing.md +3 -3
  227. package/docs/usage/configuration.md +18 -11
  228. package/docs/usage/operations.md +28 -4
  229. package/docs/usage/plugins/integrations/instances.md +11 -3
  230. package/docs/usage/plugins/integrations/lifecycle-events.md +4 -1
  231. package/docs/usage/plugins/integrations/scim.md +20 -18
  232. package/docs/usage/plugins/integrations/tombstone.md +10 -6
  233. package/docs/usage/plugins/ldap/enterprise-rules.md +10 -1
  234. package/docs/usage/plugins/ldap/flat-generic.md +11 -0
  235. package/docs/usage/plugins/ldap/groups.md +4 -1
  236. package/docs/usage/plugins/ldap/password-policy.md +7 -0
  237. package/docs/usage/plugins/ldap/raw.md +17 -1
  238. package/docs/usage/upgrading.md +253 -0
  239. package/package.json +372 -286
  240. package/static/browser/ldap-browser/LdapBrowser.js +8 -6
  241. package/static/browser/ldap-browser/LdapBrowser.js.map +1 -1
  242. package/static/browser/ldap-browser/api/RawApiClient.js +2 -0
  243. package/static/browser/ldap-browser/api/RawApiClient.js.map +1 -1
  244. package/static/browser/ldap-browser/components/EntryTree.js +9 -5
  245. package/static/browser/ldap-browser/components/EntryTree.js.map +1 -1
  246. package/static/browser/ldap-browser/components/EntryView.js +2 -0
  247. package/static/browser/ldap-browser/components/EntryView.js.map +1 -1
  248. package/static/browser/ldap-browser/schema.js +3 -2
  249. package/static/browser/ldap-browser/schema.js.map +1 -1
  250. package/static/browser/ldap-browser.esm.js +27 -18
  251. package/static/browser/ldap-browser.esm.js.map +1 -1
  252. package/static/browser/ldap-browser.js +27 -18
  253. package/static/browser/ldap-browser.js.map +1 -1
  254. package/static/browser/ldap-browser.min.js +1 -1
  255. package/static/browser/ldap-browser.min.js.map +1 -1
  256. package/static/browser/ldap-group-editor/LdapGroupEditor.js +8 -6
  257. package/static/browser/ldap-group-editor/LdapGroupEditor.js.map +1 -1
  258. package/static/browser/ldap-group-editor/api/GroupApiClient.js +1 -0
  259. package/static/browser/ldap-group-editor/api/GroupApiClient.js.map +1 -1
  260. package/static/browser/ldap-group-editor/components/CreateGroupModal.js +5 -1
  261. package/static/browser/ldap-group-editor/components/CreateGroupModal.js.map +1 -1
  262. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js +6 -3
  263. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js.map +1 -1
  264. package/static/browser/ldap-group-editor/components/GroupTree.js +6 -3
  265. package/static/browser/ldap-group-editor/components/GroupTree.js.map +1 -1
  266. package/static/browser/ldap-group-editor/components/MoveGroupModal.js +6 -3
  267. package/static/browser/ldap-group-editor/components/MoveGroupModal.js.map +1 -1
  268. package/static/browser/ldap-group-editor.esm.js +32 -16
  269. package/static/browser/ldap-group-editor.esm.js.map +1 -1
  270. package/static/browser/ldap-group-editor.js +32 -16
  271. package/static/browser/ldap-group-editor.js.map +1 -1
  272. package/static/browser/ldap-group-editor.min.js +1 -1
  273. package/static/browser/ldap-group-editor.min.js.map +1 -1
  274. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +3 -0
  275. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -1
  276. package/static/browser/ldap-resource-editor/cache/CacheManager.js +3 -1
  277. package/static/browser/ldap-resource-editor/cache/CacheManager.js.map +1 -1
  278. package/static/browser/ldap-tree-viewer/LdapTreeViewer.js +6 -1
  279. package/static/browser/ldap-tree-viewer/LdapTreeViewer.js.map +1 -1
  280. package/static/browser/ldap-tree-viewer/api/LdapApiClient.js +2 -0
  281. package/static/browser/ldap-tree-viewer/api/LdapApiClient.js.map +1 -1
  282. package/static/browser/ldap-tree-viewer/components/TreeNode.js +4 -0
  283. package/static/browser/ldap-tree-viewer/components/TreeNode.js.map +1 -1
  284. package/static/browser/ldap-tree-viewer/components/TreeRoot.js +3 -0
  285. package/static/browser/ldap-tree-viewer/components/TreeRoot.js.map +1 -1
  286. package/static/browser/ldap-tree-viewer/store/Store.js +3 -1
  287. package/static/browser/ldap-tree-viewer/store/Store.js.map +1 -1
  288. package/static/browser/ldap-tree-viewer.esm.js +18 -2
  289. package/static/browser/ldap-tree-viewer.esm.js.map +1 -1
  290. package/static/browser/ldap-tree-viewer.js +18 -2
  291. package/static/browser/ldap-tree-viewer.js.map +1 -1
  292. package/static/browser/ldap-tree-viewer.min.js +1 -1
  293. package/static/browser/ldap-tree-viewer.min.js.map +1 -1
  294. package/static/browser/ldap-unit-editor/LdapUnitEditor.js +7 -5
  295. package/static/browser/ldap-unit-editor/LdapUnitEditor.js.map +1 -1
  296. package/static/browser/ldap-unit-editor/api/UnitApiClient.js +1 -0
  297. package/static/browser/ldap-unit-editor/api/UnitApiClient.js.map +1 -1
  298. package/static/browser/ldap-unit-editor/components/MoveUnitModal.js +7 -4
  299. package/static/browser/ldap-unit-editor/components/MoveUnitModal.js.map +1 -1
  300. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js +7 -4
  301. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js.map +1 -1
  302. package/static/browser/ldap-unit-editor/components/UnitTree.js +6 -3
  303. package/static/browser/ldap-unit-editor/components/UnitTree.js.map +1 -1
  304. package/static/browser/ldap-unit-editor.esm.js +28 -16
  305. package/static/browser/ldap-unit-editor.esm.js.map +1 -1
  306. package/static/browser/ldap-unit-editor.js +28 -16
  307. package/static/browser/ldap-unit-editor.js.map +1 -1
  308. package/static/browser/ldap-unit-editor.min.js +1 -1
  309. package/static/browser/ldap-unit-editor.min.js.map +1 -1
  310. package/static/browser/ldap-user-editor/LdapUserEditor.js +9 -7
  311. package/static/browser/ldap-user-editor/LdapUserEditor.js.map +1 -1
  312. package/static/browser/ldap-user-editor/api/UserApiClient.js +2 -0
  313. package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -1
  314. package/static/browser/ldap-user-editor/cache/CacheManager.js +3 -1
  315. package/static/browser/ldap-user-editor/cache/CacheManager.js.map +1 -1
  316. package/static/browser/ldap-user-editor/components/MoveUserModal.js +7 -4
  317. package/static/browser/ldap-user-editor/components/MoveUserModal.js.map +1 -1
  318. package/static/browser/ldap-user-editor/components/PointerField.js +6 -1
  319. package/static/browser/ldap-user-editor/components/PointerField.js.map +1 -1
  320. package/static/browser/ldap-user-editor/components/UserEditor.js +10 -5
  321. package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -1
  322. package/static/browser/ldap-user-editor/components/UserList.js +8 -4
  323. package/static/browser/ldap-user-editor/components/UserList.js.map +1 -1
  324. package/static/browser/ldap-user-editor/components/UserTree.js +7 -3
  325. package/static/browser/ldap-user-editor/components/UserTree.js.map +1 -1
  326. package/static/browser/ldap-user-editor.esm.js +55 -30
  327. package/static/browser/ldap-user-editor.esm.js.map +1 -1
  328. package/static/browser/ldap-user-editor.js +55 -30
  329. package/static/browser/ldap-user-editor.js.map +1 -1
  330. package/static/browser/ldap-user-editor.min.js +1 -1
  331. package/static/browser/ldap-user-editor.min.js.map +1 -1
  332. package/static/browser/shared/components/DisposableComponent.js +3 -5
  333. package/static/browser/shared/components/DisposableComponent.js.map +1 -1
  334. package/static/browser/shared/components/Modal.js +2 -1
  335. package/static/browser/shared/components/Modal.js.map +1 -1
  336. package/static/browser/shared/components/StatusMessage.js +3 -2
  337. package/static/browser/shared/components/StatusMessage.js.map +1 -1
  338. package/static/browser/shared/utils/form.js.map +1 -1
  339. package/static/browser/shared/utils/hmac.js +1 -0
  340. package/static/browser/shared/utils/hmac.js.map +1 -1
  341. package/static/browser/shared/utils/totp.js +1 -0
  342. package/static/browser/shared/utils/totp.js.map +1 -1
  343. package/static/browser/shared.esm.js +9 -8
  344. package/static/browser/shared.esm.js.map +1 -1
  345. package/static/browser/shared.js +9 -8
  346. package/static/browser/shared.js.map +1 -1
  347. package/static/browser/shared.min.js +1 -1
  348. package/static/browser/shared.min.js.map +1 -1
  349. package/static/schemas/ad/groups.json +1 -1
  350. package/static/schemas/ad/users.json +3 -3
  351. package/static/schemas/example/organizations.json +2 -2
  352. package/static/schemas/example/users.json +2 -2
  353. package/static/schemas/obm/users.json +2 -2
  354. package/static/schemas/standard/groups.json +1 -1
  355. package/static/schemas/standard/users.json +2 -2
  356. package/static/schemas/twake/groups.json +4 -4
  357. package/static/schemas/twake/teamMailboxes.json +3 -3
  358. package/static/schemas/twake/users.json +7 -7
@@ -1,8 +1,10 @@
1
1
  import type { Config } from '../../config/args';
2
2
  import type { DmRequest } from '../../lib/auth/base';
3
+ import type { ScimOptions } from './scim.options';
3
4
  import { type ResourceTypeDefinition, type ServiceProviderConfig, type SchemaDefinition } from './types';
4
5
  export interface DiscoveryOptions {
5
6
  config: Config;
7
+ options: ScimOptions;
6
8
  schemaDir: string;
7
9
  scimPrefix: string;
8
10
  loadedPlugins: {
@@ -11,6 +13,7 @@ export interface DiscoveryOptions {
11
13
  }
12
14
  export declare class ScimDiscovery {
13
15
  private readonly config;
16
+ private readonly options;
14
17
  private readonly schemaDir;
15
18
  private readonly scimPrefix;
16
19
  private readonly loadedPlugins;
@@ -32,7 +32,8 @@ export declare function writeScimError(res: Response, status: number, detail: st
32
32
  * Split out from `writeScimErrorFromException` so `/Bulk`, which reports a
33
33
  * status per operation instead of writing a response, applies exactly the
34
34
  * same translations — including the ones that matter: an authorization
35
- * refusal is a 403 with the internal marker stripped, not a 500 quoting it.
35
+ * refusal is a 403 saying `AUTHZ_REFUSED`, not a 500 quoting the branch it
36
+ * judged.
36
37
  */
37
38
  export declare function scimErrorFromException(err: unknown, fallbackStatus?: number): ScimErrorResponse;
38
39
  export declare function writeScimErrorFromException(res: Response, err: unknown, fallbackStatus?: number): void;
@@ -8,9 +8,11 @@ import type winston from 'winston';
8
8
  import type ldapActions from '../../lib/ldapActions';
9
9
  import type { Config } from '../../config/args';
10
10
  import type { DmRequest } from '../../lib/auth/base';
11
+ import type HookBus from '../../lib/hookBus';
11
12
  import { BaseResolver } from './baseResolver';
12
13
  import { type ResourceMapping, type ScimGroup, type ListResponse, type PatchRequest } from './types';
13
14
  import type { ScimUsers } from './users';
15
+ import type { ScimOptions } from './scim.options';
14
16
  export interface GroupListQuery {
15
17
  filter?: string;
16
18
  startIndex?: number;
@@ -21,20 +23,20 @@ export interface GroupListQuery {
21
23
  export interface ScimGroupsOptions {
22
24
  ldap: ldapActions;
23
25
  config: Config;
26
+ options: ScimOptions;
24
27
  logger: winston.Logger;
25
28
  baseResolver: BaseResolver;
26
29
  users: ScimUsers;
27
- hooks: {
28
- [K: string]: Function[] | undefined;
29
- };
30
+ hookBus: HookBus;
30
31
  }
31
32
  export declare class ScimGroups {
32
33
  private readonly ldap;
33
34
  private readonly config;
35
+ private readonly options;
34
36
  private readonly logger;
35
37
  private readonly baseResolver;
36
38
  private readonly users;
37
- private readonly hooks;
39
+ private readonly hookBus;
38
40
  private readonly mapping;
39
41
  private readonly attributes;
40
42
  private readonly rdnAttribute;
@@ -27,9 +27,11 @@ export declare function withExternalId(mapping: ResourceMapping, ldapAttribute:
27
27
  * `xsd:dateTime` and reject anything else, so the raw directory value must not
28
28
  * be forwarded as-is.
29
29
  *
30
- * A value that does not look like a GeneralizedTime is returned untouched: a
31
- * directory may already store an ISO 8601 string, and dropping it would lose
32
- * more than passing it through.
30
+ * The instant is read by {@link parseDirectoryDate}, as every other directory
31
+ * time is; this only writes it in the form SCIM asks for, in UTC. A value that
32
+ * does not look like a GeneralizedTime is returned untouched: a directory may
33
+ * already store an ISO 8601 string, and dropping it would lose more than
34
+ * passing it through.
33
35
  */
34
36
  export declare function ldapTimeToIso(value: string | undefined): string | undefined;
35
37
  export declare function loadMappingFile(path: string): ResourceMapping | undefined;
@@ -163,6 +165,17 @@ export declare function scimGroupToLdap(group: ScimGroup, mapping: ResourceMappi
163
165
  * mapped SCIM attributes can be populated.
164
166
  */
165
167
  export declare function requiredLdapAttributes(mapping: ResourceMapping, extra?: string[]): string[];
168
+ /**
169
+ * Refuse a DN a client wrote in a mapped reference when it holds an escape
170
+ * RFC 4514 does not define.
171
+ *
172
+ * The mapping says which sub-attributes carry a DN (`subDn`): a reference
173
+ * such as `manager.value` is written to the directory as sent, where the
174
+ * entity validator that holds the flat routes to RFC 4514 never sees it.
175
+ */
176
+ export declare function assertReferenceDn(value: string, what: string): void;
177
+ /** Whether the mapping declares this sub-attribute a DN (`subDn`). */
178
+ export declare function isDnSubAttribute(mapping: ResourceMapping, top: string, sub: string): boolean;
166
179
  /**
167
180
  * Given a SCIM attribute path like "emails.value" or "name.familyName",
168
181
  * return the corresponding LDAP attribute name (used by filter parser).
@@ -2,7 +2,7 @@ import type { Express, RequestHandler } from 'express';
2
2
  import DmPlugin, { type Role } from '../../abstract/plugin';
3
3
  import type { DM } from '../../bin';
4
4
  import type ldapActions from '../../lib/ldapActions';
5
- import type { Config } from '../../config/args';
5
+ import { type ScimOptions } from './scim.options';
6
6
  import { writeScimErrorFromException } from './errors';
7
7
  /**
8
8
  * Reusable SCIM 2.0 schemas surfaced by this plugin.
@@ -398,11 +398,44 @@ import { writeScimErrorFromException } from './errors';
398
398
  * that a SCIM request sent as such gets the SCIM limit rather than the global
399
399
  * parser's 100kb
400
400
  *
401
- * @param config the configuration holding the SCIM limit
401
+ * @param options the SCIM options holding the payload limit
402
402
  * @returns the parser
403
403
  */
404
- export declare function scimBodyParser(config: Config): RequestHandler;
404
+ export declare function scimBodyParser(options: ScimOptions): RequestHandler;
405
+ export declare const ScimIdParams: import("@sinclair/typebox").TObject<{
406
+ id: import("@sinclair/typebox").TString;
407
+ }>;
408
+ export declare const ScimNameParams: import("@sinclair/typebox").TObject<{
409
+ name: import("@sinclair/typebox").TString;
410
+ }>;
405
411
  export default class Scim extends DmPlugin {
412
+ static optionDefinitions: {
413
+ scim_prefix: import("../../config/options").StringOption;
414
+ scim_user_base: import("../../config/options").StringOption;
415
+ scim_group_base: import("../../config/options").StringOption;
416
+ scim_user_base_template: import("../../config/options").StringOption;
417
+ scim_group_base_template: import("../../config/options").StringOption;
418
+ scim_base_map: import("../../config/options").StringOption;
419
+ scim_user_base_header: import("../../config/options").StringOption;
420
+ scim_group_base_header: import("../../config/options").StringOption;
421
+ scim_base_header_root: import("../../config/options").StringOption;
422
+ scim_user_object_class: import("../../config/options").ArrayOption;
423
+ scim_user_rdn_attribute: import("../../config/options").StringOption;
424
+ scim_user_lock_attribute: import("../../config/options").StringOption;
425
+ scim_user_lock_value: import("../../config/options").StringOption;
426
+ scim_group_object_class: import("../../config/options").ArrayOption;
427
+ scim_group_rdn_attribute: import("../../config/options").StringOption;
428
+ scim_group_external_id_attribute: import("../../config/options").StringOption;
429
+ scim_id_attribute: import("../../config/options").StringOption;
430
+ scim_user_mapping: import("../../config/options").StringOption;
431
+ scim_group_mapping: import("../../config/options").StringOption;
432
+ scim_max_results: import("../../config/options").NumberOption;
433
+ scim_max_scanned: import("../../config/options").NumberOption;
434
+ scim_bulk_max_operations: import("../../config/options").NumberOption;
435
+ scim_bulk_max_payload_size: import("../../config/options").NumberOption;
436
+ scim_etag: import("../../config/options").BooleanOption;
437
+ scim_base_url: import("../../config/options").StringOption;
438
+ };
406
439
  name: string;
407
440
  roles: Role[];
408
441
  ldap: ldapActions;
@@ -414,6 +447,7 @@ export default class Scim extends DmPlugin {
414
447
  /** Where it reads its schema files, which the static plugins may serve */
415
448
  private readonly scimSchemaDir;
416
449
  private readonly baseResolver;
450
+ private readonly settings;
417
451
  constructor(server: DM);
418
452
  private scimJson;
419
453
  /**
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SCIM 2.0 plugin options, see `docs/plugin-development/options.md`.
3
+ */
4
+ import type { Config } from '../../config/args';
5
+ import { type OptionsOf } from '../../config/options';
6
+ export declare const scimOptions: {
7
+ scim_prefix: import("../../config/options").StringOption;
8
+ scim_user_base: import("../../config/options").StringOption;
9
+ scim_group_base: import("../../config/options").StringOption;
10
+ scim_user_base_template: import("../../config/options").StringOption;
11
+ scim_group_base_template: import("../../config/options").StringOption;
12
+ scim_base_map: import("../../config/options").StringOption;
13
+ scim_user_base_header: import("../../config/options").StringOption;
14
+ scim_group_base_header: import("../../config/options").StringOption;
15
+ scim_base_header_root: import("../../config/options").StringOption;
16
+ scim_user_object_class: import("../../config/options").ArrayOption;
17
+ scim_user_rdn_attribute: import("../../config/options").StringOption;
18
+ scim_user_lock_attribute: import("../../config/options").StringOption;
19
+ scim_user_lock_value: import("../../config/options").StringOption;
20
+ scim_group_object_class: import("../../config/options").ArrayOption;
21
+ scim_group_rdn_attribute: import("../../config/options").StringOption;
22
+ scim_group_external_id_attribute: import("../../config/options").StringOption;
23
+ scim_id_attribute: import("../../config/options").StringOption;
24
+ scim_user_mapping: import("../../config/options").StringOption;
25
+ scim_group_mapping: import("../../config/options").StringOption;
26
+ scim_max_results: import("../../config/options").NumberOption;
27
+ scim_max_scanned: import("../../config/options").NumberOption;
28
+ scim_bulk_max_operations: import("../../config/options").NumberOption;
29
+ scim_bulk_max_payload_size: import("../../config/options").NumberOption;
30
+ scim_etag: import("../../config/options").BooleanOption;
31
+ scim_base_url: import("../../config/options").StringOption;
32
+ };
33
+ export type ScimOptions = OptionsOf<typeof scimOptions>;
34
+ /** The checked values for a caller outside the plugin that holds a Config */
35
+ export declare function scimOptionsOf(config: Config): ScimOptions;
@@ -147,6 +147,8 @@ export interface MappingEntry {
147
147
  ldapPrimary?: string;
148
148
  ldapSecondary?: string;
149
149
  sub?: Record<string, string>;
150
+ /** Sub-attributes whose value is a DN, held to RFC 4514 on write */
151
+ subDn?: string[];
150
152
  multi?: 'single' | 'array';
151
153
  readOnly?: boolean;
152
154
  operational?: boolean;
@@ -6,9 +6,10 @@
6
6
  */
7
7
  import type winston from 'winston';
8
8
  import type ldapActions from '../../lib/ldapActions';
9
- import type { Config } from '../../config/args';
10
9
  import type { DmRequest } from '../../lib/auth/base';
10
+ import type HookBus from '../../lib/hookBus';
11
11
  import { BaseResolver } from './baseResolver';
12
+ import type { ScimOptions } from './scim.options';
12
13
  import { type ResourceMapping, type ScimUser, type ListResponse, type PatchRequest } from './types';
13
14
  export interface ListQuery {
14
15
  filter?: string;
@@ -21,19 +22,17 @@ export interface ListQuery {
21
22
  }
22
23
  export interface ScimUsersOptions {
23
24
  ldap: ldapActions;
24
- config: Config;
25
+ options: ScimOptions;
25
26
  logger: winston.Logger;
26
27
  baseResolver: BaseResolver;
27
- hooks: {
28
- [K: string]: Function[] | undefined;
29
- };
28
+ hookBus: HookBus;
30
29
  }
31
30
  export declare class ScimUsers {
32
31
  private readonly ldap;
33
- private readonly config;
32
+ private readonly options;
34
33
  private readonly logger;
35
34
  private readonly baseResolver;
36
- private readonly hooks;
35
+ private readonly hookBus;
37
36
  private readonly mapping;
38
37
  private readonly rdnAttribute;
39
38
  private readonly objectClass;
@@ -1,5 +1,6 @@
1
1
  import type { Express } from 'express';
2
2
  import DmPlugin, { type Role } from '../abstract/plugin';
3
+ import type { DM } from '../bin';
3
4
  /**
4
5
  * @openapi-component
5
6
  * LdapSchema:
@@ -35,10 +36,18 @@ import DmPlugin, { type Role } from '../abstract/plugin';
35
36
  * required: true
36
37
  */
37
38
  export default class Static extends DmPlugin {
39
+ static optionDefinitions: {
40
+ static_path: import("../config/options").StringOption;
41
+ static_name: import("../config/options").StringOption;
42
+ static_csp: import("../config/options").StringOrFalseOption;
43
+ static_frame_options: import("../config/options").StringOrFalseOption;
44
+ };
38
45
  name: string;
39
46
  roles: Role[];
40
47
  /** The configuration's schema files it serves outside its directory, by URL */
41
48
  private configured;
49
+ private readonly settings;
50
+ constructor(server: DM);
42
51
  api(app: Express): void;
43
52
  /**
44
53
  * The handler of the schema routes
@@ -0,0 +1,13 @@
1
+ import type { Config } from '../config/args';
2
+ import { type OptionsOf } from '../config/options';
3
+ /** The headers `core/static` sends unless told otherwise: no framing by another site */
4
+ export declare const STATIC_CSP = "frame-ancestors 'self'";
5
+ export declare const STATIC_FRAME_OPTIONS = "SAMEORIGIN";
6
+ export declare const staticOptions: {
7
+ static_path: import("../config/options").StringOption;
8
+ static_name: import("../config/options").StringOption;
9
+ static_csp: import("../config/options").StringOrFalseOption;
10
+ static_frame_options: import("../config/options").StringOrFalseOption;
11
+ };
12
+ export type StaticOptions = OptionsOf<typeof staticOptions>;
13
+ export declare function staticOptionsOf(config: Config): StaticOptions;
@@ -29,9 +29,20 @@
29
29
  */
30
30
  import DmPlugin from '../abstract/plugin';
31
31
  import type { DM } from '../bin';
32
- import type Store from '../lib/storage/store';
33
32
  import type { HealthStatus } from '../lib/health';
33
+ import type Store from '../lib/storage/store';
34
34
  export default class Storage extends DmPlugin {
35
+ static optionDefinitions: {
36
+ storage_backend: import("../config/options").StringOption;
37
+ storage_sweep_interval: import("../config/options").NumberOption;
38
+ storage_ldap_base: import("../config/options").StringOption;
39
+ storage_ldap_object_class: import("../config/options").StringOption;
40
+ storage_file_directory: import("../config/options").StringOption;
41
+ storage_postgres_url: import("../config/options").StringOption;
42
+ storage_postgres_table: import("../config/options").StringOption;
43
+ storage_valkey_url: import("../config/options").StringOption;
44
+ storage_valkey_prefix: import("../config/options").StringOption;
45
+ };
35
46
  name: string;
36
47
  store: Store;
37
48
  constructor(server: DM);
@@ -0,0 +1,16 @@
1
+ /** Keyed storage plugin options. */
2
+ import type { Config } from '../config/args';
3
+ import { type OptionsOf } from '../config/options';
4
+ export declare const storageOptions: {
5
+ storage_backend: import("../config/options").StringOption;
6
+ storage_sweep_interval: import("../config/options").NumberOption;
7
+ storage_ldap_base: import("../config/options").StringOption;
8
+ storage_ldap_object_class: import("../config/options").StringOption;
9
+ storage_file_directory: import("../config/options").StringOption;
10
+ storage_postgres_url: import("../config/options").StringOption;
11
+ storage_postgres_table: import("../config/options").StringOption;
12
+ storage_valkey_url: import("../config/options").StringOption;
13
+ storage_valkey_prefix: import("../config/options").StringOption;
14
+ };
15
+ export type StorageOptions = OptionsOf<typeof storageOptions>;
16
+ export declare function storageOptionsOf(config: Config): StorageOptions;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Applicative accounts options, shared by `appAccountsApi` and
3
+ * `appAccountsConsistency`. See `docs/plugin-development/options.md`.
4
+ */
5
+ import { type OptionsOf } from '../../config/options';
6
+ export declare const appAccountsOptions: {
7
+ applicative_account_base: import("../../config/options").StringOption;
8
+ max_app_accounts: import("../../config/options").NumberOption;
9
+ app_accounts_user_attribute: import("../../config/options").StringOption;
10
+ applicative_account_attribute: import("../../config/options").ArrayOption;
11
+ ldap_operational_attribute: import("../../config/options").ArrayOption;
12
+ };
13
+ export type AppAccountsOptions = OptionsOf<typeof appAccountsOptions>;
@@ -1,12 +1,30 @@
1
1
  import type { Express } from 'express';
2
2
  import DmPlugin, { type Role } from '../../abstract/plugin';
3
3
  import type { DM } from '../../bin';
4
+ export declare const AppAccountsParams: import("@sinclair/typebox").TObject<{
5
+ user: import("@sinclair/typebox").TString;
6
+ }>;
7
+ export declare const AppAccountParams: import("@sinclair/typebox").TObject<{
8
+ user: import("@sinclair/typebox").TString;
9
+ uid: import("@sinclair/typebox").TString;
10
+ }>;
11
+ export declare const AppAccountCreateBody: import("@sinclair/typebox").TObject<{
12
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ }>;
4
14
  export default class AppAccountsApi extends DmPlugin {
15
+ static optionDefinitions: {
16
+ applicative_account_base: import("../../config/options").StringOption;
17
+ max_app_accounts: import("../../config/options").NumberOption;
18
+ app_accounts_user_attribute: import("../../config/options").StringOption;
19
+ applicative_account_attribute: import("../../config/options").ArrayOption;
20
+ ldap_operational_attribute: import("../../config/options").ArrayOption;
21
+ };
5
22
  name: string;
6
23
  roles: Role[];
7
24
  dependencies: {
8
25
  appAccountsConsistency: string;
9
26
  };
27
+ private readonly settings;
10
28
  private applicativeAccountBase;
11
29
  private maxAppAccounts;
12
30
  private mailAttr;
@@ -29,11 +29,19 @@ import type { Role } from '../../abstract/plugin';
29
29
  import type { DM } from '../../bin';
30
30
  import { Hooks } from '../../hooks';
31
31
  export default class AppAccountsConsistency extends DmPlugin {
32
+ static optionDefinitions: {
33
+ applicative_account_base: import("../../config/options").StringOption;
34
+ max_app_accounts: import("../../config/options").NumberOption;
35
+ app_accounts_user_attribute: import("../../config/options").StringOption;
36
+ applicative_account_attribute: import("../../config/options").ArrayOption;
37
+ ldap_operational_attribute: import("../../config/options").ArrayOption;
38
+ };
32
39
  name: string;
33
40
  roles: Role[];
34
41
  dependencies: {
35
42
  onLdapChange: string;
36
43
  };
44
+ private readonly settings;
37
45
  private mailAttr;
38
46
  private applicativeAccountBase;
39
47
  private operationalAttributes;
@@ -1,6 +1,7 @@
1
1
  import TwakePlugin from '../../abstract/twakePlugin';
2
2
  import { type Role } from '../../abstract/plugin';
3
- import { Hooks } from '../../hooks';
3
+ import type { AttributesList, ModifyRequest } from '../../lib/ldapActions';
4
+ import { Hooks, MaybePromise } from '../../hooks';
4
5
  /**
5
6
  * Plugin to sync LDAP resources and users with Twake Calendar
6
7
  *
@@ -10,7 +11,28 @@ import { Hooks } from '../../hooks';
10
11
  * Also propagates user identity changes (email, first name, last name) to the
11
12
  * Twake Calendar "registered users" via the WebAdmin API.
12
13
  */
14
+ /**
15
+ * The hooks of the `calendarResource` flat entity, which no flag of the
16
+ * core names: `ldapcalendarResourceadddone`, `…modifydone` and
17
+ * `…deletedone`.
18
+ */
19
+ type CalendarResourceHooks = {
20
+ ldapcalendarResourceadddone?: (dn: string, entry: AttributesList) => MaybePromise<void>;
21
+ ldapcalendarResourcemodifydone?: (dn: string, changes: ModifyRequest, op: number) => MaybePromise<void>;
22
+ ldapcalendarResourcedeletedone?: (dn: string) => MaybePromise<void>;
23
+ };
13
24
  export default class Calendar extends TwakePlugin {
25
+ static optionDefinitions: {
26
+ calendar_webadmin_url: import("../../config/options").StringOption;
27
+ calendar_webadmin_token: import("../../config/options").StringOption;
28
+ calendar_concurrency: import("../../config/options").NumberOption;
29
+ calendar_resource_base: import("../../config/options").StringOption;
30
+ calendar_resource_objectclass: import("../../config/options").StringOption;
31
+ calendar_resource_creator: import("../../config/options").StringOption;
32
+ calendar_resource_domain: import("../../config/options").StringOption;
33
+ calendar_firstname_attribute: import("../../config/options").StringOption;
34
+ calendar_lastname_attribute: import("../../config/options").StringOption;
35
+ };
14
36
  name: string;
15
37
  roles: Role[];
16
38
  dependencies: {
@@ -23,7 +45,7 @@ export default class Calendar extends TwakePlugin {
23
45
  private firstnameAttr;
24
46
  private lastnameAttr;
25
47
  constructor(server: import('../../bin').DM);
26
- hooks: Hooks;
48
+ hooks: Hooks & CalendarResourceHooks;
27
49
  /**
28
50
  * Check if a LDAP entry is a calendar resource
29
51
  */
@@ -111,3 +133,4 @@ export default class Calendar extends TwakePlugin {
111
133
  taskId: string;
112
134
  } | null>;
113
135
  }
136
+ export {};
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Twake Calendar plugin options, see `docs/plugin-development/options.md`.
3
+ */
4
+ import type { Config } from '../../config/args';
5
+ import { type OptionsOf } from '../../config/options';
6
+ export declare const calendarOptions: {
7
+ calendar_webadmin_url: import("../../config/options").StringOption;
8
+ calendar_webadmin_token: import("../../config/options").StringOption;
9
+ calendar_concurrency: import("../../config/options").NumberOption;
10
+ calendar_resource_base: import("../../config/options").StringOption;
11
+ calendar_resource_objectclass: import("../../config/options").StringOption;
12
+ calendar_resource_creator: import("../../config/options").StringOption;
13
+ calendar_resource_domain: import("../../config/options").StringOption;
14
+ calendar_firstname_attribute: import("../../config/options").StringOption;
15
+ calendar_lastname_attribute: import("../../config/options").StringOption;
16
+ };
17
+ export type CalendarOptions = OptionsOf<typeof calendarOptions>;
18
+ /** The checked values for a caller that holds a Config instead of the plugin */
19
+ export declare function calendarOptionsOf(config: Config): CalendarOptions;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Cloudery provisioning options, see `docs/plugin-development/options.md`.
3
+ */
4
+ import type { Config } from '../../config/args';
5
+ import { type OptionsOf } from '../../config/options';
6
+ export declare const clouderyOptions: {
7
+ cloudery_manager_url: import("../../config/options").StringOption;
8
+ cloudery_manager_token: import("../../config/options").StringOption;
9
+ cloudery_offer: import("../../config/options").StringOption;
10
+ cloudery_domain: import("../../config/options").StringOption;
11
+ cloudery_user_branch: import("../../config/options").StringOption;
12
+ cloudery_org_id_header: import("../../config/options").StringOption;
13
+ cloudery_org_role_header: import("../../config/options").StringOption;
14
+ cloudery_default_org_role: import("../../config/options").StringOption;
15
+ cloudery_fqdn_attribute: import("../../config/options").StringOption;
16
+ cloudery_org_id_attribute: import("../../config/options").StringOption;
17
+ cloudery_org_role_attribute: import("../../config/options").StringOption;
18
+ cloudery_phones_attribute: import("../../config/options").StringOption;
19
+ cloudery_invited_attribute: import("../../config/options").StringOption;
20
+ cloudery_default_locale: import("../../config/options").StringOption;
21
+ cloudery_workflow_poll_interval_ms: import("../../config/options").NumberOption;
22
+ cloudery_workflow_max_attempts: import("../../config/options").NumberOption;
23
+ };
24
+ export type ClouderyOptions = OptionsOf<typeof clouderyOptions>;
25
+ /** The checked values for a caller that holds a Config instead of the plugin */
26
+ export declare function clouderyOptionsOf(config: Config): ClouderyOptions;
@@ -2,6 +2,24 @@ import DmPlugin, { type Role } from '../../abstract/plugin';
2
2
  import type { DM } from '../../bin';
3
3
  import { Hooks } from '../../hooks';
4
4
  export default class ClouderyProvision extends DmPlugin {
5
+ static optionDefinitions: {
6
+ cloudery_manager_url: import("../../config/options").StringOption;
7
+ cloudery_manager_token: import("../../config/options").StringOption;
8
+ cloudery_offer: import("../../config/options").StringOption;
9
+ cloudery_domain: import("../../config/options").StringOption;
10
+ cloudery_user_branch: import("../../config/options").StringOption;
11
+ cloudery_org_id_header: import("../../config/options").StringOption;
12
+ cloudery_org_role_header: import("../../config/options").StringOption;
13
+ cloudery_default_org_role: import("../../config/options").StringOption;
14
+ cloudery_fqdn_attribute: import("../../config/options").StringOption;
15
+ cloudery_org_id_attribute: import("../../config/options").StringOption;
16
+ cloudery_org_role_attribute: import("../../config/options").StringOption;
17
+ cloudery_phones_attribute: import("../../config/options").StringOption;
18
+ cloudery_invited_attribute: import("../../config/options").StringOption;
19
+ cloudery_default_locale: import("../../config/options").StringOption;
20
+ cloudery_workflow_poll_interval_ms: import("../../config/options").NumberOption;
21
+ cloudery_workflow_max_attempts: import("../../config/options").NumberOption;
22
+ };
5
23
  name: string;
6
24
  roles: Role[];
7
25
  dependencies: {
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Cozy provisioning options, shared by `cozyProvision` and
3
+ * `clouderyProvision`. See `docs/plugin-development/options.md`.
4
+ */
5
+ import type { Config } from '../../config/args';
6
+ import { type OptionsOf } from '../../config/options';
7
+ export declare const cozyOptions: {
8
+ cozy_admin_url: import("../../config/options").StringOption;
9
+ cozy_admin_user: import("../../config/options").StringOption;
10
+ cozy_admin_passphrase: import("../../config/options").StringOption;
11
+ cozy_org_id: import("../../config/options").StringOption;
12
+ cozy_org_domain: import("../../config/options").StringOption;
13
+ cozy_default_locale: import("../../config/options").StringOption;
14
+ cozy_context_name: import("../../config/options").StringOption;
15
+ cozy_apps: import("../../config/options").StringOption;
16
+ cozy_auth_exchange: import("../../config/options").StringOption;
17
+ cozy_b2b_exchange: import("../../config/options").StringOption;
18
+ cozy_user_created_routing_key: import("../../config/options").StringOption;
19
+ cozy_user_deleted_routing_key: import("../../config/options").StringOption;
20
+ };
21
+ export type CozyOptions = OptionsOf<typeof cozyOptions>;
22
+ /** The checked values for a caller that holds a Config instead of the plugin */
23
+ export declare function cozyOptionsOf(config: Config): CozyOptions;
@@ -2,6 +2,20 @@ import DmPlugin, { type Role } from '../../abstract/plugin';
2
2
  import type { DM } from '../../bin';
3
3
  import { Hooks } from '../../hooks';
4
4
  export default class CozyProvision extends DmPlugin {
5
+ static optionDefinitions: {
6
+ cozy_admin_url: import("../../config/options").StringOption;
7
+ cozy_admin_user: import("../../config/options").StringOption;
8
+ cozy_admin_passphrase: import("../../config/options").StringOption;
9
+ cozy_org_id: import("../../config/options").StringOption;
10
+ cozy_org_domain: import("../../config/options").StringOption;
11
+ cozy_default_locale: import("../../config/options").StringOption;
12
+ cozy_context_name: import("../../config/options").StringOption;
13
+ cozy_apps: import("../../config/options").StringOption;
14
+ cozy_auth_exchange: import("../../config/options").StringOption;
15
+ cozy_b2b_exchange: import("../../config/options").StringOption;
16
+ cozy_user_created_routing_key: import("../../config/options").StringOption;
17
+ cozy_user_deleted_routing_key: import("../../config/options").StringOption;
18
+ };
5
19
  name: string;
6
20
  roles: Role[];
7
21
  dependencies: {
@@ -11,6 +11,13 @@ import { type Role } from '../../abstract/plugin';
11
11
  import type { DM } from '../../bin';
12
12
  import { Hooks } from '../../hooks';
13
13
  export default class Drive extends TwakePlugin {
14
+ static optionDefinitions: {
15
+ twake_drive_webadmin_url: import("../../config/options").StringOption;
16
+ twake_drive_webadmin_token: import("../../config/options").StringOption;
17
+ twake_drive_concurrency: import("../../config/options").NumberOption;
18
+ twake_drive_domain_attribute: import("../../config/options").StringOption;
19
+ twake_drive_default_domain_template: import("../../config/options").StringOption;
20
+ };
14
21
  name: string;
15
22
  roles: Role[];
16
23
  dependencies: {
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Twake Drive plugin options, see `docs/plugin-development/options.md`.
3
+ */
4
+ import type { Config } from '../../config/args';
5
+ import { type OptionsOf } from '../../config/options';
6
+ export declare const driveOptions: {
7
+ twake_drive_webadmin_url: import("../../config/options").StringOption;
8
+ twake_drive_webadmin_token: import("../../config/options").StringOption;
9
+ twake_drive_concurrency: import("../../config/options").NumberOption;
10
+ twake_drive_domain_attribute: import("../../config/options").StringOption;
11
+ twake_drive_default_domain_template: import("../../config/options").StringOption;
12
+ };
13
+ export type DriveOptions = OptionsOf<typeof driveOptions>;
14
+ /** The checked values for a caller that holds a Config instead of the plugin */
15
+ export declare function driveOptionsOf(config: Config): DriveOptions;