@open-mercato/shared 0.6.7-develop.6860.1.f796b22e80 → 0.6.7
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/.turbo/turbo-build.log +1 -1
- package/AGENTS.md +6 -57
- package/build.mjs +4 -2
- package/dist/lib/auth/server.js +2 -15
- package/dist/lib/auth/server.js.map +2 -2
- package/dist/lib/bootstrap/dynamicLoader.js +43 -117
- package/dist/lib/bootstrap/dynamicLoader.js.map +2 -2
- package/dist/lib/commands/command-bus.js +1 -5
- package/dist/lib/commands/command-bus.js.map +2 -2
- package/dist/lib/commands/command-interceptor-runner.js +2 -2
- package/dist/lib/commands/command-interceptor-runner.js.map +2 -2
- package/dist/lib/crud/enricher-runner.js +11 -2
- package/dist/lib/crud/enricher-runner.js.map +2 -2
- package/dist/lib/crud/factory.js +4 -63
- package/dist/lib/crud/factory.js.map +2 -2
- package/dist/lib/crud/interceptor-runner.js +2 -2
- package/dist/lib/crud/interceptor-runner.js.map +2 -2
- package/dist/lib/crud/mutation-guard-registry.js +2 -2
- package/dist/lib/crud/mutation-guard-registry.js.map +2 -2
- package/dist/lib/crud/types.js +0 -4
- package/dist/lib/crud/types.js.map +3 -3
- package/dist/lib/data/engine.js +11 -37
- package/dist/lib/data/engine.js.map +2 -2
- package/dist/lib/db/mikro.js +12 -3
- package/dist/lib/db/mikro.js.map +2 -2
- package/dist/lib/db/pg-errors.js +0 -42
- package/dist/lib/db/pg-errors.js.map +2 -2
- package/dist/lib/di/container.js +6 -48
- package/dist/lib/di/container.js.map +2 -2
- package/dist/lib/email/send.js +0 -56
- package/dist/lib/email/send.js.map +2 -2
- package/dist/lib/encryption/subscriber.js +10 -2
- package/dist/lib/encryption/subscriber.js.map +2 -2
- package/dist/lib/encryption/tenantDataEncryptionService.js +17 -52
- package/dist/lib/encryption/tenantDataEncryptionService.js.map +2 -2
- package/dist/lib/i18n/config.js +1 -1
- package/dist/lib/i18n/config.js.map +2 -2
- package/dist/lib/i18n/server.js +4 -4
- package/dist/lib/i18n/server.js.map +3 -3
- package/dist/lib/logger/index.js +3 -47
- package/dist/lib/logger/index.js.map +3 -3
- package/dist/lib/modules/registry.js +1 -5
- package/dist/lib/modules/registry.js.map +2 -2
- package/dist/lib/query/engine.js +40 -54
- package/dist/lib/query/engine.js.map +2 -2
- package/dist/lib/query/types.js.map +1 -1
- package/dist/lib/redis/connection.js +2 -7
- package/dist/lib/redis/connection.js.map +2 -2
- package/dist/lib/search/config.js +2 -61
- package/dist/lib/search/config.js.map +2 -2
- package/dist/lib/search/tokenize.js +11 -23
- package/dist/lib/search/tokenize.js.map +2 -2
- package/dist/lib/version.js +1 -1
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/webhooks/index.js +1 -13
- package/dist/lib/webhooks/index.js.map +2 -2
- package/dist/lib/webhooks/verify.js +7 -12
- package/dist/lib/webhooks/verify.js.map +2 -2
- package/dist/modules/analytics.js.map +2 -2
- package/dist/modules/overrides.js +1 -50
- package/dist/modules/overrides.js.map +2 -2
- package/dist/modules/payment_gateways/types.js +1 -8
- package/dist/modules/payment_gateways/types.js.map +2 -2
- package/dist/modules/registry.js +0 -1
- package/dist/modules/registry.js.map +2 -2
- package/dist/security/enabledModulesRegistry.js +11 -56
- package/dist/security/enabledModulesRegistry.js.map +2 -2
- package/jest.config.cjs +1 -2
- package/package.json +9 -19
- package/src/lib/ai/llm-provider.ts +0 -33
- package/src/lib/auth/__tests__/server.test.ts +0 -23
- package/src/lib/auth/server.ts +2 -23
- package/src/lib/bootstrap/__tests__/dynamicLoader.commandInterceptors.test.ts +8 -63
- package/src/lib/bootstrap/__tests__/dynamicLoader.tsconfig.test.ts +1 -21
- package/src/lib/bootstrap/dynamicLoader.ts +65 -213
- package/src/lib/commands/__tests__/command-interceptor-runner.test.ts +0 -28
- package/src/lib/commands/command-bus.ts +1 -5
- package/src/lib/commands/command-interceptor-runner.ts +2 -2
- package/src/lib/crud/__tests__/crud-factory.test.ts +0 -298
- package/src/lib/crud/__tests__/mutation-guard-registry.test.ts +0 -26
- package/src/lib/crud/enricher-runner.ts +11 -2
- package/src/lib/crud/factory.ts +1 -69
- package/src/lib/crud/interceptor-runner.ts +2 -2
- package/src/lib/crud/mutation-guard-registry.ts +2 -2
- package/src/lib/crud/types.ts +0 -3
- package/src/lib/data/__tests__/engine.bulk-suppress.test.ts +3 -18
- package/src/lib/data/engine.ts +16 -50
- package/src/lib/db/__tests__/mikro.test.ts +25 -0
- package/src/lib/db/mikro.ts +38 -13
- package/src/lib/db/pg-errors.ts +0 -58
- package/src/lib/di/container.ts +8 -72
- package/src/lib/email/__tests__/send.test.ts +1 -37
- package/src/lib/email/send.ts +0 -79
- package/src/lib/encryption/__tests__/subscriber.test.ts +2 -54
- package/src/lib/encryption/__tests__/tenantDataEncryptionService.test.ts +0 -58
- package/src/lib/encryption/subscriber.ts +14 -2
- package/src/lib/encryption/tenantDataEncryptionService.ts +18 -64
- package/src/lib/i18n/config.ts +2 -2
- package/src/lib/i18n/server.ts +2 -6
- package/src/lib/logger/__tests__/logger.test.ts +0 -77
- package/src/lib/logger/index.ts +1 -59
- package/src/lib/modules/registry.ts +0 -10
- package/src/lib/query/__tests__/engine.test.ts +13 -65
- package/src/lib/query/engine.ts +58 -75
- package/src/lib/query/types.ts +5 -4
- package/src/lib/redis/__tests__/connection.test.ts +0 -16
- package/src/lib/redis/connection.ts +7 -10
- package/src/lib/search/__tests__/config.test.ts +0 -177
- package/src/lib/search/config.ts +8 -106
- package/src/lib/search/tokenize.ts +11 -33
- package/src/lib/webhooks/__tests__/verify.test.ts +1 -20
- package/src/lib/webhooks/index.ts +1 -19
- package/src/lib/webhooks/verify.ts +9 -17
- package/src/modules/__tests__/registry.test.ts +2 -10
- package/src/modules/analytics.ts +0 -7
- package/src/modules/customer-auth.ts +0 -1
- package/src/modules/encryption.ts +0 -3
- package/src/modules/navigation/backendChrome.ts +0 -15
- package/src/modules/overrides.ts +0 -103
- package/src/modules/payment_gateways/types.ts +0 -41
- package/src/modules/registry.ts +0 -3
- package/src/security/enabledModulesRegistry.ts +12 -64
- package/dist/lib/ai/safety-identifier.js +0 -32
- package/dist/lib/ai/safety-identifier.js.map +0 -7
- package/dist/lib/auth/organizationScope.js +0 -34
- package/dist/lib/auth/organizationScope.js.map +0 -7
- package/dist/lib/bootstrap/clientOnlyModules.js +0 -55
- package/dist/lib/bootstrap/clientOnlyModules.js.map +0 -7
- package/dist/lib/data/consistency.js +0 -19
- package/dist/lib/data/consistency.js.map +0 -7
- package/dist/lib/db/entityMetadata.js +0 -26
- package/dist/lib/db/entityMetadata.js.map +0 -7
- package/dist/lib/logger/extension.js +0 -29
- package/dist/lib/logger/extension.js.map +0 -7
- package/dist/lib/modules/surfaceFingerprint.js +0 -47
- package/dist/lib/modules/surfaceFingerprint.js.map +0 -7
- package/dist/lib/query/ciphertext-search-warning.js +0 -45
- package/dist/lib/query/ciphertext-search-warning.js.map +0 -7
- package/dist/lib/search/auto-indexing.js +0 -14
- package/dist/lib/search/auto-indexing.js.map +0 -7
- package/dist/lib/search/availability.js +0 -107
- package/dist/lib/search/availability.js.map +0 -7
- package/dist/lib/search/tokenLookup.js +0 -46
- package/dist/lib/search/tokenLookup.js.map +0 -7
- package/dist/lib/telemetry/runtime.js +0 -35
- package/dist/lib/telemetry/runtime.js.map +0 -7
- package/dist/lib/webhooks/body.js +0 -57
- package/dist/lib/webhooks/body.js.map +0 -7
- package/dist/lib/webhooks/inbound-types.js +0 -1
- package/dist/lib/webhooks/inbound-types.js.map +0 -7
- package/dist/modules/widgets/extension-points.js +0 -96
- package/dist/modules/widgets/extension-points.js.map +0 -7
- package/dist/security/featurePolicy.js +0 -62
- package/dist/security/featurePolicy.js.map +0 -7
- package/scripts/versionSource.cjs +0 -65
- package/src/lib/__tests__/versionSource.test.ts +0 -46
- package/src/lib/ai/__tests__/llm-provider-contract.test.ts +0 -59
- package/src/lib/ai/__tests__/safety-identifier.test.ts +0 -71
- package/src/lib/ai/safety-identifier.ts +0 -73
- package/src/lib/auth/__tests__/organizationScope.test.ts +0 -107
- package/src/lib/auth/organizationScope.ts +0 -65
- package/src/lib/bootstrap/__tests__/clientOnlyModules.test.ts +0 -189
- package/src/lib/bootstrap/__tests__/dynamicLoader.aliasResolver.test.ts +0 -98
- package/src/lib/bootstrap/__tests__/dynamicLoader.appDi.test.ts +0 -211
- package/src/lib/bootstrap/__tests__/dynamicLoader.generatedCacheRecovery.test.ts +0 -192
- package/src/lib/bootstrap/clientOnlyModules.ts +0 -85
- package/src/lib/crud/__tests__/crud-factory.cache-user-scope.test.ts +0 -171
- package/src/lib/data/__tests__/consistency.test.ts +0 -38
- package/src/lib/data/consistency.ts +0 -17
- package/src/lib/db/__tests__/entityMetadata.test.ts +0 -38
- package/src/lib/db/__tests__/pg-errors.test.ts +0 -48
- package/src/lib/db/entityMetadata.ts +0 -43
- package/src/lib/di/__tests__/container-app-di-absent.test.ts +0 -155
- package/src/lib/di/__tests__/container-app-di.test.ts +0 -173
- package/src/lib/di/__tests__/registrar-error-log.test.ts +0 -154
- package/src/lib/i18n/__tests__/config.test.ts +0 -8
- package/src/lib/i18n/__tests__/server-dictionary-cache.test.ts +0 -30
- package/src/lib/i18n/__tests__/server-unbootstrapped.test.ts +0 -29
- package/src/lib/logger/extension.ts +0 -59
- package/src/lib/modules/__tests__/surfaceFingerprint.test.ts +0 -122
- package/src/lib/modules/surfaceFingerprint.ts +0 -87
- package/src/lib/query/__tests__/ciphertext-search-warning.test.ts +0 -178
- package/src/lib/query/ciphertext-search-warning.ts +0 -95
- package/src/lib/search/__tests__/availability.test.ts +0 -211
- package/src/lib/search/__tests__/tokenLookup.test.ts +0 -206
- package/src/lib/search/__tests__/tokenize.test.ts +0 -49
- package/src/lib/search/auto-indexing.ts +0 -22
- package/src/lib/search/availability.ts +0 -232
- package/src/lib/search/tokenLookup.ts +0 -133
- package/src/lib/telemetry/runtime.ts +0 -72
- package/src/lib/webhooks/__tests__/body.test.ts +0 -95
- package/src/lib/webhooks/body.ts +0 -70
- package/src/lib/webhooks/inbound-types.ts +0 -125
- package/src/modules/__tests__/nav-group-order-override.test.ts +0 -183
- package/src/modules/payment_gateways/__tests__/types.test.ts +0 -37
- package/src/modules/widgets/__tests__/extension-points.test.ts +0 -101
- package/src/modules/widgets/extension-points.ts +0 -524
- package/src/security/__tests__/featurePolicy.test.ts +0 -166
- package/src/security/featurePolicy.ts +0 -89
package/dist/lib/crud/factory.js
CHANGED
|
@@ -38,7 +38,6 @@ import {
|
|
|
38
38
|
isCrudCacheEnabled,
|
|
39
39
|
normalizeIdentifierValue,
|
|
40
40
|
normalizeTagSegment,
|
|
41
|
-
pickFirstIdentifier,
|
|
42
41
|
resolveCrudCache
|
|
43
42
|
} from "./cache.js";
|
|
44
43
|
import { deriveCrudSegmentTag } from "./cache-stats.js";
|
|
@@ -52,7 +51,6 @@ import { parseExtensionHeaders } from "../umes/extension-headers.js";
|
|
|
52
51
|
import { createGenericOptimisticLockReader } from "./optimistic-lock.js";
|
|
53
52
|
import { registerOptimisticLockReaderIfAbsent } from "./optimistic-lock-store.js";
|
|
54
53
|
import { createLogger } from "../logger/index.js";
|
|
55
|
-
import { isTransientDbError } from "../db/pg-errors.js";
|
|
56
54
|
const logger = createLogger("shared").child({ component: "crud" });
|
|
57
55
|
function resolveSortParams(queryParams) {
|
|
58
56
|
const rawSortField = queryParams.sortField ?? queryParams.sort ?? "id";
|
|
@@ -298,15 +296,6 @@ function handleError(err) {
|
|
|
298
296
|
if (err instanceof Response) return err;
|
|
299
297
|
if (isCrudHttpError(err)) return json(err.body, { status: err.status });
|
|
300
298
|
if (err instanceof z.ZodError) return json({ error: "Invalid input", details: err.issues }, { status: 400 });
|
|
301
|
-
if (isTransientDbError(err)) {
|
|
302
|
-
logger.warn("Transient DB failure during CRUD handler", {
|
|
303
|
-
message: err instanceof Error ? err.message : void 0
|
|
304
|
-
});
|
|
305
|
-
return json(
|
|
306
|
-
{ error: "Service temporarily unavailable" },
|
|
307
|
-
{ status: 503, headers: { "Retry-After": "2" } }
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
299
|
const message = err instanceof Error ? err.message : void 0;
|
|
311
300
|
const stack = err instanceof Error ? err.stack : void 0;
|
|
312
301
|
logger.error("Unexpected CRUD error", { message, stack, err });
|
|
@@ -571,12 +560,6 @@ function buildCrudCacheKey(resource, request, ctx, enricherSignature = "") {
|
|
|
571
560
|
`tenant:${normalizeTagSegment(ctx.auth?.tenantId ?? null)}`,
|
|
572
561
|
`selectedOrg:${normalizeTagSegment(ctx.selectedOrganizationId ?? null)}`,
|
|
573
562
|
`scope:${scopeSegment}`,
|
|
574
|
-
// List payloads can vary per caller identity beyond tenant/org scope:
|
|
575
|
-
// buildFilters may narrow by ctx.auth (e.g. ?mine=true), before-interceptor
|
|
576
|
-
// query rewrites are feature-gated per user, and afterList/after-interceptor
|
|
577
|
-
// output is embedded in the stored payload — so entries MUST be partitioned
|
|
578
|
-
// per actor (API key or user), never shared across identities.
|
|
579
|
-
`user:${normalizeTagSegment(ctx.auth?.keyId ?? ctx.auth?.sub ?? null)}`,
|
|
580
563
|
`query:${serializeSearchParams(url.searchParams)}`
|
|
581
564
|
];
|
|
582
565
|
if (enricherSignature) {
|
|
@@ -1606,29 +1589,6 @@ function makeCrudRoute(opts) {
|
|
|
1606
1589
|
}
|
|
1607
1590
|
}
|
|
1608
1591
|
}
|
|
1609
|
-
const createCmdUserFeatures = await resolveUserFeatures(ctx);
|
|
1610
|
-
const { allGuards: createCmdAllGuards } = collectAndRunGuards(ctx.container);
|
|
1611
|
-
let createCmdGuardAfterCallbacks = [];
|
|
1612
|
-
if (createCmdAllGuards.length && ctx.auth.tenantId) {
|
|
1613
|
-
const guardResult = await runMutationGuards(createCmdAllGuards, {
|
|
1614
|
-
tenantId: ctx.auth.tenantId,
|
|
1615
|
-
organizationId: ctx.selectedOrganizationId ?? ctx.auth.orgId ?? null,
|
|
1616
|
-
userId: ctx.auth.sub,
|
|
1617
|
-
resourceKind,
|
|
1618
|
-
resourceId: null,
|
|
1619
|
-
operation: "create",
|
|
1620
|
-
requestMethod: request.method,
|
|
1621
|
-
requestHeaders: request.headers,
|
|
1622
|
-
mutationPayload: input2 && typeof input2 === "object" ? input2 : null
|
|
1623
|
-
}, { userFeatures: createCmdUserFeatures ?? [] });
|
|
1624
|
-
if (!guardResult.ok) {
|
|
1625
|
-
return json(guardResult.errorBody ?? { error: "Operation blocked by guard" }, { status: guardResult.errorStatus ?? 422 });
|
|
1626
|
-
}
|
|
1627
|
-
if (guardResult.modifiedPayload && typeof input2 === "object" && input2) {
|
|
1628
|
-
input2 = { ...input2, ...guardResult.modifiedPayload };
|
|
1629
|
-
}
|
|
1630
|
-
createCmdGuardAfterCallbacks = guardResult.afterSuccessCallbacks;
|
|
1631
|
-
}
|
|
1632
1592
|
const baseMetadata = {
|
|
1633
1593
|
tenantId: ctx.auth?.tenantId ?? null,
|
|
1634
1594
|
organizationId: ctx.selectedOrganizationId ?? ctx.auth.orgId ?? null,
|
|
@@ -1668,22 +1628,6 @@ function makeCrudRoute(opts) {
|
|
|
1668
1628
|
const status = action.status ?? 201;
|
|
1669
1629
|
const response = json(resolvedPayload, { status });
|
|
1670
1630
|
attachOperationHeader(response, logEntry);
|
|
1671
|
-
const commandResultId = pickFirstIdentifier(
|
|
1672
|
-
result?.id,
|
|
1673
|
-
resolvedPayload?.id
|
|
1674
|
-
);
|
|
1675
|
-
if (createCmdGuardAfterCallbacks.length && ctx.auth.tenantId && commandResultId) {
|
|
1676
|
-
await runGuardAfterSuccessCallbacks(createCmdGuardAfterCallbacks, {
|
|
1677
|
-
tenantId: ctx.auth.tenantId,
|
|
1678
|
-
organizationId: ctx.selectedOrganizationId ?? ctx.auth.orgId ?? null,
|
|
1679
|
-
userId: ctx.auth.sub,
|
|
1680
|
-
resourceKind,
|
|
1681
|
-
resourceId: commandResultId,
|
|
1682
|
-
operation: "create",
|
|
1683
|
-
requestMethod: request.method,
|
|
1684
|
-
requestHeaders: request.headers
|
|
1685
|
-
});
|
|
1686
|
-
}
|
|
1687
1631
|
return response;
|
|
1688
1632
|
}
|
|
1689
1633
|
const createConfig = opts.create;
|
|
@@ -1770,8 +1714,7 @@ function makeCrudRoute(opts) {
|
|
|
1770
1714
|
recordId: String(created[ormCfg.idField]),
|
|
1771
1715
|
organizationId: targetOrgId,
|
|
1772
1716
|
tenantId: writeTenantId,
|
|
1773
|
-
values
|
|
1774
|
-
notify: false
|
|
1717
|
+
values
|
|
1775
1718
|
});
|
|
1776
1719
|
}
|
|
1777
1720
|
}
|
|
@@ -2074,8 +2017,7 @@ function makeCrudRoute(opts) {
|
|
|
2074
2017
|
recordId: String(updated[ormCfg.idField]),
|
|
2075
2018
|
organizationId: targetOrgId,
|
|
2076
2019
|
tenantId: writeTenantId,
|
|
2077
|
-
values
|
|
2078
|
-
notify: false
|
|
2020
|
+
values
|
|
2079
2021
|
});
|
|
2080
2022
|
}
|
|
2081
2023
|
}
|
|
@@ -2171,8 +2113,7 @@ function makeCrudRoute(opts) {
|
|
|
2171
2113
|
ctx,
|
|
2172
2114
|
request,
|
|
2173
2115
|
method: "DELETE",
|
|
2174
|
-
body: interceptorInput
|
|
2175
|
-
query: raw.query
|
|
2116
|
+
body: interceptorInput
|
|
2176
2117
|
});
|
|
2177
2118
|
if (beforeInterceptors2.errorResponse) return beforeInterceptors2.errorResponse;
|
|
2178
2119
|
interceptorRequestPayload = beforeInterceptors2.requestPayload;
|
|
@@ -2283,7 +2224,7 @@ function makeCrudRoute(opts) {
|
|
|
2283
2224
|
request,
|
|
2284
2225
|
method: "DELETE",
|
|
2285
2226
|
body: idFrom === "query" ? void 0 : { id },
|
|
2286
|
-
query: idFrom === "query" ?
|
|
2227
|
+
query: idFrom === "query" ? { id } : void 0
|
|
2287
2228
|
});
|
|
2288
2229
|
if (beforeInterceptors.errorResponse) return beforeInterceptors.errorResponse;
|
|
2289
2230
|
interceptorRequestPayload = beforeInterceptors.requestPayload;
|