@openora/core 0.4.1-canary.131 → 0.4.1-canary.133
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/compliance/schema/index.d.ts +15 -13
- package/dist/compliance/schema/index.d.ts.map +1 -1
- package/dist/compliance/schema/index.js +13 -3
- package/dist/compliance/schema/index.js.map +1 -1
- package/dist/compliance/service/kyc.service.d.ts +35 -5
- package/dist/compliance/service/kyc.service.d.ts.map +1 -1
- package/dist/engagement/chat/schema/index.d.ts +4 -13
- package/dist/engagement/chat/schema/index.d.ts.map +1 -1
- package/dist/engagement/chat/schema/index.js +5 -2
- package/dist/engagement/chat/schema/index.js.map +1 -1
- package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
- package/dist/engagement/chat/service/chat.service.js +36 -13
- package/dist/engagement/chat/service/chat.service.js.map +1 -1
- package/dist/engagement/chat-commands/__tests__/migration-upgrade.int.test.js +46 -0
- package/dist/engagement/chat-commands/__tests__/migration-upgrade.int.test.js.map +1 -1
- package/dist/engagement/chat-commands/contract/index.d.ts +48 -12
- package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -1
- package/dist/engagement/chat-commands/contract/index.js +6 -3
- package/dist/engagement/chat-commands/contract/index.js.map +1 -1
- package/dist/engagement/chat-commands/drizzle/migrations/0002_single_currency_command_limits.sql +45 -0
- package/dist/engagement/chat-commands/drizzle/migrations/meta/0002_snapshot.json +83 -0
- package/dist/engagement/chat-commands/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/engagement/chat-commands/router/index.d.ts +32 -8
- package/dist/engagement/chat-commands/router/index.d.ts.map +1 -1
- package/dist/engagement/chat-commands/schema/index.d.ts +12 -10
- package/dist/engagement/chat-commands/schema/index.d.ts.map +1 -1
- package/dist/engagement/chat-commands/schema/index.js +4 -2
- package/dist/engagement/chat-commands/schema/index.js.map +1 -1
- package/dist/engagement/chat-commands/seed/index.js +3 -3
- package/dist/engagement/chat-commands/seed/index.js.map +1 -1
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +11 -0
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -1
- package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +8 -2
- package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -1
- package/dist/pam/tag/schema/index.d.ts +4 -14
- package/dist/pam/tag/schema/index.d.ts.map +1 -1
- package/dist/pam/tag/schema/index.js +4 -2
- package/dist/pam/tag/schema/index.js.map +1 -1
- package/dist/server/db/__tests__/zod-jsonb.test.d.ts +2 -0
- package/dist/server/db/__tests__/zod-jsonb.test.d.ts.map +1 -0
- package/dist/server/db/__tests__/zod-jsonb.test.js +43 -0
- package/dist/server/db/__tests__/zod-jsonb.test.js.map +1 -0
- package/dist/server/db/index.d.ts +1 -0
- package/dist/server/db/index.d.ts.map +1 -1
- package/dist/server/db/index.js +1 -0
- package/dist/server/db/index.js.map +1 -1
- package/dist/server/db/zod-jsonb.d.ts +52 -0
- package/dist/server/db/zod-jsonb.d.ts.map +1 -0
- package/dist/server/db/zod-jsonb.js +52 -0
- package/dist/server/db/zod-jsonb.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { customType } from 'drizzle-orm/pg-core';
|
|
2
|
+
import { createLogger } from '../kernel/logger.js';
|
|
3
|
+
const logger = createLogger('zod-jsonb');
|
|
4
|
+
/**
|
|
5
|
+
* A jsonb column whose TypeScript type is inferred from its Zod schema and enforced at
|
|
6
|
+
* both ends of the driver, rather than asserted by `jsonb().$type<T>()`.
|
|
7
|
+
*
|
|
8
|
+
* `$type<T>()` is a cast Postgres never checks, so the column's declared shape and the
|
|
9
|
+
* shape actually stored drift apart silently: rows written by an earlier release outlive
|
|
10
|
+
* the contract that produced them, and the mismatch only surfaces when a route tries to
|
|
11
|
+
* serialize one and fails output validation - taking every other row in that response
|
|
12
|
+
* down with it.
|
|
13
|
+
*
|
|
14
|
+
* Writes parse and throw, because a value the current contract cannot express has no
|
|
15
|
+
* business entering the column - that is where the drift is cheap to fix. Reads degrade
|
|
16
|
+
* to `null` and log, because a row already in the table is a fact: refusing to serve it
|
|
17
|
+
* would trade one unreadable field for a dead endpoint.
|
|
18
|
+
*
|
|
19
|
+
* `severity: 'error'` is for a column whose absence changes a decision rather than a
|
|
20
|
+
* rendering - a compliance signal an operator reads before approving a player. The value
|
|
21
|
+
* still degrades to null, because failing the read would take an admin's whole queue down
|
|
22
|
+
* (and the player's own status page with it, which reads the same row), but the drift is
|
|
23
|
+
* logged at error level and so reaches the bound error tracker instead of sitting in a
|
|
24
|
+
* warn line nobody greps. An empty compliance field must never look like a quiet fact.
|
|
25
|
+
*/
|
|
26
|
+
export function zodJsonb(schema, columnName, { severity = 'warn' } = {}) {
|
|
27
|
+
return customType({
|
|
28
|
+
dataType: () => 'jsonb',
|
|
29
|
+
// Serialized here for the same reason drizzle's own `jsonb` does it: node-postgres
|
|
30
|
+
// stringifies an object parameter as "[object Object]", which Postgres rejects.
|
|
31
|
+
toDriver: (value) => JSON.stringify(schema.parse(value)),
|
|
32
|
+
fromDriver: (value) => {
|
|
33
|
+
const parsed = schema.safeParse(value);
|
|
34
|
+
if (parsed.success) {
|
|
35
|
+
return parsed.data;
|
|
36
|
+
}
|
|
37
|
+
// No row id here - the driver sees the value alone. This says a column has drifted
|
|
38
|
+
// and roughly how; finding the rows is a query, not a log line.
|
|
39
|
+
const context = { column: columnName, issues: parsed.error.issues.slice(0, 3) };
|
|
40
|
+
const message = 'stored jsonb no longer matches its contract, read as null';
|
|
41
|
+
if (severity === 'error') {
|
|
42
|
+
// `err` is what makes createLogger forward this to the error tracker.
|
|
43
|
+
logger.error({ ...context, err: parsed.error }, message);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
logger.warn(context, message);
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=zod-jsonb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-jsonb.js","sourceRoot":"","sources":["../../../src/server/db/zod-jsonb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAS,EACT,UAAkB,EAClB,EAAE,QAAQ,GAAG,MAAM,KAAsC,EAAE;IAE3D,OAAO,UAAU,CAA2C;QAC1D,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO;QACvB,mFAAmF;QACnF,gFAAgF;QAChF,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YACD,mFAAmF;YACnF,gEAAgE;YAChE,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,OAAO,GAAG,2DAA2D,CAAC;YAC5E,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,sEAAsE;gBACtE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,IAAkB,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openora/core",
|
|
3
|
-
"version": "0.4.1-canary.
|
|
3
|
+
"version": "0.4.1-canary.133",
|
|
4
4
|
"description": "Open-source, headless, plugin-based, AI-native iGaming framework - domain modules, plugin engine, Zod-first contracts, typed React SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-native",
|