@open-mercato/core 0.4.2-canary-15e78de280 → 0.4.2-canary-ed15f2e753
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/generated/entities/workflow_event_trigger/index.js +33 -0
- package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +1 -0
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +2 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/auth/events.js +30 -0
- package/dist/modules/auth/events.js.map +7 -0
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
- package/dist/modules/business_rules/data/validators.js +34 -0
- package/dist/modules/business_rules/data/validators.js.map +2 -2
- package/dist/modules/business_rules/index.js +21 -1
- package/dist/modules/business_rules/index.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-engine.js +182 -1
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/catalog/events.js +34 -0
- package/dist/modules/catalog/events.js.map +7 -0
- package/dist/modules/customers/events.js +49 -0
- package/dist/modules/customers/events.js.map +7 -0
- package/dist/modules/directory/events.js +23 -0
- package/dist/modules/directory/events.js.map +7 -0
- package/dist/modules/sales/acl.js +1 -0
- package/dist/modules/sales/acl.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +62 -0
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/events.js +63 -0
- package/dist/modules/sales/events.js.map +7 -0
- package/dist/modules/sales/lib/dictionaries.js +3 -0
- package/dist/modules/sales/lib/dictionaries.js.map +2 -2
- package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
- package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
- package/dist/modules/workflows/acl.js +2 -0
- package/dist/modules/workflows/acl.js.map +2 -2
- package/dist/modules/workflows/api/instances/route.js +18 -6
- package/dist/modules/workflows/api/instances/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/route.js +6 -1
- package/dist/modules/workflows/api/tasks/route.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
- package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
- package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +5 -6
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/cli.js +81 -3
- package/dist/modules/workflows/cli.js.map +3 -3
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
- package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
- package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
- package/dist/modules/workflows/data/entities.js +64 -1
- package/dist/modules/workflows/data/entities.js.map +2 -2
- package/dist/modules/workflows/data/validators.js +115 -0
- package/dist/modules/workflows/data/validators.js.map +2 -2
- package/dist/modules/workflows/events.js +38 -0
- package/dist/modules/workflows/events.js.map +7 -0
- package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
- package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
- package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
- package/dist/modules/workflows/lib/activity-executor.js +75 -13
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
- package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
- package/dist/modules/workflows/lib/graph-utils.js +71 -2
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/dist/modules/workflows/lib/seeds.js +22 -5
- package/dist/modules/workflows/lib/seeds.js.map +2 -2
- package/dist/modules/workflows/lib/start-validator.js +33 -23
- package/dist/modules/workflows/lib/start-validator.js.map +2 -2
- package/dist/modules/workflows/lib/transition-handler.js +157 -45
- package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
- package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
- package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
- package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
- package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
- package/dist/modules/workflows/widgets/injection-table.js +19 -0
- package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
- package/generated/entities/workflow_event_trigger/index.ts +15 -0
- package/generated/entities.ids.generated.ts +1 -0
- package/generated/entity-fields-registry.ts +2 -0
- package/package.json +2 -2
- package/src/modules/auth/events.ts +39 -0
- package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
- package/src/modules/business_rules/data/validators.ts +40 -0
- package/src/modules/business_rules/index.ts +25 -0
- package/src/modules/business_rules/lib/rule-engine.ts +281 -1
- package/src/modules/catalog/events.ts +45 -0
- package/src/modules/customers/events.ts +63 -0
- package/src/modules/directory/events.ts +31 -0
- package/src/modules/sales/acl.ts +1 -0
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
- package/src/modules/sales/commands/documents.ts +74 -1
- package/src/modules/sales/events.ts +82 -0
- package/src/modules/sales/lib/dictionaries.ts +3 -0
- package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
- package/src/modules/workflows/acl.ts +2 -0
- package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
- package/src/modules/workflows/api/instances/route.ts +21 -7
- package/src/modules/workflows/api/tasks/route.ts +7 -1
- package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
- package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
- package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
- package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/tasks/page.tsx +5 -6
- package/src/modules/workflows/cli.ts +111 -0
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
- package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
- package/src/modules/workflows/data/entities.ts +124 -0
- package/src/modules/workflows/data/validators.ts +138 -0
- package/src/modules/workflows/events.ts +49 -0
- package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
- package/src/modules/workflows/examples/order-approval-definition.json +257 -0
- package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
- package/src/modules/workflows/i18n/en.json +71 -0
- package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
- package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
- package/src/modules/workflows/lib/activity-executor.ts +129 -16
- package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
- package/src/modules/workflows/lib/graph-utils.ts +117 -2
- package/src/modules/workflows/lib/seeds.ts +34 -8
- package/src/modules/workflows/lib/start-validator.ts +38 -28
- package/src/modules/workflows/lib/transition-handler.ts +208 -55
- package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
- package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
- package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
- package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
- package/src/modules/workflows/widgets/injection-table.ts +21 -0
|
@@ -2,6 +2,7 @@ import type { ModuleCli } from '@open-mercato/shared/modules/registry'
|
|
|
2
2
|
import { createRequestContainer } from '@open-mercato/shared/lib/di/container'
|
|
3
3
|
import type { EntityManager } from '@mikro-orm/postgresql'
|
|
4
4
|
import { WorkflowDefinition } from './data/entities'
|
|
5
|
+
import { BusinessRule, type RuleType } from '@open-mercato/core/modules/business_rules/data/entities'
|
|
5
6
|
import * as fs from 'fs'
|
|
6
7
|
import * as path from 'path'
|
|
7
8
|
import { fileURLToPath } from 'url'
|
|
@@ -283,6 +284,111 @@ const seedSimpleApproval: ModuleCli = {
|
|
|
283
284
|
},
|
|
284
285
|
}
|
|
285
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Seed order approval example
|
|
289
|
+
*/
|
|
290
|
+
const seedOrderApproval: ModuleCli = {
|
|
291
|
+
command: 'seed-order-approval',
|
|
292
|
+
async run(rest: string[]) {
|
|
293
|
+
const args = parseArgs(rest)
|
|
294
|
+
const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')
|
|
295
|
+
const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')
|
|
296
|
+
|
|
297
|
+
if (!tenantId || !organizationId) {
|
|
298
|
+
console.error('Usage: mercato workflows seed-order-approval --tenant <tenantId> --org <organizationId>')
|
|
299
|
+
return
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
try {
|
|
303
|
+
const { resolve } = await createRequestContainer()
|
|
304
|
+
const em = resolve<EntityManager>('em')
|
|
305
|
+
|
|
306
|
+
// 1. Seed order approval guard rules first
|
|
307
|
+
const guardRulesPath = path.join(__dirname, 'examples', 'order-approval-guard-rules.json')
|
|
308
|
+
const guardRulesData = JSON.parse(fs.readFileSync(guardRulesPath, 'utf8')) as Array<{
|
|
309
|
+
ruleId: string
|
|
310
|
+
ruleName: string
|
|
311
|
+
ruleType: RuleType
|
|
312
|
+
entityType: string
|
|
313
|
+
description?: string
|
|
314
|
+
eventType?: string
|
|
315
|
+
conditionExpression?: Record<string, unknown>
|
|
316
|
+
enabled?: boolean
|
|
317
|
+
priority?: number
|
|
318
|
+
}>
|
|
319
|
+
|
|
320
|
+
let rulesSeeded = 0
|
|
321
|
+
let rulesSkipped = 0
|
|
322
|
+
for (const rule of guardRulesData) {
|
|
323
|
+
const existingRule = await em.findOne(BusinessRule, {
|
|
324
|
+
ruleId: rule.ruleId,
|
|
325
|
+
tenantId,
|
|
326
|
+
organizationId,
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
if (existingRule) {
|
|
330
|
+
rulesSkipped++
|
|
331
|
+
continue
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const newRule = em.create(BusinessRule, {
|
|
335
|
+
...rule,
|
|
336
|
+
tenantId,
|
|
337
|
+
organizationId,
|
|
338
|
+
})
|
|
339
|
+
em.persist(newRule)
|
|
340
|
+
console.log(` ✓ Seeded guard rule: ${rule.ruleName}`)
|
|
341
|
+
rulesSeeded++
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (rulesSeeded > 0) {
|
|
345
|
+
await em.flush()
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// 2. Read the order approval workflow definition
|
|
349
|
+
const approvalPath = path.join(__dirname, 'examples', 'order-approval-definition.json')
|
|
350
|
+
const approvalData = JSON.parse(fs.readFileSync(approvalPath, 'utf8'))
|
|
351
|
+
|
|
352
|
+
// Check if it already exists
|
|
353
|
+
const existing = await em.findOne(WorkflowDefinition, {
|
|
354
|
+
workflowId: approvalData.workflowId,
|
|
355
|
+
tenantId,
|
|
356
|
+
organizationId,
|
|
357
|
+
})
|
|
358
|
+
|
|
359
|
+
if (existing) {
|
|
360
|
+
console.log(`✓ Order approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`)
|
|
361
|
+
console.log(` - Guard rules seeded: ${rulesSeeded}`)
|
|
362
|
+
console.log(` - Guard rules skipped: ${rulesSkipped}`)
|
|
363
|
+
return
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Create the workflow definition
|
|
367
|
+
const workflow = em.create(WorkflowDefinition, {
|
|
368
|
+
...approvalData,
|
|
369
|
+
tenantId,
|
|
370
|
+
organizationId,
|
|
371
|
+
})
|
|
372
|
+
|
|
373
|
+
await em.persistAndFlush(workflow)
|
|
374
|
+
|
|
375
|
+
console.log(`✓ Seeded order approval workflow: ${workflow.workflowName}`)
|
|
376
|
+
console.log(` - ID: ${workflow.id}`)
|
|
377
|
+
console.log(` - Workflow ID: ${workflow.workflowId}`)
|
|
378
|
+
console.log(` - Version: ${workflow.version}`)
|
|
379
|
+
console.log(` - Steps: ${workflow.definition.steps.length}`)
|
|
380
|
+
console.log(` - Transitions: ${workflow.definition.transitions.length}`)
|
|
381
|
+
console.log(` - Guard rules seeded: ${rulesSeeded}`)
|
|
382
|
+
console.log(` - Guard rules skipped: ${rulesSkipped}`)
|
|
383
|
+
console.log('')
|
|
384
|
+
console.log('Order approval workflow is ready!')
|
|
385
|
+
} catch (error) {
|
|
386
|
+
console.error('Error seeding order approval workflow:', error)
|
|
387
|
+
throw error
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
}
|
|
391
|
+
|
|
286
392
|
/**
|
|
287
393
|
* Start workflow activity worker
|
|
288
394
|
*/
|
|
@@ -366,6 +472,10 @@ const seedAll: ModuleCli = {
|
|
|
366
472
|
await seedSimpleApproval.run(rest)
|
|
367
473
|
console.log('')
|
|
368
474
|
|
|
475
|
+
// Seed order approval
|
|
476
|
+
await seedOrderApproval.run(rest)
|
|
477
|
+
console.log('')
|
|
478
|
+
|
|
369
479
|
console.log('✓ All example workflows seeded successfully!')
|
|
370
480
|
} catch (error) {
|
|
371
481
|
console.error('Error seeding workflows:', error)
|
|
@@ -444,6 +554,7 @@ const workflowsCliCommands = [
|
|
|
444
554
|
seedDemoWithRules,
|
|
445
555
|
seedSalesPipeline,
|
|
446
556
|
seedSimpleApproval,
|
|
557
|
+
seedOrderApproval,
|
|
447
558
|
seedAll,
|
|
448
559
|
]
|
|
449
560
|
|