Commit Graph

1490 Commits (bd94f2632a9a3c22c3f31f41e541d96e627100ff)

Author SHA1 Message Date
Julian Lam fecd84d1a0 revert: a788bd1344
Julian Lam a788bd1344 revert: 9c250b78b0, fix: comment out broken test for now
Julian Lam c99728e0c4 Merge branch 'master' into develop
Julian Lam f295174e07 test: fix broken test
Julian Lam 38175b5e71 test: fix broken test
Julian Lam eab5ab7ff9 Merge branch 'master' into develop
Julian Lam 459bc52338 fix: , tests, and returning the proper number of arrays
Julian Lam 69806662e6
Session Timeout if "Remember Me" is not checked ()
* fix: convert loginDays and loginSeconds to number inputs

* feat: configurable session timeout for when "Remember Me" is not checked

closes 

* test: addition tests to check loginDays and sessionDuration settings

* test: also test loginSeconds override
Julian Lam fecdab8b6f refactor: `helpers.loginUser` to be fully async
Julian Lam a344e6ec0c
Fix for , restore password reset rate limiting ()
* chore: incrementing version number - v2.8.1

* chore: update changelog for v2.8.1

* fix: accidental clearing of reset rate limiting on reset send

* test: move user reset tests to its own file, add failing test for user reset locks

* fix: , counter attempted flooding of user reset route

* test: fix password reset socket test to check for error now

* test: same user sending multiple reset emails

should work after waiting the correct amount of time

* lint: fixes

* chore: rename outdated `cleanTokensAndUids` method

* test: no need to create user for new test

Co-authored-by: Misty Release Bot <deploy@nodebb.org>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
Barış Soner Uşaklı 586eed1407
fix: vulnerability in socket.io nested namespaces ()
Barış Soner Uşaklı 1ea9481af6 fix: lock post/reply similar to user.create
Barış Soner Uşaklı c2bb2b30be test: dont try to load admin upload routes
Julian Lam 10ba7b9ced Merge branch 'master' into develop
Barış Soner Uşaklı abcfb63126 fix: , allow banned users to post
if given privileges
Barış Soner Uşaklı 3c85b944e3 feat: allow groups to be exempt from maintenance mode
closes 
Julian Lam 892ac2eb20 Merge branch 'master' into develop
Julian Lam 2f9d8c350e fix: pass csrf_token into calls to /register/abort,
Julian Lam 97d8b53fd3 Merge branch 'master' into develop
Barış Soner Uşaklı 06d1539137 test: fix tests again
Barış Soner Uşaklı c833d3cdc4 test: fix test
Julian Lam 96b46411b1 Merge branch 'master' into develop
Julian Lam 9c576a0758
Email confirmation QOL updates ()
* breaking: remove `SocketUser.emailConfirm`, re: 

* chore: move email confirmation related configs to own section in Settings > Email

* feat: new user email method `getValidationExpiry`, returns expiration in ms.. probably.

* fix: bug where `user.email.isValidationPending` returned an u nexpected non-boolean value if there was no confirmation pending (only when checking email as well)

* fix: update getValidationExpiry to return ms

* test: use emailConfirmInterval for tests, for now

* fix: throw friendly error when attempting an email change within email confirmation window

* feat: new config option `emailConfirmExpiry` in days, governs how long the confirm link is good for

* test: additional tests for user email methods

* fix: add back missing handling of  option

* test: fix tests
Barış Soner Uşaklı 61d32bdebb fix: category ordering add test
Barış Soner Uşaklı 177d904812 fix: category ordering add test
Julian Lam 6391f77b01 Merge remote-tracking branch 'origin/master' into develop
Barış Soner Uşaklı b5dd89e1c0
feat: store topic title and tags in diffs ()
* feat: store topic title and tags in diffs

allow restoring post diff if tags didn't change

* test: fix tests, fast computer problems
Barış Soner Uşaklı c039a699bd sharp test fix
Barış Soner Uşaklı 1c9c39a8c8 test: add back /admin/extend/plugins test
Barış Soner Uşaklı b45e241390 lint: fix lint error
Barış Soner Uşaklı 1dc79d76a0 test: disable nbbpm test temporarily
Julian Lam 15b1561fd3 feat: introduce ACP defined option to rescind notif or do nothing on flag resolve/reject
/cc 
Julian Lam b3b48fa62f Merge remote-tracking branch 'origin/master' into develop
Julian Lam 7c5a915dc9 test: have some build tests not pollute build folder
gasoved b424ba4637 test: User.hidePrivateData
Julian Lam c07d595662
Update to lru-cache@^7 ()
* chore(deps): bump lru-cache from 6.0.0 to 7.13.1 in /install

Bumps [lru-cache](https://github.com/isaacs/node-lru-cache) from 6.0.0 to 7.13.1.
- [Release notes](https://github.com/isaacs/node-lru-cache/releases)
- [Changelog](https://github.com/isaacs/node-lru-cache/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-lru-cache/compare/v6.0.0...v7.13.1)

---
updated-dependencies:
- dependency-name: lru-cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(lru-cache): remove unneeded `length` params for cache creation, as `maxSize` was not used in those init calls, also renamed some methods to match new method names in lru-cache [breaking]

Added deprecation notices for old params

* fix: replace three direct calls to lru-cache with call to cacheCreate, moved cache creation call in uploads to run on first init as config is not populated at lib init

* test: move configs init above cache reset calls in databasemock

* move some more code above cache clear

* refactor: remove unused

* test: lru

* test: more debug

* test: on more test

* use await helpers.uploadFile

* fix: tests remove logs

* fix: acp cache page

* fix: add in one more guard again cache instantiation with `length` prop but no `maxSize` prop

* fix(deps): bump markdown

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
Julian Lam 59f3ae201a Merge remote-tracking branch 'origin/master' into develop
Barış Soner Uşaklı 961be70725 fix test on redis
Julian Lam 65c59cc16a test: additional tests for password challenge on email update
Julian Lam 8e1a4bb5df test: add dummy emailer hook to suppress sendmail error logging
Julian Lam 68bcd7f48e test: fix one last failing test
Julian Lam 342cca35c1 chore: re-order interstitial tests so email and gdpr tests are in sub-blocks
Julian Lam 9ee1afbb0f Merge branch 'master' into develop
Julian Lam 06f089afda test: fix user email tests
Julian Lam 3b296c3aa4 Merge remote-tracking branch 'origin/master' into develop
Julian Lam f93a0b83bb test: fix tests so that when user.create is called, email is set prior to confirmation
Julian Lam 1ca09b63ed fix: , test runner to only run tests for plugins included in `test_plugins`
Opliko 23cb67a112 feat: Allow defining active plugins in config ()
* Revert "Revert "feat: cross origin opener policy options ()""

This reverts commit 46050ace1a.

* Revert "Revert "chore(i18n): fallback strings for new resources: nodebb.admin-settings-advanced""

This reverts commit 9f291c07d3.

* feat: closes , don't trim children if category is marked section

* feat: fire hook to allow plugins to filter the pids returned in a user profile

/cc 

* fix: use `user.hidePrivateData();` more consistently across user retrieval endpoints

* feat: Allow defining active plugins in config

resolves 

* fix: assign the db result to files properly

* test: add tests with plugins in config

* feat: better theme change handling

* feat: add visual indication that plugins can't be activated

* test: correct hooks

* test: fix test definitions

* test: remove instead of resetting nconf to avoid affecting other tests

* test: ... I forgot how nconf worked

* fix: remove negation

* docs: improve wording of error message

* feat: reduce code duplication

* style: remove a redundant space

* fix: remove unused imports

* fix: use nconf instead of requiring config.json

* fix: await...

* fix: second missed await

* fix: move back from getActiveIds to getActive

* fix: use paths again?

* fix: typo

* fix: move require into the function

* fix: forgot to change back to getActive

* test: getActive returns only id

* test: accedently commented out some stuff

* feat: added note to top of plugins page if \!canChangeState

Co-authored-by: Julian Lam <julian@nodebb.org>
Co-authored-by: Barış Soner Uşaklı <barisusakli@gmail.com>
Julian Lam 05c30677f5 test: fix i18n tests
Julian Lam 22368b996e refactor: move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans
Barış Soner Uşaklı ea1ed66717 test: add more asserts to failing test
Barış Soner Uşaklı 6677efd7b5 test: fix UUID test
Barış Soner Uşaklı d20b07cfea
Webpack5 ()
* feat: webpack 5 part 1

* fix: gruntfile fixes

* fix: fix taskbar warning

add app.importScript
copy public/src/modules to build folder

* refactor: remove commented old code

* feat: reenable admin

* fix: acp settings pages, fix sortable on manage categories

embedded require in html not allowed

* fix: bundle serialize/deserizeli so plugins dont break

* test: fixe util tests

* test: fix require path

* test: more test fixes

* test: require correct utils module

* test: require correct utils

* test: log stack

* test: fix db require blowing up tests

* test: move and disable bundle test

* refactor: add aliases

* test: disable testing route

* fix: move webpack modules necessary for build, into `dependencies`

* test: fix one more test

remove 500-embed.tpl

* fix: restore use of assets/nodebb.min.js, at least for now

* fix: remove unnecessary line break

* fix: point to proper ACP bundle

* test: maybe fix build test

* test: composer

* refactor: dont need dist

* refactor: more cleanup

use everything from build/public folder

* get rid of conditional import in app.js

* fix: ace

* refactor: cropper alias

* test: lint and test fixes

* lint: fix

* refactor: rename function to app.require

* refactor: go back to using app.require

* chore: use github branch

* chore: use webpack branch

* feat: webpack webinstaller

* feat: add chunkFile name with contenthash

* refactor: move hooks to top

* refactor: get rid of template500Function

* fix(deps): use webpack5 branch of 2factor plugin

* chore: tagging v2.0.0-beta.0 pre-release version 💥 :shipit: 🎉 🚀

* refactor: disable cache on templates

loadTemplate is called once by benchpress and the result is cache internally

* refactor: add server side helpers.js

* feat: deprecate /plugins shorthand route, closes 

* refactor: use build/public for webpack

* test: fix filename

* fix: more specific selector

* lint: ignore

* refactor: fix comments

* test: add debug for random failing test

* refactor: cleanup

remove test page, remove dupe functions in utils.common

* lint: use relative path  for now

* chore: bump prerelease version

* feat: add translateKeys

* fix: optional params

* fix: get rid of extra timeago files

* refactor: cleanup, require timeago locale earlier

remove translator.prepareDOM, it is in header.tpl html tag

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels ()

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels ()

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* feat: allow app.require('bootbox'/'benchpressjs')

* refactor: require server side utils

* test: jquery ready

* change istaller to use build/public

* test: use document.addEventListener

* refactor: closes 

* refactor: generateTopicClass

* fix: column counts for other privileges

* fix: , regression where sorted-list items did not render into the DOM in the predicted order [breaking]

* fix: typo in hook name

* refactor: introduce a generic autocomplete.init() method that can be called to add nodebb-style autocompletion but using different data sources (e.g. not user/groups/tags)

* fix: crash if `delay` not passed in (as it cannot be destructured)

* refactor: replace substr

* feat: set --panel-offset style in html element based on stored value in localStorage

* refactor: addDropupHandler() logic to be less naive

- Take into account height of the menu
- Don't apply dropUp logic if there's nothing in the dropdown
- Remove 'hidden' class (added by default in Persona for post tools) when menu items are added

closes 

* refactor: simplify utils.params [breaking]

Retrospective analysis of the usage of this method suggests that the options passed in are superfluous, and that only `url` is required. Using a browser built-in makes more sense to accomplish what this method sets out to do.

* feat: add support for returning full URLSearchParams for utils.params

* fix: utils.params() fallback handling

* fix: default empty obj for params()

* fix: remove \'loggedin\' and \'register\' qs parameters once they have been used, delay invocation of messages until ajaxify.end

* fix: utils.params() not allowing relative paths to be passed in

* refactor(DRY): new assertPasswordValidity utils method

* fix: incorrect error message returned on insufficient privilege on flag edit

* fix: read/update/delete access to flags API should be limited for moderators to only post flags in categories they moderate

- added failing tests and patched up middleware.assert.flags to fix

* refactor: flag api v3 tests to create new post and flags on every round

* fix: missing error:no-flag language key

* refactor: flags.canView to check flag existence, simplify middleware.assert.flag

* feat: flag deletion API endpoint, 

* feat: UI for flag deletion, closes 

* chore: update plugin versions

* chore: up emoji

* chore: update markdown

* chore: up emoji-android

* fix: regression caused by utils.params() refactor, supports arrays and pipes all values through utils.toType, adjusts tests to type check

Co-authored-by: Julian Lam <julian@nodebb.org>
Barış Soner Uşaklı 424db9ff37 fix: upload test for latest sharp
Barış Soner Uşaklı c52401da02 fix: , don't leak deleted message in cleanedContent
Barış Soner Uşaklı 767973717b
perf: WIP , allow array of pids for posts.purge ()
* perf: WIP , allow array of pids for posts.purge

* refactor: deletePostDiffs

* perf: deletePostFromReplies/deletePostFromGroups

* refactor: upload

* refactor: deleteFromCategoryRecentPosts

deleteFromUsersBookmarks
deleteFromUsersVotes

* feat: closes , add incrObjectFieldByBulk

* refactor: allow nids for notifications.rescind

* refactor: allow uids array for user.updatePostCount

* refactor: rewrite deleteFromTopicUserNotification to work with an array

* feat: deprecate action:post.purge as well

* lint: add missing comma
CommanderRoot 200f0b2e4f
refactor: replace deprecated String.prototype.substr() ()
.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
Julian Lam 38ca73c493 fix(security): explicitly declare cache-control header instead of using middleware
This commit reverts 1f6f389ff2
Julian Lam 1f6f389ff2 fix(security): cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers.
This commit also reverts e39cdd490b
Julian Lam e578c60566 test: skip i18n tests if the github event is a pull request
Barış Soner Uşaklı 24c1f879a5 test: fix middleware test
Barış Soner Uşaklı 6344c3b689 test: fix category tests
Barış Soner Uşaklı a551142593 test: fix one more test
Barış Soner Uşaklı 3414a23bce feat: min:rep:upvote, and other limits similar to downvotes
closes 
Barış Soner Uşaklı 10a5901e4a
fix: persona test fail
Barış Soner Uşaklı 9db90a3098 test: log configJSON
Barış Soner Uşaklı 32f693019b test: check contents of config.json in tests
Julian Lam 17836f2a3a
Re-introduce lodash into src/package-install.js ()
* test: add failing test for if package.json is non-existant, fix tests' beforeEach method

* Revert "fix: , remove lodash dependency in src/cli/package-install.js"

This reverts commit 81fa2e22bc.

* fix: regression caused by 94b79ce402

`./nodebb setup` was no longer able to be called without arguments or env vars

* fix: .updatePackageFile() throwing if no package.json

* fix: removing unneeded code in src/cli/index.js that seemed to be used to handle cases where package.json was missing (initial install)

... However, as .updatePackageFile() now handled cases where there is no package.json, it should be ok to remove this code

* fix: handle missing package.json or node_modules/
Barış Soner Uşaklı 58b5781cea feat: closes
asset_base_url in nconf
keep assetBaseUrl in config for backwards compat
Julian Lam fb78570c13 test: fix topic thumb tests and topic thumbs to work properly with post upload assoc.
Julian Lam d5ed8736aa feat: deleting a user upload dissociates from posts, and vice versa
Julian Lam 8c2752bab1 test: user uploads.js tests
Julian Lam 11275d6809 test: testing user upload methods, already fixed one bug
Julian Lam b9edee143e fix: local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()`
Julian Lam 6489e9fd9e refactor: change the post uploads' hash seeds to have the `files/` prefix
Julian Lam 84dfda59e6 fix: , automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired
Julian Lam d92da828a3 refactor: move post upload tests to its own file
Barış Soner Uşaklı 2dbdd1818f test: fix occasional test failure
Julian Lam a2c7d69e1b fix: remove extraneous devDependencies on package merge
/cc @pitaj
Julian Lam 9e4147f07c chore: use source and current local vars, + docs
Julian Lam 0f788b8eaa fix: , topic thumbs not deleting on topic deletion
Julian Lam 606808760e
test: add test to verify that a sorted set is automatically deleted if its last element is removed ()
* test: add test to verify that a sorted set is automatically deleted if its last element is removed

* fix: remote empty zsets when all elements have been removed #yolo

* Revert "fix: remote empty zsets when all elements have been removed #yolo"

This reverts commit 0ac73244bb6ffd802007a252a35844c589ce8721.

* fix: altered behaviour in module.exists instead of zrem
Julian Lam d34471f69f fix: regression in package.json merging logic that caused extraneous packages to not be removed
Julian Lam 689c125cd3 fix: , package merging should deep merge nested objects
+ tests
Julian Lam a0a3870611 fix: use fs.promises
Julian Lam 1b8eeaf840 feat: more tests for ensuring downvoted posts are added to the :votes zset
Julian Lam aa8914a153 feat: v3 user email tests
Julian Lam d1b1f50bb2 test: stricter isValidationPending check
Julian Lam fc2c755c64 fix: properly unregister hooks in emailer tests
Julian Lam dee9cca3c8 fix: email ban tests
Julian Lam e25c0313d1 Revert "refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent"
This reverts commit f0e32ff182.
Julian Lam ea27eaf166 feat: no more sending emails to banned users, + feature flag
Julian Lam f0e32ff182 refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent
Note that of course this doesn't mean the message was _delivered_, just sent off.

This will stop issues where emailer errors crash NodeBB
Barış Soner Uşaklı 680e36da67 test: fix derp
Barış Soner Uşaklı a214f9a61b test: up acp plugin page timeout
Barış Soner Uşaklı 10949184ca
test: add failing guest csrf test ()
* test: add failing guest csrf test

* test: use correct var

* fix: use applyCsrf for guests as well
Barış Soner Uşaklı 6c1e184c74 test: fix util test
Barış Soner Uşaklı 9b75b1ede2 test: update tag tests, fix linux symlink error
Julian Lam d95b4ee29a fix: assertion check to ensure messages are in the room when editing/deleting, etc
Julian Lam 82768fcf6e chore: remove debug logs in test/api.js
Julian Lam aaa6f752d0 refactor: put message api calls behind `/messages` prefix,
Julian Lam e747998cba test: fix user tests calling deprecated socket methods
Julian Lam 16ba16cdc4 fix: deprecate chats.leave
Julian Lam fe17c94c35 feat: `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid`
Julian Lam 6294beea0b fix: re-allow kicking of the other party in a 1-to-1 chat
Julian Lam d62ee84637 feat: `POST /chats/:roomId/users`
Julian Lam 6eea6451d2 feat: `GET /chats/:roomId/users` [breaking]
Julian Lam b292960594 feat: `GET /chats/:roomId/:mid`
Julian Lam f48ed3658a feat: `PUT /chats/:roomId/:mid`
Julian Lam 140f9d2481 fix: isFinite check for room assertion, more test migrating
Julian Lam e745e21242 chore: use apiv3 for room rename tests
Julian Lam c990211cf2 refactor: rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await
Julian Lam eeffb9d978 feat: `POST /api/v3/chats/:roomId`
Barış Soner Uşaklı 1264dcb555 test: add email interstitial tests
Barış Soner Uşaklı 5e08f7e604 test: don't use csrf_token for get,head, options
Barış Soner Uşaklı 0e273ab25a test: fix tests
Barış Soner Uşaklı 1f063058f0 breaking: remove socket.emit('user.exists')
remove socket.emit('user.deleteAccount')
remove socket.emit('user.follow')
remove socket.emit('user.unfollow')
remove socket.emit('user.saveSettings')
Barış Soner Uşaklı 6b45dee9c5 breaking: remove socket.emit('user.changeUsernameEmail')
remove socket.emit('user.changePassword')
remove socket.emit('user.updateProfile')
Barış Soner Uşaklı f918a38164 breaking: remove socket.emit('topics.follow')
remove socket.emit('topics.changeWatching')
Barış Soner Uşaklı 68fd087567 test: remove old test
Barış Soner Uşaklı 6ad0472106 breaking: remove socket.emit('topics.post')
remove socket.emit('topics.search')
remove socket.emit('topics.getTopic')
Barış Soner Uşaklı 49641a3217 breaking: remove socket.emit('user.banUsers');
remove socket.emit('user.unbanUsers');
Barış Soner Uşaklı 4604a5724c breaking: remove socket.emit('posts.reply')
remove socket.emit('posts.getPost')
Barış Soner Uşaklı 6d95684bc8 breaking: remove socket.emit('user.changePicture')
Barış Soner Uşaklı 0d694c781c breaking: remove socket.emit('user.search')
Barış Soner Uşaklı 02ea17ea1b breaking: remove deprecated groups socket calls
socket.emit('groups.join') removed use `PUT /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.leave') removed use `DELETE /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.grant') removed, `PUT /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.rescind') removed, `DELETE /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.update') removed, `PUT /api/v3/groups/:slug`
socket.emit('groups.create') removed, `POST /api/v3/groups`
socket.emit('groups.delete') removed, `DELETE /api/v3/groups`
Julian Lam bc7707aa88 fix: show user history only to admins and gmods
Baris Usakli 20e76699a2 lint: missing ;
Baris Usakli 0d1e57dce0 breaking: remove deprecated methods
socket.emit('topics.delete') removed use `DELETE /api/v3/topics/state`
socket.emit('topics.restore') removed use `PUT /api/v3/topics/state`
socket.emit('topics.purge') removed use `DELETE /api/v3/topics`
socket.emit('topics.lock') removed use `PUT /api/v3/topics/lock`
socket.emit('topics.unlock') removed use `DELETE /api/v3/topics/lock`
socket.emit('topics.pin') removed use `PUT /api/v3/topics/pin`
socket.emit('topics.unpin') removed use `DELETE /api/v3/topics/pin`
Barış Soner Uşaklı bd1cb2d4f9 breaking: remove socket.emit('posts.delete')
remove socket.emit('posts.restore')
remove socket.emit('posts.purge')
remove socket.emit('posts.deletePosts')
remove socket.emit('posts.purgePosts')
Barış Soner Uşaklı ec1d5e38da breaking: remove socket.emit('posts.upvote')
socket.emit('posts.downvote')
socket.emit('posts.unvote')
Barış Soner Uşaklı 8427c5d9db breaking: remove socket.emit('posts.move')
Barış Soner Uşaklı 4247f62441 breaking: remove socket.emit('posts.edit')
Barış Soner Uşaklı f7418ccd47 breaking: remove socket.emit('posts.bookmark/unbookmark')
Barış Soner Uşaklı 5c3d5f1f40 test: make it async
Barış Soner Uşaklı 26f00ffb60 test: fix
Barış Soner Uşaklı e3c0f0be0a refactor: remove unused
Barış Soner Uşaklı 07e2741ea6 breaking: remove deprecated admin.groups methods
Barış Soner Uşaklı a8afdc6019 fix: , don't modify fields array
use a single setObjectFields for the profile update
Barış Soner Uşaklı 830166d120 fix: , count posts instead of incr/decr
Barış Soner Uşaklı 45d755b6ae breaking: remove socket.emit('categories.getCategory')
Barış Soner Uşaklı cc3f82bc83 breaking: remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings')
Barış Soner Uşaklı 0b9c01f9a0 breaking: remove deprecated socket.emit('admin.categories.update')
Barış Soner Uşaklı ba5d2e7b81 breaking: remove deprecated socket.emit('admin.categories.purge')
Barış Soner Uşaklı b335372348 breaking: remove deprecated socket.emit('admin.categories.create')
Barış Soner Uşaklı 10c19af2ad breaking: remove deprecated socket.emit('admin.categories.getAll')
Barış Soner Uşaklı f8f0a83b52 test: one more getTopicPosts test
Barış Soner Uşaklı 906dc5675e fix: handle start=0 stop=0 for topics.getTopicPosts
add more tests
Barış Soner Uşaklı a29535833f fix: , dont use spaces in tag class name
Barış Soner Uşaklı 6ea3b51f12
Zincrybulk ()
* feat: zincry bulk

* feat: psql bulk incr placeholder

* test: redis test fix

* test: redis test