Johannes Zellner
918c2f8587
Move to @cloudron/safetydance
2026-04-01 09:49:34 +02:00
Girish Ramakrishnan
e9f96593c3
reorder functions for no-use-before-define
2026-02-14 16:34:34 +01:00
Girish Ramakrishnan
36aa641cb9
migrate to "export default"
...
also, set no-use-before-define in linter
2026-02-14 15:43:24 +01:00
Girish Ramakrishnan
96dc79cfe6
Migrate codebase from CommonJS to ES Modules
...
- Convert all require()/module.exports to import/export across 260+ files
- Add "type": "module" to package.json to enable ESM by default
- Add migrations/package.json with "type": "commonjs" to keep db-migrate compatible
- Convert eslint.config.js to ESM with sourceType: "module"
- Replace __dirname/__filename with import.meta.dirname/import.meta.filename
- Replace require.main === module with process.argv[1] === import.meta.filename
- Remove 'use strict' directives (implicit in ESM)
- Convert dynamic require() in switch statements to static import lookup maps
(dns.js, domains.js, backupformats.js, backupsites.js, network.js)
- Extract self-referencing exports.CONSTANT patterns into standalone const
declarations (apps.js, services.js, locks.js, users.js, mail.js, etc.)
- Lazify SERVICES object in services.js to avoid circular dependency TDZ issues
- Add clearMailQueue() to mailer.js for ESM-safe queue clearing in tests
- Add _setMockApp() to ldapserver.js for ESM-safe test mocking
- Add _setMockResolve() wrapper to dig.js for ESM-safe DNS mocking in tests
- Convert backupupload.js to use dynamic imports so --check exits before
loading the module graph (which requires BOX_ENV)
- Update check-install to use ESM import for infra_version.js
- Convert scripts/ (hotfix, release, remote_hotfix.js, find-unused-translations)
- All 1315 tests passing
Migration stats (AI-assisted using Cursor with Claude):
- Wall clock time: ~3-4 hours
- Assistant completions: ~80-100
- Estimated token usage: ~1-2M tokens
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:11:45 +01:00
Girish Ramakrishnan
af3ed04b7f
externalldap: only set group members if they changed
2025-11-04 09:12:25 +01:00
Girish Ramakrishnan
02fd52e366
Remove any deleted group and user from operators and accessRestriction
...
part of #857
2025-10-20 16:51:23 +02:00
Girish Ramakrishnan
5dd5a20fc1
code -> sqlCode
2025-09-29 12:18:26 +02:00
Girish Ramakrishnan
12e073e8cf
use node: prefix for requires
...
mostly because code is being autogenerated by all the AI stuff using
this prefix. it's also used in the stack trace.
2025-08-14 12:55:35 +05:30
Girish Ramakrishnan
cbc73f5c9a
remove uuid module
...
built into node.js now
2025-07-28 12:54:09 +02:00
Girish Ramakrishnan
bd44bb4534
groups: add app access tests
2025-02-12 14:21:46 +01:00
Girish Ramakrishnan
31599c5da9
add missing await
2025-02-12 13:13:40 +01:00
Girish Ramakrishnan
7e1fbb3017
groups: add appIds field to groups object
2025-02-12 13:07:41 +01:00
Girish Ramakrishnan
3b9d617e37
groups: add events to eventlog
2024-12-04 11:30:30 +01:00
Girish Ramakrishnan
fdf8025a02
style: remove -> del
2024-12-03 17:36:50 +01:00
Girish Ramakrishnan
18a680a85b
groups: only the local groups of a user can be set
2024-02-28 15:56:03 +01:00
Girish Ramakrishnan
e26f71b603
externalldap: cannot set members of external group
2024-02-28 15:56:03 +01:00
Girish Ramakrishnan
8bdcdd7810
groups: members cannot be set for external groups
2024-01-19 23:23:25 +01:00
Girish Ramakrishnan
a1217e52c8
group: cannot set name of ldap group
2024-01-19 22:28:48 +01:00
Girish Ramakrishnan
a8d37b917a
groups: remove unused addMember
2024-01-19 17:25:36 +01:00
Girish Ramakrishnan
ee43dff35f
externalldap: reset group source when disabled
2024-01-13 22:35:23 +01:00
Girish Ramakrishnan
2346a1c501
better error message when group not found
2022-12-08 10:29:02 +01:00
Girish Ramakrishnan
964c1a5f5a
remove field from errors
...
we have standardized on indexOf in error.message by now
2022-02-07 13:44:29 -08:00
Girish Ramakrishnan
fabd0323e1
Add missing await
2021-09-21 17:47:42 -07:00
Girish Ramakrishnan
ea430b255b
make the tests work
2021-06-29 11:01:46 -07:00
Girish Ramakrishnan
31498afe39
async'ify the groups code
2021-06-29 09:08:45 -07:00
Girish Ramakrishnan
246956fd0e
groupMembers: add unique constraint
...
fixes #696
2020-12-22 16:18:15 -08:00
Johannes Zellner
e7029c0afd
Remove unsused and poorly named groups.getGroups() API
2020-06-05 09:24:00 +02:00
Johannes Zellner
42cbcc6ce3
groups.create() now needs source argument
2020-06-04 14:20:05 +02:00
Johannes Zellner
c5e84d5469
Add source property to userGroups
2020-06-04 13:25:55 +02:00
Johannes Zellner
07b95c2c4b
Add groups.getByName()
2020-06-04 12:48:35 +02:00
Girish Ramakrishnan
a017af41c5
Start moving db code to use BoxError as well
2019-10-24 14:09:53 -07:00
Girish Ramakrishnan
2d115d3d0f
Move GroupsError to BoxError
2019-10-22 16:34:17 -07:00
Girish Ramakrishnan
1b594d3e50
Remove unused GroupsError
2019-10-22 16:26:38 -07:00
Johannes Zellner
ce406c7088
Add groupCount to backendSettings
2019-07-03 13:47:23 +02:00
Girish Ramakrishnan
78a2176d1d
Make admin simply a boolean instead of group
...
This simplifies a lot of logic. Keeping an admin group has no benefit
2018-07-26 22:29:57 -07:00
Girish Ramakrishnan
b4d5def56d
Revert role support
2018-07-26 13:23:06 -07:00
Girish Ramakrishnan
74b1df17c0
Fix groups test and route to make name optional
2018-06-20 09:31:50 -07:00
Girish Ramakrishnan
5d13cc363f
Allow group name to be changed
2018-06-18 18:30:40 -07:00
Girish Ramakrishnan
6cd0601629
Map group roles to scopes
2018-06-18 14:52:39 -07:00
Girish Ramakrishnan
b5c8e7a52a
Rename to getGroups
2018-06-18 14:10:29 -07:00
Girish Ramakrishnan
7f3114e67d
Rename to get/setMembership (to indicate IDs and not group objects
2018-06-18 13:57:17 -07:00
Girish Ramakrishnan
1dbcf2a46a
Rename to groups.update
2018-06-18 13:41:27 -07:00
Girish Ramakrishnan
ca9cd2cf0f
Add groups.getRoles
2018-06-16 00:29:56 -07:00
Girish Ramakrishnan
02d5d2f808
Add API to add and update the group roles
2018-06-15 00:28:27 -07:00
Girish Ramakrishnan
a77d45f5de
Add rolesJson to groups table
...
This will contain the roles ('role definition') of a group of
users. We will internally map these to our API scopes.
2018-06-14 22:54:52 -07:00
Girish Ramakrishnan
5e09f3dcb2
Group names can contain - and end with .app
...
now that we have decoupled it from mailbox names, this restriction
can be removed
2018-06-14 22:22:09 -07:00
Girish Ramakrishnan
7bb8d059b5
GroupError -> GroupsError
2018-04-29 11:21:01 -07:00
Girish Ramakrishnan
467bfa2859
remove mailboxdb from groups code
2018-04-04 20:08:52 -07:00
Johannes Zellner
40f73f6c4b
Cleanup the mailboxes for groups on deletion
2018-01-26 11:40:28 +01:00
Girish Ramakrishnan
0bd0857189
Update many modules
...
npm WARN deprecated ejs-cli@1.2.0: This has breaking change. (in ejs package) use <= 2.0.0.
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
2017-08-13 17:57:48 -07:00