@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.
Files changed (52) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/compliance/schema/index.d.ts +15 -13
  3. package/dist/compliance/schema/index.d.ts.map +1 -1
  4. package/dist/compliance/schema/index.js +13 -3
  5. package/dist/compliance/schema/index.js.map +1 -1
  6. package/dist/compliance/service/kyc.service.d.ts +35 -5
  7. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  8. package/dist/engagement/chat/schema/index.d.ts +4 -13
  9. package/dist/engagement/chat/schema/index.d.ts.map +1 -1
  10. package/dist/engagement/chat/schema/index.js +5 -2
  11. package/dist/engagement/chat/schema/index.js.map +1 -1
  12. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  13. package/dist/engagement/chat/service/chat.service.js +36 -13
  14. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  15. package/dist/engagement/chat-commands/__tests__/migration-upgrade.int.test.js +46 -0
  16. package/dist/engagement/chat-commands/__tests__/migration-upgrade.int.test.js.map +1 -1
  17. package/dist/engagement/chat-commands/contract/index.d.ts +48 -12
  18. package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -1
  19. package/dist/engagement/chat-commands/contract/index.js +6 -3
  20. package/dist/engagement/chat-commands/contract/index.js.map +1 -1
  21. package/dist/engagement/chat-commands/drizzle/migrations/0002_single_currency_command_limits.sql +45 -0
  22. package/dist/engagement/chat-commands/drizzle/migrations/meta/0002_snapshot.json +83 -0
  23. package/dist/engagement/chat-commands/drizzle/migrations/meta/_journal.json +7 -0
  24. package/dist/engagement/chat-commands/router/index.d.ts +32 -8
  25. package/dist/engagement/chat-commands/router/index.d.ts.map +1 -1
  26. package/dist/engagement/chat-commands/schema/index.d.ts +12 -10
  27. package/dist/engagement/chat-commands/schema/index.d.ts.map +1 -1
  28. package/dist/engagement/chat-commands/schema/index.js +4 -2
  29. package/dist/engagement/chat-commands/schema/index.js.map +1 -1
  30. package/dist/engagement/chat-commands/seed/index.js +3 -3
  31. package/dist/engagement/chat-commands/seed/index.js.map +1 -1
  32. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +11 -0
  33. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -1
  34. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +8 -2
  35. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -1
  36. package/dist/pam/tag/schema/index.d.ts +4 -14
  37. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  38. package/dist/pam/tag/schema/index.js +4 -2
  39. package/dist/pam/tag/schema/index.js.map +1 -1
  40. package/dist/server/db/__tests__/zod-jsonb.test.d.ts +2 -0
  41. package/dist/server/db/__tests__/zod-jsonb.test.d.ts.map +1 -0
  42. package/dist/server/db/__tests__/zod-jsonb.test.js +43 -0
  43. package/dist/server/db/__tests__/zod-jsonb.test.js.map +1 -0
  44. package/dist/server/db/index.d.ts +1 -0
  45. package/dist/server/db/index.d.ts.map +1 -1
  46. package/dist/server/db/index.js +1 -0
  47. package/dist/server/db/index.js.map +1 -1
  48. package/dist/server/db/zod-jsonb.d.ts +52 -0
  49. package/dist/server/db/zod-jsonb.d.ts.map +1 -0
  50. package/dist/server/db/zod-jsonb.js +52 -0
  51. package/dist/server/db/zod-jsonb.js.map +1 -0
  52. 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.131",
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",