@openora/core 0.4.1-canary.57 → 0.4.1-canary.59
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/README.md +10 -10
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/plugin.d.ts +107 -1
- package/dist/admin-console/plugin.d.ts.map +1 -1
- package/dist/admin-console/plugin.js +3 -3
- package/dist/admin-console/plugin.js.map +1 -1
- package/dist/analytics/plugin.d.ts +107 -1
- package/dist/analytics/plugin.d.ts.map +1 -1
- package/dist/analytics/plugin.js +3 -3
- package/dist/analytics/plugin.js.map +1 -1
- package/dist/audit/plugin.d.ts +106 -1
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.js +3 -3
- package/dist/audit/plugin.js.map +1 -1
- package/dist/casino/gaming/plugin.d.ts +108 -1
- package/dist/casino/gaming/plugin.d.ts.map +1 -1
- package/dist/casino/gaming/plugin.js +3 -3
- package/dist/casino/gaming/plugin.js.map +1 -1
- package/dist/casino/lobby/plugin.d.ts +106 -1
- package/dist/casino/lobby/plugin.d.ts.map +1 -1
- package/dist/casino/lobby/plugin.js +3 -3
- package/dist/casino/lobby/plugin.js.map +1 -1
- package/dist/cms/plugin.d.ts +106 -1
- package/dist/cms/plugin.d.ts.map +1 -1
- package/dist/cms/plugin.js +3 -3
- package/dist/cms/plugin.js.map +1 -1
- package/dist/compliance/plugin.d.ts +109 -1
- package/dist/compliance/plugin.d.ts.map +1 -1
- package/dist/compliance/plugin.js +3 -3
- package/dist/compliance/plugin.js.map +1 -1
- package/dist/compliance/service/kyc.service.d.ts +8 -11
- package/dist/compliance/service/kyc.service.d.ts.map +1 -1
- package/dist/compliance/service/kyc.service.js +8 -11
- package/dist/compliance/service/kyc.service.js.map +1 -1
- package/dist/contracts/adapters/admin-game-reporting.d.ts +12 -0
- package/dist/contracts/adapters/admin-game-reporting.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-game-reporting.js +6 -4
- package/dist/contracts/adapters/admin-game-reporting.js.map +1 -1
- package/dist/contracts/adapters/admin-permission.d.ts +10 -0
- package/dist/contracts/adapters/admin-permission.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-permission.js +6 -4
- package/dist/contracts/adapters/admin-permission.js.map +1 -1
- package/dist/contracts/adapters/admin-player-activity.d.ts +22 -0
- package/dist/contracts/adapters/admin-player-activity.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-player-activity.js.map +1 -1
- package/dist/contracts/adapters/admin-user-directory.d.ts +27 -0
- package/dist/contracts/adapters/admin-user-directory.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-user-directory.js.map +1 -1
- package/dist/contracts/adapters/admin-wallet-reporting.d.ts +6 -0
- package/dist/contracts/adapters/admin-wallet-reporting.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-wallet-reporting.js.map +1 -1
- package/dist/contracts/adapters/aggregator.d.ts +12 -0
- package/dist/contracts/adapters/aggregator.d.ts.map +1 -1
- package/dist/contracts/adapters/aggregator.js +5 -3
- package/dist/contracts/adapters/aggregator.js.map +1 -1
- package/dist/contracts/adapters/audit.d.ts +17 -0
- package/dist/contracts/adapters/audit.d.ts.map +1 -1
- package/dist/contracts/adapters/audit.js.map +1 -1
- package/dist/contracts/adapters/broker.d.ts +23 -0
- package/dist/contracts/adapters/broker.d.ts.map +1 -1
- package/dist/contracts/adapters/broker.js +8 -6
- package/dist/contracts/adapters/broker.js.map +1 -1
- package/dist/contracts/adapters/cache.d.ts +8 -0
- package/dist/contracts/adapters/cache.d.ts.map +1 -1
- package/dist/contracts/adapters/cache.js +8 -6
- package/dist/contracts/adapters/cache.js.map +1 -1
- package/dist/contracts/adapters/chat-block-writer.d.ts +4 -0
- package/dist/contracts/adapters/chat-block-writer.d.ts.map +1 -1
- package/dist/contracts/adapters/chat-block-writer.js.map +1 -1
- package/dist/contracts/adapters/email-template.d.ts +8 -0
- package/dist/contracts/adapters/email-template.d.ts.map +1 -1
- package/dist/contracts/adapters/email-template.js +8 -6
- package/dist/contracts/adapters/email-template.js.map +1 -1
- package/dist/contracts/adapters/email.d.ts +7 -0
- package/dist/contracts/adapters/email.d.ts.map +1 -1
- package/dist/contracts/adapters/email.js +7 -5
- package/dist/contracts/adapters/email.js.map +1 -1
- package/dist/contracts/adapters/game.d.ts +4 -0
- package/dist/contracts/adapters/game.d.ts.map +1 -1
- package/dist/contracts/adapters/game.js +4 -2
- package/dist/contracts/adapters/game.js.map +1 -1
- package/dist/contracts/adapters/geo-ip.d.ts +4 -0
- package/dist/contracts/adapters/geo-ip.d.ts.map +1 -1
- package/dist/contracts/adapters/geo-ip.js +4 -2
- package/dist/contracts/adapters/geo-ip.js.map +1 -1
- package/dist/contracts/adapters/identity.d.ts +4 -0
- package/dist/contracts/adapters/identity.d.ts.map +1 -1
- package/dist/contracts/adapters/identity.js +4 -2
- package/dist/contracts/adapters/identity.js.map +1 -1
- package/dist/contracts/adapters/index.d.ts +7 -1
- package/dist/contracts/adapters/index.d.ts.map +1 -1
- package/dist/contracts/adapters/index.js +6 -4
- package/dist/contracts/adapters/index.js.map +1 -1
- package/dist/contracts/adapters/job-queue.d.ts +55 -0
- package/dist/contracts/adapters/job-queue.d.ts.map +1 -1
- package/dist/contracts/adapters/job-queue.js +11 -9
- package/dist/contracts/adapters/job-queue.js.map +1 -1
- package/dist/contracts/adapters/login-enforcement.d.ts +8 -0
- package/dist/contracts/adapters/login-enforcement.d.ts.map +1 -1
- package/dist/contracts/adapters/login-enforcement.js +8 -6
- package/dist/contracts/adapters/login-enforcement.js.map +1 -1
- package/dist/contracts/adapters/notification.d.ts +7 -0
- package/dist/contracts/adapters/notification.d.ts.map +1 -1
- package/dist/contracts/adapters/notification.js +7 -5
- package/dist/contracts/adapters/notification.js.map +1 -1
- package/dist/contracts/adapters/outbox.d.ts +14 -0
- package/dist/contracts/adapters/outbox.d.ts.map +1 -1
- package/dist/contracts/adapters/outbox.js +14 -12
- package/dist/contracts/adapters/outbox.js.map +1 -1
- package/dist/contracts/adapters/payment.d.ts +5 -0
- package/dist/contracts/adapters/payment.d.ts.map +1 -1
- package/dist/contracts/adapters/payment.js +5 -3
- package/dist/contracts/adapters/payment.js.map +1 -1
- package/dist/contracts/adapters/player-tags.d.ts +4 -0
- package/dist/contracts/adapters/player-tags.d.ts.map +1 -1
- package/dist/contracts/adapters/player-tags.js.map +1 -1
- package/dist/contracts/adapters/rate-limit.d.ts +17 -0
- package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
- package/dist/contracts/adapters/rate-limit.js +9 -6
- package/dist/contracts/adapters/rate-limit.js.map +1 -1
- package/dist/contracts/adapters/realtime.d.ts +90 -3
- package/dist/contracts/adapters/realtime.d.ts.map +1 -1
- package/dist/contracts/adapters/realtime.js +24 -22
- package/dist/contracts/adapters/realtime.js.map +1 -1
- package/dist/contracts/adapters/rng.d.ts +11 -0
- package/dist/contracts/adapters/rng.d.ts.map +1 -1
- package/dist/contracts/adapters/rng.js +11 -9
- package/dist/contracts/adapters/rng.js.map +1 -1
- package/dist/contracts/adapters/sms.d.ts +6 -0
- package/dist/contracts/adapters/sms.d.ts.map +1 -1
- package/dist/contracts/adapters/sms.js +6 -4
- package/dist/contracts/adapters/sms.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 -1
- package/dist/contracts/adapters/tag-evaluation-commands.js +10 -8
- package/dist/contracts/adapters/tag-evaluation-commands.js.map +1 -1
- package/dist/contracts/adapters/token.d.ts +21 -1
- package/dist/contracts/adapters/token.d.ts.map +1 -1
- package/dist/contracts/adapters/token.js +6 -4
- package/dist/contracts/adapters/token.js.map +1 -1
- package/dist/contracts/adapters/wallet-commands.d.ts +4 -0
- package/dist/contracts/adapters/wallet-commands.d.ts.map +1 -1
- package/dist/contracts/adapters/wallet-commands.js.map +1 -1
- package/dist/contracts/schemas/igaming-config.d.ts +25 -1
- package/dist/contracts/schemas/igaming-config.d.ts.map +1 -1
- package/dist/contracts/schemas/igaming-config.js +2 -1
- package/dist/contracts/schemas/igaming-config.js.map +1 -1
- package/dist/engagement/chat/plugin.d.ts +107 -1
- package/dist/engagement/chat/plugin.d.ts.map +1 -1
- package/dist/engagement/chat/plugin.js +3 -3
- package/dist/engagement/chat/plugin.js.map +1 -1
- package/dist/engagement/chat-commands/plugin.d.ts +107 -1
- package/dist/engagement/chat-commands/plugin.d.ts.map +1 -1
- package/dist/engagement/chat-commands/plugin.js +3 -3
- package/dist/engagement/chat-commands/plugin.js.map +1 -1
- package/dist/engagement/notifications/plugin.d.ts +108 -1
- package/dist/engagement/notifications/plugin.d.ts.map +1 -1
- package/dist/engagement/notifications/plugin.js +3 -3
- package/dist/engagement/notifications/plugin.js.map +1 -1
- package/dist/iam/__tests__/iam.service.int.test.js +49 -1
- package/dist/iam/__tests__/iam.service.int.test.js.map +1 -1
- package/dist/iam/contract/index.d.ts +10 -0
- package/dist/iam/contract/index.d.ts.map +1 -1
- package/dist/iam/contract/index.js +4 -0
- package/dist/iam/contract/index.js.map +1 -1
- package/dist/iam/plugin.d.ts +107 -1
- package/dist/iam/plugin.d.ts.map +1 -1
- package/dist/iam/plugin.js +5 -5
- package/dist/iam/plugin.js.map +1 -1
- package/dist/iam/router/index.d.ts +10 -0
- package/dist/iam/router/index.d.ts.map +1 -1
- package/dist/iam/router/index.js +4 -0
- package/dist/iam/router/index.js.map +1 -1
- package/dist/iam/service/iam.service.d.ts +11 -3
- package/dist/iam/service/iam.service.d.ts.map +1 -1
- package/dist/iam/service/iam.service.js +20 -1
- package/dist/iam/service/iam.service.js.map +1 -1
- package/dist/pam/identity/plugin.d.ts +106 -1
- package/dist/pam/identity/plugin.d.ts.map +1 -1
- package/dist/pam/identity/plugin.js +3 -3
- package/dist/pam/identity/plugin.js.map +1 -1
- package/dist/pam/player-management/plugin.d.ts +107 -1
- package/dist/pam/player-management/plugin.d.ts.map +1 -1
- package/dist/pam/player-management/plugin.js +3 -3
- package/dist/pam/player-management/plugin.js.map +1 -1
- package/dist/pam/player-management/service/kyc-status-writer.d.ts +1 -1
- package/dist/pam/player-management/service/kyc-status-writer.js +1 -1
- package/dist/pam/player-note/plugin.d.ts +106 -1
- package/dist/pam/player-note/plugin.d.ts.map +1 -1
- package/dist/pam/player-note/plugin.js +3 -3
- package/dist/pam/player-note/plugin.js.map +1 -1
- package/dist/pam/profile/plugin.d.ts +106 -1
- package/dist/pam/profile/plugin.d.ts.map +1 -1
- package/dist/pam/profile/plugin.js +3 -3
- package/dist/pam/profile/plugin.js.map +1 -1
- package/dist/pam/tag/plugin.d.ts +107 -1
- package/dist/pam/tag/plugin.d.ts.map +1 -1
- package/dist/pam/tag/plugin.js +3 -3
- package/dist/pam/tag/plugin.js.map +1 -1
- package/dist/server/kernel/container.d.ts +6 -7
- package/dist/server/kernel/container.d.ts.map +1 -1
- package/dist/server/kernel/container.js +3 -0
- package/dist/server/kernel/container.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/__tests__/load-plugins.test.js +10 -1
- package/dist/server/plugin-host/__tests__/load-plugins.test.js.map +1 -1
- package/dist/server/plugin-host/__tests__/module-registry.test.js.map +1 -1
- package/dist/server/plugin-host/__tests__/required-ports.test.js +1 -0
- package/dist/server/plugin-host/__tests__/required-ports.test.js.map +1 -1
- package/dist/server/plugin-host/__tests__/typed-plugin.test.js +56 -17
- package/dist/server/plugin-host/__tests__/typed-plugin.test.js.map +1 -1
- package/dist/server/plugin-host/core-plugins.js +19 -19
- package/dist/server/plugin-host/core-plugins.js.map +1 -1
- package/dist/server/plugin-host/define-plugin.d.ts +20 -21
- package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
- package/dist/server/plugin-host/define-plugin.js +1 -8
- package/dist/server/plugin-host/define-plugin.js.map +1 -1
- package/dist/server/plugin-host/index.d.ts +2 -3
- package/dist/server/plugin-host/index.d.ts.map +1 -1
- package/dist/server/plugin-host/index.js +1 -2
- package/dist/server/plugin-host/index.js.map +1 -1
- package/dist/server/plugin-host/load-plugins.d.ts +6 -21
- package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
- package/dist/server/plugin-host/load-plugins.js +9 -4
- package/dist/server/plugin-host/load-plugins.js.map +1 -1
- package/dist/server/plugin-host/module-registry.d.ts +8 -13
- package/dist/server/plugin-host/module-registry.d.ts.map +1 -1
- package/dist/server/plugin-host/module-registry.js +2 -9
- package/dist/server/plugin-host/module-registry.js.map +1 -1
- package/dist/server/runtime/__tests__/create-app.test.js +8 -3
- package/dist/server/runtime/__tests__/create-app.test.js.map +1 -1
- package/dist/server/runtime/core-token-catalog.d.ts +106 -0
- package/dist/server/runtime/core-token-catalog.d.ts.map +1 -0
- package/dist/server/runtime/core-token-catalog.js +53 -0
- package/dist/server/runtime/core-token-catalog.js.map +1 -0
- package/dist/server/runtime/create-app.d.ts +3 -14
- package/dist/server/runtime/create-app.d.ts.map +1 -1
- package/dist/server/runtime/create-app.js +13 -17
- package/dist/server/runtime/create-app.js.map +1 -1
- package/dist/server/runtime/index.d.ts +2 -3
- package/dist/server/runtime/index.d.ts.map +1 -1
- package/dist/server/runtime/index.js +0 -2
- package/dist/server/runtime/index.js.map +1 -1
- package/dist/wallet/plugin.d.ts +107 -1
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +3 -3
- package/dist/wallet/plugin.js.map +1 -1
- package/generators/src/config.ts +1 -28
- package/generators/src/templates/adapter.hbs +3 -3
- package/generators/src/templates/contract.hbs +1 -1
- package/generators/src/templates/job-worker.hbs +3 -3
- package/generators/src/templates/module/plugin.hbs +4 -3
- package/generators/src/templates/plugin.hbs +3 -3
- package/package.json +1 -1
- package/dist/server/runtime/openapi.d.ts +0 -15
- package/dist/server/runtime/openapi.d.ts.map +0 -1
- package/dist/server/runtime/openapi.js +0 -26
- package/dist/server/runtime/openapi.js.map +0 -1
- package/generators/src/templates/module/agents.hbs +0 -17
|
@@ -1,15 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message-broker seam. The EventBus (@openora/core/server) publishes/subscribes through this
|
|
3
|
+
* adapter, so the inter-module transport is swappable: the default binding is an
|
|
4
|
+
* in-process broker; a downstream operator binds a durable driver (RabbitMQ,
|
|
5
|
+
* Redpanda / Kafka API, NATS JetStream) to MESSAGE_BROKER in an overlay and every
|
|
6
|
+
* event flows through it - no module change. Delivery is at-least-once once a real
|
|
7
|
+
* broker is bound, so consumers must be idempotent. See ADR-0010 and ADR-0016.
|
|
8
|
+
*/
|
|
1
9
|
import { type Token } from './token.js';
|
|
10
|
+
/**
|
|
11
|
+
* On-the-wire envelope that every remote adapter serializes. The EventBus
|
|
12
|
+
* builds this internally; module code never sees it (only the typed payload).
|
|
13
|
+
*/
|
|
2
14
|
export type EventEnvelope<T = unknown> = {
|
|
15
|
+
/** Consumer-side idempotency/dedup key (UUID per emission). */
|
|
3
16
|
eventId: string;
|
|
17
|
+
/** Domain event name (eg "wallet.deposit.completed"). */
|
|
4
18
|
topic: string;
|
|
19
|
+
/** The validated event payload (matches domainEventSchemas). */
|
|
5
20
|
payload: T;
|
|
21
|
+
/** ISO-8601 timestamp of the emission. */
|
|
6
22
|
occurredAt: string;
|
|
23
|
+
/** Monotonic integer for forward-compat payload evolution. */
|
|
7
24
|
schemaVersion: number;
|
|
25
|
+
/** Maps to Kafka partition key / RabbitMQ routing key for per-user ordering guarantees. */
|
|
8
26
|
orderingKey?: string;
|
|
27
|
+
/** Distributed trace correlation ID. */
|
|
9
28
|
traceId?: string;
|
|
10
29
|
};
|
|
11
30
|
export type BrokerHandler = (envelope: EventEnvelope) => void | Promise<void>;
|
|
12
31
|
export type SubscribeOptions = {
|
|
32
|
+
/**
|
|
33
|
+
* Forward hint for grouped consumers: Kafka consumer group / RabbitMQ queue group.
|
|
34
|
+
* When omitted, the adapter creates an exclusive per-process queue (fan-out).
|
|
35
|
+
*/
|
|
13
36
|
consumerGroup?: string;
|
|
14
37
|
};
|
|
15
38
|
export type MessageBrokerAdapter = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/broker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/broker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IACvC,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,OAAO,EAAE,CAAC,CAAC;IACX,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAC;IACzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,oBAAoB,CAAiC,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Message-broker seam. The EventBus (@openora/core/server) publishes/subscribes through this
|
|
3
|
+
* adapter, so the inter-module transport is swappable: the default binding is an
|
|
4
|
+
* in-process broker; a downstream operator binds a durable driver (RabbitMQ,
|
|
5
|
+
* Redpanda / Kafka API, NATS JetStream) to MESSAGE_BROKER in an overlay and every
|
|
6
|
+
* event flows through it - no module change. Delivery is at-least-once once a real
|
|
7
|
+
* broker is bound, so consumers must be idempotent. See ADR-0010 and ADR-0016.
|
|
8
|
+
*/
|
|
7
9
|
import { createToken } from './token.js';
|
|
8
10
|
export const MESSAGE_BROKER = createToken('MESSAGE_BROKER');
|
|
9
11
|
//# sourceMappingURL=broker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/contracts/adapters/broker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/contracts/adapters/broker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAuCrD,MAAM,CAAC,MAAM,cAAc,GAAgC,WAAW,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache seam. Hot, non-personalized reads (public catalogue/content feeds) load
|
|
3
|
+
* through this adapter so the backend is swappable: the default binding is an
|
|
4
|
+
* in-process TTL cache (zero deps), process-local so invalidation does NOT
|
|
5
|
+
* propagate across replicas. Set REDIS_URL to bind the shipped Redis reference
|
|
6
|
+
* adapter (cross-replica invalidation) with zero consumer code; rebind CACHE via
|
|
7
|
+
* an overlay for any other backend.
|
|
8
|
+
*/
|
|
1
9
|
import { type Token } from './token.js';
|
|
2
10
|
export type CacheAdapter = {
|
|
3
11
|
get<T>(key: string): Promise<T | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,YAAY,CAAwB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Cache seam. Hot, non-personalized reads (public catalogue/content feeds) load
|
|
3
|
+
* through this adapter so the backend is swappable: the default binding is an
|
|
4
|
+
* in-process TTL cache (zero deps), process-local so invalidation does NOT
|
|
5
|
+
* propagate across replicas. Set REDIS_URL to bind the shipped Redis reference
|
|
6
|
+
* adapter (cross-replica invalidation) with zero consumer code; rebind CACHE via
|
|
7
|
+
* an overlay for any other backend.
|
|
8
|
+
*/
|
|
7
9
|
import { createToken } from './token.js';
|
|
8
10
|
export const CACHE = createToken('CACHE');
|
|
9
11
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/contracts/adapters/cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/contracts/adapters/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AASrD,MAAM,CAAC,MAAM,KAAK,GAAwB,WAAW,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -2,6 +2,10 @@ import { type Token } from './token.js';
|
|
|
2
2
|
export type ChatBlockWriter = {
|
|
3
3
|
blockUser(blockerId: string, blockedId: string): Promise<unknown>;
|
|
4
4
|
ignoreUser(ignorerId: string, ignoredId: string): Promise<unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* Union of blocked + ignored ids for a viewer - chat-commands uses this to keep
|
|
7
|
+
* blocked/ignored players out of player search results.
|
|
8
|
+
*/
|
|
5
9
|
getExcludedUserIds(viewerId: string): Promise<string[]>;
|
|
6
10
|
};
|
|
7
11
|
export declare const CHAT_BLOCK_WRITER: Token<ChatBlockWriter>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-block-writer.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-block-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-block-writer.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-block-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAoC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-block-writer.js","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-block-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-block-writer.js","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-block-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAYrD,MAAM,CAAC,MAAM,iBAAiB,GAA2B,WAAW,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -33,6 +33,14 @@ export type EmailTemplateRenderer = {
|
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
export declare const EMAIL_TEMPLATE_RENDERER: Token<EmailTemplateRenderer>;
|
|
36
|
+
/**
|
|
37
|
+
* Production-safe English-only copy, shared by `DefaultEmailTemplateRenderer`
|
|
38
|
+
* (packages/core/src/pam/identity/adapters/) and the SessionResolver-only createAuth()
|
|
39
|
+
* fallback in server/auth/auth.ts - single source of truth so the two never drift.
|
|
40
|
+
* Openora core intentionally ships English-only; overlays that need other languages
|
|
41
|
+
* replace the renderer via ctx.provide(EMAIL_TEMPLATE_RENDERER, () => new MyRenderer()) -
|
|
42
|
+
* `render`'s `locale` param (sourced from IdentityService.resolveUserLanguage) exists for exactly that seam.
|
|
43
|
+
*/
|
|
36
44
|
export declare const DEFAULT_EMAIL_TEMPLATES: {
|
|
37
45
|
[K in EmailTemplateKey]: (data: EmailTemplateData[K]) => {
|
|
38
46
|
subject: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/email-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,oBAAoB,GACpB,0BAA0B,GAC1B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,qBAAqB,EAAE;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,wBAAwB,EAAE;QAAE,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC9C,CAAC;AAWF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,CAAC,SAAS,gBAAgB,EAC/B,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,qBAAqB,CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"email-template.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/email-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,oBAAoB,GACpB,0BAA0B,GAC1B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,qBAAqB,EAAE;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,wBAAwB,EAAE;QAAE,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC9C,CAAC;AAWF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,CAAC,SAAS,gBAAgB,EAC/B,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,qBAAqB,CACF,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE;KACnC,CAAC,IAAI,gBAAgB,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAgC3F,CAAC"}
|
|
@@ -7,12 +7,14 @@ const formatEmailDate = (value) => value === null
|
|
|
7
7
|
timeZone: 'UTC',
|
|
8
8
|
}).format(value)} UTC`;
|
|
9
9
|
export const EMAIL_TEMPLATE_RENDERER = createToken('EMAIL_TEMPLATE_RENDERER');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Production-safe English-only copy, shared by `DefaultEmailTemplateRenderer`
|
|
12
|
+
* (packages/core/src/pam/identity/adapters/) and the SessionResolver-only createAuth()
|
|
13
|
+
* fallback in server/auth/auth.ts - single source of truth so the two never drift.
|
|
14
|
+
* Openora core intentionally ships English-only; overlays that need other languages
|
|
15
|
+
* replace the renderer via ctx.provide(EMAIL_TEMPLATE_RENDERER, () => new MyRenderer()) -
|
|
16
|
+
* `render`'s `locale` param (sourced from IdentityService.resolveUserLanguage) exists for exactly that seam.
|
|
17
|
+
*/
|
|
16
18
|
export const DEFAULT_EMAIL_TEMPLATES = {
|
|
17
19
|
verifyEmail: (data) => ({
|
|
18
20
|
subject: 'Verify your email',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template.js","sourceRoot":"","sources":["../../../src/contracts/adapters/email-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAqBrD,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAU,EAAE,CACrD,KAAK,KAAK,IAAI;IACZ,CAAC,CAAC,gBAAgB;IAClB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClC,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAU7B,MAAM,CAAC,MAAM,uBAAuB,GAClC,WAAW,CAAwB,yBAAyB,CAAC,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"email-template.js","sourceRoot":"","sources":["../../../src/contracts/adapters/email-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAqBrD,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAU,EAAE,CACrD,KAAK,KAAK,IAAI;IACZ,CAAC,CAAC,gBAAgB;IAClB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClC,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAU7B,MAAM,CAAC,MAAM,uBAAuB,GAClC,WAAW,CAAwB,yBAAyB,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAEhC;IACF,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,sCAAsC,IAAI,CAAC,GAAG,2BAA2B,IAAI,CAAC,KAAK,EAAE;KAC5F,CAAC;IACF,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,qBAAqB;QAC9B,IAAI,EAAE,gCAAgC,IAAI,CAAC,GAAG,EAAE;KACjD,CAAC;IACF,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,iCAAiC;QAC1C,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,WAAW,iCAAiC;KAClG,CAAC;IACF,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,qCAAqC;QAC9C,IAAI,EAAE,wDAAwD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,+DAA+D;KAC7J,CAAC;IACF,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,mCAAmC;QAC5C,IAAI,EAAE,kEAAkE;KACzE,CAAC;IACF,wBAAwB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,iCAAiC;QAC1C,IAAI,EAAE,IAAI,CAAC,WAAW;YACpB,CAAC,CAAC,qFAAqF;YACvF,CAAC,CAAC,uCAAuC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,iDAAiD;KAC5H,CAAC;IACF,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,qCAAqC;QAC9C,IAAI,EAAE,+DAA+D;KACtE,CAAC;CACH,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email-send seam. The identity module uses this to deliver password-reset and
|
|
3
|
+
* verification emails. The default implementation delegates to
|
|
4
|
+
* NOTIFICATION_DELIVERY_ADAPTER (log-to-stdout in dev); operators swap it via
|
|
5
|
+
* an overlay: ctx.provide(SEND_EMAIL, () => new MyEmailAdapter())
|
|
6
|
+
* Load your overlay AFTER the identity plugin in extensions.config.ts.
|
|
7
|
+
*/
|
|
1
8
|
import { type Token } from './token.js';
|
|
2
9
|
export type SendEmailPort = {
|
|
3
10
|
send(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/email.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/email.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,aAAa,CAA4C,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Email-send seam. The identity module uses this to deliver password-reset and
|
|
3
|
+
* verification emails. The default implementation delegates to
|
|
4
|
+
* NOTIFICATION_DELIVERY_ADAPTER (log-to-stdout in dev); operators swap it via
|
|
5
|
+
* an overlay: ctx.provide(SEND_EMAIL, () => new MyEmailAdapter())
|
|
6
|
+
* Load your overlay AFTER the identity plugin in extensions.config.ts.
|
|
7
|
+
*/
|
|
6
8
|
import { createToken } from './token.js';
|
|
7
9
|
export const SEND_EMAIL = createToken('SEND_EMAIL');
|
|
8
10
|
//# sourceMappingURL=email.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/contracts/adapters/email.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/contracts/adapters/email.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAMrD,MAAM,CAAC,MAAM,UAAU,GAAyB,WAAW,CAAgB,YAAY,CAAC,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gaming integration seam. A game studio/RGS implements GameAdapter; bind a
|
|
3
|
+
* concrete adapter to GAME_ADAPTER in the module's plugin.ts.
|
|
4
|
+
*/
|
|
1
5
|
import { type Token } from './token.js';
|
|
2
6
|
export type GameAdapter = {
|
|
3
7
|
launchGame(gameId: string, userId: string, currency: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/game.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/game.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,WAAW,CAA+B,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Gaming integration seam. A game studio/RGS implements GameAdapter; bind a
|
|
3
|
+
* concrete adapter to GAME_ADAPTER in the module's plugin.ts.
|
|
4
|
+
*/
|
|
3
5
|
import { createToken } from './token.js';
|
|
4
6
|
export const GAME_ADAPTER = createToken('GAME_ADAPTER');
|
|
5
7
|
//# sourceMappingURL=game.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.js","sourceRoot":"","sources":["../../../src/contracts/adapters/game.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"game.js","sourceRoot":"","sources":["../../../src/contracts/adapters/game.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAWrD,MAAM,CAAC,MAAM,YAAY,GAAuB,WAAW,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geo-IP seam. A vendor (eg MaxMind) implements GeoIpAdapter; bind a concrete
|
|
3
|
+
* adapter to GEO_IP_ADAPTER in the compliance module's plugin.ts.
|
|
4
|
+
*/
|
|
1
5
|
import { type Token } from './token.js';
|
|
2
6
|
export type GeoIpAdapter = {
|
|
3
7
|
lookup(ipAddress: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geo-ip.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/geo-ip.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geo-ip.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/geo-ip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,YAAY,CAAiC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Geo-IP seam. A vendor (eg MaxMind) implements GeoIpAdapter; bind a concrete
|
|
3
|
+
* adapter to GEO_IP_ADAPTER in the compliance module's plugin.ts.
|
|
4
|
+
*/
|
|
3
5
|
import { createToken } from './token.js';
|
|
4
6
|
export const GEO_IP_ADAPTER = createToken('GEO_IP_ADAPTER');
|
|
5
7
|
//# sourceMappingURL=geo-ip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geo-ip.js","sourceRoot":"","sources":["../../../src/contracts/adapters/geo-ip.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"geo-ip.js","sourceRoot":"","sources":["../../../src/contracts/adapters/geo-ip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAMrD,MAAM,CAAC,MAAM,cAAc,GAAwB,WAAW,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,sBAAsB,CACF,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC5E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,eAAe,CACF,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Identity options token. Downstream operators can provide this to configure
|
|
3
|
+
* identity behaviors such as login rate-limiting/lockouts.
|
|
4
|
+
*/
|
|
3
5
|
import { createToken } from './token.js';
|
|
4
6
|
export const IDENTITY_OPTIONS = createToken('IDENTITY_OPTIONS');
|
|
5
7
|
export const SESSION_COMMANDS = createToken('SESSION_COMMANDS');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/contracts/adapters/identity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/contracts/adapters/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAarD,MAAM,CAAC,MAAM,gBAAgB,GAC3B,WAAW,CAAyB,kBAAkB,CAAC,CAAC;AAM1D,MAAM,CAAC,MAAM,gBAAgB,GAC3B,WAAW,CAAkB,kBAAkB,CAAC,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @openora/core/contracts - the single home for vendor adapter interfaces (the swap
|
|
3
|
+
* seams). A module's service depends on an adapter interface; an operator binds
|
|
4
|
+
* a concrete implementation to its DI token in the module's plugin.ts. One file
|
|
5
|
+
* per service category. See AGENTS.md "third-party integration" in the decision tree.
|
|
6
|
+
*/
|
|
7
|
+
export type { AnyToken, Token, SealedToken, ClientPageToken, TokenCatalog, TokenCatalogValues, TokenValue, } from './token.js';
|
|
2
8
|
export { createToken, createSealedToken, createClientPageToken } from './token.js';
|
|
3
9
|
export type { EventEnvelope, MessageBrokerAdapter, BrokerHandler, SubscribeOptions, } from './broker.js';
|
|
4
10
|
export { MESSAGE_BROKER } from './broker.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @openora/core/contracts - the single home for vendor adapter interfaces (the swap
|
|
3
|
+
* seams). A module's service depends on an adapter interface; an operator binds
|
|
4
|
+
* a concrete implementation to its DI token in the module's plugin.ts. One file
|
|
5
|
+
* per service category. See AGENTS.md "third-party integration" in the decision tree.
|
|
6
|
+
*/
|
|
5
7
|
export { createToken, createSealedToken, createClientPageToken } from './token.js';
|
|
6
8
|
export { MESSAGE_BROKER } from './broker.js';
|
|
7
9
|
export { OUTBOX } from './outbox.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQnF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAcvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASlD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AASnC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAS9F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAS/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background-job seam. Modules enqueue durable, retryable, schedulable work
|
|
3
|
+
* through this adapter, so the queue driver is swappable: the default binding is
|
|
4
|
+
* an in-process queue (zero dependencies - good for `pnpm dev`, seed and tests);
|
|
5
|
+
* a downstream operator binds a durable driver (BullMQ/Redis is the reference
|
|
6
|
+
* overlay) to JOB_QUEUE without touching modules. Delivery is at-least-once, so
|
|
7
|
+
* handlers MUST be idempotent (use `idempotencyKey` + a DB guard for money jobs).
|
|
8
|
+
* Distinct from MESSAGE_BROKER: the broker is "something happened" fan-out (the
|
|
9
|
+
* EventBus facade); JOB_QUEUE is "execute this unit of work later, with delivery
|
|
10
|
+
* and retry control". See ADR-0014.
|
|
11
|
+
*/
|
|
1
12
|
import { type Token } from './token.js';
|
|
13
|
+
/**
|
|
14
|
+
* A queue name is a branded string so registrations and enqueues line up and a
|
|
15
|
+
* bare string can't be passed by accident.
|
|
16
|
+
*/
|
|
2
17
|
export type QueueName = string & {
|
|
3
18
|
readonly __brand: 'QueueName';
|
|
4
19
|
};
|
|
@@ -8,50 +23,90 @@ export type BackoffStrategy = {
|
|
|
8
23
|
delayMs: number;
|
|
9
24
|
};
|
|
10
25
|
export type EnqueueOptions = {
|
|
26
|
+
/**
|
|
27
|
+
* Stable key -> at most one active job with this key (dedupe / idempotency).
|
|
28
|
+
* Drivers map this to BullMQ's jobId. Required-by-convention for money jobs;
|
|
29
|
+
* the handler must STILL guard duplicate execution with a DB unique constraint
|
|
30
|
+
* (queue dedupe alone is insufficient across a partial commit + retry).
|
|
31
|
+
*/
|
|
11
32
|
idempotencyKey?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Fan-in ordering: jobs sharing a key run in order, never concurrently
|
|
35
|
+
* (per-wallet, per-bet). Cross-key jobs still parallelise.
|
|
36
|
+
*/
|
|
12
37
|
orderingKey?: string;
|
|
13
38
|
delayMs?: number;
|
|
39
|
+
/** Total tries incl. the first (driver default if omitted). */
|
|
14
40
|
attempts?: number;
|
|
15
41
|
backoff?: BackoffStrategy;
|
|
42
|
+
/** Lower = sooner; a driver may ignore it. */
|
|
16
43
|
priority?: number;
|
|
44
|
+
/** Drop the job if not started within this window. */
|
|
17
45
|
ttlMs?: number;
|
|
46
|
+
/** Tracing/correlation metadata carried verbatim onto JobContext.meta. */
|
|
18
47
|
meta?: Record<string, string | undefined>;
|
|
19
48
|
};
|
|
20
49
|
export type RepeatOptions = {
|
|
50
|
+
/** eg '0 * * * *' (durable drivers only). */
|
|
21
51
|
cron?: string;
|
|
52
|
+
/** OR a fixed interval. */
|
|
22
53
|
everyMs?: number;
|
|
23
54
|
timezone?: string;
|
|
24
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Context handed to a worker handler. `payload` has already been validated by
|
|
58
|
+
* the registration's schema before the handler runs.
|
|
59
|
+
*/
|
|
25
60
|
export type JobContext<T> = {
|
|
26
61
|
id: string;
|
|
27
62
|
name: QueueName;
|
|
28
63
|
payload: T;
|
|
64
|
+
/** 1-based. */
|
|
29
65
|
attempt: number;
|
|
30
66
|
enqueuedAt: Date;
|
|
67
|
+
/** Carried metadata (correlationId, idempotencyKey) for tracing. */
|
|
31
68
|
meta: Record<string, string | undefined>;
|
|
32
69
|
};
|
|
33
70
|
export type JobHandler<T> = (ctx: JobContext<T>) => void | Promise<void>;
|
|
34
71
|
export type WorkerOptions = {
|
|
72
|
+
/** Per-worker parallelism. */
|
|
35
73
|
concurrency?: number;
|
|
74
|
+
/** Strict per-orderingKey serialization even when concurrency > 1. */
|
|
36
75
|
serializeByOrderingKey?: boolean;
|
|
37
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* A minimal structural validator. A Zod schema (`ZodType<T>`) satisfies this, so
|
|
79
|
+
* callers pass their schema directly - but @openora/core/contracts stays zod-free (every
|
|
80
|
+
* other seam here imports nothing but ./token).
|
|
81
|
+
*/
|
|
38
82
|
export type PayloadSchema<T> = {
|
|
39
83
|
parse(data: unknown): T;
|
|
40
84
|
};
|
|
85
|
+
/**
|
|
86
|
+
* What an overlay registers to start consuming a queue. The schema is the
|
|
87
|
+
* payload contract - validated before the handler runs, no vendor type leaks.
|
|
88
|
+
*/
|
|
41
89
|
export type WorkerRegistration<T> = {
|
|
42
90
|
queue: QueueName;
|
|
43
91
|
schema: PayloadSchema<T>;
|
|
44
92
|
handler: JobHandler<T>;
|
|
45
93
|
options?: WorkerOptions;
|
|
94
|
+
/**
|
|
95
|
+
* Invoked after attempts are exhausted (post-dead-letter hook): alert, persist
|
|
96
|
+
* the poison job, or trigger a compensating action. Never throws into the queue.
|
|
97
|
+
*/
|
|
46
98
|
onDeadLetter?: (ctx: JobContext<T>, error: Error) => void | Promise<void>;
|
|
47
99
|
};
|
|
48
100
|
export type JobQueueAdapter = {
|
|
49
101
|
enqueue<T>(queue: QueueName, payload: T, opts?: EnqueueOptions): Promise<{
|
|
50
102
|
id: string;
|
|
51
103
|
}>;
|
|
104
|
+
/** Idempotent registration of a recurring schedule (keyed by queue + scheduleId). */
|
|
52
105
|
schedule<T>(queue: QueueName, scheduleId: string, payload: T, repeat: RepeatOptions): Promise<void>;
|
|
53
106
|
unschedule(queue: QueueName, scheduleId: string): Promise<void>;
|
|
107
|
+
/** Start consuming a queue. Called once per worker overlay during boot. */
|
|
54
108
|
registerWorker<T>(registration: WorkerRegistration<T>): void;
|
|
109
|
+
/** Graceful drain: stop accepting, finish in-flight, close connections. */
|
|
55
110
|
close(): Promise<void>;
|
|
56
111
|
};
|
|
57
112
|
export declare const JOB_QUEUE: Token<JobQueueAdapter>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-queue.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/job-queue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-queue.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/job-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Background-job seam. Modules enqueue durable, retryable, schedulable work
|
|
3
|
+
* through this adapter, so the queue driver is swappable: the default binding is
|
|
4
|
+
* an in-process queue (zero dependencies - good for `pnpm dev`, seed and tests);
|
|
5
|
+
* a downstream operator binds a durable driver (BullMQ/Redis is the reference
|
|
6
|
+
* overlay) to JOB_QUEUE without touching modules. Delivery is at-least-once, so
|
|
7
|
+
* handlers MUST be idempotent (use `idempotencyKey` + a DB guard for money jobs).
|
|
8
|
+
* Distinct from MESSAGE_BROKER: the broker is "something happened" fan-out (the
|
|
9
|
+
* EventBus facade); JOB_QUEUE is "execute this unit of work later, with delivery
|
|
10
|
+
* and retry control". See ADR-0014.
|
|
11
|
+
*/
|
|
10
12
|
import { createToken } from './token.js';
|
|
11
13
|
export const queue = (name) => name;
|
|
12
14
|
export const JOB_QUEUE = createToken('JOB_QUEUE');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-queue.js","sourceRoot":"","sources":["../../../src/contracts/adapters/job-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"job-queue.js","sourceRoot":"","sources":["../../../src/contracts/adapters/job-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAOrD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAa,EAAE,CAAC,IAAiB,CAAC;AAsGpE,MAAM,CAAC,MAAM,SAAS,GAA2B,WAAW,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push port for Responsible-Gambling login enforcement. Owned + bound by the identity
|
|
3
|
+
* module (it owns the `user` table); compliance depends only on this port to block or
|
|
4
|
+
* unblock a player's login, never on the identity schema. `block` also revokes all of
|
|
5
|
+
* the player's active sessions (the RG session-termination requirement). `until: null`
|
|
6
|
+
* means an indefinite block (self-exclusion / permanent); a Date is the cooling-off
|
|
7
|
+
* expiry the login gate auto-clears once elapsed. See ADR-0017.
|
|
8
|
+
*/
|
|
1
9
|
import { type Token } from './token.js';
|
|
2
10
|
export type LoginEnforcementPort = {
|
|
3
11
|
block(userId: string, opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-enforcement.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/login-enforcement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login-enforcement.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/login-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,oBAAoB,CAAoC,CAAC"}
|