@open-mercato/enterprise 0.8.1-develop.7241.1.fad7b2ce2a → 0.8.1-develop.7261.1.5d42353f61

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.
@@ -7,35 +7,39 @@ import { createRecordLockCrudMutationGuardService } from "./lib/crudMutationGuar
7
7
  function register(container) {
8
8
  container.register({
9
9
  recordLockService: asFunction(
10
- (em, moduleConfigService, actionLogService, rbacService) => createRecordLockService({
11
- em,
12
- moduleConfigService: moduleConfigService ?? null,
13
- actionLogService: actionLogService ?? null,
14
- rbacService: rbacService ?? null
10
+ (cradle) => createRecordLockService({
11
+ em: cradle.em,
12
+ moduleConfigService: cradle.moduleConfigService ?? null,
13
+ actionLogService: cradle.actionLogService ?? null,
14
+ rbacService: cradle.rbacService ?? null
15
15
  })
16
- ).scoped(),
16
+ ).scoped().proxy(),
17
17
  // CRUD guard decorator: chains the OSS `updated_at` floor first (built here
18
18
  // because this DI key overrides the platform default), then adds the
19
19
  // record_locks enrichment. record_locks can only ADD a 409, never skip the
20
20
  // floor (S1/H2). Spec: .ai/specs/enterprise/2026-06-09-record-locks-unified-coverage.md (Phase 0)
21
+ // `.proxy()`: CLASSIC injection resolves by parameter NAME, which a bundler
22
+ // may rename — see the comment on the platform default in
23
+ // packages/shared/src/lib/di/container.ts. A silent failure here disables
24
+ // the record-lock 409 as well as the OSS floor beneath it.
21
25
  crudMutationGuardService: asFunction(
22
- (recordLockService, em) => createRecordLockCrudMutationGuardService(
23
- recordLockService,
26
+ (cradle) => createRecordLockCrudMutationGuardService(
27
+ cradle.recordLockService,
24
28
  createOptimisticLockGuardService({
25
- getEm: () => em,
29
+ getEm: () => cradle.em,
26
30
  readers: getAllOptimisticLockReaders()
27
31
  })
28
32
  )
29
- ).scoped(),
33
+ ).scoped().proxy(),
30
34
  // Command guard override: lock-backed `resolveExpected` derived from
31
35
  // authoritative server state (never requiring a client lock token, H2),
32
36
  // awaited by `enforceCommandOptimisticLockWithGuards`. The OSS floor still
33
37
  // runs first inside that runner.
34
38
  commandOptimisticLockGuardService: asFunction(
35
- (recordLockService) => createCommandOptimisticLockGuardService({
36
- resolveExpected: ({ expectedFromHeader, resourceKind }) => recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind })
39
+ (cradle) => createCommandOptimisticLockGuardService({
40
+ resolveExpected: ({ expectedFromHeader, resourceKind }) => cradle.recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind })
37
41
  })
38
- ).scoped()
42
+ ).scoped().proxy()
39
43
  });
40
44
  }
41
45
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/modules/record_locks/di.ts"],
4
- "sourcesContent": ["import { asFunction } from 'awilix'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport type { ModuleConfigService } from '@open-mercato/core/modules/configs/lib/module-config-service'\nimport type { ActionLogService } from '@open-mercato/core/modules/audit_logs/services/actionLogService'\nimport type { RbacService } from '@open-mercato/core/modules/auth/services/rbacService'\nimport { createOptimisticLockGuardService } from '@open-mercato/shared/lib/crud/optimistic-lock'\nimport { getAllOptimisticLockReaders } from '@open-mercato/shared/lib/crud/optimistic-lock-store'\nimport { createCommandOptimisticLockGuardService } from '@open-mercato/shared/lib/crud/optimistic-lock-command'\nimport { createRecordLockService } from './lib/recordLockService'\nimport type { RecordLockService } from './lib/recordLockService'\nimport { createRecordLockCrudMutationGuardService } from './lib/crudMutationGuardService'\n\nexport function register(container: AppContainer) {\n container.register({\n recordLockService: asFunction((\n em: EntityManager,\n moduleConfigService?: ModuleConfigService | null,\n actionLogService?: ActionLogService | null,\n rbacService?: RbacService | null,\n ) =>\n createRecordLockService({\n em,\n moduleConfigService: moduleConfigService ?? null,\n actionLogService: actionLogService ?? null,\n rbacService: rbacService ?? null,\n }),\n ).scoped(),\n // CRUD guard decorator: chains the OSS `updated_at` floor first (built here\n // because this DI key overrides the platform default), then adds the\n // record_locks enrichment. record_locks can only ADD a 409, never skip the\n // floor (S1/H2). Spec: .ai/specs/enterprise/2026-06-09-record-locks-unified-coverage.md (Phase 0)\n crudMutationGuardService: asFunction((\n recordLockService: RecordLockService,\n em: EntityManager,\n ) =>\n createRecordLockCrudMutationGuardService(\n recordLockService,\n createOptimisticLockGuardService({\n getEm: () => em,\n readers: getAllOptimisticLockReaders(),\n }),\n ),\n ).scoped(),\n // Command guard override: lock-backed `resolveExpected` derived from\n // authoritative server state (never requiring a client lock token, H2),\n // awaited by `enforceCommandOptimisticLockWithGuards`. The OSS floor still\n // runs first inside that runner.\n commandOptimisticLockGuardService: asFunction((recordLockService: RecordLockService) =>\n createCommandOptimisticLockGuardService({\n resolveExpected: ({ expectedFromHeader, resourceKind }) =>\n recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind }),\n }),\n ).scoped(),\n })\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAM3B,SAAS,wCAAwC;AACjD,SAAS,mCAAmC;AAC5C,SAAS,+CAA+C;AACxD,SAAS,+BAA+B;AAExC,SAAS,gDAAgD;AAElD,SAAS,SAAS,WAAyB;AAChD,YAAU,SAAS;AAAA,IACjB,mBAAmB;AAAA,MAAW,CAC5B,IACA,qBACA,kBACA,gBAEA,wBAAwB;AAAA,QACtB;AAAA,QACA,qBAAqB,uBAAuB;AAAA,QAC5C,kBAAkB,oBAAoB;AAAA,QACtC,aAAa,eAAe;AAAA,MAC9B,CAAC;AAAA,IACH,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKT,0BAA0B;AAAA,MAAW,CACnC,mBACA,OAEA;AAAA,QACE;AAAA,QACA,iCAAiC;AAAA,UAC/B,OAAO,MAAM;AAAA,UACb,SAAS,4BAA4B;AAAA,QACvC,CAAC;AAAA,MACH;AAAA,IACF,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKT,mCAAmC;AAAA,MAAW,CAAC,sBAC7C,wCAAwC;AAAA,QACtC,iBAAiB,CAAC,EAAE,oBAAoB,aAAa,MACnD,kBAAkB,uBAAuB,EAAE,oBAAoB,aAAa,CAAC;AAAA,MACjF,CAAC;AAAA,IACH,EAAE,OAAO;AAAA,EACX,CAAC;AACH;",
4
+ "sourcesContent": ["import { asFunction } from 'awilix'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport type { ModuleConfigService } from '@open-mercato/core/modules/configs/lib/module-config-service'\nimport type { ActionLogService } from '@open-mercato/core/modules/audit_logs/services/actionLogService'\nimport type { RbacService } from '@open-mercato/core/modules/auth/services/rbacService'\nimport { createOptimisticLockGuardService } from '@open-mercato/shared/lib/crud/optimistic-lock'\nimport { getAllOptimisticLockReaders } from '@open-mercato/shared/lib/crud/optimistic-lock-store'\nimport { createCommandOptimisticLockGuardService } from '@open-mercato/shared/lib/crud/optimistic-lock-command'\nimport { createRecordLockService } from './lib/recordLockService'\nimport type { RecordLockService } from './lib/recordLockService'\nimport { createRecordLockCrudMutationGuardService } from './lib/crudMutationGuardService'\n\nexport function register(container: AppContainer) {\n container.register({\n recordLockService: asFunction((cradle: {\n em: EntityManager\n moduleConfigService?: ModuleConfigService | null\n actionLogService?: ActionLogService | null\n rbacService?: RbacService | null\n }) =>\n createRecordLockService({\n em: cradle.em,\n moduleConfigService: cradle.moduleConfigService ?? null,\n actionLogService: cradle.actionLogService ?? null,\n rbacService: cradle.rbacService ?? null,\n }),\n ).scoped().proxy(),\n // CRUD guard decorator: chains the OSS `updated_at` floor first (built here\n // because this DI key overrides the platform default), then adds the\n // record_locks enrichment. record_locks can only ADD a 409, never skip the\n // floor (S1/H2). Spec: .ai/specs/enterprise/2026-06-09-record-locks-unified-coverage.md (Phase 0)\n // `.proxy()`: CLASSIC injection resolves by parameter NAME, which a bundler\n // may rename \u2014 see the comment on the platform default in\n // packages/shared/src/lib/di/container.ts. A silent failure here disables\n // the record-lock 409 as well as the OSS floor beneath it.\n crudMutationGuardService: asFunction((cradle: {\n recordLockService: RecordLockService\n em: EntityManager\n }) =>\n createRecordLockCrudMutationGuardService(\n cradle.recordLockService,\n createOptimisticLockGuardService({\n getEm: () => cradle.em,\n readers: getAllOptimisticLockReaders(),\n }),\n ),\n ).scoped().proxy(),\n // Command guard override: lock-backed `resolveExpected` derived from\n // authoritative server state (never requiring a client lock token, H2),\n // awaited by `enforceCommandOptimisticLockWithGuards`. The OSS floor still\n // runs first inside that runner.\n commandOptimisticLockGuardService: asFunction((cradle: { recordLockService: RecordLockService }) =>\n createCommandOptimisticLockGuardService({\n resolveExpected: ({ expectedFromHeader, resourceKind }) =>\n cradle.recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind }),\n }),\n ).scoped().proxy(),\n })\n}\n"],
5
+ "mappings": "AAAA,SAAS,kBAAkB;AAM3B,SAAS,wCAAwC;AACjD,SAAS,mCAAmC;AAC5C,SAAS,+CAA+C;AACxD,SAAS,+BAA+B;AAExC,SAAS,gDAAgD;AAElD,SAAS,SAAS,WAAyB;AAChD,YAAU,SAAS;AAAA,IACjB,mBAAmB;AAAA,MAAW,CAAC,WAM7B,wBAAwB;AAAA,QACtB,IAAI,OAAO;AAAA,QACX,qBAAqB,OAAO,uBAAuB;AAAA,QACnD,kBAAkB,OAAO,oBAAoB;AAAA,QAC7C,aAAa,OAAO,eAAe;AAAA,MACrC,CAAC;AAAA,IACH,EAAE,OAAO,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASjB,0BAA0B;AAAA,MAAW,CAAC,WAIpC;AAAA,QACE,OAAO;AAAA,QACP,iCAAiC;AAAA,UAC/B,OAAO,MAAM,OAAO;AAAA,UACpB,SAAS,4BAA4B;AAAA,QACvC,CAAC;AAAA,MACH;AAAA,IACF,EAAE,OAAO,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,IAKjB,mCAAmC;AAAA,MAAW,CAAC,WAC7C,wCAAwC;AAAA,QACtC,iBAAiB,CAAC,EAAE,oBAAoB,aAAa,MACnD,OAAO,kBAAkB,uBAAuB,EAAE,oBAAoB,aAAa,CAAC;AAAA,MACxF,CAAC;AAAA,IACH,EAAE,OAAO,EAAE,MAAM;AAAA,EACnB,CAAC;AACH;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/enterprise",
3
- "version": "0.8.1-develop.7241.1.fad7b2ce2a",
3
+ "version": "0.8.1-develop.7261.1.5d42353f61",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -70,12 +70,12 @@
70
70
  "@dnd-kit/core": "^6.3.1",
71
71
  "@dnd-kit/sortable": "^10.0.0",
72
72
  "@dnd-kit/utilities": "^3.2.2",
73
- "@open-mercato/ai-assistant": "0.8.1-develop.7241.1.fad7b2ce2a",
74
- "@open-mercato/core": "0.8.1-develop.7241.1.fad7b2ce2a",
75
- "@open-mercato/queue": "0.8.1-develop.7241.1.fad7b2ce2a",
76
- "@open-mercato/scheduler": "0.8.1-develop.7241.1.fad7b2ce2a",
77
- "@open-mercato/ui": "0.8.1-develop.7241.1.fad7b2ce2a",
78
- "@open-mercato/web-research": "0.8.1-develop.7241.1.fad7b2ce2a",
73
+ "@open-mercato/ai-assistant": "0.8.1-develop.7261.1.5d42353f61",
74
+ "@open-mercato/core": "0.8.1-develop.7261.1.5d42353f61",
75
+ "@open-mercato/queue": "0.8.1-develop.7261.1.5d42353f61",
76
+ "@open-mercato/scheduler": "0.8.1-develop.7261.1.5d42353f61",
77
+ "@open-mercato/ui": "0.8.1-develop.7261.1.5d42353f61",
78
+ "@open-mercato/web-research": "0.8.1-develop.7261.1.5d42353f61",
79
79
  "@simplewebauthn/browser": "^13.3.0",
80
80
  "@simplewebauthn/server": "^13.3.2",
81
81
  "@simplewebauthn/types": "^12.0.0",
@@ -87,13 +87,13 @@
87
87
  },
88
88
  "peerDependencies": {
89
89
  "@mikro-orm/core": "^7.0.14",
90
- "@open-mercato/shared": "0.8.1-develop.7241.1.fad7b2ce2a",
90
+ "@open-mercato/shared": "0.8.1-develop.7261.1.5d42353f61",
91
91
  "react": "^19.0.0",
92
92
  "react-dom": "^19.0.0",
93
93
  "zod": ">=3.23.0"
94
94
  },
95
95
  "devDependencies": {
96
- "@open-mercato/shared": "0.8.1-develop.7241.1.fad7b2ce2a",
96
+ "@open-mercato/shared": "0.8.1-develop.7261.1.5d42353f61",
97
97
  "@types/jest": "^30.0.0",
98
98
  "@types/react": "^19.2.18",
99
99
  "@types/react-dom": "^19.2.5",
@@ -13,44 +13,48 @@ import { createRecordLockCrudMutationGuardService } from './lib/crudMutationGuar
13
13
 
14
14
  export function register(container: AppContainer) {
15
15
  container.register({
16
- recordLockService: asFunction((
17
- em: EntityManager,
18
- moduleConfigService?: ModuleConfigService | null,
19
- actionLogService?: ActionLogService | null,
20
- rbacService?: RbacService | null,
21
- ) =>
16
+ recordLockService: asFunction((cradle: {
17
+ em: EntityManager
18
+ moduleConfigService?: ModuleConfigService | null
19
+ actionLogService?: ActionLogService | null
20
+ rbacService?: RbacService | null
21
+ }) =>
22
22
  createRecordLockService({
23
- em,
24
- moduleConfigService: moduleConfigService ?? null,
25
- actionLogService: actionLogService ?? null,
26
- rbacService: rbacService ?? null,
23
+ em: cradle.em,
24
+ moduleConfigService: cradle.moduleConfigService ?? null,
25
+ actionLogService: cradle.actionLogService ?? null,
26
+ rbacService: cradle.rbacService ?? null,
27
27
  }),
28
- ).scoped(),
28
+ ).scoped().proxy(),
29
29
  // CRUD guard decorator: chains the OSS `updated_at` floor first (built here
30
30
  // because this DI key overrides the platform default), then adds the
31
31
  // record_locks enrichment. record_locks can only ADD a 409, never skip the
32
32
  // floor (S1/H2). Spec: .ai/specs/enterprise/2026-06-09-record-locks-unified-coverage.md (Phase 0)
33
- crudMutationGuardService: asFunction((
34
- recordLockService: RecordLockService,
35
- em: EntityManager,
36
- ) =>
33
+ // `.proxy()`: CLASSIC injection resolves by parameter NAME, which a bundler
34
+ // may rename — see the comment on the platform default in
35
+ // packages/shared/src/lib/di/container.ts. A silent failure here disables
36
+ // the record-lock 409 as well as the OSS floor beneath it.
37
+ crudMutationGuardService: asFunction((cradle: {
38
+ recordLockService: RecordLockService
39
+ em: EntityManager
40
+ }) =>
37
41
  createRecordLockCrudMutationGuardService(
38
- recordLockService,
42
+ cradle.recordLockService,
39
43
  createOptimisticLockGuardService({
40
- getEm: () => em,
44
+ getEm: () => cradle.em,
41
45
  readers: getAllOptimisticLockReaders(),
42
46
  }),
43
47
  ),
44
- ).scoped(),
48
+ ).scoped().proxy(),
45
49
  // Command guard override: lock-backed `resolveExpected` derived from
46
50
  // authoritative server state (never requiring a client lock token, H2),
47
51
  // awaited by `enforceCommandOptimisticLockWithGuards`. The OSS floor still
48
52
  // runs first inside that runner.
49
- commandOptimisticLockGuardService: asFunction((recordLockService: RecordLockService) =>
53
+ commandOptimisticLockGuardService: asFunction((cradle: { recordLockService: RecordLockService }) =>
50
54
  createCommandOptimisticLockGuardService({
51
55
  resolveExpected: ({ expectedFromHeader, resourceKind }) =>
52
- recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind }),
56
+ cradle.recordLockService.resolveExpectedVersion({ expectedFromHeader, resourceKind }),
53
57
  }),
54
- ).scoped(),
58
+ ).scoped().proxy(),
55
59
  })
56
60
  }