@open-mercato/shared 0.6.7-develop.6862.1.c11a64ce0a → 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.
Files changed (199) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/AGENTS.md +6 -57
  3. package/build.mjs +4 -2
  4. package/dist/lib/auth/server.js +2 -15
  5. package/dist/lib/auth/server.js.map +2 -2
  6. package/dist/lib/bootstrap/dynamicLoader.js +43 -117
  7. package/dist/lib/bootstrap/dynamicLoader.js.map +2 -2
  8. package/dist/lib/commands/command-bus.js +1 -5
  9. package/dist/lib/commands/command-bus.js.map +2 -2
  10. package/dist/lib/commands/command-interceptor-runner.js +2 -2
  11. package/dist/lib/commands/command-interceptor-runner.js.map +2 -2
  12. package/dist/lib/crud/enricher-runner.js +11 -2
  13. package/dist/lib/crud/enricher-runner.js.map +2 -2
  14. package/dist/lib/crud/factory.js +4 -63
  15. package/dist/lib/crud/factory.js.map +2 -2
  16. package/dist/lib/crud/interceptor-runner.js +2 -2
  17. package/dist/lib/crud/interceptor-runner.js.map +2 -2
  18. package/dist/lib/crud/mutation-guard-registry.js +2 -2
  19. package/dist/lib/crud/mutation-guard-registry.js.map +2 -2
  20. package/dist/lib/crud/types.js +0 -4
  21. package/dist/lib/crud/types.js.map +3 -3
  22. package/dist/lib/data/engine.js +11 -37
  23. package/dist/lib/data/engine.js.map +2 -2
  24. package/dist/lib/db/mikro.js +12 -3
  25. package/dist/lib/db/mikro.js.map +2 -2
  26. package/dist/lib/db/pg-errors.js +0 -42
  27. package/dist/lib/db/pg-errors.js.map +2 -2
  28. package/dist/lib/di/container.js +6 -48
  29. package/dist/lib/di/container.js.map +2 -2
  30. package/dist/lib/email/send.js +0 -56
  31. package/dist/lib/email/send.js.map +2 -2
  32. package/dist/lib/encryption/subscriber.js +10 -2
  33. package/dist/lib/encryption/subscriber.js.map +2 -2
  34. package/dist/lib/encryption/tenantDataEncryptionService.js +17 -52
  35. package/dist/lib/encryption/tenantDataEncryptionService.js.map +2 -2
  36. package/dist/lib/i18n/config.js +1 -1
  37. package/dist/lib/i18n/config.js.map +2 -2
  38. package/dist/lib/i18n/server.js +4 -4
  39. package/dist/lib/i18n/server.js.map +3 -3
  40. package/dist/lib/logger/index.js +3 -47
  41. package/dist/lib/logger/index.js.map +3 -3
  42. package/dist/lib/modules/registry.js +1 -5
  43. package/dist/lib/modules/registry.js.map +2 -2
  44. package/dist/lib/query/engine.js +40 -54
  45. package/dist/lib/query/engine.js.map +2 -2
  46. package/dist/lib/query/types.js.map +1 -1
  47. package/dist/lib/redis/connection.js +2 -7
  48. package/dist/lib/redis/connection.js.map +2 -2
  49. package/dist/lib/search/config.js +2 -61
  50. package/dist/lib/search/config.js.map +2 -2
  51. package/dist/lib/search/tokenize.js +11 -23
  52. package/dist/lib/search/tokenize.js.map +2 -2
  53. package/dist/lib/version.js +1 -1
  54. package/dist/lib/version.js.map +1 -1
  55. package/dist/lib/webhooks/index.js +1 -13
  56. package/dist/lib/webhooks/index.js.map +2 -2
  57. package/dist/lib/webhooks/verify.js +7 -12
  58. package/dist/lib/webhooks/verify.js.map +2 -2
  59. package/dist/modules/analytics.js.map +2 -2
  60. package/dist/modules/overrides.js +1 -50
  61. package/dist/modules/overrides.js.map +2 -2
  62. package/dist/modules/payment_gateways/types.js +1 -8
  63. package/dist/modules/payment_gateways/types.js.map +2 -2
  64. package/dist/modules/registry.js +0 -1
  65. package/dist/modules/registry.js.map +2 -2
  66. package/dist/security/enabledModulesRegistry.js +11 -56
  67. package/dist/security/enabledModulesRegistry.js.map +2 -2
  68. package/jest.config.cjs +1 -2
  69. package/package.json +9 -19
  70. package/src/lib/ai/llm-provider.ts +0 -33
  71. package/src/lib/auth/__tests__/server.test.ts +0 -23
  72. package/src/lib/auth/server.ts +2 -23
  73. package/src/lib/bootstrap/__tests__/dynamicLoader.commandInterceptors.test.ts +8 -63
  74. package/src/lib/bootstrap/__tests__/dynamicLoader.tsconfig.test.ts +1 -21
  75. package/src/lib/bootstrap/dynamicLoader.ts +65 -213
  76. package/src/lib/commands/__tests__/command-interceptor-runner.test.ts +0 -28
  77. package/src/lib/commands/command-bus.ts +1 -5
  78. package/src/lib/commands/command-interceptor-runner.ts +2 -2
  79. package/src/lib/crud/__tests__/crud-factory.test.ts +0 -298
  80. package/src/lib/crud/__tests__/mutation-guard-registry.test.ts +0 -26
  81. package/src/lib/crud/enricher-runner.ts +11 -2
  82. package/src/lib/crud/factory.ts +1 -69
  83. package/src/lib/crud/interceptor-runner.ts +2 -2
  84. package/src/lib/crud/mutation-guard-registry.ts +2 -2
  85. package/src/lib/crud/types.ts +0 -3
  86. package/src/lib/data/__tests__/engine.bulk-suppress.test.ts +3 -18
  87. package/src/lib/data/engine.ts +16 -50
  88. package/src/lib/db/__tests__/mikro.test.ts +25 -0
  89. package/src/lib/db/mikro.ts +38 -13
  90. package/src/lib/db/pg-errors.ts +0 -58
  91. package/src/lib/di/container.ts +8 -72
  92. package/src/lib/email/__tests__/send.test.ts +1 -37
  93. package/src/lib/email/send.ts +0 -79
  94. package/src/lib/encryption/__tests__/subscriber.test.ts +2 -54
  95. package/src/lib/encryption/__tests__/tenantDataEncryptionService.test.ts +0 -58
  96. package/src/lib/encryption/subscriber.ts +14 -2
  97. package/src/lib/encryption/tenantDataEncryptionService.ts +18 -64
  98. package/src/lib/i18n/config.ts +2 -2
  99. package/src/lib/i18n/server.ts +2 -6
  100. package/src/lib/logger/__tests__/logger.test.ts +0 -77
  101. package/src/lib/logger/index.ts +1 -59
  102. package/src/lib/modules/registry.ts +0 -10
  103. package/src/lib/query/__tests__/engine.test.ts +13 -65
  104. package/src/lib/query/engine.ts +58 -75
  105. package/src/lib/query/types.ts +5 -4
  106. package/src/lib/redis/__tests__/connection.test.ts +0 -16
  107. package/src/lib/redis/connection.ts +7 -10
  108. package/src/lib/search/__tests__/config.test.ts +0 -177
  109. package/src/lib/search/config.ts +8 -106
  110. package/src/lib/search/tokenize.ts +11 -33
  111. package/src/lib/webhooks/__tests__/verify.test.ts +1 -20
  112. package/src/lib/webhooks/index.ts +1 -19
  113. package/src/lib/webhooks/verify.ts +9 -17
  114. package/src/modules/__tests__/registry.test.ts +2 -10
  115. package/src/modules/analytics.ts +0 -7
  116. package/src/modules/customer-auth.ts +0 -1
  117. package/src/modules/encryption.ts +0 -3
  118. package/src/modules/navigation/backendChrome.ts +0 -15
  119. package/src/modules/overrides.ts +0 -103
  120. package/src/modules/payment_gateways/types.ts +0 -41
  121. package/src/modules/registry.ts +0 -3
  122. package/src/security/enabledModulesRegistry.ts +12 -64
  123. package/dist/lib/ai/safety-identifier.js +0 -32
  124. package/dist/lib/ai/safety-identifier.js.map +0 -7
  125. package/dist/lib/auth/organizationScope.js +0 -34
  126. package/dist/lib/auth/organizationScope.js.map +0 -7
  127. package/dist/lib/bootstrap/clientOnlyModules.js +0 -55
  128. package/dist/lib/bootstrap/clientOnlyModules.js.map +0 -7
  129. package/dist/lib/data/consistency.js +0 -19
  130. package/dist/lib/data/consistency.js.map +0 -7
  131. package/dist/lib/db/entityMetadata.js +0 -26
  132. package/dist/lib/db/entityMetadata.js.map +0 -7
  133. package/dist/lib/logger/extension.js +0 -29
  134. package/dist/lib/logger/extension.js.map +0 -7
  135. package/dist/lib/modules/surfaceFingerprint.js +0 -47
  136. package/dist/lib/modules/surfaceFingerprint.js.map +0 -7
  137. package/dist/lib/query/ciphertext-search-warning.js +0 -45
  138. package/dist/lib/query/ciphertext-search-warning.js.map +0 -7
  139. package/dist/lib/search/auto-indexing.js +0 -14
  140. package/dist/lib/search/auto-indexing.js.map +0 -7
  141. package/dist/lib/search/availability.js +0 -107
  142. package/dist/lib/search/availability.js.map +0 -7
  143. package/dist/lib/search/tokenLookup.js +0 -46
  144. package/dist/lib/search/tokenLookup.js.map +0 -7
  145. package/dist/lib/telemetry/runtime.js +0 -35
  146. package/dist/lib/telemetry/runtime.js.map +0 -7
  147. package/dist/lib/webhooks/body.js +0 -57
  148. package/dist/lib/webhooks/body.js.map +0 -7
  149. package/dist/lib/webhooks/inbound-types.js +0 -1
  150. package/dist/lib/webhooks/inbound-types.js.map +0 -7
  151. package/dist/modules/widgets/extension-points.js +0 -96
  152. package/dist/modules/widgets/extension-points.js.map +0 -7
  153. package/dist/security/featurePolicy.js +0 -62
  154. package/dist/security/featurePolicy.js.map +0 -7
  155. package/scripts/versionSource.cjs +0 -65
  156. package/src/lib/__tests__/versionSource.test.ts +0 -46
  157. package/src/lib/ai/__tests__/llm-provider-contract.test.ts +0 -59
  158. package/src/lib/ai/__tests__/safety-identifier.test.ts +0 -71
  159. package/src/lib/ai/safety-identifier.ts +0 -73
  160. package/src/lib/auth/__tests__/organizationScope.test.ts +0 -107
  161. package/src/lib/auth/organizationScope.ts +0 -65
  162. package/src/lib/bootstrap/__tests__/clientOnlyModules.test.ts +0 -189
  163. package/src/lib/bootstrap/__tests__/dynamicLoader.aliasResolver.test.ts +0 -98
  164. package/src/lib/bootstrap/__tests__/dynamicLoader.appDi.test.ts +0 -211
  165. package/src/lib/bootstrap/__tests__/dynamicLoader.generatedCacheRecovery.test.ts +0 -256
  166. package/src/lib/bootstrap/clientOnlyModules.ts +0 -85
  167. package/src/lib/crud/__tests__/crud-factory.cache-user-scope.test.ts +0 -171
  168. package/src/lib/data/__tests__/consistency.test.ts +0 -38
  169. package/src/lib/data/consistency.ts +0 -17
  170. package/src/lib/db/__tests__/entityMetadata.test.ts +0 -38
  171. package/src/lib/db/__tests__/pg-errors.test.ts +0 -48
  172. package/src/lib/db/entityMetadata.ts +0 -43
  173. package/src/lib/di/__tests__/container-app-di-absent.test.ts +0 -155
  174. package/src/lib/di/__tests__/container-app-di.test.ts +0 -173
  175. package/src/lib/di/__tests__/registrar-error-log.test.ts +0 -154
  176. package/src/lib/i18n/__tests__/config.test.ts +0 -8
  177. package/src/lib/i18n/__tests__/server-dictionary-cache.test.ts +0 -30
  178. package/src/lib/i18n/__tests__/server-unbootstrapped.test.ts +0 -29
  179. package/src/lib/logger/extension.ts +0 -59
  180. package/src/lib/modules/__tests__/surfaceFingerprint.test.ts +0 -122
  181. package/src/lib/modules/surfaceFingerprint.ts +0 -87
  182. package/src/lib/query/__tests__/ciphertext-search-warning.test.ts +0 -178
  183. package/src/lib/query/ciphertext-search-warning.ts +0 -95
  184. package/src/lib/search/__tests__/availability.test.ts +0 -211
  185. package/src/lib/search/__tests__/tokenLookup.test.ts +0 -206
  186. package/src/lib/search/__tests__/tokenize.test.ts +0 -49
  187. package/src/lib/search/auto-indexing.ts +0 -22
  188. package/src/lib/search/availability.ts +0 -232
  189. package/src/lib/search/tokenLookup.ts +0 -133
  190. package/src/lib/telemetry/runtime.ts +0 -72
  191. package/src/lib/webhooks/__tests__/body.test.ts +0 -95
  192. package/src/lib/webhooks/body.ts +0 -70
  193. package/src/lib/webhooks/inbound-types.ts +0 -125
  194. package/src/modules/__tests__/nav-group-order-override.test.ts +0 -183
  195. package/src/modules/payment_gateways/__tests__/types.test.ts +0 -37
  196. package/src/modules/widgets/__tests__/extension-points.test.ts +0 -101
  197. package/src/modules/widgets/extension-points.ts +0 -524
  198. package/src/security/__tests__/featurePolicy.test.ts +0 -166
  199. package/src/security/featurePolicy.ts +0 -89
@@ -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" ? Object.fromEntries(url.searchParams.entries()) : void 0
2227
+ query: idFrom === "query" ? { id } : void 0
2287
2228
  });
2288
2229
  if (beforeInterceptors.errorResponse) return beforeInterceptors.errorResponse;
2289
2230
  interceptorRequestPayload = beforeInterceptors.requestPayload;