summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc/generate-invite-code.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-07-21 20:36:07 +0900
committerGitHub <noreply@github.com>2023-07-21 20:36:07 +0900
commite64a81aa1d2801516e8eac8dc69aac540489f20b (patch)
tree56accbc0f5f71db864e1e975920135fb0a957291 /packages/backend/src/misc/generate-invite-code.ts
parentMerge pull request #10990 from misskey-dev/develop (diff)
parentNew Crowdin updates (#11336) (diff)
downloadmisskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.tar.gz
misskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.tar.bz2
misskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.zip
Merge pull request #11301 from misskey-dev/develop
Release: 13.14.0
Diffstat (limited to 'packages/backend/src/misc/generate-invite-code.ts')
-rw-r--r--packages/backend/src/misc/generate-invite-code.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/backend/src/misc/generate-invite-code.ts b/packages/backend/src/misc/generate-invite-code.ts
new file mode 100644
index 0000000000..617b27361d
--- /dev/null
+++ b/packages/backend/src/misc/generate-invite-code.ts
@@ -0,0 +1,20 @@
+import { secureRndstr } from './secure-rndstr.js';
+
+const CHARS = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; // [0-9A-Z] w/o [01IO] (32 patterns)
+
+export function generateInviteCode(): string {
+ const code = secureRndstr(8, {
+ chars: CHARS,
+ });
+
+ const uniqueId = [];
+ let n = Math.floor(Date.now() / 1000 / 60);
+ while (true) {
+ uniqueId.push(CHARS[n % CHARS.length]);
+ const t = Math.floor(n / CHARS.length);
+ if (!t) break;
+ n = t;
+ }
+
+ return code + uniqueId.reverse().join('');
+}