@porulle/core 0.13.0 → 0.15.0
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/auth/actor.d.ts +10 -0
- package/dist/auth/actor.d.ts.map +1 -0
- package/dist/auth/actor.js +91 -0
- package/dist/auth/middleware.d.ts +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +5 -89
- package/dist/auth/setup.d.ts.map +1 -1
- package/dist/auth/setup.js +2 -1
- package/dist/config/types.d.ts +4 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/kernel/database/plugin-types.d.ts +11 -0
- package/dist/kernel/database/plugin-types.d.ts.map +1 -1
- package/dist/kernel/database/scoped-db.d.ts +12 -0
- package/dist/kernel/database/scoped-db.d.ts.map +1 -1
- package/dist/kernel/database/scoped-db.js +12 -0
- package/dist/kernel/plugin/manifest.d.ts +3 -0
- package/dist/kernel/plugin/manifest.d.ts.map +1 -1
- package/dist/kernel/plugin/manifest.js +35 -6
- package/dist/modules/search/adapter.d.ts +5 -0
- package/dist/modules/search/adapter.d.ts.map +1 -1
- package/dist/modules/search/module.d.ts.map +1 -1
- package/dist/modules/search/module.js +3 -1
- package/dist/runtime/kernel-types.d.ts +7 -0
- package/dist/runtime/kernel-types.d.ts.map +1 -1
- package/dist/runtime/kernel.d.ts +1 -0
- package/dist/runtime/kernel.d.ts.map +1 -1
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/runtime/server.js +33 -1
- package/package.json +3 -3
- package/src/auth/actor.ts +110 -0
- package/src/auth/middleware.ts +11 -99
- package/src/auth/setup.ts +2 -1
- package/src/config/types.ts +4 -2
- package/src/index.ts +6 -1
- package/src/kernel/database/plugin-types.ts +11 -0
- package/src/kernel/database/scoped-db.ts +12 -0
- package/src/kernel/plugin/manifest.ts +57 -12
- package/src/modules/search/adapter.ts +3 -0
- package/src/modules/search/module.ts +4 -1
- package/src/runtime/kernel-types.ts +9 -0
- package/src/runtime/kernel.ts +1 -0
- package/src/runtime/server.ts +39 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CommerceConfig } from "../config/types.js";
|
|
2
|
+
import type { Actor } from "./types.js";
|
|
3
|
+
import type { AuthInstance } from "./setup.js";
|
|
4
|
+
export declare const AUTH_COOKIE_PREFIX = "uc";
|
|
5
|
+
export declare const SESSION_COOKIE_NAME = "uc.session_token";
|
|
6
|
+
export declare const DEFAULT_CUSTOMER_PERMISSIONS: readonly ["catalog:read", "cart:create", "cart:read", "cart:update", "orders:create", "orders:read:own", "customers:read:self", "customers:update:self"];
|
|
7
|
+
export declare function getCustomerPermissions(config: CommerceConfig): string[];
|
|
8
|
+
/** Resolve a better-auth session and its porulle organization permissions. */
|
|
9
|
+
export declare function resolveActor(headers: Headers, auth: AuthInstance, config: CommerceConfig, request?: Request): Promise<Actor | null>;
|
|
10
|
+
//# sourceMappingURL=actor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/auth/actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,qBAAwC,CAAC;AAEzE,eAAO,MAAM,4BAA4B,0JAS/B,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAEvE;AAYD,8EAA8E;AAC9E,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,OAAsD,GAC9D,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAsEvB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DEFAULT_ORG_ID } from "./org.js";
|
|
2
|
+
export const AUTH_COOKIE_PREFIX = "uc";
|
|
3
|
+
export const SESSION_COOKIE_NAME = `${AUTH_COOKIE_PREFIX}.session_token`;
|
|
4
|
+
export const DEFAULT_CUSTOMER_PERMISSIONS = [
|
|
5
|
+
"catalog:read",
|
|
6
|
+
"cart:create",
|
|
7
|
+
"cart:read",
|
|
8
|
+
"cart:update",
|
|
9
|
+
"orders:create",
|
|
10
|
+
"orders:read:own",
|
|
11
|
+
"customers:read:self",
|
|
12
|
+
"customers:update:self",
|
|
13
|
+
];
|
|
14
|
+
export function getCustomerPermissions(config) {
|
|
15
|
+
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
16
|
+
}
|
|
17
|
+
function resolvePermissions(session, config) {
|
|
18
|
+
const role = session.session.activeOrganizationRole;
|
|
19
|
+
if (!role)
|
|
20
|
+
return getCustomerPermissions(config);
|
|
21
|
+
const roleConfig = config.auth?.roles?.[role];
|
|
22
|
+
return roleConfig ? roleConfig.permissions : [];
|
|
23
|
+
}
|
|
24
|
+
/** Resolve a better-auth session and its porulle organization permissions. */
|
|
25
|
+
export async function resolveActor(headers, auth, config, request = new Request("http://localhost", { headers })) {
|
|
26
|
+
let session;
|
|
27
|
+
try {
|
|
28
|
+
session = (await auth.api.getSession({
|
|
29
|
+
headers,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (!session)
|
|
36
|
+
return null;
|
|
37
|
+
const defaultOrgId = config.auth?.defaultOrganizationId ?? DEFAULT_ORG_ID;
|
|
38
|
+
let role = session.session.activeOrganizationRole;
|
|
39
|
+
let orgId = session.session.activeOrganizationId;
|
|
40
|
+
if (!role && auth.api.getFullOrganization) {
|
|
41
|
+
try {
|
|
42
|
+
const org = await auth.api.getFullOrganization({
|
|
43
|
+
query: { organizationId: orgId ?? defaultOrgId },
|
|
44
|
+
headers,
|
|
45
|
+
});
|
|
46
|
+
if (org?.members) {
|
|
47
|
+
const membership = org.members.find((m) => m.userId === session.user.id);
|
|
48
|
+
if (membership) {
|
|
49
|
+
role = membership.role;
|
|
50
|
+
orgId = orgId ?? defaultOrgId;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// fall through — treat as customer
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
59
|
+
try {
|
|
60
|
+
const roleResult = await auth.api.getActiveMemberRole({ headers });
|
|
61
|
+
role = roleResult?.role;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// fall through — treat as customer
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!orgId && config.auth?.storeResolver) {
|
|
68
|
+
try {
|
|
69
|
+
const resolved = await config.auth.storeResolver(request);
|
|
70
|
+
if (resolved)
|
|
71
|
+
orgId = resolved;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// fall through — use defaultOrgId
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const enrichedSession = {
|
|
78
|
+
...session,
|
|
79
|
+
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
type: "user",
|
|
83
|
+
userId: session.user.id,
|
|
84
|
+
email: session.user.email ?? null,
|
|
85
|
+
name: session.user.name ?? "User",
|
|
86
|
+
vendorId: session.user.vendorId ?? null,
|
|
87
|
+
organizationId: orgId ?? defaultOrgId,
|
|
88
|
+
role: role ?? "customer",
|
|
89
|
+
permissions: resolvePermissions(enrichedSession, config),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from "hono";
|
|
2
2
|
import type { CommerceConfig } from "../config/types.js";
|
|
3
3
|
import type { AuthInstance } from "./setup.js";
|
|
4
|
-
export
|
|
4
|
+
export { DEFAULT_CUSTOMER_PERMISSIONS } from "./actor.js";
|
|
5
5
|
export declare function authMiddleware(auth: AuthInstance, config: CommerceConfig): MiddlewareHandler;
|
|
6
6
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAK1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CAiMnB"}
|
package/dist/auth/middleware.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getCustomerPermissions, resolveActor } from "./actor.js";
|
|
1
2
|
import { DEFAULT_ORG_ID } from "./org.js";
|
|
2
3
|
import { isStrictOrgResolution } from "./strict-org-resolution.js";
|
|
3
4
|
function emptyToNull(value) {
|
|
@@ -6,29 +7,9 @@ function emptyToNull(value) {
|
|
|
6
7
|
// Exported so the storefront contract can be pinned by a test: an anonymous
|
|
7
8
|
// visitor resolved by `storeResolver` gets these permissions, so dropping
|
|
8
9
|
// `catalog:read` here would 401 every public storefront read.
|
|
9
|
-
export
|
|
10
|
-
"catalog:read",
|
|
11
|
-
"cart:create",
|
|
12
|
-
"cart:read",
|
|
13
|
-
"cart:update",
|
|
14
|
-
"orders:create",
|
|
15
|
-
"orders:read:own",
|
|
16
|
-
"customers:read:self",
|
|
17
|
-
"customers:update:self",
|
|
18
|
-
];
|
|
19
|
-
function getCustomerPermissions(config) {
|
|
20
|
-
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
21
|
-
}
|
|
10
|
+
export { DEFAULT_CUSTOMER_PERMISSIONS } from "./actor.js";
|
|
22
11
|
const LEGACY_STORE_RESOLVER_WARN_COOLDOWN_MS = 60_000;
|
|
23
12
|
let lastLegacyStoreResolverWarnAt = 0;
|
|
24
|
-
function resolvePermissions(session, config) {
|
|
25
|
-
const role = session.session.activeOrganizationRole;
|
|
26
|
-
if (!role) {
|
|
27
|
-
return getCustomerPermissions(config);
|
|
28
|
-
}
|
|
29
|
-
const roleConfig = config.auth?.roles?.[role];
|
|
30
|
-
return roleConfig ? roleConfig.permissions : [];
|
|
31
|
-
}
|
|
32
13
|
export function authMiddleware(auth, config) {
|
|
33
14
|
return async (c, next) => {
|
|
34
15
|
// Resolve the default org from config, falling back to deprecated constant
|
|
@@ -50,74 +31,9 @@ export function authMiddleware(auth, config) {
|
|
|
50
31
|
}
|
|
51
32
|
}
|
|
52
33
|
}
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (session) {
|
|
57
|
-
// Better Auth's session stores activeOrganizationId, but often not the role.
|
|
58
|
-
// For single-store apps (org_default), users may never call set-active,
|
|
59
|
-
// so activeOrganizationId can be null even for valid org members.
|
|
60
|
-
let role = session.session.activeOrganizationRole;
|
|
61
|
-
let orgId = session.session.activeOrganizationId;
|
|
62
|
-
// If no active org, try to resolve the user's membership in org_default.
|
|
63
|
-
// This handles the common case where the user is a member but hasn't
|
|
64
|
-
// called organization/set-active (single-store apps, seed scripts, tests).
|
|
65
|
-
if (!role && auth.api.getFullOrganization) {
|
|
66
|
-
try {
|
|
67
|
-
const org = await auth.api.getFullOrganization({
|
|
68
|
-
query: { organizationId: orgId ?? defaultOrgId },
|
|
69
|
-
headers: c.req.raw.headers,
|
|
70
|
-
});
|
|
71
|
-
if (org?.members) {
|
|
72
|
-
const membership = org.members.find((m) => m.userId === session.user.id);
|
|
73
|
-
if (membership) {
|
|
74
|
-
role = membership.role;
|
|
75
|
-
orgId = orgId ?? defaultOrgId;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// fall through — treat as customer
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// Also try getActiveMemberRole if active org is set
|
|
84
|
-
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
85
|
-
try {
|
|
86
|
-
const roleResult = await auth.api.getActiveMemberRole({
|
|
87
|
-
headers: c.req.raw.headers,
|
|
88
|
-
});
|
|
89
|
-
role = roleResult?.role;
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// fall through — treat as customer
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// For customers without org membership, resolve the store from the request.
|
|
96
|
-
// This enables multi-store SaaS where each storefront is a different org.
|
|
97
|
-
if (!orgId && config.auth?.storeResolver) {
|
|
98
|
-
try {
|
|
99
|
-
const resolved = await config.auth.storeResolver(c.req.raw);
|
|
100
|
-
if (resolved)
|
|
101
|
-
orgId = resolved;
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// fall through — use defaultOrgId
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const enrichedSession = {
|
|
108
|
-
...session,
|
|
109
|
-
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
110
|
-
};
|
|
111
|
-
c.set("actor", {
|
|
112
|
-
type: "user",
|
|
113
|
-
userId: session.user.id,
|
|
114
|
-
email: session.user.email ?? null,
|
|
115
|
-
name: session.user.name ?? "User",
|
|
116
|
-
vendorId: session.user.vendorId ?? null,
|
|
117
|
-
organizationId: orgId ?? defaultOrgId,
|
|
118
|
-
role: role ?? "customer",
|
|
119
|
-
permissions: resolvePermissions(enrichedSession, config),
|
|
120
|
-
});
|
|
34
|
+
const actor = await resolveActor(c.req.raw.headers, auth, config, c.req.raw);
|
|
35
|
+
if (actor) {
|
|
36
|
+
c.set("actor", actor);
|
|
121
37
|
await next();
|
|
122
38
|
return;
|
|
123
39
|
}
|
package/dist/auth/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAkBrE;;;;;GAKG;AACH,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC;IACjD,OAAO,EAAE;QACP,UAAU,CAAC,OAAO,YAAY,CAAC;QAC/B,UAAU,CAAC,OAAO,MAAM,CAAC;QACzB,UAAU,CAAC,OAAO,GAAG,CAAC;QACtB,UAAU,CAAC,OAAO,SAAS,CAAC;QAC5B,UAAU,CAAC,OAAO,MAAM,CAAC;QACzB,UAAU,CAAC,OAAO,WAAW,CAAC;KAC/B,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAkKd"}
|
package/dist/auth/setup.js
CHANGED
|
@@ -3,6 +3,7 @@ import { betterAuth } from "better-auth";
|
|
|
3
3
|
import { apiKey } from "@better-auth/api-key";
|
|
4
4
|
import { organization, twoFactor, phoneNumber, jwt, bearer } from "better-auth/plugins";
|
|
5
5
|
import * as authSchema from "./auth-schema.js";
|
|
6
|
+
import { AUTH_COOKIE_PREFIX } from "./actor.js";
|
|
6
7
|
function resolveAuthDbProvider(provider) {
|
|
7
8
|
if (provider === "postgres" || provider === "postgresql" || provider === "pg")
|
|
8
9
|
return "pg";
|
|
@@ -125,7 +126,7 @@ export function createAuth(db, config) {
|
|
|
125
126
|
},
|
|
126
127
|
},
|
|
127
128
|
advanced: {
|
|
128
|
-
cookiePrefix:
|
|
129
|
+
cookiePrefix: AUTH_COOKIE_PREFIX,
|
|
129
130
|
useSecureCookies: process.env.NODE_ENV === "production",
|
|
130
131
|
// VAPT r2 (pi) finding: SameSite was never set anywhere. Without it,
|
|
131
132
|
// browsers default to Lax for new cookies, but the explicit setting
|
package/dist/config/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Actor } from "../auth/types.js";
|
|
|
3
3
|
import type { BeforeHook, AfterHook } from "../kernel/hooks/types.js";
|
|
4
4
|
import type { PaymentAdapter } from "../modules/payments/adapter.js";
|
|
5
5
|
import type { StorageAdapter } from "../modules/media/adapter.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { ConfigRouteKernel } from "../runtime/kernel.js";
|
|
7
7
|
import type { AuthInstance } from "../auth/setup.js";
|
|
8
8
|
import type { DatabaseAdapter } from "../kernel/database/adapter.js";
|
|
9
9
|
import type { TaxAdapter } from "../modules/tax/adapter.js";
|
|
@@ -433,7 +433,7 @@ export interface CommerceConfig {
|
|
|
433
433
|
* third argument so integrations can mint/revoke API keys or call
|
|
434
434
|
* `auth.api.*` without module-global holder shims.
|
|
435
435
|
*/
|
|
436
|
-
routes?: (app: Hono<any>, kernel:
|
|
436
|
+
routes?: (app: Hono<any>, kernel: ConfigRouteKernel, auth?: AuthInstance) => void;
|
|
437
437
|
/** Log level for structured logging. Default: "info". */
|
|
438
438
|
logLevel?: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
439
439
|
/**
|
|
@@ -447,6 +447,8 @@ export interface CommerceConfig {
|
|
|
447
447
|
api?: number;
|
|
448
448
|
/** Requests per minute for auth endpoints. Default: 10. */
|
|
449
449
|
auth?: number;
|
|
450
|
+
/** Requests per minute for session reads. Default: 120. */
|
|
451
|
+
session?: number;
|
|
450
452
|
/** Requests per minute for checkout. Default: 5. */
|
|
451
453
|
checkout?: number;
|
|
452
454
|
/** Attempts per 15 minutes for sign-in per email. Default: 10. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,8 +13,9 @@ export { createLogger } from "./runtime/logger.js";
|
|
|
13
13
|
export type { Logger as PinoLogger } from "./runtime/logger.js";
|
|
14
14
|
export { setupGracefulShutdown } from "./runtime/shutdown.js";
|
|
15
15
|
export { createKernel } from "./runtime/kernel.js";
|
|
16
|
-
export type { Kernel } from "./runtime/kernel.js";
|
|
16
|
+
export type { Kernel, ConfigRouteKernel, ConfigRouteDatabase } from "./runtime/kernel.js";
|
|
17
17
|
export type { Actor } from "./auth/types.js";
|
|
18
|
+
export { AUTH_COOKIE_PREFIX, resolveActor, SESSION_COOKIE_NAME, } from "./auth/actor.js";
|
|
18
19
|
export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
|
|
19
20
|
export { createSystemActor } from "./auth/system-actor.js";
|
|
20
21
|
export { OrganizationService } from "./modules/organization/service.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { createClientIpResolver } from "./runtime/client-ip.js";
|
|
|
9
9
|
export { createLogger } from "./runtime/logger.js";
|
|
10
10
|
export { setupGracefulShutdown } from "./runtime/shutdown.js";
|
|
11
11
|
export { createKernel } from "./runtime/kernel.js";
|
|
12
|
+
export { AUTH_COOKIE_PREFIX, resolveActor, SESSION_COOKIE_NAME, } from "./auth/actor.js";
|
|
12
13
|
export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
|
|
13
14
|
export { createSystemActor } from "./auth/system-actor.js";
|
|
14
15
|
export { OrganizationService } from "./modules/organization/service.js";
|
|
@@ -11,6 +11,17 @@ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
|
|
|
11
11
|
/**
|
|
12
12
|
* Database instance type for plugin services.
|
|
13
13
|
* This is the Drizzle PgDatabase with an opaque schema record.
|
|
14
|
+
*
|
|
15
|
+
* Tenant scoping depends on which handle you were given, not on this type.
|
|
16
|
+
* `PluginContext.database.db` is wrapped so that `insert`, `select`, `update`
|
|
17
|
+
* and `delete` on any table with an `organizationId` column are constrained to
|
|
18
|
+
* the request's organization. `PluginContext.database.unscoped` and the kernel
|
|
19
|
+
* handle passed to `config.routes` are not wrapped at all.
|
|
20
|
+
*
|
|
21
|
+
* `execute()` is never scoped, on any handle — see the scope-boundary note in
|
|
22
|
+
* `scoped-db.ts`. When you drop to raw SQL, filter by organization yourself and
|
|
23
|
+
* interpolate values as bind parameters (`sql`... ${value}`) rather than
|
|
24
|
+
* through `sql.raw`.
|
|
14
25
|
*/
|
|
15
26
|
export type PluginDb = PgDatabase<PgQueryResultHKT, Record<string, unknown>>;
|
|
16
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/plugin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/plugin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* Plugin route handlers receive this scoped db via PluginContext.database.db
|
|
10
10
|
* (organization resolved per operation from AsyncLocalStorage when used from
|
|
11
11
|
* plugin routes) or a fixed string / getter from router() / tests.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE BOUNDARY — what this does NOT cover:
|
|
14
|
+
*
|
|
15
|
+
* Only `insert`, `select`, `update` and `delete` are wrapped. `execute()` is
|
|
16
|
+
* deliberately outside the boundary: injecting a tenant predicate into
|
|
17
|
+
* arbitrary SQL would mean parsing it, and a parser that is wrong once is worse
|
|
18
|
+
* than no guarantee at all. So `db.execute(sql`...`)` on a scoped handle is
|
|
19
|
+
* exactly as unscoped as one on the raw handle — which is the surprising part,
|
|
20
|
+
* because the caller reached for the safe object and still has to filter by
|
|
21
|
+
* organization themselves.
|
|
22
|
+
*
|
|
23
|
+
* Adding a fifth wrapped method is fine. Adding a raw-SQL rewriter is not.
|
|
12
24
|
*/
|
|
13
25
|
export type ScopedOrganizationId = string | (() => string);
|
|
14
26
|
export declare function createScopedDb<TDb>(rawDb: TDb, orgSource: ScopedOrganizationId): TDb;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/scoped-db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/scoped-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAuD3D,wBAAgB,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,oBAAoB,GAAG,GAAG,CA2GpF"}
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* Plugin route handlers receive this scoped db via PluginContext.database.db
|
|
10
10
|
* (organization resolved per operation from AsyncLocalStorage when used from
|
|
11
11
|
* plugin routes) or a fixed string / getter from router() / tests.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE BOUNDARY — what this does NOT cover:
|
|
14
|
+
*
|
|
15
|
+
* Only `insert`, `select`, `update` and `delete` are wrapped. `execute()` is
|
|
16
|
+
* deliberately outside the boundary: injecting a tenant predicate into
|
|
17
|
+
* arbitrary SQL would mean parsing it, and a parser that is wrong once is worse
|
|
18
|
+
* than no guarantee at all. So `db.execute(sql`...`)` on a scoped handle is
|
|
19
|
+
* exactly as unscoped as one on the raw handle — which is the surprising part,
|
|
20
|
+
* because the caller reached for the safe object and still has to filter by
|
|
21
|
+
* organization themselves.
|
|
22
|
+
*
|
|
23
|
+
* Adding a fifth wrapped method is fine. Adding a raw-SQL rewriter is not.
|
|
12
24
|
*/
|
|
13
25
|
import { and, eq, getTableColumns } from "drizzle-orm";
|
|
14
26
|
function resolveOrganizationId(source) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RouteConfig } from "@hono/zod-openapi";
|
|
2
2
|
import type { PluginDb } from "../database/plugin-types.js";
|
|
3
|
+
import type { ConfigRouteKernel, Kernel } from "../../runtime/kernel.js";
|
|
3
4
|
import type { CommerceConfig, CommercePlugin, PluginPermission } from "../../config/types.js";
|
|
4
5
|
import type { TaskDefinition } from "../jobs/types.js";
|
|
5
6
|
export interface PluginLogger {
|
|
@@ -51,6 +52,8 @@ export interface PluginContext {
|
|
|
51
52
|
*/
|
|
52
53
|
auth?: unknown;
|
|
53
54
|
}
|
|
55
|
+
export declare function createRateLimitedUnscopedAccessWarning(logger: Pick<PluginLogger, "warn">, message: string): () => void;
|
|
56
|
+
export declare function buildConfigRoutesKernel(kernel: Kernel): ConfigRouteKernel;
|
|
54
57
|
export type { PluginPermission };
|
|
55
58
|
export interface CommercePluginManifest {
|
|
56
59
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/kernel/plugin/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/kernel/plugin/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { createScopedDb } from "../database/scoped-db.js";
|
|
|
4
4
|
import { getPluginDatabaseScopeOrganizationId, runWithPluginDatabaseScope, } from "../database/plugin-db-context.js";
|
|
5
5
|
const UNSCOPED_WARN_COOLDOWN_MS = 60_000;
|
|
6
6
|
const UNSCOPED_WARN_EVERY_N = 100;
|
|
7
|
-
|
|
7
|
+
const configRouteRawDatabases = new WeakMap();
|
|
8
|
+
export function createRateLimitedUnscopedAccessWarning(logger, message) {
|
|
8
9
|
let lastWarnAt = 0;
|
|
9
10
|
let accessCount = 0;
|
|
10
11
|
return () => {
|
|
@@ -14,14 +15,41 @@ function createRateLimitedUnscopedAccessWarning(logger) {
|
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
lastWarnAt = now;
|
|
17
|
-
logger.warn(
|
|
18
|
+
logger.warn(message);
|
|
18
19
|
};
|
|
19
20
|
}
|
|
21
|
+
function getPluginDatabaseOrganizationId(commerceConfig) {
|
|
22
|
+
return (getPluginDatabaseScopeOrganizationId() ??
|
|
23
|
+
resolveOrgIdForCommerce(null, commerceConfig));
|
|
24
|
+
}
|
|
25
|
+
function getRawDatabaseForConfigRoutes(database) {
|
|
26
|
+
if (database && typeof database === "object") {
|
|
27
|
+
return configRouteRawDatabases.get(database) ?? database;
|
|
28
|
+
}
|
|
29
|
+
return database;
|
|
30
|
+
}
|
|
31
|
+
export function buildConfigRoutesKernel(kernel) {
|
|
32
|
+
const rawDatabase = getRawDatabaseForConfigRoutes(kernel.database);
|
|
33
|
+
const rawDb = rawDatabase.db;
|
|
34
|
+
const scopedDb = createScopedDb(rawDb, () => getPluginDatabaseOrganizationId(kernel.config));
|
|
35
|
+
const warnUnscoped = createRateLimitedUnscopedAccessWarning(kernel.logger, "[config:database] kernel.database.db is unscoped; prefer kernel.database.scoped for tenant-scoped access.");
|
|
36
|
+
const database = {
|
|
37
|
+
...rawDatabase,
|
|
38
|
+
get db() {
|
|
39
|
+
warnUnscoped();
|
|
40
|
+
return rawDatabase.db;
|
|
41
|
+
},
|
|
42
|
+
get scoped() {
|
|
43
|
+
return scopedDb;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
configRouteRawDatabases.set(database, rawDatabase);
|
|
47
|
+
return { ...kernel, database };
|
|
48
|
+
}
|
|
20
49
|
function buildPluginContextDatabase(rawDb, transactionFn, commerceConfig, logger) {
|
|
21
|
-
const orgGetter = () =>
|
|
22
|
-
resolveOrgIdForCommerce(null, commerceConfig);
|
|
50
|
+
const orgGetter = () => getPluginDatabaseOrganizationId(commerceConfig);
|
|
23
51
|
const scopedDb = createScopedDb(rawDb, orgGetter);
|
|
24
|
-
const warnUnscoped = createRateLimitedUnscopedAccessWarning(logger);
|
|
52
|
+
const warnUnscoped = createRateLimitedUnscopedAccessWarning(logger, "[plugin:database] PluginContext.database.unscoped is deprecated (MT-4 escape hatch); prefer ctx.database.db for tenant-scoped access.");
|
|
25
53
|
return {
|
|
26
54
|
get db() {
|
|
27
55
|
return scopedDb;
|
|
@@ -126,12 +154,13 @@ export function defineCommercePlugin(manifest) {
|
|
|
126
154
|
routes: (app, kernel, auth) => {
|
|
127
155
|
existingRoutes?.(app, kernel, auth);
|
|
128
156
|
const k = kernel;
|
|
157
|
+
const rawDatabase = getRawDatabaseForConfigRoutes(k.database);
|
|
129
158
|
// Narrow DatabaseAdapter<unknown> → PluginContext.database once here.
|
|
130
159
|
// All plugin code receives typed PluginDb — no casts downstream.
|
|
131
160
|
const regs = pluginRoutes({
|
|
132
161
|
config: k.config,
|
|
133
162
|
services: k.services,
|
|
134
|
-
database: buildPluginContextDatabase(
|
|
163
|
+
database: buildPluginContextDatabase(rawDatabase.db, rawDatabase.transaction, k.config, k.logger),
|
|
135
164
|
logger: k.logger,
|
|
136
165
|
...(auth !== undefined ? { auth } : {}),
|
|
137
166
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Result } from "../../kernel/result.js";
|
|
2
|
+
import type { PluginDb } from "../../kernel/database/plugin-types.js";
|
|
2
3
|
export interface SearchDocument {
|
|
3
4
|
id: string;
|
|
4
5
|
organizationId?: string;
|
|
@@ -51,6 +52,10 @@ export interface SearchQueryResult {
|
|
|
51
52
|
}
|
|
52
53
|
export interface SearchAdapter {
|
|
53
54
|
readonly providerId: string;
|
|
55
|
+
/** Called once when the search module wires the adapter to the live database. */
|
|
56
|
+
init?(deps: {
|
|
57
|
+
db: PluginDb;
|
|
58
|
+
}): void;
|
|
54
59
|
index(documents: SearchDocument[]): Promise<Result<void>>;
|
|
55
60
|
remove(ids: string[]): Promise<Result<void>>;
|
|
56
61
|
search(params: SearchQueryParams): Promise<Result<SearchQueryResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/modules/search/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/modules/search/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/search/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/search/module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,YAAY,2GAqBxB,CAAC"}
|
|
@@ -6,12 +6,14 @@ export const searchModule = defineModule({
|
|
|
6
6
|
schema: () => ({}),
|
|
7
7
|
service: (deps) => {
|
|
8
8
|
const config = deps.config;
|
|
9
|
+
const adapter = config.search?.adapter;
|
|
10
|
+
adapter?.init?.({ db: deps.db.db });
|
|
9
11
|
return new SearchService({
|
|
10
12
|
catalogRepository: deps.services.catalog.repository,
|
|
11
13
|
resolveEntityFieldDefinitions: deps.services.catalog.resolveEntityFieldDefinitions.bind(deps.services.catalog),
|
|
12
14
|
config,
|
|
13
15
|
...(config.entities ? { entities: config.entities } : {}),
|
|
14
|
-
...(
|
|
16
|
+
...(adapter ? { adapter } : {}),
|
|
15
17
|
...(config.search?.defaultFacets
|
|
16
18
|
? { defaultFacets: config.search.defaultFacets }
|
|
17
19
|
: {}),
|