@open-mercato/core 0.6.8-develop.6879.1.9883cf6265 → 0.6.8-develop.6882.1.cd042ac354
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.
|
@@ -71,7 +71,7 @@ const createTenantCommand = {
|
|
|
71
71
|
const identifiers = {
|
|
72
72
|
id: String(tenant.id),
|
|
73
73
|
organizationId: null,
|
|
74
|
-
tenantId:
|
|
74
|
+
tenantId: null
|
|
75
75
|
};
|
|
76
76
|
await emitCrudSideEffects({
|
|
77
77
|
dataEngine: de,
|
|
@@ -100,10 +100,7 @@ const createTenantCommand = {
|
|
|
100
100
|
entityClass: Tenant,
|
|
101
101
|
buildResult: (entity) => entity,
|
|
102
102
|
events: tenantCrudEvents,
|
|
103
|
-
indexer: tenantCrudIndexer
|
|
104
|
-
afterRestore: ({ entity }) => {
|
|
105
|
-
Reflect.set(entity, "tenantId", String(entity.id));
|
|
106
|
-
}
|
|
103
|
+
indexer: tenantCrudIndexer
|
|
107
104
|
})
|
|
108
105
|
};
|
|
109
106
|
const updateTenantCommand = {
|
|
@@ -141,7 +138,7 @@ const updateTenantCommand = {
|
|
|
141
138
|
const identifiers = {
|
|
142
139
|
id: String(tenant.id),
|
|
143
140
|
organizationId: null,
|
|
144
|
-
tenantId:
|
|
141
|
+
tenantId: null
|
|
145
142
|
};
|
|
146
143
|
await emitCrudSideEffects({
|
|
147
144
|
dataEngine: de,
|
|
@@ -191,7 +188,7 @@ const deleteTenantCommand = {
|
|
|
191
188
|
const identifiers = {
|
|
192
189
|
id: String(id),
|
|
193
190
|
organizationId: null,
|
|
194
|
-
tenantId:
|
|
191
|
+
tenantId: null
|
|
195
192
|
};
|
|
196
193
|
await emitCrudSideEffects({
|
|
197
194
|
dataEngine: de,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/directory/commands/tenants.ts"],
|
|
4
|
-
"sourcesContent": ["import type { CommandHandler } from '@open-mercato/shared/lib/commands'\nimport { registerCommand } from '@open-mercato/shared/lib/commands'\nimport { tenantCreateSchema, tenantUpdateSchema } from '@open-mercato/core/modules/directory/data/validators'\nimport { Tenant } from '@open-mercato/core/modules/directory/data/entities'\nimport type { DataEngine } from '@open-mercato/shared/lib/data/engine'\nimport type { EntityManager, FilterQuery } from '@mikro-orm/postgresql'\nimport { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'\nimport { requireSuperAdmin } from '@open-mercato/core/modules/auth/lib/tenantAccess'\nimport { E } from '#generated/entities.ids.generated'\nimport {\n parseWithCustomFields,\n setCustomFieldsIfAny,\n emitCrudSideEffects,\n buildChanges,\n requireId,\n} from '@open-mercato/shared/lib/commands/helpers'\nimport { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'\nimport type { CrudEventsConfig, CrudIndexerConfig } from '@open-mercato/shared/lib/crud/types'\nimport { isTenantDataEncryptionEnabled } from '@open-mercato/shared/lib/encryption/toggles'\nimport { makeCreateRedo } from '@open-mercato/shared/lib/commands/redo'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('directory').child({ component: 'tenants' })\n\nexport const tenantCrudEvents: CrudEventsConfig = {\n module: 'directory',\n entity: 'tenant',\n persistent: true,\n}\n\nexport const tenantCrudIndexer: CrudIndexerConfig = {\n entityType: E.directory.tenant,\n}\n\nfunction serializeTenant(entity: Tenant) {\n return {\n id: String(entity.id),\n name: entity.name,\n isActive: !!entity.isActive,\n createdAt: entity.createdAt ? entity.createdAt.toISOString() : null,\n updatedAt: entity.updatedAt ? entity.updatedAt.toISOString() : null,\n deletedAt: entity.deletedAt ? entity.deletedAt.toISOString() : null,\n }\n}\n\ntype TenantPayload = Record<string, unknown>\ntype SerializedTenant = ReturnType<typeof serializeTenant>\n\nconst createTenantCommand: CommandHandler<TenantPayload, Tenant> = {\n id: 'directory.tenants.create',\n async execute(rawInput, ctx) {\n await requireSuperAdmin(ctx)\n const { parsed, custom } = parseWithCustomFields(tenantCreateSchema, rawInput)\n const de = (ctx.container.resolve('dataEngine') as DataEngine)\n\n const tenant = await de.createOrmEntity({\n entity: Tenant,\n data: {\n name: parsed.name,\n isActive: parsed.isActive ?? true,\n },\n })\n\n await setCustomFieldsIfAny({\n dataEngine: de,\n entityId: E.directory.tenant,\n recordId: String(tenant.id),\n organizationId: null,\n tenantId: ctx.auth?.tenantId ?? null,\n values: custom,\n })\n\n if (isTenantDataEncryptionEnabled()) {\n try {\n const kms = ctx.container.resolve('kmsService') as { createTenantDek?: (id: string) => Promise<unknown>; isHealthy?: () => boolean }\n if (kms?.isHealthy?.()) {\n await kms?.createTenantDek?.(String(tenant.id))\n logger.info('Created tenant DEK', { tenantId: String(tenant.id) })\n } else {\n logger.warn('KMS not healthy, skipping tenant DEK provisioning', { tenantId: String(tenant.id) })\n }\n } catch (err) {\n logger.warn('Failed to provision tenant key', { err })\n }\n }\n\n const identifiers = {\n id: String(tenant.id),\n organizationId: null,\n tenantId:
|
|
5
|
-
"mappings": "AACA,SAAS,uBAAuB;AAChC,SAAS,oBAAoB,0BAA0B;AACvD,SAAS,cAAc;AAGvB,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,SAAS;AAClB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,2BAA2B;AAEpC,SAAS,qCAAqC;AAC9C,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAE7B,MAAM,SAAS,aAAa,WAAW,EAAE,MAAM,EAAE,WAAW,UAAU,CAAC;AAEhE,MAAM,mBAAqC;AAAA,EAChD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AACd;AAEO,MAAM,oBAAuC;AAAA,EAClD,YAAY,EAAE,UAAU;AAC1B;AAEA,SAAS,gBAAgB,QAAgB;AACvC,SAAO;AAAA,IACL,IAAI,OAAO,OAAO,EAAE;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,UAAU,CAAC,CAAC,OAAO;AAAA,IACnB,WAAW,OAAO,YAAY,OAAO,UAAU,YAAY,IAAI;AAAA,IAC/D,WAAW,OAAO,YAAY,OAAO,UAAU,YAAY,IAAI;AAAA,IAC/D,WAAW,OAAO,YAAY,OAAO,UAAU,YAAY,IAAI;AAAA,EACjE;AACF;AAKA,MAAM,sBAA6D;AAAA,EACjE,IAAI;AAAA,EACJ,MAAM,QAAQ,UAAU,KAAK;AAC3B,UAAM,kBAAkB,GAAG;AAC3B,UAAM,EAAE,QAAQ,OAAO,IAAI,sBAAsB,oBAAoB,QAAQ;AAC7E,UAAM,KAAM,IAAI,UAAU,QAAQ,YAAY;AAE9C,UAAM,SAAS,MAAM,GAAG,gBAAgB;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,OAAO;AAAA,QACb,UAAU,OAAO,YAAY;AAAA,MAC/B;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB;AAAA,MACzB,YAAY;AAAA,MACZ,UAAU,EAAE,UAAU;AAAA,MACtB,UAAU,OAAO,OAAO,EAAE;AAAA,MAC1B,gBAAgB;AAAA,MAChB,UAAU,IAAI,MAAM,YAAY;AAAA,MAChC,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,8BAA8B,GAAG;AACnC,UAAI;AACF,cAAM,MAAM,IAAI,UAAU,QAAQ,YAAY;AAC9C,YAAI,KAAK,YAAY,GAAG;AACtB,gBAAM,KAAK,kBAAkB,OAAO,OAAO,EAAE,CAAC;AAC9C,iBAAO,KAAK,sBAAsB,EAAE,UAAU,OAAO,OAAO,EAAE,EAAE,CAAC;AAAA,QACnE,OAAO;AACL,iBAAO,KAAK,qDAAqD,EAAE,UAAU,OAAO,OAAO,EAAE,EAAE,CAAC;AAAA,QAClG;AAAA,MACF,SAAS,KAAK;AACZ,eAAO,KAAK,kCAAkC,EAAE,IAAI,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,UAAM,cAAc;AAAA,MAClB,IAAI,OAAO,OAAO,EAAE;AAAA,MACpB,gBAAgB;AAAA,MAChB,UAAU
|
|
4
|
+
"sourcesContent": ["import type { CommandHandler } from '@open-mercato/shared/lib/commands'\nimport { registerCommand } from '@open-mercato/shared/lib/commands'\nimport { tenantCreateSchema, tenantUpdateSchema } from '@open-mercato/core/modules/directory/data/validators'\nimport { Tenant } from '@open-mercato/core/modules/directory/data/entities'\nimport type { DataEngine } from '@open-mercato/shared/lib/data/engine'\nimport type { EntityManager, FilterQuery } from '@mikro-orm/postgresql'\nimport { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'\nimport { requireSuperAdmin } from '@open-mercato/core/modules/auth/lib/tenantAccess'\nimport { E } from '#generated/entities.ids.generated'\nimport {\n parseWithCustomFields,\n setCustomFieldsIfAny,\n emitCrudSideEffects,\n buildChanges,\n requireId,\n} from '@open-mercato/shared/lib/commands/helpers'\nimport { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'\nimport type { CrudEventsConfig, CrudIndexerConfig } from '@open-mercato/shared/lib/crud/types'\nimport { isTenantDataEncryptionEnabled } from '@open-mercato/shared/lib/encryption/toggles'\nimport { makeCreateRedo } from '@open-mercato/shared/lib/commands/redo'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('directory').child({ component: 'tenants' })\n\nexport const tenantCrudEvents: CrudEventsConfig = {\n module: 'directory',\n entity: 'tenant',\n persistent: true,\n}\n\nexport const tenantCrudIndexer: CrudIndexerConfig = {\n entityType: E.directory.tenant,\n}\n\nfunction serializeTenant(entity: Tenant) {\n return {\n id: String(entity.id),\n name: entity.name,\n isActive: !!entity.isActive,\n createdAt: entity.createdAt ? entity.createdAt.toISOString() : null,\n updatedAt: entity.updatedAt ? entity.updatedAt.toISOString() : null,\n deletedAt: entity.deletedAt ? entity.deletedAt.toISOString() : null,\n }\n}\n\ntype TenantPayload = Record<string, unknown>\ntype SerializedTenant = ReturnType<typeof serializeTenant>\n\nconst createTenantCommand: CommandHandler<TenantPayload, Tenant> = {\n id: 'directory.tenants.create',\n async execute(rawInput, ctx) {\n await requireSuperAdmin(ctx)\n const { parsed, custom } = parseWithCustomFields(tenantCreateSchema, rawInput)\n const de = (ctx.container.resolve('dataEngine') as DataEngine)\n\n const tenant = await de.createOrmEntity({\n entity: Tenant,\n data: {\n name: parsed.name,\n isActive: parsed.isActive ?? true,\n },\n })\n\n await setCustomFieldsIfAny({\n dataEngine: de,\n entityId: E.directory.tenant,\n recordId: String(tenant.id),\n organizationId: null,\n tenantId: ctx.auth?.tenantId ?? null,\n values: custom,\n })\n\n if (isTenantDataEncryptionEnabled()) {\n try {\n const kms = ctx.container.resolve('kmsService') as { createTenantDek?: (id: string) => Promise<unknown>; isHealthy?: () => boolean }\n if (kms?.isHealthy?.()) {\n await kms?.createTenantDek?.(String(tenant.id))\n logger.info('Created tenant DEK', { tenantId: String(tenant.id) })\n } else {\n logger.warn('KMS not healthy, skipping tenant DEK provisioning', { tenantId: String(tenant.id) })\n }\n } catch (err) {\n logger.warn('Failed to provision tenant key', { err })\n }\n }\n\n const identifiers = {\n id: String(tenant.id),\n organizationId: null,\n tenantId: null,\n }\n\n await emitCrudSideEffects({\n dataEngine: de,\n action: 'created',\n entity: tenant,\n identifiers,\n events: tenantCrudEvents,\n indexer: tenantCrudIndexer,\n })\n\n return tenant\n },\n captureAfter: (_input, result) => serializeTenant(result),\n buildLog: async ({ snapshots, result, ctx }) => {\n const { translate } = await resolveTranslations()\n const after = (snapshots.after as SerializedTenant | undefined) ?? serializeTenant(result)\n return {\n actionLabel: translate('directory.audit.tenants.create', 'Create tenant'),\n resourceKind: 'directory.tenant',\n resourceId: String(result.id),\n tenantId: ctx.auth?.tenantId ?? null,\n snapshotAfter: after,\n payload: { undo: { after } },\n }\n },\n redo: makeCreateRedo<Tenant, SerializedTenant, TenantPayload, Tenant>({\n entityClass: Tenant,\n buildResult: (entity) => entity,\n events: tenantCrudEvents,\n indexer: tenantCrudIndexer,\n }),\n}\n\nconst updateTenantCommand: CommandHandler<TenantPayload, Tenant> = {\n id: 'directory.tenants.update',\n async prepare(rawInput, ctx) {\n await requireSuperAdmin(ctx)\n const { parsed } = parseWithCustomFields(tenantUpdateSchema, rawInput)\n const em = (ctx.container.resolve('em') as EntityManager)\n const current = await em.findOne(Tenant, { id: parsed.id, deletedAt: null })\n if (!current) throw new CrudHttpError(404, { error: 'Tenant not found' })\n return { before: serializeTenant(current) }\n },\n async execute(rawInput, ctx) {\n await requireSuperAdmin(ctx)\n const { parsed, custom } = parseWithCustomFields(tenantUpdateSchema, rawInput)\n const de = (ctx.container.resolve('dataEngine') as DataEngine)\n const tenant = await de.updateOrmEntity({\n entity: Tenant,\n where: { id: parsed.id, deletedAt: null } as FilterQuery<Tenant>,\n apply: (entity) => {\n if (parsed.name !== undefined) entity.name = parsed.name\n if (parsed.isActive !== undefined) entity.isActive = parsed.isActive\n entity.updatedAt = new Date()\n },\n })\n if (!tenant) throw new CrudHttpError(404, { error: 'Tenant not found' })\n\n await setCustomFieldsIfAny({\n dataEngine: de,\n entityId: E.directory.tenant,\n recordId: String(tenant.id),\n organizationId: null,\n tenantId: ctx.auth?.tenantId ?? null,\n values: custom,\n })\n\n const identifiers = {\n id: String(tenant.id),\n organizationId: null,\n tenantId: null,\n }\n\n await emitCrudSideEffects({\n dataEngine: de,\n action: 'updated',\n entity: tenant,\n identifiers,\n events: tenantCrudEvents,\n indexer: tenantCrudIndexer,\n })\n\n return tenant\n },\n captureAfter: (_input, result) => serializeTenant(result),\n buildLog: async ({ result, snapshots, ctx }) => {\n const { translate } = await resolveTranslations()\n const beforeRecord = (snapshots.before ?? null) as Record<string, unknown> | null\n const after = serializeTenant(result)\n const changes = buildChanges(beforeRecord, after as Record<string, unknown>, ['name', 'isActive'])\n return {\n actionLabel: translate('directory.audit.tenants.update', 'Update tenant'),\n resourceKind: 'directory.tenant',\n resourceId: String(result.id),\n changes,\n tenantId: ctx.auth?.tenantId ?? null,\n }\n },\n}\n\nconst deleteTenantCommand: CommandHandler<{ body: any; query: Record<string, string> }, Tenant> = {\n id: 'directory.tenants.delete',\n async prepare(input, ctx) {\n await requireSuperAdmin(ctx)\n const id = requireId(input, 'Tenant id required')\n const em = (ctx.container.resolve('em') as EntityManager)\n const existing = await em.findOne(Tenant, { id, deletedAt: null })\n return existing ? { before: serializeTenant(existing) } : {}\n },\n async execute(rawInput, ctx) {\n await requireSuperAdmin(ctx)\n const id = requireId(rawInput, 'Tenant id required')\n const de = (ctx.container.resolve('dataEngine') as DataEngine)\n const tenant = await de.deleteOrmEntity({\n entity: Tenant,\n where: { id, deletedAt: null } as FilterQuery<Tenant>,\n soft: true,\n softDeleteField: 'deletedAt',\n })\n if (!tenant) throw new CrudHttpError(404, { error: 'Tenant not found' })\n\n const identifiers = {\n id: String(id),\n organizationId: null,\n tenantId: null,\n }\n\n await emitCrudSideEffects({\n dataEngine: de,\n action: 'deleted',\n entity: tenant,\n identifiers,\n events: tenantCrudEvents,\n indexer: tenantCrudIndexer,\n })\n\n return tenant\n },\n buildLog: async ({ snapshots, input, ctx }) => {\n const { translate } = await resolveTranslations()\n const beforeSnapshot = (snapshots.before ?? null) as SerializedTenant | null\n const id = String(input?.body?.id ?? input?.query?.id ?? '')\n const fallbackId = beforeSnapshot?.id ?? null\n return {\n actionLabel: translate('directory.audit.tenants.delete', 'Delete tenant'),\n resourceKind: 'directory.tenant',\n resourceId: id || fallbackId || null,\n snapshotBefore: beforeSnapshot ?? null,\n tenantId: ctx.auth?.tenantId ?? null,\n }\n },\n}\n\nregisterCommand(createTenantCommand)\nregisterCommand(updateTenantCommand)\nregisterCommand(deleteTenantCommand)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/core",
|
|
3
|
-
"version": "0.6.8-develop.
|
|
3
|
+
"version": "0.6.8-develop.6882.1.cd042ac354",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -254,16 +254,16 @@
|
|
|
254
254
|
"zod": "^4.4.3"
|
|
255
255
|
},
|
|
256
256
|
"peerDependencies": {
|
|
257
|
-
"@open-mercato/ai-assistant": "0.6.8-develop.
|
|
258
|
-
"@open-mercato/shared": "0.6.8-develop.
|
|
259
|
-
"@open-mercato/ui": "0.6.8-develop.
|
|
257
|
+
"@open-mercato/ai-assistant": "0.6.8-develop.6882.1.cd042ac354",
|
|
258
|
+
"@open-mercato/shared": "0.6.8-develop.6882.1.cd042ac354",
|
|
259
|
+
"@open-mercato/ui": "0.6.8-develop.6882.1.cd042ac354",
|
|
260
260
|
"react": "^19.0.0",
|
|
261
261
|
"react-dom": "^19.0.0"
|
|
262
262
|
},
|
|
263
263
|
"devDependencies": {
|
|
264
|
-
"@open-mercato/ai-assistant": "0.6.8-develop.
|
|
265
|
-
"@open-mercato/shared": "0.6.8-develop.
|
|
266
|
-
"@open-mercato/ui": "0.6.8-develop.
|
|
264
|
+
"@open-mercato/ai-assistant": "0.6.8-develop.6882.1.cd042ac354",
|
|
265
|
+
"@open-mercato/shared": "0.6.8-develop.6882.1.cd042ac354",
|
|
266
|
+
"@open-mercato/ui": "0.6.8-develop.6882.1.cd042ac354",
|
|
267
267
|
"@testing-library/dom": "^10.4.1",
|
|
268
268
|
"@testing-library/jest-dom": "^7.0.0",
|
|
269
269
|
"@testing-library/react": "^16.3.1",
|
|
@@ -87,7 +87,7 @@ const createTenantCommand: CommandHandler<TenantPayload, Tenant> = {
|
|
|
87
87
|
const identifiers = {
|
|
88
88
|
id: String(tenant.id),
|
|
89
89
|
organizationId: null,
|
|
90
|
-
tenantId:
|
|
90
|
+
tenantId: null,
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
await emitCrudSideEffects({
|
|
@@ -119,9 +119,6 @@ const createTenantCommand: CommandHandler<TenantPayload, Tenant> = {
|
|
|
119
119
|
buildResult: (entity) => entity,
|
|
120
120
|
events: tenantCrudEvents,
|
|
121
121
|
indexer: tenantCrudIndexer,
|
|
122
|
-
afterRestore: ({ entity }) => {
|
|
123
|
-
Reflect.set(entity, 'tenantId', String(entity.id))
|
|
124
|
-
},
|
|
125
122
|
}),
|
|
126
123
|
}
|
|
127
124
|
|
|
@@ -162,7 +159,7 @@ const updateTenantCommand: CommandHandler<TenantPayload, Tenant> = {
|
|
|
162
159
|
const identifiers = {
|
|
163
160
|
id: String(tenant.id),
|
|
164
161
|
organizationId: null,
|
|
165
|
-
tenantId:
|
|
162
|
+
tenantId: null,
|
|
166
163
|
}
|
|
167
164
|
|
|
168
165
|
await emitCrudSideEffects({
|
|
@@ -216,7 +213,7 @@ const deleteTenantCommand: CommandHandler<{ body: any; query: Record<string, str
|
|
|
216
213
|
const identifiers = {
|
|
217
214
|
id: String(id),
|
|
218
215
|
organizationId: null,
|
|
219
|
-
tenantId:
|
|
216
|
+
tenantId: null,
|
|
220
217
|
}
|
|
221
218
|
|
|
222
219
|
await emitCrudSideEffects({
|