@openora/core 0.4.1-canary.39 → 0.4.1-canary.41
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/contract/index.d.ts +2 -0
- package/dist/admin-console/contract/index.d.ts.map +1 -1
- package/dist/admin-console/router/index.d.ts +1 -0
- package/dist/admin-console/router/index.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.d.ts +1 -1
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.js +48 -1
- package/dist/audit/plugin.js.map +1 -1
- package/dist/common/errors/errors.classes.js +3 -3
- package/dist/common/errors/errors.classes.js.map +1 -1
- package/dist/common/errors/errors.mapper.js +1 -1
- package/dist/common/errors/errors.mapper.js.map +1 -1
- package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +66 -12
- package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +1 -1
- package/dist/compliance/__tests__/kyc-admin.router.test.d.ts +2 -0
- package/dist/compliance/__tests__/kyc-admin.router.test.d.ts.map +1 -0
- package/dist/compliance/__tests__/kyc-admin.router.test.js +191 -0
- package/dist/compliance/__tests__/kyc-admin.router.test.js.map +1 -0
- package/dist/compliance/__tests__/kyc-webhook.router.test.d.ts +2 -0
- package/dist/compliance/__tests__/kyc-webhook.router.test.d.ts.map +1 -0
- package/dist/compliance/__tests__/kyc-webhook.router.test.js +148 -0
- package/dist/compliance/__tests__/kyc-webhook.router.test.js.map +1 -0
- package/dist/compliance/__tests__/kyc.service.test.js +16 -10
- package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
- package/dist/compliance/__tests__/rg.router.test.js +5 -1
- package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts +16 -3
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts.map +1 -1
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js +47 -5
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js.map +1 -1
- package/dist/compliance/contract/index.d.ts +312 -0
- package/dist/compliance/contract/index.d.ts.map +1 -1
- package/dist/compliance/contract/index.js +50 -1
- package/dist/compliance/contract/index.js.map +1 -1
- package/dist/compliance/drizzle/migrations/0002_condemned_monster_badoon.sql +3 -0
- package/dist/compliance/drizzle/migrations/0003_public_spirit.sql +1 -0
- package/dist/compliance/drizzle/migrations/meta/0002_snapshot.json +673 -0
- package/dist/compliance/drizzle/migrations/meta/0003_snapshot.json +679 -0
- package/dist/compliance/drizzle/migrations/meta/_journal.json +14 -0
- package/dist/compliance/plugin.d.ts.map +1 -1
- package/dist/compliance/plugin.js +23 -3
- package/dist/compliance/plugin.js.map +1 -1
- package/dist/compliance/router/index.d.ts +186 -2
- package/dist/compliance/router/index.d.ts.map +1 -1
- package/dist/compliance/router/index.js +52 -3
- package/dist/compliance/router/index.js.map +1 -1
- package/dist/compliance/schema/index.d.ts +65 -3
- package/dist/compliance/schema/index.d.ts.map +1 -1
- package/dist/compliance/schema/index.js +8 -0
- package/dist/compliance/schema/index.js.map +1 -1
- package/dist/compliance/service/kyc.service.d.ts +153 -8
- package/dist/compliance/service/kyc.service.d.ts.map +1 -1
- package/dist/compliance/service/kyc.service.js +264 -32
- package/dist/compliance/service/kyc.service.js.map +1 -1
- package/dist/contracts/adapters/audit.d.ts +1 -1
- package/dist/contracts/adapters/audit.d.ts.map +1 -1
- package/dist/contracts/adapters/audit.js.map +1 -1
- package/dist/contracts/adapters/identity-reader.d.ts +9 -3
- package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
- package/dist/contracts/adapters/identity-reader.js.map +1 -1
- package/dist/contracts/adapters/index.d.ts +4 -2
- package/dist/contracts/adapters/index.d.ts.map +1 -1
- package/dist/contracts/adapters/index.js +2 -1
- package/dist/contracts/adapters/index.js.map +1 -1
- package/dist/contracts/adapters/kyc.d.ts +90 -5
- package/dist/contracts/adapters/kyc.d.ts.map +1 -1
- package/dist/contracts/adapters/kyc.js +23 -0
- package/dist/contracts/adapters/kyc.js.map +1 -1
- package/dist/contracts/adapters/tag-evaluation-commands.d.ts +10 -0
- package/dist/contracts/adapters/tag-evaluation-commands.d.ts.map +1 -0
- package/dist/contracts/adapters/tag-evaluation-commands.js +11 -0
- package/dist/contracts/adapters/tag-evaluation-commands.js.map +1 -0
- package/dist/contracts/adapters/wallet-reader.d.ts +8 -0
- package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
- package/dist/contracts/adapters/wallet-reader.js.map +1 -1
- package/dist/contracts/schemas/__tests__/events.test.js +1 -1
- package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts +2 -0
- package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts.map +1 -0
- package/dist/contracts/schemas/__tests__/player-schemas.test.js +30 -0
- package/dist/contracts/schemas/__tests__/player-schemas.test.js.map +1 -0
- package/dist/contracts/schemas/events.d.ts +84 -0
- package/dist/contracts/schemas/events.d.ts.map +1 -1
- package/dist/contracts/schemas/events.js +24 -2
- package/dist/contracts/schemas/events.js.map +1 -1
- package/dist/contracts/schemas/platform-config.d.ts +13 -1
- package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
- package/dist/contracts/schemas/player.d.ts +36 -3
- package/dist/contracts/schemas/player.d.ts.map +1 -1
- package/dist/contracts/schemas/player.js +14 -0
- package/dist/contracts/schemas/player.js.map +1 -1
- package/dist/contracts/schemas/tag.d.ts +85 -1
- package/dist/contracts/schemas/tag.d.ts.map +1 -1
- package/dist/contracts/schemas/tag.js +12 -0
- package/dist/contracts/schemas/tag.js.map +1 -1
- package/dist/engagement/notifications/contract/index.d.ts +5 -1
- package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
- package/dist/engagement/notifications/contract/index.js +5 -1
- package/dist/engagement/notifications/contract/index.js.map +1 -1
- package/dist/engagement/notifications/plugin.d.ts.map +1 -1
- package/dist/engagement/notifications/plugin.js +43 -3
- package/dist/engagement/notifications/plugin.js.map +1 -1
- package/dist/engagement/notifications/router/index.d.ts +1 -0
- package/dist/engagement/notifications/router/index.d.ts.map +1 -1
- package/dist/iam/service/iam.service.d.ts +1 -1
- package/dist/pam/identity/__tests__/admin-user-directory.test.js +1 -1
- package/dist/pam/identity/adapters/identity-reader.service.d.ts +6 -4
- package/dist/pam/identity/adapters/identity-reader.service.d.ts.map +1 -1
- package/dist/pam/identity/adapters/identity-reader.service.js +19 -1
- package/dist/pam/identity/adapters/identity-reader.service.js.map +1 -1
- package/dist/pam/identity/admin-user-directory.d.ts +1 -1
- package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
- package/dist/pam/identity/admin-user-directory.js +6 -3
- package/dist/pam/identity/admin-user-directory.js.map +1 -1
- package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
- package/dist/pam/identity/service/identity.service.js +4 -0
- package/dist/pam/identity/service/identity.service.js.map +1 -1
- package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +5 -2
- package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
- package/dist/pam/player-management/__tests__/player.router.test.js +27 -20
- package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
- package/dist/pam/player-management/__tests__/player.service.test.js +30 -31
- package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
- package/dist/pam/player-management/contract/index.d.ts +37 -9
- package/dist/pam/player-management/contract/index.d.ts.map +1 -1
- package/dist/pam/player-management/contract/index.js +0 -1
- package/dist/pam/player-management/contract/index.js.map +1 -1
- package/dist/pam/player-management/plugin.d.ts.map +1 -1
- package/dist/pam/player-management/plugin.js +3 -2
- package/dist/pam/player-management/plugin.js.map +1 -1
- package/dist/pam/player-management/router/index.d.ts +32 -10
- package/dist/pam/player-management/router/index.d.ts.map +1 -1
- package/dist/pam/player-management/router/index.js +48 -16
- package/dist/pam/player-management/router/index.js.map +1 -1
- package/dist/pam/player-management/service/kyc-status-writer.d.ts +3 -2
- package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
- package/dist/pam/player-management/service/kyc-status-writer.js +24 -10
- package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
- package/dist/pam/player-management/service/player.service.d.ts +10 -9
- package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
- package/dist/pam/player-management/service/player.service.js +24 -12
- package/dist/pam/player-management/service/player.service.js.map +1 -1
- package/dist/pam/profile/contract/index.d.ts +2 -0
- package/dist/pam/profile/contract/index.d.ts.map +1 -1
- package/dist/pam/profile/drizzle/migrations/0001_powerful_tiger_shark.sql +1 -0
- package/dist/pam/profile/drizzle/migrations/meta/0001_snapshot.json +191 -0
- package/dist/pam/profile/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/pam/profile/react/profile.d.ts +2 -2
- package/dist/pam/profile/router/index.d.ts +2 -0
- package/dist/pam/profile/router/index.d.ts.map +1 -1
- package/dist/pam/profile/schema/index.d.ts +3 -3
- package/dist/pam/profile/schema/index.d.ts.map +1 -1
- package/dist/pam/profile/service/profile.service.d.ts +2 -2
- package/dist/pam/shared/player-mapper.d.ts +1 -1
- package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +619 -19
- package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag-mappers.test.js +25 -0
- package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag.router.test.js +71 -1
- package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag.service.test.js +342 -15
- package/dist/pam/tag/__tests__/tag.service.test.js.map +1 -1
- package/dist/pam/tag/contract/index.d.ts +123 -0
- package/dist/pam/tag/contract/index.d.ts.map +1 -1
- package/dist/pam/tag/contract/index.js +3 -0
- package/dist/pam/tag/contract/index.js.map +1 -1
- package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts +37 -0
- package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts.map +1 -0
- package/dist/pam/tag/contract/player-tag-assign-metadata.js +20 -0
- package/dist/pam/tag/contract/player-tag-assign-metadata.js.map +1 -0
- package/dist/pam/tag/drizzle/migrations/0002_silent_skaar.sql +4 -0
- package/dist/pam/tag/drizzle/migrations/0003_overconfident_guardian.sql +3 -0
- package/dist/pam/tag/drizzle/migrations/0004_curvy_wither.sql +2 -0
- package/dist/pam/tag/drizzle/migrations/meta/0002_snapshot.json +335 -0
- package/dist/pam/tag/drizzle/migrations/meta/0003_snapshot.json +343 -0
- package/dist/pam/tag/drizzle/migrations/meta/0004_snapshot.json +345 -0
- package/dist/pam/tag/drizzle/migrations/meta/_journal.json +21 -0
- package/dist/pam/tag/migrate.d.ts.map +1 -1
- package/dist/pam/tag/migrate.js +34 -0
- package/dist/pam/tag/migrate.js.map +1 -1
- package/dist/pam/tag/plugin.d.ts.map +1 -1
- package/dist/pam/tag/plugin.js +43 -16
- package/dist/pam/tag/plugin.js.map +1 -1
- package/dist/pam/tag/router/index.d.ts +105 -0
- package/dist/pam/tag/router/index.d.ts.map +1 -1
- package/dist/pam/tag/router/index.js +34 -18
- package/dist/pam/tag/router/index.js.map +1 -1
- package/dist/pam/tag/schema/index.d.ts +42 -3
- package/dist/pam/tag/schema/index.d.ts.map +1 -1
- package/dist/pam/tag/schema/index.js +13 -2
- package/dist/pam/tag/schema/index.js.map +1 -1
- package/dist/pam/tag/seed/data/default-tag-rules.d.ts.map +1 -1
- package/dist/pam/tag/seed/data/default-tag-rules.js +42 -0
- package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
- package/dist/pam/tag/seed/data/default-tags.d.ts.map +1 -1
- package/dist/pam/tag/seed/data/default-tags.js +6 -0
- package/dist/pam/tag/seed/data/default-tags.js.map +1 -1
- package/dist/pam/tag/service/tag-evaluation.service.d.ts +141 -16
- package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
- package/dist/pam/tag/service/tag-evaluation.service.js +472 -47
- package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
- package/dist/pam/tag/service/tag-mappers.d.ts +1 -1
- package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
- package/dist/pam/tag/service/tag-mappers.js +1 -0
- package/dist/pam/tag/service/tag-mappers.js.map +1 -1
- package/dist/pam/tag/service/tag-rule.service.d.ts +3 -3
- package/dist/pam/tag/service/tag.service.d.ts +141 -11
- package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
- package/dist/pam/tag/service/tag.service.js +242 -23
- package/dist/pam/tag/service/tag.service.js.map +1 -1
- package/dist/server/auth/permissions.d.ts +12 -0
- package/dist/server/auth/permissions.d.ts.map +1 -1
- package/dist/server/auth/permissions.js +2 -0
- package/dist/server/auth/permissions.js.map +1 -1
- package/dist/server/db/__tests__/migrate.test.js +79 -2
- package/dist/server/db/__tests__/migrate.test.js.map +1 -1
- package/dist/server/db/migrate.d.ts +11 -0
- package/dist/server/db/migrate.d.ts.map +1 -1
- package/dist/server/db/migrate.js +3 -0
- package/dist/server/db/migrate.js.map +1 -1
- package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
- package/dist/server/kernel/bullmq-job-queue.js +17 -0
- package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
- package/dist/server/plugin-host/__tests__/core-plugins.test.js +1 -1
- package/dist/server/plugin-host/__tests__/core-plugins.test.js.map +1 -1
- package/dist/server/plugin-host/define-plugin.d.ts +2 -2
- package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
- package/dist/server/plugin-host/define-plugin.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +60 -0
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.service.test.js +59 -0
- package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
- package/dist/wallet/adapters/wallet-reader.service.d.ts +1 -0
- package/dist/wallet/adapters/wallet-reader.service.d.ts.map +1 -1
- package/dist/wallet/adapters/wallet-reader.service.js +18 -1
- package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
- package/dist/wallet/contract/index.d.ts +4 -0
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +7 -4
- package/dist/wallet/plugin.js.map +1 -1
- package/dist/wallet/router/index.d.ts +2 -0
- package/dist/wallet/router/index.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts +5 -4
- package/dist/wallet/service/wallet.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.js +28 -8
- package/dist/wallet/service/wallet.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,50 @@
|
|
|
1
|
-
import { findOneOrThrow, makeNotFoundError, pageToOffset, alreadyInUseError, } from '@openora/core/server';
|
|
1
|
+
import { findOneOrThrow, makeNotFoundError, makeConflictError, pageToOffset, alreadyInUseError, } from '@openora/core/server';
|
|
2
2
|
import { and, asc, count, desc, eq, inArray, isNull, notInArray } from 'drizzle-orm';
|
|
3
|
+
import { DatabaseError } from 'pg';
|
|
3
4
|
import { player } from '@openora/core/pam/schema/profile';
|
|
4
5
|
import { playerTag, tag } from '../schema/index.js';
|
|
5
6
|
import { mapDbError } from '@openora/core/common/errors';
|
|
6
7
|
import { toTag, toPlayerTagWithTag, SYSTEM_ACTOR_ID } from './tag-mappers.js';
|
|
8
|
+
function pgErrorCode(e) {
|
|
9
|
+
if (e instanceof DatabaseError) {
|
|
10
|
+
return e.code;
|
|
11
|
+
}
|
|
12
|
+
// drizzle-orm wraps every driver-thrown error in DrizzleQueryError, exposing the
|
|
13
|
+
// real pg DatabaseError only via `.cause`.
|
|
14
|
+
if (e instanceof Error && e.cause instanceof DatabaseError) {
|
|
15
|
+
return e.cause.code;
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
7
19
|
export const TagNotFoundError = makeNotFoundError('Tag');
|
|
8
20
|
export const TagAlreadyInUseError = alreadyInUseError('Tag');
|
|
9
21
|
export const TagAssignmentNotFoundError = makeNotFoundError('Tag Assignment');
|
|
22
|
+
// Distinct from TagAlreadyInUseError above (a player already holding this tag active) -
|
|
23
|
+
// this is the tag CATALOG key colliding on create.
|
|
24
|
+
export const TagKeyConflictError = makeConflictError('TagKeyConflictError', 'Tag key already exists');
|
|
25
|
+
// A tag can't be deleted while a playerTag/tagRule row still references it
|
|
26
|
+
// (onDelete: 'restrict' in the schema).
|
|
27
|
+
export const TagInUseError = makeConflictError('TagInUseError', 'Tag is still referenced by a player tag or tag rule and cannot be deleted');
|
|
28
|
+
// "First evidence wins per breach dimension, but a dimension that was never recorded gets
|
|
29
|
+
// filled in the moment it's observed." Never overwrites an already-populated dimension with
|
|
30
|
+
// fresher numbers - once a dimension has ever been recorded, the resweep treats it as sticky.
|
|
31
|
+
// Returns the SAME `existing` reference when nothing new was merged in, so the caller can
|
|
32
|
+
// detect a no-op write via reference equality.
|
|
33
|
+
function mergeAssignMetadata(existing, incoming) {
|
|
34
|
+
if (!incoming) {
|
|
35
|
+
return existing;
|
|
36
|
+
}
|
|
37
|
+
if (!existing) {
|
|
38
|
+
return incoming;
|
|
39
|
+
}
|
|
40
|
+
if (existing.amountBreach && existing.countBreach) {
|
|
41
|
+
return existing;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
amountBreach: existing.amountBreach ?? incoming.amountBreach,
|
|
45
|
+
countBreach: existing.countBreach ?? incoming.countBreach,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
10
48
|
export class TagService {
|
|
11
49
|
drizzle;
|
|
12
50
|
event;
|
|
@@ -33,27 +71,59 @@ export class TagService {
|
|
|
33
71
|
}
|
|
34
72
|
return result;
|
|
35
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Active holders (auth `userId`, not `player.id`) of tagKey, each with the
|
|
76
|
+
* assignMetadata recorded at assignment time. Internal to this module - used only by
|
|
77
|
+
* TagEvaluationService for the daily high_risk resweep to gate removal on WHICH breach
|
|
78
|
+
* condition originally fired (an amount breach, or a null/legacy row, must never be
|
|
79
|
+
* auto-cleared); deliberately not exposed on the PLAYER_TAGS port since no other module
|
|
80
|
+
* needs "list holders of tag X" today.
|
|
81
|
+
*/
|
|
82
|
+
async listActiveHoldersByTagKey(tagKey) {
|
|
83
|
+
const rows = await this.drizzle.db
|
|
84
|
+
.select({ userId: player.userId, assignMetadata: playerTag.assignMetadata })
|
|
85
|
+
.from(playerTag)
|
|
86
|
+
.innerJoin(tag, eq(playerTag.tagId, tag.id))
|
|
87
|
+
.innerJoin(player, eq(player.id, playerTag.playerId))
|
|
88
|
+
.where(and(eq(tag.key, tagKey), isNull(playerTag.removedAt)));
|
|
89
|
+
return rows.map((r) => ({ userId: r.userId, assignMetadata: r.assignMetadata ?? null }));
|
|
90
|
+
}
|
|
36
91
|
async _findTagByKeyOrThrow(tagKey, trx) {
|
|
37
92
|
const results = await trx.select().from(tag).where(eq(tag.key, tagKey)).limit(1);
|
|
38
93
|
return toTag(findOneOrThrow(results, new TagNotFoundError(tagKey)));
|
|
39
94
|
}
|
|
40
|
-
async createTag(args) {
|
|
95
|
+
async createTag(args, actorId) {
|
|
41
96
|
try {
|
|
42
97
|
const db = this.drizzle.db;
|
|
43
98
|
const [created] = await db.insert(tag).values(args).returning();
|
|
44
|
-
|
|
99
|
+
const result = toTag(created);
|
|
100
|
+
void this.event.emit('tag.created', { key: result.key, isSticky: result.isSticky, actorId });
|
|
101
|
+
return result;
|
|
45
102
|
}
|
|
46
103
|
catch (e) {
|
|
104
|
+
if (pgErrorCode(e) === '23505') {
|
|
105
|
+
throw new TagKeyConflictError();
|
|
106
|
+
}
|
|
47
107
|
mapDbError(e);
|
|
48
108
|
}
|
|
49
109
|
}
|
|
50
|
-
async deleteTag(args) {
|
|
110
|
+
async deleteTag(args, actorId) {
|
|
51
111
|
try {
|
|
52
112
|
const db = this.drizzle.db;
|
|
53
|
-
|
|
113
|
+
// .returning() is the only signal a genuine delete happened - without it a
|
|
114
|
+
// no-op delete of a missing key would still fall through and emit tag.deleted,
|
|
115
|
+
// which the audit module records as a real deletion that never occurred.
|
|
116
|
+
const deleted = await db.delete(tag).where(eq(tag.key, args.key)).returning();
|
|
117
|
+
if (deleted.length === 0) {
|
|
118
|
+
throw new TagNotFoundError(args.key);
|
|
119
|
+
}
|
|
120
|
+
void this.event.emit('tag.deleted', { key: args.key, actorId });
|
|
54
121
|
return true;
|
|
55
122
|
}
|
|
56
123
|
catch (e) {
|
|
124
|
+
if (pgErrorCode(e) === '23503') {
|
|
125
|
+
throw new TagInUseError();
|
|
126
|
+
}
|
|
57
127
|
mapDbError(e);
|
|
58
128
|
}
|
|
59
129
|
}
|
|
@@ -99,26 +169,64 @@ export class TagService {
|
|
|
99
169
|
.orderBy(asc(tag.key));
|
|
100
170
|
return rows.map(toTag);
|
|
101
171
|
}
|
|
172
|
+
// Core idempotent assign, shared by assignPlayerTag (own transaction) and
|
|
173
|
+
// assignPlayerTagInTx (caller-supplied transaction). Does NOT emit - callers decide
|
|
174
|
+
// when, since assignPlayerTagInTx's caller owns a transaction this method has no
|
|
175
|
+
// visibility into committing.
|
|
176
|
+
//
|
|
177
|
+
// Returns a status instead of throwing for the "already active" case: throwing here
|
|
178
|
+
// would roll back the merge UPDATE below along with the whole transaction when this
|
|
179
|
+
// runs inside assignPlayerTag's own db.transaction(...). Returning lets that
|
|
180
|
+
// transaction commit the metadata enrichment first; the public methods translate
|
|
181
|
+
// 'already_active' into TagAlreadyInUseError only after the transaction has resolved.
|
|
182
|
+
async _assignPlayerTagOnTx(trx, args) {
|
|
183
|
+
const { tagKey, ...restArgs } = args;
|
|
184
|
+
const foundTag = await this._findTagByKeyOrThrow(tagKey, trx);
|
|
185
|
+
// Fast/friendly pre-check only - the real guard is the partial unique index
|
|
186
|
+
// (player_tag_active_key) backing the onConflictDoNothing below. Without it, two
|
|
187
|
+
// concurrent calls (or the same at-least-once event redelivered) can both pass
|
|
188
|
+
// this SELECT before either commits, creating duplicate active rows.
|
|
189
|
+
const [existing] = await trx
|
|
190
|
+
.select()
|
|
191
|
+
.from(playerTag)
|
|
192
|
+
.where(and(eq(playerTag.tagId, foundTag.id), eq(playerTag.playerId, args.playerId), isNull(playerTag.removedAt)))
|
|
193
|
+
.limit(1);
|
|
194
|
+
if (existing) {
|
|
195
|
+
// A later event can reveal a breach dimension absent from the original assignment;
|
|
196
|
+
// without merging it in, the resweep would act on stale metadata and could wrongly
|
|
197
|
+
// clear a still-risky player.
|
|
198
|
+
const merged = mergeAssignMetadata(existing.assignMetadata, args.assignMetadata);
|
|
199
|
+
if (merged !== existing.assignMetadata) {
|
|
200
|
+
await trx
|
|
201
|
+
.update(playerTag)
|
|
202
|
+
.set({ assignMetadata: merged })
|
|
203
|
+
.where(eq(playerTag.id, existing.id));
|
|
204
|
+
}
|
|
205
|
+
return { status: 'already_active' };
|
|
206
|
+
}
|
|
207
|
+
// The loser of a genuine race hits the unique index here instead: its insert is a
|
|
208
|
+
// no-op (empty returning()), so it also reports 'already_active' - tryAssignTag
|
|
209
|
+
// already treats the resulting TagAlreadyInUseError as an idempotent no-op.
|
|
210
|
+
const [created] = await trx
|
|
211
|
+
.insert(playerTag)
|
|
212
|
+
.values({ ...restArgs, tagId: foundTag.id })
|
|
213
|
+
.onConflictDoNothing({
|
|
214
|
+
target: [playerTag.tagId, playerTag.playerId],
|
|
215
|
+
where: isNull(playerTag.removedAt),
|
|
216
|
+
})
|
|
217
|
+
.returning();
|
|
218
|
+
if (!created) {
|
|
219
|
+
return { status: 'already_active' };
|
|
220
|
+
}
|
|
221
|
+
return { status: 'created', row: toPlayerTagWithTag(created, foundTag.key) };
|
|
222
|
+
}
|
|
102
223
|
async assignPlayerTag(args, meta) {
|
|
103
224
|
try {
|
|
104
|
-
const { tagKey, ...restArgs } = args;
|
|
105
225
|
const db = this.drizzle.db;
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
.from(playerTag)
|
|
111
|
-
.where(and(eq(playerTag.tagId, foundTag.id), eq(playerTag.playerId, args.playerId), isNull(playerTag.removedAt)))
|
|
112
|
-
.limit(1);
|
|
113
|
-
if (existing) {
|
|
114
|
-
throw new TagAlreadyInUseError();
|
|
115
|
-
}
|
|
116
|
-
const [created] = await trx
|
|
117
|
-
.insert(playerTag)
|
|
118
|
-
.values({ ...restArgs, tagId: foundTag.id })
|
|
119
|
-
.returning();
|
|
120
|
-
return toPlayerTagWithTag(created, foundTag.key);
|
|
121
|
-
});
|
|
226
|
+
const outcome = await db.transaction((trx) => this._assignPlayerTagOnTx(trx, args));
|
|
227
|
+
if (outcome.status === 'already_active') {
|
|
228
|
+
throw new TagAlreadyInUseError();
|
|
229
|
+
}
|
|
122
230
|
void this.event.emit('tag.player.assigned', {
|
|
123
231
|
playerId: args.playerId,
|
|
124
232
|
tagKey: args.tagKey,
|
|
@@ -127,12 +235,58 @@ export class TagService {
|
|
|
127
235
|
ip: meta?.ip ?? null,
|
|
128
236
|
userAgent: meta?.userAgent ?? null,
|
|
129
237
|
});
|
|
130
|
-
return
|
|
238
|
+
return outcome.row;
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
mapDbError(e);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Same idempotent assign as assignPlayerTag, but on a caller-supplied transaction handle
|
|
246
|
+
* (the TAG_EVALUATION_COMMANDS command-port idiom, ADR-0017) so the write commits
|
|
247
|
+
* atomically with the caller's own writes - eg wallet's withdraw() inserting the
|
|
248
|
+
* withdrawal request row. Emits tag.player.assigned right after the write (mirrors
|
|
249
|
+
* PlayerKycStatusWriter.setStatus): this method has no visibility into when the
|
|
250
|
+
* caller's own transaction actually commits, so - like every other caller-supplied-tx
|
|
251
|
+
* command port in this repo - it cannot defer the emit past that point.
|
|
252
|
+
*/
|
|
253
|
+
async assignPlayerTagInTx(trx, args) {
|
|
254
|
+
try {
|
|
255
|
+
const outcome = await this._assignPlayerTagOnTx(trx, args);
|
|
256
|
+
if (outcome.status === 'already_active') {
|
|
257
|
+
throw new TagAlreadyInUseError();
|
|
258
|
+
}
|
|
259
|
+
void this.event.emit('tag.player.assigned', {
|
|
260
|
+
playerId: args.playerId,
|
|
261
|
+
tagKey: args.tagKey,
|
|
262
|
+
reason: args.assignReason,
|
|
263
|
+
actorId: args.assignActorUserId ?? SYSTEM_ACTOR_ID,
|
|
264
|
+
});
|
|
265
|
+
return outcome.row;
|
|
131
266
|
}
|
|
132
267
|
catch (e) {
|
|
133
268
|
mapDbError(e);
|
|
134
269
|
}
|
|
135
270
|
}
|
|
271
|
+
async _removePlayerTagOnTx(trx, args) {
|
|
272
|
+
const foundTag = await this._findTagByKeyOrThrow(args.tagKey, trx);
|
|
273
|
+
const active = findOneOrThrow(await trx
|
|
274
|
+
.select()
|
|
275
|
+
.from(playerTag)
|
|
276
|
+
.where(and(eq(playerTag.tagId, foundTag.id), eq(playerTag.playerId, args.playerId), isNull(playerTag.removedAt)))
|
|
277
|
+
.limit(1), new TagAssignmentNotFoundError(args.playerId));
|
|
278
|
+
const [updated] = await trx
|
|
279
|
+
.update(playerTag)
|
|
280
|
+
.set({
|
|
281
|
+
removedAt: new Date(),
|
|
282
|
+
removalReason: args.removalReason,
|
|
283
|
+
removalActor: args.removalActor,
|
|
284
|
+
removalActorUserId: args.removalActorUserId,
|
|
285
|
+
})
|
|
286
|
+
.where(eq(playerTag.id, active.id))
|
|
287
|
+
.returning();
|
|
288
|
+
return toPlayerTagWithTag(updated, foundTag.key);
|
|
289
|
+
}
|
|
136
290
|
async removePlayerTag(args, meta) {
|
|
137
291
|
try {
|
|
138
292
|
const db = this.drizzle.db;
|
|
@@ -169,5 +323,70 @@ export class TagService {
|
|
|
169
323
|
mapDbError(e);
|
|
170
324
|
}
|
|
171
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* Atomically replaces a player's active assignment of tagKey - the same-key value
|
|
328
|
+
* swap the mutable `level` tag needs. Both halves run on ONE transaction: a missing
|
|
329
|
+
* active row makes the removal a silent no-op (unlike removePlayerTag), and a
|
|
330
|
+
* failure in the assign half rolls the removal back too, so the swap can never
|
|
331
|
+
* commit half-way and strand the player with no active row. Under a genuine
|
|
332
|
+
* concurrent replace for the same (tag, player), the loser serializes on the row
|
|
333
|
+
* lock + the player_tag_active_key unique index and throws TagAlreadyInUseError
|
|
334
|
+
* with NOTHING committed. Emits tag.player.removed (only when a row was actually
|
|
335
|
+
* removed) and tag.player.assigned after the commit.
|
|
336
|
+
*/
|
|
337
|
+
async replacePlayerTag(args) {
|
|
338
|
+
try {
|
|
339
|
+
const db = this.drizzle.db;
|
|
340
|
+
const { removalReason, ...assignArgs } = args;
|
|
341
|
+
const result = await db.transaction(async (trx) => {
|
|
342
|
+
let removed = false;
|
|
343
|
+
try {
|
|
344
|
+
// App-level throw from findOneOrThrow, not a failed SQL statement, so
|
|
345
|
+
// catching it here does not abort the surrounding Postgres transaction.
|
|
346
|
+
await this._removePlayerTagOnTx(trx, {
|
|
347
|
+
playerId: args.playerId,
|
|
348
|
+
tagKey: args.tagKey,
|
|
349
|
+
removalReason,
|
|
350
|
+
removalActor: args.assignActor,
|
|
351
|
+
removalActorUserId: args.assignActorUserId,
|
|
352
|
+
});
|
|
353
|
+
removed = true;
|
|
354
|
+
}
|
|
355
|
+
catch (e) {
|
|
356
|
+
if (!(e instanceof TagAssignmentNotFoundError)) {
|
|
357
|
+
throw e;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
const assigned = await this._assignPlayerTagOnTx(trx, assignArgs);
|
|
361
|
+
if (assigned.status === 'already_active') {
|
|
362
|
+
// Unlike assignPlayerTag/assignPlayerTagInTx (where a lost race is an
|
|
363
|
+
// idempotent no-op that must still let a metadata merge commit), a lost
|
|
364
|
+
// race HERE must roll back the whole swap, including the removal above -
|
|
365
|
+
// see the class doc: nothing may commit half-way. Throwing inside this
|
|
366
|
+
// db.transaction callback is exactly how that rollback happens.
|
|
367
|
+
throw new TagAlreadyInUseError();
|
|
368
|
+
}
|
|
369
|
+
return { row: assigned.row, removed };
|
|
370
|
+
});
|
|
371
|
+
if (result.removed) {
|
|
372
|
+
void this.event.emit('tag.player.removed', {
|
|
373
|
+
playerId: args.playerId,
|
|
374
|
+
tagKey: args.tagKey,
|
|
375
|
+
reason: removalReason,
|
|
376
|
+
actorId: args.assignActorUserId ?? SYSTEM_ACTOR_ID,
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
void this.event.emit('tag.player.assigned', {
|
|
380
|
+
playerId: args.playerId,
|
|
381
|
+
tagKey: args.tagKey,
|
|
382
|
+
reason: args.assignReason,
|
|
383
|
+
actorId: args.assignActorUserId ?? SYSTEM_ACTOR_ID,
|
|
384
|
+
});
|
|
385
|
+
return result.row;
|
|
386
|
+
}
|
|
387
|
+
catch (e) {
|
|
388
|
+
mapDbError(e);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
172
391
|
}
|
|
173
392
|
//# sourceMappingURL=tag.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export declare const statement: {
|
|
|
16
16
|
readonly sessions: readonly ["view", "revoke"];
|
|
17
17
|
readonly 'player-note': readonly ["view", "create"];
|
|
18
18
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
19
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
19
20
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
20
21
|
};
|
|
21
22
|
export declare const ac: {
|
|
@@ -37,6 +38,7 @@ export declare const ac: {
|
|
|
37
38
|
readonly sessions: readonly ["view", "revoke"];
|
|
38
39
|
readonly 'player-note': readonly ["view", "create"];
|
|
39
40
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
41
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
40
42
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
41
43
|
}, TRoleStatements>): import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<TRoleStatements>, {
|
|
42
44
|
readonly player: readonly ["view", "update", "ban", "adjust-balance"];
|
|
@@ -56,6 +58,7 @@ export declare const ac: {
|
|
|
56
58
|
readonly sessions: readonly ["view", "revoke"];
|
|
57
59
|
readonly 'player-note': readonly ["view", "create"];
|
|
58
60
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
61
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
59
62
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
60
63
|
}>;
|
|
61
64
|
statements: {
|
|
@@ -76,6 +79,7 @@ export declare const ac: {
|
|
|
76
79
|
readonly sessions: readonly ["view", "revoke"];
|
|
77
80
|
readonly 'player-note': readonly ["view", "create"];
|
|
78
81
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
82
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
79
83
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
80
84
|
};
|
|
81
85
|
};
|
|
@@ -97,6 +101,7 @@ export declare const adminRole: import("better-auth/plugins/access").Role<import
|
|
|
97
101
|
readonly sessions: ["view", "revoke"];
|
|
98
102
|
readonly 'player-note': ["view", "create"];
|
|
99
103
|
readonly 'tag-rule': ["view", "update"];
|
|
104
|
+
readonly tag: ["view", "create", "delete"];
|
|
100
105
|
readonly 'chat-room': ["view", "create", "update", "delete"];
|
|
101
106
|
}>, {
|
|
102
107
|
readonly player: readonly ["view", "update", "ban", "adjust-balance"];
|
|
@@ -116,6 +121,7 @@ export declare const adminRole: import("better-auth/plugins/access").Role<import
|
|
|
116
121
|
readonly sessions: readonly ["view", "revoke"];
|
|
117
122
|
readonly 'player-note': readonly ["view", "create"];
|
|
118
123
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
124
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
119
125
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
120
126
|
}>;
|
|
121
127
|
export declare const supportRole: import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<{
|
|
@@ -142,6 +148,7 @@ export declare const supportRole: import("better-auth/plugins/access").Role<impo
|
|
|
142
148
|
readonly sessions: readonly ["view", "revoke"];
|
|
143
149
|
readonly 'player-note': readonly ["view", "create"];
|
|
144
150
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
151
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
145
152
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
146
153
|
}>;
|
|
147
154
|
export declare const contentManagerRole: import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<{
|
|
@@ -165,6 +172,7 @@ export declare const contentManagerRole: import("better-auth/plugins/access").Ro
|
|
|
165
172
|
readonly sessions: readonly ["view", "revoke"];
|
|
166
173
|
readonly 'player-note': readonly ["view", "create"];
|
|
167
174
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
175
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
168
176
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
169
177
|
}>;
|
|
170
178
|
export declare const roles: {
|
|
@@ -186,6 +194,7 @@ export declare const roles: {
|
|
|
186
194
|
readonly sessions: ["view", "revoke"];
|
|
187
195
|
readonly 'player-note': ["view", "create"];
|
|
188
196
|
readonly 'tag-rule': ["view", "update"];
|
|
197
|
+
readonly tag: ["view", "create", "delete"];
|
|
189
198
|
readonly 'chat-room': ["view", "create", "update", "delete"];
|
|
190
199
|
}>, {
|
|
191
200
|
readonly player: readonly ["view", "update", "ban", "adjust-balance"];
|
|
@@ -205,6 +214,7 @@ export declare const roles: {
|
|
|
205
214
|
readonly sessions: readonly ["view", "revoke"];
|
|
206
215
|
readonly 'player-note': readonly ["view", "create"];
|
|
207
216
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
217
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
208
218
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
209
219
|
}>;
|
|
210
220
|
readonly support: import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<{
|
|
@@ -231,6 +241,7 @@ export declare const roles: {
|
|
|
231
241
|
readonly sessions: readonly ["view", "revoke"];
|
|
232
242
|
readonly 'player-note': readonly ["view", "create"];
|
|
233
243
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
244
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
234
245
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
235
246
|
}>;
|
|
236
247
|
readonly 'content-manager': import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<{
|
|
@@ -254,6 +265,7 @@ export declare const roles: {
|
|
|
254
265
|
readonly sessions: readonly ["view", "revoke"];
|
|
255
266
|
readonly 'player-note': readonly ["view", "create"];
|
|
256
267
|
readonly 'tag-rule': readonly ["view", "update"];
|
|
268
|
+
readonly tag: readonly ["view", "create", "delete"];
|
|
257
269
|
readonly 'chat-room': readonly ["view", "create", "update", "delete"];
|
|
258
270
|
}>;
|
|
259
271
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAoBZ,CAAC;AAEX,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiC,CAAC;AAEjD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBpB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,KAAK,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAClD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -17,6 +17,7 @@ export const statement = {
|
|
|
17
17
|
sessions: ['view', 'revoke'],
|
|
18
18
|
'player-note': ['view', 'create'],
|
|
19
19
|
'tag-rule': ['view', 'update'],
|
|
20
|
+
tag: ['view', 'create', 'delete'],
|
|
20
21
|
'chat-room': ['view', 'create', 'update', 'delete'],
|
|
21
22
|
};
|
|
22
23
|
export const ac = createAccessControl(statement);
|
|
@@ -38,6 +39,7 @@ export const adminRole = ac.newRole({
|
|
|
38
39
|
sessions: ['view', 'revoke'],
|
|
39
40
|
'player-note': ['view', 'create'],
|
|
40
41
|
'tag-rule': ['view', 'update'],
|
|
42
|
+
tag: ['view', 'create', 'delete'],
|
|
41
43
|
'chat-room': ['view', 'create', 'update', 'delete'],
|
|
42
44
|
});
|
|
43
45
|
export const supportRole = ac.newRole({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,82 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
-
|
|
1
|
+
import { describe, expect, it, vi, beforeEach } from 'vitest';
|
|
2
|
+
const { calls, poolInstances, failOnSql, FakePool, readMigrationFilesMock } = vi.hoisted(() => {
|
|
3
|
+
const calls = [];
|
|
4
|
+
const poolInstances = [];
|
|
5
|
+
const failOnSql = { value: null };
|
|
6
|
+
class FakeClient {
|
|
7
|
+
query = vi.fn(async (sql) => {
|
|
8
|
+
if (failOnSql.value !== null && sql === failOnSql.value) {
|
|
9
|
+
throw new Error(`boom: ${sql}`);
|
|
10
|
+
}
|
|
11
|
+
calls.push(sql);
|
|
12
|
+
return { rows: [] };
|
|
13
|
+
});
|
|
14
|
+
release = vi.fn();
|
|
15
|
+
}
|
|
16
|
+
class FakePool {
|
|
17
|
+
opts;
|
|
18
|
+
query = vi.fn(async (sql) => {
|
|
19
|
+
if (failOnSql.value !== null && sql === failOnSql.value) {
|
|
20
|
+
throw new Error(`boom: ${sql}`);
|
|
21
|
+
}
|
|
22
|
+
calls.push(sql);
|
|
23
|
+
return { rows: [] };
|
|
24
|
+
});
|
|
25
|
+
connect = vi.fn(async () => new FakeClient());
|
|
26
|
+
end = vi.fn(async () => {
|
|
27
|
+
calls.push('end');
|
|
28
|
+
});
|
|
29
|
+
constructor(opts) {
|
|
30
|
+
this.opts = opts;
|
|
31
|
+
poolInstances.push(this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const readMigrationFilesMock = vi.fn(() => []);
|
|
35
|
+
return { calls, poolInstances, failOnSql, FakePool, readMigrationFilesMock };
|
|
36
|
+
});
|
|
37
|
+
vi.mock('pg', () => ({ Pool: FakePool }));
|
|
38
|
+
vi.mock('drizzle-orm/migrator', () => ({ readMigrationFiles: readMigrationFilesMock }));
|
|
39
|
+
const { runMigrations, applyMigrationsIndividually, withMigrationAdvisoryLock } = await import('../migrate.js');
|
|
40
|
+
describe('runMigrations', () => {
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
calls.length = 0;
|
|
43
|
+
poolInstances.length = 0;
|
|
44
|
+
failOnSql.value = null;
|
|
45
|
+
readMigrationFilesMock.mockClear();
|
|
46
|
+
});
|
|
47
|
+
it('runs extensions, then preSql, before reading pending migrations', async () => {
|
|
48
|
+
await runMigrations({
|
|
49
|
+
migrationsFolder: '/tmp/migrations',
|
|
50
|
+
databaseUrl: 'postgres://test',
|
|
51
|
+
extensions: ['pg_trgm'],
|
|
52
|
+
preSql: ['UPDATE foo SET bar = 1', 'UPDATE baz SET qux = 2'],
|
|
53
|
+
});
|
|
54
|
+
const presqlIndex = calls.indexOf('UPDATE foo SET bar = 1');
|
|
55
|
+
const readIndex = calls.indexOf('SELECT hash FROM "drizzle"."__drizzle_migrations"');
|
|
56
|
+
expect(calls).toContain('CREATE EXTENSION IF NOT EXISTS pg_trgm');
|
|
57
|
+
expect(calls).toEqual(expect.arrayContaining(['UPDATE foo SET bar = 1', 'UPDATE baz SET qux = 2']));
|
|
58
|
+
expect(presqlIndex).toBeLessThan(readIndex);
|
|
59
|
+
expect(calls).toContain('end');
|
|
60
|
+
});
|
|
61
|
+
it('is a no-op (beyond bookkeeping) when preSql is omitted', async () => {
|
|
62
|
+
await runMigrations({
|
|
63
|
+
migrationsFolder: '/tmp/migrations',
|
|
64
|
+
databaseUrl: 'postgres://test',
|
|
65
|
+
});
|
|
66
|
+
expect(calls).not.toContain(undefined);
|
|
67
|
+
expect(calls).toContain('end');
|
|
68
|
+
});
|
|
69
|
+
it('closes the pool even when a preSql statement throws, and never reads pending migrations', async () => {
|
|
70
|
+
failOnSql.value = 'THIS WILL FAIL';
|
|
71
|
+
await expect(runMigrations({
|
|
72
|
+
migrationsFolder: '/tmp/migrations',
|
|
73
|
+
databaseUrl: 'postgres://test',
|
|
74
|
+
preSql: ['THIS WILL FAIL'],
|
|
75
|
+
})).rejects.toThrow('boom: THIS WILL FAIL');
|
|
76
|
+
expect(readMigrationFilesMock).not.toHaveBeenCalled();
|
|
77
|
+
expect(calls).toContain('end');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
3
80
|
const migrations = [
|
|
4
81
|
{
|
|
5
82
|
sql: ["ALTER TYPE room_category ADD VALUE 'private-chats';"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.test.js","sourceRoot":"","sources":["../../../../src/server/db/__tests__/migrate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate.test.js","sourceRoot":"","sources":["../../../../src/server/db/__tests__/migrate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG9D,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IAC5F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAc,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,IAAqB,EAAE,CAAC;IAEnD,MAAM,UAAU;QACL,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;YAC3C,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;KAC5B;IAED,MAAM,QAAQ;QAYS;QAXZ,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;YAC3C,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QAC9C,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,YAAqB,IAAkC;YAAlC,SAAI,GAAJ,IAAI,CAA8B;YACrD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;KACF;IAED,MAAM,sBAAsB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAqB,CAAC,CAAC;IAElE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAExF,MAAM,EAAE,aAAa,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,GAC7E,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;AAEhC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QACvB,sBAAsB,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,aAAa,CAAC;YAClB,gBAAgB,EAAE,iBAAiB;YACnC,WAAW,EAAE,iBAAiB;YAC9B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,MAAM,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;SAC7D,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CACnB,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAC7E,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,aAAa,CAAC;YAClB,gBAAgB,EAAE,iBAAiB;YACnC,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,SAAS,CAAC,KAAK,GAAG,gBAAgB,CAAC;QAEnC,MAAM,MAAM,CACV,aAAa,CAAC;YACZ,gBAAgB,EAAE,iBAAiB;YACnC,WAAW,EAAE,iBAAiB;YAC9B,MAAM,EAAE,CAAC,gBAAgB,CAAC;SAC3B,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAE1C,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAoB;IAClC;QACE,GAAG,EAAE,CAAC,qDAAqD,CAAC;QAC5D,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,IAAI;KACV;IACD;QACE,GAAG,EAAE,CAAC,kDAAkD,CAAC;QACzD,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,IAAI;KACV;CACF,CAAC;AAEF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,2BAA2B,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,yBAAyB,CAAC,EAAE,KAAK,EAAE,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QAExF,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,uCAAuC,EAAE;YAChF,mCAAmC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,yCAAyC,EAAE;YAClF,mCAAmC;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAE9C,MAAM,MAAM,CACV,yBAAyB,CAAC,EAAE,KAAK,EAAE,EAAE,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,OAAO,CAAC;QAChB,CAAC,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,yCAAyC,EAAE;YAClF,mCAAmC;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -15,6 +15,17 @@ export type RunMigrationsOptions = {
|
|
|
15
15
|
* trgm index) declares it here instead of hand-editing a regenerated migration.
|
|
16
16
|
*/
|
|
17
17
|
extensions?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Raw SQL statements to run, in order, before the migrator applies any pending migration.
|
|
20
|
+
* Unlike `extensions` (a bare identifier interpolated into a fixed `CREATE EXTENSION`
|
|
21
|
+
* template, hence the strict name check), each entry here is a full statement the caller is
|
|
22
|
+
* trusted to have written safely - these are literal string constants in module source, never
|
|
23
|
+
* user input. This is for data cleanup drizzle-kit has no way to generate because it isn't a
|
|
24
|
+
* schema diff at all (eg deduping rows that violate a new constraint a pending migration is
|
|
25
|
+
* about to add) - a module declares it here instead of hand-editing a regenerated migration,
|
|
26
|
+
* same rationale as `extensions`, different problem shape.
|
|
27
|
+
*/
|
|
28
|
+
preSql?: string[];
|
|
18
29
|
};
|
|
19
30
|
type SqlClient = {
|
|
20
31
|
query(sql: string, values?: unknown[]): Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/server/db/migrate.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/server/db/migrate.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAcF,KAAK,SAAS,GAAG;IACf,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC;AAEF;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,cAQzB;AAED,wBAAsB,2BAA2B,CAAC,EAChD,UAAU,EACV,KAAK,GACN,EAAE;IACD,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,iBAIA;AAED,mHAAmH;AACnH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,iBAoE7D;AAED,sHAAsH;AACtH,wBAAgB,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,iBAO3C"}
|