ldap-rest 2.0.2 → 2.0.4

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 (177) hide show
  1. package/dist/abstract/ldapFlat.js +1 -1
  2. package/dist/lib/authz/base.js +1 -1
  3. package/dist/lib/entitySchema/validator.js +1 -1
  4. package/dist/lib/utils.js +1 -1
  5. package/dist/plugins/auth/auth.options.js +1 -1
  6. package/dist/plugins/auth/authzDynamic.js +1 -1
  7. package/dist/plugins/auth/openidconnect.js +1 -1
  8. package/dist/plugins/auth/trustedProxy.js +1 -1
  9. package/dist/plugins/ldap/departmentSync.js +1 -1
  10. package/dist/plugins/ldap/organizations.js +1 -1
  11. package/dist/plugins/scim/baseResolver.js +1 -1
  12. package/dist/src/abstract/ldapFlat.d.ts +6 -6
  13. package/dist/src/abstract/plugin.d.ts +11 -11
  14. package/dist/src/abstract/twakePlugin.d.ts +4 -4
  15. package/dist/src/bin/index.d.ts +10 -10
  16. package/dist/src/browser/ldap-browser/LdapBrowser.d.ts +1 -1
  17. package/dist/src/browser/ldap-browser/api/RawApiClient.d.ts +1 -1
  18. package/dist/src/browser/ldap-browser/components/EntryTree.d.ts +2 -2
  19. package/dist/src/browser/ldap-browser/components/EntryView.d.ts +2 -2
  20. package/dist/src/browser/ldap-browser/index.d.ts +4 -5
  21. package/dist/src/browser/ldap-browser/schema.d.ts +1 -1
  22. package/dist/src/browser/ldap-group-editor/LdapGroupEditor.d.ts +2 -2
  23. package/dist/src/browser/ldap-group-editor/api/GroupApiClient.d.ts +1 -1
  24. package/dist/src/browser/ldap-group-editor/components/CreateGroupModal.d.ts +2 -2
  25. package/dist/src/browser/ldap-group-editor/components/GroupPropertyEditor.d.ts +1 -1
  26. package/dist/src/browser/ldap-group-editor/components/MoveGroupModal.d.ts +1 -1
  27. package/dist/src/browser/ldap-group-editor/types.d.ts +1 -1
  28. package/dist/src/browser/ldap-resource-editor/api/ResourceApiClient.d.ts +2 -2
  29. package/dist/src/browser/ldap-resource-editor/index.d.ts +2 -2
  30. package/dist/src/browser/ldap-resource-editor/types.d.ts +1 -1
  31. package/dist/src/browser/ldap-tree-viewer/LdapTreeViewer.d.ts +1 -1
  32. package/dist/src/browser/ldap-tree-viewer/components/TreeNode.d.ts +2 -2
  33. package/dist/src/browser/ldap-tree-viewer/components/TreeRoot.d.ts +2 -2
  34. package/dist/src/browser/ldap-tree-viewer/index.d.ts +2 -3
  35. package/dist/src/browser/ldap-tree-viewer/store/actions.d.ts +2 -2
  36. package/dist/src/browser/ldap-tree-viewer/store/reducers.d.ts +2 -2
  37. package/dist/src/browser/ldap-unit-editor/LdapUnitEditor.d.ts +1 -1
  38. package/dist/src/browser/ldap-unit-editor/api/UnitApiClient.d.ts +1 -1
  39. package/dist/src/browser/ldap-unit-editor/components/MoveUnitModal.d.ts +1 -1
  40. package/dist/src/browser/ldap-unit-editor/components/UnitPropertyEditor.d.ts +1 -1
  41. package/dist/src/browser/ldap-unit-editor/types.d.ts +1 -1
  42. package/dist/src/browser/ldap-user-editor/LdapUserEditor.d.ts +2 -2
  43. package/dist/src/browser/ldap-user-editor/api/UserApiClient.d.ts +2 -2
  44. package/dist/src/browser/ldap-user-editor/components/MoveUserModal.d.ts +1 -1
  45. package/dist/src/browser/ldap-user-editor/components/PointerField.d.ts +2 -2
  46. package/dist/src/browser/ldap-user-editor/components/UserEditor.d.ts +1 -1
  47. package/dist/src/browser/ldap-user-editor/components/UserList.d.ts +1 -1
  48. package/dist/src/browser/ldap-user-editor/components/UserTree.d.ts +1 -1
  49. package/dist/src/browser/ldap-user-editor/index.d.ts +2 -3
  50. package/dist/src/browser/ldap-user-editor/types.d.ts +1 -1
  51. package/dist/src/browser/shared/components/Modal.d.ts +1 -1
  52. package/dist/src/browser/shared/index.d.ts +7 -7
  53. package/dist/src/browser/shared/utils/form.d.ts +1 -1
  54. package/dist/src/browser/shared/utils/schema.d.ts +1 -1
  55. package/dist/src/config/args.d.ts +3 -3
  56. package/dist/src/config/options.d.ts +2 -2
  57. package/dist/src/config/schema.d.ts +1 -1
  58. package/dist/src/hooks.d.ts +5 -5
  59. package/dist/src/lib/auth/base.d.ts +2 -2
  60. package/dist/src/lib/authz/base.d.ts +15 -20
  61. package/dist/src/lib/authz/composition.d.ts +4 -4
  62. package/dist/src/lib/entitySchema/validator.d.ts +23 -2
  63. package/dist/src/lib/expressFormatedResponses.d.ts +1 -1
  64. package/dist/src/lib/health.d.ts +1 -1
  65. package/dist/src/lib/hookBus.d.ts +1 -1
  66. package/dist/src/lib/ldap/schema.d.ts +2 -2
  67. package/dist/src/lib/ldapActions.d.ts +5 -5
  68. package/dist/src/lib/mailDomains.d.ts +1 -1
  69. package/dist/src/lib/parseConfig.d.ts +1 -1
  70. package/dist/src/lib/schemaFile.d.ts +1 -1
  71. package/dist/src/lib/staticFiles.d.ts +1 -1
  72. package/dist/src/lib/storage/store.d.ts +1 -1
  73. package/dist/src/lib/utils.d.ts +3 -3
  74. package/dist/src/logger/winston.d.ts +1 -1
  75. package/dist/src/plugins/auth/auth.options.d.ts +39 -38
  76. package/dist/src/plugins/auth/authzDynamic.d.ts +24 -11
  77. package/dist/src/plugins/auth/authzLinid1.d.ts +7 -7
  78. package/dist/src/plugins/auth/authzPerBranch.d.ts +8 -8
  79. package/dist/src/plugins/auth/authzPerRoute.d.ts +2 -2
  80. package/dist/src/plugins/auth/authzScope.d.ts +1 -1
  81. package/dist/src/plugins/auth/crowdsec.d.ts +4 -4
  82. package/dist/src/plugins/auth/fake.d.ts +3 -3
  83. package/dist/src/plugins/auth/hmac.d.ts +4 -4
  84. package/dist/src/plugins/auth/llng.d.ts +20 -5
  85. package/dist/src/plugins/auth/openidconnect.d.ts +29 -8
  86. package/dist/src/plugins/auth/rateLimit.d.ts +3 -3
  87. package/dist/src/plugins/auth/token.d.ts +3 -3
  88. package/dist/src/plugins/auth/totp.d.ts +5 -5
  89. package/dist/src/plugins/auth/trustedProxy.d.ts +16 -32
  90. package/dist/src/plugins/bcl.d.ts +4 -4
  91. package/dist/src/plugins/bcl.options.d.ts +3 -3
  92. package/dist/src/plugins/configApi.d.ts +1 -1
  93. package/dist/src/plugins/demo/helloworld.d.ts +1 -1
  94. package/dist/src/plugins/ldap/accountLifecycle.d.ts +1 -1
  95. package/dist/src/plugins/ldap/bulkImport.d.ts +5 -5
  96. package/dist/src/plugins/ldap/departmentSync.d.ts +14 -3
  97. package/dist/src/plugins/ldap/enterpriseRules.d.ts +7 -7
  98. package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +6 -6
  99. package/dist/src/plugins/ldap/flatGeneric.d.ts +6 -6
  100. package/dist/src/plugins/ldap/groups.d.ts +8 -8
  101. package/dist/src/plugins/ldap/ldap.options.d.ts +45 -45
  102. package/dist/src/plugins/ldap/onChange.d.ts +4 -4
  103. package/dist/src/plugins/ldap/organization.d.ts +1 -1
  104. package/dist/src/plugins/ldap/organizations.d.ts +12 -12
  105. package/dist/src/plugins/ldap/passwordPolicy.d.ts +11 -11
  106. package/dist/src/plugins/ldap/raw.d.ts +8 -8
  107. package/dist/src/plugins/ldap/trash.d.ts +6 -6
  108. package/dist/src/plugins/metrics.d.ts +3 -3
  109. package/dist/src/plugins/metrics.options.d.ts +3 -3
  110. package/dist/src/plugins/rabbitmq.d.ts +4 -4
  111. package/dist/src/plugins/rabbitmq.options.d.ts +3 -3
  112. package/dist/src/plugins/scim/baseResolver.d.ts +3 -3
  113. package/dist/src/plugins/scim/bulk.d.ts +7 -7
  114. package/dist/src/plugins/scim/discovery.d.ts +4 -4
  115. package/dist/src/plugins/scim/errors.d.ts +3 -3
  116. package/dist/src/plugins/scim/filter.d.ts +1 -1
  117. package/dist/src/plugins/scim/groups.d.ts +8 -8
  118. package/dist/src/plugins/scim/list.d.ts +1 -1
  119. package/dist/src/plugins/scim/mapping.d.ts +2 -2
  120. package/dist/src/plugins/scim/patch.d.ts +2 -2
  121. package/dist/src/plugins/scim/scim.d.ts +30 -30
  122. package/dist/src/plugins/scim/scim.options.d.ts +27 -27
  123. package/dist/src/plugins/scim/users.d.ts +6 -6
  124. package/dist/src/plugins/static.d.ts +6 -6
  125. package/dist/src/plugins/static.options.d.ts +6 -6
  126. package/dist/src/plugins/storage/file.d.ts +2 -2
  127. package/dist/src/plugins/storage/ldap.d.ts +2 -2
  128. package/dist/src/plugins/storage/postgres.d.ts +2 -2
  129. package/dist/src/plugins/storage/valkey.d.ts +2 -2
  130. package/dist/src/plugins/storage.d.ts +13 -13
  131. package/dist/src/plugins/storage.options.d.ts +11 -11
  132. package/dist/src/plugins/twake/appAccounts.options.d.ts +6 -6
  133. package/dist/src/plugins/twake/appAccountsApi.d.ts +7 -7
  134. package/dist/src/plugins/twake/appAccountsConsistency.d.ts +9 -9
  135. package/dist/src/plugins/twake/calendar.d.ts +14 -14
  136. package/dist/src/plugins/twake/calendar.options.d.ts +11 -11
  137. package/dist/src/plugins/twake/calendarResources.d.ts +1 -1
  138. package/dist/src/plugins/twake/cloudery.options.d.ts +18 -18
  139. package/dist/src/plugins/twake/clouderyProvision.d.ts +19 -19
  140. package/dist/src/plugins/twake/cozy.options.d.ts +14 -14
  141. package/dist/src/plugins/twake/cozyProvision.d.ts +15 -15
  142. package/dist/src/plugins/twake/drive.d.ts +9 -9
  143. package/dist/src/plugins/twake/drive.options.d.ts +7 -7
  144. package/dist/src/plugins/twake/groups.d.ts +16 -16
  145. package/dist/src/plugins/twake/instances.d.ts +38 -38
  146. package/dist/src/plugins/twake/james.d.ts +18 -18
  147. package/dist/src/plugins/twake/james.options.d.ts +13 -13
  148. package/dist/src/plugins/twake/lifecycleAttributes.d.ts +2 -2
  149. package/dist/src/plugins/twake/lifecycleEvents.d.ts +13 -13
  150. package/dist/src/plugins/twake/migrationProxy.d.ts +11 -11
  151. package/dist/src/plugins/twake/migrationProxy.options.d.ts +8 -8
  152. package/dist/src/plugins/twake/spaces.d.ts +12 -12
  153. package/dist/src/plugins/twake/tombstone.d.ts +10 -10
  154. package/dist/src/plugins/twake/twakeGroups.options.d.ts +12 -12
  155. package/dist/src/plugins/twake/twakeInstances.options.d.ts +35 -35
  156. package/dist/src/plugins/twake/twakeLifecycle.options.d.ts +12 -12
  157. package/dist/src/plugins/twake/twakeSpaces.options.d.ts +11 -11
  158. package/dist/src/plugins/twake/twakeTombstone.options.d.ts +9 -9
  159. package/dist/src/plugins/weblogs.d.ts +1 -1
  160. package/docs/client-development/schemas/README.md +6 -1
  161. package/docs/development/contracts.md +22 -0
  162. package/docs/presentations/en.md +1 -1
  163. package/docs/presentations/fr.md +1 -1
  164. package/docs/usage/configuration.md +1 -0
  165. package/docs/usage/plugins/auth/authz-dynamic.md +3 -1
  166. package/docs/usage/plugins/auth/authz-linid1.md +10 -5
  167. package/docs/usage/plugins/auth/oidc.md +11 -0
  168. package/docs/usage/plugins/auth/trusted-proxy.md +11 -1
  169. package/docs/usage/upgrading.md +61 -0
  170. package/package.json +4 -3
  171. package/static/browser/ldap-user-editor.esm.js.map +1 -1
  172. package/static/browser/ldap-user-editor.js.map +1 -1
  173. package/static/browser/ldap-user-editor.min.js.map +1 -1
  174. package/static/browser/shared/utils/schema.js.map +1 -1
  175. package/static/browser/shared.esm.js.map +1 -1
  176. package/static/browser/shared.js.map +1 -1
  177. package/static/browser/shared.min.js.map +1 -1
@@ -1,30 +1,5 @@
1
- /**
2
- * @module core/auth/trustedProxy
3
- * Trusted proxy plugin to validate X-Forwarded-For headers
4
- *
5
- * This plugin validates that X-Forwarded-For headers only come from trusted
6
- * upstream reverse proxies. If the request comes from an untrusted IP,
7
- * the X-Forwarded-For header is removed to prevent IP spoofing attacks.
8
- *
9
- * This plugin MUST be loaded BEFORE any plugin that uses X-Forwarded-For
10
- * (like crowdsec and rateLimit) to ensure they receive sanitized headers.
11
- *
12
- * Configuration:
13
- * - trusted_proxy: Array of trusted proxy IPs or CIDR ranges (required)
14
- * Example: ["127.0.0.1", "10.0.0.0/8", "192.168.1.0/24", "::1"]
15
- * - trusted_proxy_auth_header: Header name containing the authenticated user
16
- * from trusted proxy (optional, default: "Auth-User")
17
- *
18
- * When a request comes from a trusted proxy:
19
- * - X-Forwarded-For header is preserved
20
- * - The request is marked as trusted (req.trustedProxy = true)
21
- * - If trusted_proxy_auth_header is set and the header is present,
22
- * req.proxyAuthUser is set to its value for use by other plugins (e.g., weblogs)
23
- *
24
- * @author Xavier Guimard <xguimard@linagora.com>
25
- */
26
1
  import type { Express } from 'express';
27
- import DmPlugin, { type Role } from '../../abstract/plugin';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
28
3
  declare global {
29
4
  namespace Express {
30
5
  interface Request {
@@ -35,8 +10,8 @@ declare global {
35
10
  }
36
11
  export default class TrustedProxy extends DmPlugin {
37
12
  static optionDefinitions: {
38
- trusted_proxy: import("../../config/options").ArrayOption;
39
- trusted_proxy_auth_header: import("../../config/options").StringOption;
13
+ trusted_proxy: import("../../config/options.js").ArrayOption;
14
+ trusted_proxy_auth_header: import("../../config/options.js").StringOption;
40
15
  };
41
16
  name: string;
42
17
  roles: Role[];
@@ -49,15 +24,24 @@ export default class TrustedProxy extends DmPlugin {
49
24
  */
50
25
  private isTrustedProxy;
51
26
  /**
52
- * Normalize IP address (handle IPv4-mapped IPv6 addresses)
27
+ * Whether an address belongs to a network: same family, or an IPv4-mapped
28
+ * IPv6 address checked as the IPv4 address it carries.
53
29
  */
54
- private normalizeIP;
30
+ private isInNetwork;
55
31
  /**
56
- * Parse an IP address into a bigint for comparison
32
+ * The IPv4 address an IPv4-mapped IPv6 address carries
33
+ * (`::ffff:a.b.c.d`), or undefined for another address.
34
+ */
35
+ private mappedIPv4;
36
+ /**
37
+ * Parse an IP address into a bigint for comparison. A zone index names the
38
+ * interface, not the address, and is dropped before the match.
57
39
  */
58
40
  private parseIP;
59
41
  /**
60
- * Parse a CIDR notation string into network address and mask
42
+ * Parse a CIDR notation string into network address and mask. A network
43
+ * written as an IPv4-mapped IPv6 network is checked as the IPv4 network it
44
+ * is: `::ffff:10.0.0.0/104` is `10.0.0.0/8`.
61
45
  */
62
46
  private parseCIDR;
63
47
  /**
@@ -16,12 +16,12 @@
16
16
  *
17
17
  * @group Plugins
18
18
  */
19
- import DmPlugin from '../abstract/plugin';
20
- import type { DM } from '../bin';
21
- import type { OidcLogoutToken, OidcSessionClaims } from '../hooks';
19
+ import DmPlugin from '../abstract/plugin.js';
20
+ import type { DM } from '../bin/index.js';
21
+ import type { OidcLogoutToken, OidcSessionClaims } from '../hooks.js';
22
22
  export default class Bcl extends DmPlugin {
23
23
  static optionDefinitions: {
24
- bcl_retention: import("../config/options").NumberOption;
24
+ bcl_retention: import("../config/options.js").NumberOption;
25
25
  };
26
26
  name: string;
27
27
  dependencies: {
@@ -1,8 +1,8 @@
1
1
  /** Back-Channel Logout plugin options. */
2
- import type { Config } from '../config/args';
3
- import { type OptionsOf } from '../config/options';
2
+ import type { Config } from '../config/args.js';
3
+ import { type OptionsOf } from '../config/options.js';
4
4
  export declare const bclOptions: {
5
- bcl_retention: import("../config/options").NumberOption;
5
+ bcl_retention: import("../config/options.js").NumberOption;
6
6
  };
7
7
  export type BclOptions = OptionsOf<typeof bclOptions>;
8
8
  export declare function bclOptionsOf(config: Config): BclOptions;
@@ -9,7 +9,7 @@
9
9
  * expose their configuration via getConfigApiData() method
10
10
  */
11
11
  import type { Express } from 'express';
12
- import DmPlugin, { type Role } from '../abstract/plugin';
12
+ import DmPlugin, { type Role } from '../abstract/plugin.js';
13
13
  interface ConfigApiResponse {
14
14
  apiPrefix: string;
15
15
  ldapBase: string;
@@ -4,7 +4,7 @@
4
4
  * @author Xavier Guimard <xguimard@linagora.com>
5
5
  */
6
6
  import type { Express } from 'express';
7
- import DmPlugin, { type Role } from '../../abstract/plugin';
7
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
8
8
  /**
9
9
  * The answer of the hello-world endpoint.
10
10
  *
@@ -1,5 +1,5 @@
1
1
  import type { Express } from 'express';
2
- import DmPlugin, { type Role } from '../../abstract/plugin';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
3
3
  export declare const StatusBody: import("@sinclair/typebox").TObject<{
4
4
  state: import("@sinclair/typebox").TString;
5
5
  }>;
@@ -4,13 +4,13 @@
4
4
  * @author LDAP-Rest Team
5
5
  */
6
6
  import type { Express } from 'express';
7
- import DmPlugin, { type Role } from '../../abstract/plugin';
8
- import type { DM } from '../../bin';
7
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
8
+ import type { DM } from '../../bin/index.js';
9
9
  export default class LdapBulkImport extends DmPlugin {
10
10
  static optionDefinitions: {
11
- bulk_import_schemas: import("../../config/options").StringOption;
12
- bulk_import_max_file_size: import("../../config/options").StringOption;
13
- bulk_import_batch_size: import("../../config/options").StringOption;
11
+ bulk_import_schemas: import("../../config/options.js").StringOption;
12
+ bulk_import_max_file_size: import("../../config/options.js").StringOption;
13
+ bulk_import_batch_size: import("../../config/options.js").StringOption;
14
14
  };
15
15
  name: string;
16
16
  roles: Role[];
@@ -6,9 +6,9 @@
6
6
  * Automatically updates twakeDepartmentLink and twakeDepartmentPath attributes on all
7
7
  * resources (users, groups, etc.) when their linked organization DN changes.
8
8
  */
9
- import DmPlugin, { type Role } from '../../abstract/plugin';
10
- import type { DM } from '../../bin';
11
- import type { Hooks } from '../../hooks';
9
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
10
+ import type { DM } from '../../bin/index.js';
11
+ import type { Hooks } from '../../hooks.js';
12
12
  export default class LdapDepartmentSync extends DmPlugin {
13
13
  name: string;
14
14
  roles: Role[];
@@ -71,6 +71,17 @@ export default class LdapDepartmentSync extends DmPlugin {
71
71
  * We need to update resources pointing to the old child DN
72
72
  */
73
73
  private updateDescendantReferences;
74
+ /**
75
+ * Put the descendant RDNs of `dn` under `newDn`: the last RDNs of `dn`
76
+ * are those of `oldDn`. The RDNs kept are spelled as `dn` spells them, and
77
+ * compared as DNs, so an escaped comma in a value is never a separator.
78
+ *
79
+ * @param dn link naming `oldDn` or one of its descendants
80
+ * @param oldDn the organization's DN before the rename
81
+ * @param newDn the organization's DN after it
82
+ * @returns the link naming the same descendant under `newDn`
83
+ */
84
+ private replaceDnTail;
74
85
  /**
75
86
  * Get department path from an organization DN
76
87
  * Fetches the path attribute directly from the organization entry
@@ -42,11 +42,11 @@
42
42
  * @group Plugins
43
43
  */
44
44
  import type { Request } from 'express';
45
- import DmPlugin, { type Role } from '../../abstract/plugin';
46
- import type { DM } from '../../bin';
47
- import type { Hooks } from '../../hooks';
48
- import type { AttributeValue } from '../../lib/ldapActions';
49
- import type { Schema, SchemaAttribute } from '../../config/schema';
45
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
46
+ import type { DM } from '../../bin/index.js';
47
+ import type { Hooks } from '../../hooks.js';
48
+ import type { AttributeValue } from '../../lib/ldapActions.js';
49
+ import type { Schema, SchemaAttribute } from '../../config/schema.js';
50
50
  /**
51
51
  * One place a DN is stored: which entry, in which attribute, and what that
52
52
  * attribute currently holds there.
@@ -135,8 +135,8 @@ export declare function startOfUtcDay(now?: Date): number;
135
135
  export declare function mailInDomains(mail: string, domains: string[], allowSubdomains?: boolean): boolean;
136
136
  export default class LdapEnterpriseRules extends DmPlugin {
137
137
  static optionDefinitions: {
138
- enterprise_domain_name_attribute: import("../../config/options").StringOption;
139
- enterprise_domain_link_attribute: import("../../config/options").StringOption;
138
+ enterprise_domain_name_attribute: import("../../config/options.js").StringOption;
139
+ enterprise_domain_link_attribute: import("../../config/options.js").StringOption;
140
140
  };
141
141
  name: string;
142
142
  roles: Role[];
@@ -5,10 +5,10 @@
5
5
  * Creates on-the-fly missing group users into a branch
6
6
  * This permits to add external users into mailing lists
7
7
  */
8
- import DmPlugin, { type Role } from '../../abstract/plugin';
9
- import type { DM } from '../../bin';
10
- import { Hooks } from '../../hooks';
11
- import ldapActions from '../../lib/ldapActions';
8
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
9
+ import type { DM } from '../../bin/index.js';
10
+ import { Hooks } from '../../hooks.js';
11
+ import ldapActions from '../../lib/ldapActions.js';
12
12
  /**
13
13
  * The domain of an address, as the managed domains are compared: after its
14
14
  * last `@` (the local part may hold one, quoted), lower-cased, without the
@@ -17,8 +17,8 @@ import ldapActions from '../../lib/ldapActions';
17
17
  export declare const mailDomainOf: (mail: string) => string;
18
18
  export default class ExternalUsersInGroups extends DmPlugin {
19
19
  static optionDefinitions: {
20
- external_members_branch: import("../../config/options").StringOption;
21
- external_branch_class: import("../../config/options").ArrayOption;
20
+ external_members_branch: import("../../config/options.js").StringOption;
21
+ external_branch_class: import("../../config/options.js").ArrayOption;
22
22
  };
23
23
  name: string;
24
24
  roles: Role[];
@@ -6,10 +6,10 @@
6
6
  * Automatically creates sub-plugins based on schema metadata
7
7
  */
8
8
  import type { Express } from 'express';
9
- import DmPlugin, { type Role } from '../../abstract/plugin';
10
- import LdapFlat from '../../abstract/ldapFlat';
11
- import type { DM } from '../../bin';
12
- import type { LocalizedText } from '../../config/schema';
9
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
10
+ import LdapFlat from '../../abstract/ldapFlat.js';
11
+ import type { DM } from '../../bin/index.js';
12
+ import type { LocalizedText } from '../../config/schema.js';
13
13
  /**
14
14
  * Collections the other LDAP plugins serve under the same `/v1/ldap/` prefix,
15
15
  * with the plugin that serves each: its registry name, and the module paths a
@@ -51,8 +51,8 @@ declare class LdapFlatInstance extends LdapFlat {
51
51
  }
52
52
  export default class LdapFlatGeneric extends DmPlugin {
53
53
  static optionDefinitions: {
54
- ldap_flat_schema: import("../../config/options").ArrayOption;
55
- ldap_flat_auto_repair: import("../../config/options").BooleanOption;
54
+ ldap_flat_schema: import("../../config/options.js").ArrayOption;
55
+ ldap_flat_auto_repair: import("../../config/options.js").BooleanOption;
56
56
  };
57
57
  name: string;
58
58
  roles: Role[];
@@ -1,12 +1,12 @@
1
1
  import type { Express, Request, Response } from 'express';
2
- import DmPlugin, { type Role } from '../../abstract/plugin';
3
- import type { DM } from '../../bin';
4
- import type { OptionSet } from '../../config/options';
5
- import type { Hooks } from '../../hooks';
6
- import type ldapActions from '../../lib/ldapActions';
7
- import type { AttributesList, AttributeValue, LdapList, ModifyRequest } from '../../lib/ldapActions';
8
- import type { Schema } from '../../config/schema';
9
- import { EntityValidator } from '../../lib/entitySchema/validator';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
3
+ import type { DM } from '../../bin/index.js';
4
+ import type { OptionSet } from '../../config/options.js';
5
+ import type { Hooks } from '../../hooks.js';
6
+ import type ldapActions from '../../lib/ldapActions.js';
7
+ import type { AttributesList, AttributeValue, LdapList, ModifyRequest } from '../../lib/ldapActions.js';
8
+ import type { Schema } from '../../config/schema.js';
9
+ import { EntityValidator } from '../../lib/entitySchema/validator.js';
10
10
  export interface postAdd {
11
11
  cn?: string;
12
12
  [key: string]: AttributeValue | undefined;
@@ -1,73 +1,73 @@
1
- import type { Config } from '../../config/args';
2
- import type { AttributesList } from '../../lib/ldapActions';
3
- import { type OptionsOf } from '../../config/options';
1
+ import type { Config } from '../../config/args.js';
2
+ import type { AttributesList } from '../../lib/ldapActions.js';
3
+ import { type OptionsOf } from '../../config/options.js';
4
4
  export declare const organizationOptions: {
5
- ldap_top_organization: import("../../config/options").StringOption;
6
- ldap_organization_class: import("../../config/options").ArrayOption;
7
- ldap_organization_link_attribute: import("../../config/options").StringOption;
8
- ldap_organization_path_attribute: import("../../config/options").StringOption;
9
- ldap_organization_path_separator: import("../../config/options").StringOption;
10
- ldap_organization_max_subnodes: import("../../config/options").NumberOption;
11
- organization_schema: import("../../config/options").StringOption;
5
+ ldap_top_organization: import("../../config/options.js").StringOption;
6
+ ldap_organization_class: import("../../config/options.js").ArrayOption;
7
+ ldap_organization_link_attribute: import("../../config/options.js").StringOption;
8
+ ldap_organization_path_attribute: import("../../config/options.js").StringOption;
9
+ ldap_organization_path_separator: import("../../config/options.js").StringOption;
10
+ ldap_organization_max_subnodes: import("../../config/options.js").NumberOption;
11
+ organization_schema: import("../../config/options.js").StringOption;
12
12
  };
13
13
  export type OrganizationOptions = OptionsOf<typeof organizationOptions>;
14
14
  export declare const enterpriseRulesOptions: {
15
- enterprise_domain_name_attribute: import("../../config/options").StringOption;
16
- enterprise_domain_link_attribute: import("../../config/options").StringOption;
15
+ enterprise_domain_name_attribute: import("../../config/options.js").StringOption;
16
+ enterprise_domain_link_attribute: import("../../config/options.js").StringOption;
17
17
  };
18
18
  export type EnterpriseRulesOptions = OptionsOf<typeof enterpriseRulesOptions>;
19
19
  export declare const groupsOptions: {
20
- ldap_group_base: import("../../config/options").StringOption;
21
- ldap_groups_main_attribute: import("../../config/options").StringOption;
22
- group_class: import("../../config/options").ArrayOption;
23
- groups_allow_unexistent_members: import("../../config/options").BooleanOption;
24
- group_default_attributes: import("../../config/options").JsonOption<AttributesList>;
25
- group_dummy_user: import("../../config/options").StringOption;
26
- group_schema: import("../../config/options").StringOption;
20
+ ldap_group_base: import("../../config/options.js").StringOption;
21
+ ldap_groups_main_attribute: import("../../config/options.js").StringOption;
22
+ group_class: import("../../config/options.js").ArrayOption;
23
+ groups_allow_unexistent_members: import("../../config/options.js").BooleanOption;
24
+ group_default_attributes: import("../../config/options.js").JsonOption<AttributesList>;
25
+ group_dummy_user: import("../../config/options.js").StringOption;
26
+ group_schema: import("../../config/options.js").StringOption;
27
27
  };
28
28
  export type GroupsOptions = OptionsOf<typeof groupsOptions>;
29
29
  export declare const externalUsersOptions: {
30
- external_members_branch: import("../../config/options").StringOption;
31
- external_branch_class: import("../../config/options").ArrayOption;
30
+ external_members_branch: import("../../config/options.js").StringOption;
31
+ external_branch_class: import("../../config/options.js").ArrayOption;
32
32
  };
33
33
  export type ExternalUsersOptions = OptionsOf<typeof externalUsersOptions>;
34
34
  export declare const flatGenericOptions: {
35
- ldap_flat_schema: import("../../config/options").ArrayOption;
36
- ldap_flat_auto_repair: import("../../config/options").BooleanOption;
35
+ ldap_flat_schema: import("../../config/options.js").ArrayOption;
36
+ ldap_flat_auto_repair: import("../../config/options.js").BooleanOption;
37
37
  };
38
38
  export type FlatGenericOptions = OptionsOf<typeof flatGenericOptions>;
39
39
  export declare const rawOptions: {
40
- ldap_raw_base: import("../../config/options").ArrayOption;
41
- ldap_raw_hidden_attribute: import("../../config/options").ArrayOption;
42
- ldap_raw_show_secrets: import("../../config/options").BooleanOption;
43
- ldap_raw_max_results: import("../../config/options").NumberOption;
44
- ldap_raw_schema_cache_ttl: import("../../config/options").NumberOption;
40
+ ldap_raw_base: import("../../config/options.js").ArrayOption;
41
+ ldap_raw_hidden_attribute: import("../../config/options.js").ArrayOption;
42
+ ldap_raw_show_secrets: import("../../config/options.js").BooleanOption;
43
+ ldap_raw_max_results: import("../../config/options.js").NumberOption;
44
+ ldap_raw_schema_cache_ttl: import("../../config/options.js").NumberOption;
45
45
  };
46
46
  export type RawOptions = OptionsOf<typeof rawOptions>;
47
47
  export declare const bulkImportOptions: {
48
- bulk_import_schemas: import("../../config/options").StringOption;
49
- bulk_import_max_file_size: import("../../config/options").StringOption;
50
- bulk_import_batch_size: import("../../config/options").StringOption;
48
+ bulk_import_schemas: import("../../config/options.js").StringOption;
49
+ bulk_import_max_file_size: import("../../config/options.js").StringOption;
50
+ bulk_import_batch_size: import("../../config/options.js").StringOption;
51
51
  };
52
52
  export type BulkImportOptions = OptionsOf<typeof bulkImportOptions>;
53
53
  export declare const trashOptions: {
54
- trash_base: import("../../config/options").StringOption;
55
- trash_watched_bases: import("../../config/options").StringOption;
56
- trash_add_metadata: import("../../config/options").StringOption;
57
- trash_auto_create: import("../../config/options").StringOption;
54
+ trash_base: import("../../config/options.js").StringOption;
55
+ trash_watched_bases: import("../../config/options.js").StringOption;
56
+ trash_add_metadata: import("../../config/options.js").StringOption;
57
+ trash_auto_create: import("../../config/options.js").StringOption;
58
58
  };
59
59
  export type TrashOptions = OptionsOf<typeof trashOptions>;
60
60
  export declare const passwordPolicyOptions: {
61
- ppolicy_default_dn: import("../../config/options").StringOption;
62
- ppolicy_base: import("../../config/options").StringOption;
63
- ppolicy_warn_days: import("../../config/options").NumberOption;
64
- ppolicy_validate_complexity: import("../../config/options").BooleanOption;
65
- ppolicy_min_length: import("../../config/options").NumberOption;
66
- ppolicy_require_uppercase: import("../../config/options").BooleanOption;
67
- ppolicy_require_lowercase: import("../../config/options").BooleanOption;
68
- ppolicy_require_digit: import("../../config/options").BooleanOption;
69
- ppolicy_require_special: import("../../config/options").BooleanOption;
70
- ldap_users_base: import("../../config/options").StringOption;
61
+ ppolicy_default_dn: import("../../config/options.js").StringOption;
62
+ ppolicy_base: import("../../config/options.js").StringOption;
63
+ ppolicy_warn_days: import("../../config/options.js").NumberOption;
64
+ ppolicy_validate_complexity: import("../../config/options.js").BooleanOption;
65
+ ppolicy_min_length: import("../../config/options.js").NumberOption;
66
+ ppolicy_require_uppercase: import("../../config/options.js").BooleanOption;
67
+ ppolicy_require_lowercase: import("../../config/options.js").BooleanOption;
68
+ ppolicy_require_digit: import("../../config/options.js").BooleanOption;
69
+ ppolicy_require_special: import("../../config/options.js").BooleanOption;
70
+ ldap_users_base: import("../../config/options.js").StringOption;
71
71
  };
72
72
  export type PasswordPolicyOptions = OptionsOf<typeof passwordPolicyOptions>;
73
73
  export declare function organizationOptionsOf(config: Config): OrganizationOptions;
@@ -6,10 +6,10 @@
6
6
  * @author Xavier Guimard <xguimard@linagora.com>
7
7
  */
8
8
  import { Entry } from 'ldapts';
9
- import DmPlugin, { type Role } from '../../abstract/plugin';
10
- import type { Hooks } from '../../hooks';
11
- import type { AttributeValue } from '../../lib/ldapActions';
12
- import type { ChangeContext } from '../../lib/changeContext';
9
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
10
+ import type { Hooks } from '../../hooks.js';
11
+ import type { AttributeValue } from '../../lib/ldapActions.js';
12
+ import type { ChangeContext } from '../../lib/changeContext.js';
13
13
  export type ChangesToNotify = Record<string, [
14
14
  AttributeValue | null,
15
15
  AttributeValue | null
@@ -4,5 +4,5 @@
4
4
  * the historical (singular) filename. It will be removed in a future major
5
5
  * release.
6
6
  */
7
- import LdapOrganizations from './organizations';
7
+ import LdapOrganizations from './organizations.js';
8
8
  export default LdapOrganizations;
@@ -1,9 +1,9 @@
1
1
  import type { Express, Request, Response } from 'express';
2
- import DmPlugin, { type Role } from '../../abstract/plugin';
3
- import { DM } from '../../bin';
4
- import { Hooks } from '../../hooks';
5
- import { AttributesList, ModifyRequest } from '../../lib/ldapActions';
6
- import type { Schema } from '../../config/schema';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
3
+ import { DM } from '../../bin/index.js';
4
+ import { Hooks } from '../../hooks.js';
5
+ import { AttributesList, ModifyRequest } from '../../lib/ldapActions.js';
6
+ import type { Schema } from '../../config/schema.js';
7
7
  /**
8
8
  * Shared OpenAPI schemas surfaced by this plugin. Picked up by
9
9
  * scripts/generate-openapi.ts and merged into `components.schemas`.
@@ -102,13 +102,13 @@ export declare const OrganizationSearchQuery: import("@sinclair/typebox").TObjec
102
102
  }>;
103
103
  export default class LdapOrganizations extends DmPlugin {
104
104
  static optionDefinitions: {
105
- ldap_top_organization: import("../../config/options").StringOption;
106
- ldap_organization_class: import("../../config/options").ArrayOption;
107
- ldap_organization_link_attribute: import("../../config/options").StringOption;
108
- ldap_organization_path_attribute: import("../../config/options").StringOption;
109
- ldap_organization_path_separator: import("../../config/options").StringOption;
110
- ldap_organization_max_subnodes: import("../../config/options").NumberOption;
111
- organization_schema: import("../../config/options").StringOption;
105
+ ldap_top_organization: import("../../config/options.js").StringOption;
106
+ ldap_organization_class: import("../../config/options.js").ArrayOption;
107
+ ldap_organization_link_attribute: import("../../config/options.js").StringOption;
108
+ ldap_organization_path_attribute: import("../../config/options.js").StringOption;
109
+ ldap_organization_path_separator: import("../../config/options.js").StringOption;
110
+ ldap_organization_max_subnodes: import("../../config/options.js").NumberOption;
111
+ organization_schema: import("../../config/options.js").StringOption;
112
112
  };
113
113
  name: string;
114
114
  roles: Role[];
@@ -1,5 +1,5 @@
1
1
  import type { Express } from 'express';
2
- import DmPlugin, { type Role } from '../../abstract/plugin';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
3
3
  /**
4
4
  * Shared OpenAPI schemas surfaced by this plugin. Picked up by
5
5
  * scripts/generate-openapi.ts and merged into `components.schemas`.
@@ -253,16 +253,16 @@ export declare const ValidatePasswordBody: import("@sinclair/typebox").TObject<{
253
253
  }>;
254
254
  export default class PasswordPolicy extends DmPlugin {
255
255
  static optionDefinitions: {
256
- ppolicy_default_dn: import("../../config/options").StringOption;
257
- ppolicy_base: import("../../config/options").StringOption;
258
- ppolicy_warn_days: import("../../config/options").NumberOption;
259
- ppolicy_validate_complexity: import("../../config/options").BooleanOption;
260
- ppolicy_min_length: import("../../config/options").NumberOption;
261
- ppolicy_require_uppercase: import("../../config/options").BooleanOption;
262
- ppolicy_require_lowercase: import("../../config/options").BooleanOption;
263
- ppolicy_require_digit: import("../../config/options").BooleanOption;
264
- ppolicy_require_special: import("../../config/options").BooleanOption;
265
- ldap_users_base: import("../../config/options").StringOption;
256
+ ppolicy_default_dn: import("../../config/options.js").StringOption;
257
+ ppolicy_base: import("../../config/options.js").StringOption;
258
+ ppolicy_warn_days: import("../../config/options.js").NumberOption;
259
+ ppolicy_validate_complexity: import("../../config/options.js").BooleanOption;
260
+ ppolicy_min_length: import("../../config/options.js").NumberOption;
261
+ ppolicy_require_uppercase: import("../../config/options.js").BooleanOption;
262
+ ppolicy_require_lowercase: import("../../config/options.js").BooleanOption;
263
+ ppolicy_require_digit: import("../../config/options.js").BooleanOption;
264
+ ppolicy_require_special: import("../../config/options.js").BooleanOption;
265
+ ldap_users_base: import("../../config/options.js").StringOption;
266
266
  };
267
267
  name: string;
268
268
  roles: Role[];
@@ -1,7 +1,7 @@
1
1
  import type { Express, Request } from 'express';
2
- import DmPlugin, { type Role } from '../../abstract/plugin';
3
- import type { DM } from '../../bin';
4
- import type { LdapSchema, SchemaIndex } from '../../lib/ldapSchema';
2
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
3
+ import type { DM } from '../../bin/index.js';
4
+ import type { LdapSchema, SchemaIndex } from '../../lib/ldapSchema.js';
5
5
  /**
6
6
  * Shared OpenAPI schemas surfaced by this plugin. Picked up by
7
7
  * scripts/generate-openapi.ts and merged into `components.schemas`.
@@ -101,11 +101,11 @@ export declare const RawChildrenQuery: import("@sinclair/typebox").TObject<{
101
101
  }>;
102
102
  export default class LdapRaw extends DmPlugin {
103
103
  static optionDefinitions: {
104
- ldap_raw_base: import("../../config/options").ArrayOption;
105
- ldap_raw_hidden_attribute: import("../../config/options").ArrayOption;
106
- ldap_raw_show_secrets: import("../../config/options").BooleanOption;
107
- ldap_raw_max_results: import("../../config/options").NumberOption;
108
- ldap_raw_schema_cache_ttl: import("../../config/options").NumberOption;
104
+ ldap_raw_base: import("../../config/options.js").ArrayOption;
105
+ ldap_raw_hidden_attribute: import("../../config/options.js").ArrayOption;
106
+ ldap_raw_show_secrets: import("../../config/options.js").BooleanOption;
107
+ ldap_raw_max_results: import("../../config/options.js").NumberOption;
108
+ ldap_raw_schema_cache_ttl: import("../../config/options.js").NumberOption;
109
109
  };
110
110
  name: string;
111
111
  roles: Role[];
@@ -11,14 +11,14 @@
11
11
  *
12
12
  * @author Xavier Guimard <xguimard@linagora.com>
13
13
  */
14
- import DmPlugin, { type Role } from '../../abstract/plugin';
15
- import type { Hooks } from '../../hooks';
14
+ import DmPlugin, { type Role } from '../../abstract/plugin.js';
15
+ import type { Hooks } from '../../hooks.js';
16
16
  declare class TrashPlugin extends DmPlugin {
17
17
  static optionDefinitions: {
18
- trash_base: import("../../config/options").StringOption;
19
- trash_watched_bases: import("../../config/options").StringOption;
20
- trash_add_metadata: import("../../config/options").StringOption;
21
- trash_auto_create: import("../../config/options").StringOption;
18
+ trash_base: import("../../config/options.js").StringOption;
19
+ trash_watched_bases: import("../../config/options.js").StringOption;
20
+ trash_add_metadata: import("../../config/options.js").StringOption;
21
+ trash_auto_create: import("../../config/options.js").StringOption;
22
22
  };
23
23
  name: string;
24
24
  roles: Role[];
@@ -1,9 +1,9 @@
1
1
  import type { Express } from 'express';
2
- import DmPlugin from '../abstract/plugin';
3
- import type { DM } from '../bin';
2
+ import DmPlugin from '../abstract/plugin.js';
3
+ import type { DM } from '../bin/index.js';
4
4
  export default class Metrics extends DmPlugin {
5
5
  static optionDefinitions: {
6
- metrics_port: import("../config/options").NumberOption;
6
+ metrics_port: import("../config/options.js").NumberOption;
7
7
  };
8
8
  name: string;
9
9
  /** The gauges read at scrape time and the process metrics */
@@ -1,8 +1,8 @@
1
1
  /** Metrics plugin options, see `docs/plugin-development/options.md`. */
2
- import type { Config } from '../config/args';
3
- import { type OptionsOf } from '../config/options';
2
+ import type { Config } from '../config/args.js';
3
+ import { type OptionsOf } from '../config/options.js';
4
4
  export declare const metricsOptions: {
5
- metrics_port: import("../config/options").NumberOption;
5
+ metrics_port: import("../config/options.js").NumberOption;
6
6
  };
7
7
  export type MetricsOptions = OptionsOf<typeof metricsOptions>;
8
8
  export declare function metricsOptionsOf(config: Config): MetricsOptions;
@@ -17,9 +17,9 @@
17
17
  * const rmq = this.server.loadedPlugins['rabbitmq'] as RabbitMq;
18
18
  * await rmq.publish('auth', 'user.created', message);
19
19
  */
20
- import DmPlugin from '../abstract/plugin';
21
- import type { DM } from '../bin';
22
- import type { HealthStatus } from '../lib/health';
20
+ import DmPlugin from '../abstract/plugin.js';
21
+ import type { DM } from '../bin/index.js';
22
+ import type { HealthStatus } from '../lib/health.js';
23
23
  /** JSON-serialisable message payload. */
24
24
  export type RabbitMessage = Record<string, unknown>;
25
25
  /** Async handler invoked for each consumed message. */
@@ -62,7 +62,7 @@ interface RabbitClientOptions {
62
62
  }
63
63
  export default class RabbitMq extends DmPlugin {
64
64
  static optionDefinitions: {
65
- rabbitmq_url: import("../config/options").StringOption;
65
+ rabbitmq_url: import("../config/options.js").StringOption;
66
66
  };
67
67
  name: string;
68
68
  private readonly rabbitmqUrl;
@@ -1,8 +1,8 @@
1
1
  /** RabbitMQ plugin options, see `docs/plugin-development/options.md`. */
2
- import type { Config } from '../config/args';
3
- import { type OptionsOf } from '../config/options';
2
+ import type { Config } from '../config/args.js';
3
+ import { type OptionsOf } from '../config/options.js';
4
4
  export declare const rabbitmqOptions: {
5
- rabbitmq_url: import("../config/options").StringOption;
5
+ rabbitmq_url: import("../config/options.js").StringOption;
6
6
  };
7
7
  export type RabbitmqOptions = OptionsOf<typeof rabbitmqOptions>;
8
8
  export declare function rabbitmqOptionsOf(config: Config): RabbitmqOptions;