@lssm/example.crm-pipeline 0.0.0-canary-20251213172311 → 0.0.0-canary-20251215231151

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 (39) hide show
  1. package/.turbo/turbo-build.log +26 -23
  2. package/CHANGELOG.md +8 -8
  3. package/dist/contracts/index.js +1 -1
  4. package/dist/entities/index.js +1 -1
  5. package/dist/events/contact.event.js +1 -0
  6. package/dist/events/deal.event.js +1 -0
  7. package/dist/events/index.js +1 -0
  8. package/dist/events/task.event.js +1 -0
  9. package/dist/index.js +1 -1
  10. package/dist/presentations/index.js +1 -1
  11. package/dist/presentations/pipeline.presentation.js +1 -0
  12. package/package.json +26 -20
  13. package/src/contracts/index.ts +1 -1
  14. package/src/entities/index.ts +23 -41
  15. package/src/events/contact.event.ts +26 -0
  16. package/src/{events.ts → events/deal.event.ts} +0 -58
  17. package/src/events/index.ts +3 -0
  18. package/src/events/task.event.ts +23 -0
  19. package/src/example.ts +4 -3
  20. package/src/index.ts +1 -1
  21. package/src/presentations/index.ts +2 -38
  22. package/src/presentations/{pipeline.ts → pipeline.presentation.ts} +1 -1
  23. package/tsconfig.tsbuildinfo +1 -1
  24. package/dist/events.js +0 -1
  25. package/dist/presentations/pipeline.js +0 -1
  26. /package/dist/contracts/{deal.js → deal.contracts.js} +0 -0
  27. /package/dist/{feature.js → crm-pipeline.feature.js} +0 -0
  28. /package/dist/entities/{company.js → company.entity.js} +0 -0
  29. /package/dist/entities/{contact.js → contact.entity.js} +0 -0
  30. /package/dist/entities/{deal.js → deal.entity.js} +0 -0
  31. /package/dist/entities/{task.js → task.entity.js} +0 -0
  32. /package/dist/presentations/{dashboard.js → dashboard.presentation.js} +0 -0
  33. /package/src/contracts/{deal.ts → deal.contracts.ts} +0 -0
  34. /package/src/{feature.ts → crm-pipeline.feature.ts} +0 -0
  35. /package/src/entities/{company.ts → company.entity.ts} +0 -0
  36. /package/src/entities/{contact.ts → contact.entity.ts} +0 -0
  37. /package/src/entities/{deal.ts → deal.entity.ts} +0 -0
  38. /package/src/entities/{task.ts → task.entity.ts} +0 -0
  39. /package/src/presentations/{dashboard.ts → dashboard.presentation.ts} +0 -0
@@ -1,30 +1,33 @@
1
1
  $ bun build:bundle && bun build:types
2
2
  $ tsdown
3
- ℹ tsdown v0.17.0 powered by rolldown v1.0.0-beta.53
3
+ ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
4
4
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/crm-pipeline/tsdown.config.js
5
- ℹ entry: src/events.ts, src/example.ts, src/feature.ts, src/index.ts, src/contracts/deal.ts, src/contracts/index.ts, src/docs/crm-pipeline.docblock.ts, src/docs/index.ts, src/entities/company.ts, src/entities/contact.ts, src/entities/deal.ts, src/entities/index.ts, src/entities/task.ts, src/handlers/deal.handlers.ts, src/handlers/index.ts, src/handlers/mock-data.ts, src/presentations/dashboard.ts, src/presentations/index.ts, src/presentations/pipeline.ts
5
+ ℹ entry: src/crm-pipeline.feature.ts, src/example.ts, src/index.ts, src/contracts/deal.contracts.ts, src/contracts/index.ts, src/docs/crm-pipeline.docblock.ts, src/docs/index.ts, src/entities/company.entity.ts, src/entities/contact.entity.ts, src/entities/deal.entity.ts, src/entities/index.ts, src/entities/task.entity.ts, src/events/contact.event.ts, src/events/deal.event.ts, src/events/index.ts, src/events/task.event.ts, src/handlers/deal.handlers.ts, src/handlers/index.ts, src/handlers/mock-data.ts, src/presentations/dashboard.presentation.ts, src/presentations/index.ts, src/presentations/pipeline.presentation.ts
6
6
  ℹ target: esnext
7
7
  ℹ tsconfig: tsconfig.json
8
8
  ℹ Build start
9
- ℹ dist/contracts/deal.js 5.38 kB │ gzip: 1.27 kB
10
- ℹ dist/index.js 3.58 kB │ gzip: 1.10 kB
11
- ℹ dist/handlers/mock-data.js 3.36 kB │ gzip: 0.97 kB
12
- ℹ dist/docs/crm-pipeline.docblock.js 3.31 kB │ gzip: 1.36 kB
13
- ℹ dist/events.js 3.12 kB │ gzip: 0.69 kB
14
- ℹ dist/entities/deal.js 2.52 kB │ gzip: 0.87 kB
15
- ℹ dist/entities/task.js 2.35 kB │ gzip: 0.81 kB
16
- ℹ dist/handlers/deal.handlers.js 1.85 kB │ gzip: 0.78 kB
17
- ℹ dist/entities/contact.js 1.68 kB │ gzip: 0.70 kB
18
- ℹ dist/presentations/pipeline.js 1.48 kB │ gzip: 0.48 kB
19
- ℹ dist/feature.js 1.41 kB │ gzip: 0.44 kB
20
- ℹ dist/entities/company.js 1.35 kB │ gzip: 0.59 kB
21
- ℹ dist/contracts/index.js 0.79 kB │ gzip: 0.26 kB
22
- ℹ dist/entities/index.js 0.77 kB │ gzip: 0.33 kB
23
- ℹ dist/presentations/dashboard.js 0.74 kB │ gzip: 0.33 kB
24
- ℹ dist/handlers/index.js 0.60 kB │ gzip: 0.25 kB
25
- ℹ dist/example.js 0.59 kB │ gzip: 0.36 kB
26
- ℹ dist/presentations/index.js 0.47 kB │ gzip: 0.19 kB
27
- ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
28
- ℹ 19 files, total: 35.37 kB
29
- ✔ Build complete in 64ms
9
+ ℹ dist/contracts/deal.contracts.js 5.38 kB │ gzip: 1.27 kB
10
+ ℹ dist/index.js 3.60 kB │ gzip: 1.10 kB
11
+ ℹ dist/handlers/mock-data.js 3.36 kB │ gzip: 0.97 kB
12
+ ℹ dist/docs/crm-pipeline.docblock.js 3.31 kB │ gzip: 1.36 kB
13
+ ℹ dist/entities/deal.entity.js 2.52 kB │ gzip: 0.87 kB
14
+ ℹ dist/entities/task.entity.js 2.35 kB │ gzip: 0.81 kB
15
+ ℹ dist/events/deal.event.js 2.07 kB │ gzip: 0.50 kB
16
+ ℹ dist/handlers/deal.handlers.js 1.85 kB │ gzip: 0.78 kB
17
+ ℹ dist/entities/contact.entity.js 1.68 kB │ gzip: 0.70 kB
18
+ ℹ dist/presentations/pipeline.presentation.js 1.49 kB │ gzip: 0.49 kB
19
+ ℹ dist/crm-pipeline.feature.js 1.41 kB │ gzip: 0.44 kB
20
+ ℹ dist/entities/company.entity.js 1.35 kB │ gzip: 0.59 kB
21
+ ℹ dist/contracts/index.js 0.80 kB │ gzip: 0.27 kB
22
+ ℹ dist/entities/index.js 0.76 kB │ gzip: 0.33 kB
23
+ ℹ dist/presentations/dashboard.presentation.js 0.74 kB │ gzip: 0.33 kB
24
+ ℹ dist/handlers/index.js 0.60 kB │ gzip: 0.25 kB
25
+ ℹ dist/events/contact.event.js 0.59 kB │ gzip: 0.30 kB
26
+ ℹ dist/example.js 0.59 kB │ gzip: 0.36 kB
27
+ ℹ dist/events/task.event.js 0.58 kB │ gzip: 0.29 kB
28
+ ℹ dist/presentations/index.js 0.44 kB │ gzip: 0.17 kB
29
+ ℹ dist/events/index.js 0.35 kB │ gzip: 0.17 kB
30
+ ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
31
+ ℹ 22 files, total: 35.86 kB
32
+ ✔ Build complete in 57ms
30
33
  $ tsc --noEmit
package/CHANGELOG.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # @lssm/example.crm-pipeline
2
2
 
3
- ## 0.0.0-canary-20251213172311
3
+ ## 0.0.0-canary-20251215231151
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - 3086383: refactor: dependencies upgrade
8
8
  - Updated dependencies [3086383]
9
- - @lssm/lib.contracts@0.0.0-canary-20251213172311
10
- - @lssm/lib.schema@0.0.0-canary-20251213172311
11
- - @lssm/lib.jobs@0.0.0-canary-20251213172311
12
- - @lssm/lib.bus@0.0.0-canary-20251213172311
13
- - @lssm/lib.identity-rbac@0.0.0-canary-20251213172311
14
- - @lssm/module.audit-trail@0.0.0-canary-20251213172311
15
- - @lssm/module.notifications@0.0.0-canary-20251213172311
9
+ - @lssm/lib.contracts@0.0.0-canary-20251215231151
10
+ - @lssm/lib.schema@0.0.0-canary-20251215231151
11
+ - @lssm/lib.jobs@0.0.0-canary-20251215231151
12
+ - @lssm/lib.bus@0.0.0-canary-20251215231151
13
+ - @lssm/lib.identity-rbac@0.0.0-canary-20251215231151
14
+ - @lssm/module.audit-trail@0.0.0-canary-20251215231151
15
+ - @lssm/module.notifications@0.0.0-canary-20251215231151
@@ -1 +1 @@
1
- import{CreateDealContract as e,CreateDealInputModel as t,DealLostPayloadModel as n,DealModel as r,DealMovedPayloadModel as i,DealStatusFilterEnum as a,DealWonPayloadModel as o,ListDealsContract as s,ListDealsInputModel as c,ListDealsOutputModel as l,LoseDealContract as u,LoseDealInputModel as d,MoveDealContract as f,MoveDealInputModel as p,WinDealContract as m,WinDealInputModel as h}from"./deal.js";export{e as CreateDealContract,t as CreateDealInputModel,n as DealLostPayloadModel,r as DealModel,i as DealMovedPayloadModel,a as DealStatusFilterEnum,o as DealWonPayloadModel,s as ListDealsContract,c as ListDealsInputModel,l as ListDealsOutputModel,u as LoseDealContract,d as LoseDealInputModel,f as MoveDealContract,p as MoveDealInputModel,m as WinDealContract,h as WinDealInputModel};
1
+ import{CreateDealContract as e,CreateDealInputModel as t,DealLostPayloadModel as n,DealModel as r,DealMovedPayloadModel as i,DealStatusFilterEnum as a,DealWonPayloadModel as o,ListDealsContract as s,ListDealsInputModel as c,ListDealsOutputModel as l,LoseDealContract as u,LoseDealInputModel as d,MoveDealContract as f,MoveDealInputModel as p,WinDealContract as m,WinDealInputModel as h}from"./deal.contracts.js";export{e as CreateDealContract,t as CreateDealInputModel,n as DealLostPayloadModel,r as DealModel,i as DealMovedPayloadModel,a as DealStatusFilterEnum,o as DealWonPayloadModel,s as ListDealsContract,c as ListDealsInputModel,l as ListDealsOutputModel,u as LoseDealContract,d as LoseDealInputModel,f as MoveDealContract,p as MoveDealInputModel,m as WinDealContract,h as WinDealInputModel};
@@ -1 +1 @@
1
- import{ContactEntity as e,ContactStatusEnum as t}from"./contact.js";import{CompanyEntity as n,CompanySizeEnum as r}from"./company.js";import{DealEntity as i,DealStatusEnum as a,PipelineEntity as o,StageEntity as s}from"./deal.js";import{ActivityEntity as c,TaskEntity as l,TaskPriorityEnum as u,TaskStatusEnum as d,TaskTypeEnum as f}from"./task.js";const p=[e,n,o,s,i,l,c],m={moduleId:`@lssm/example.crm-pipeline`,entities:p,enums:[t,r,a,f,u,d]};export{c as ActivityEntity,n as CompanyEntity,r as CompanySizeEnum,e as ContactEntity,t as ContactStatusEnum,i as DealEntity,a as DealStatusEnum,o as PipelineEntity,s as StageEntity,l as TaskEntity,u as TaskPriorityEnum,d as TaskStatusEnum,f as TaskTypeEnum,p as crmPipelineEntities,m as crmPipelineSchemaContribution};
1
+ import{CompanyEntity as e,CompanySizeEnum as t}from"./company.entity.js";import{ContactEntity as n,ContactStatusEnum as r}from"./contact.entity.js";import{DealEntity as i,DealStatusEnum as a,PipelineEntity as o,StageEntity as s}from"./deal.entity.js";import{ActivityEntity as c,TaskEntity as l,TaskPriorityEnum as u,TaskStatusEnum as d,TaskTypeEnum as f}from"./task.entity.js";const p={moduleId:`@lssm/example.crm-pipeline`,entities:[e,n,i,o,s,l,c],enums:[t,r,a,f,u,d]};export{c as ActivityEntity,e as CompanyEntity,t as CompanySizeEnum,n as ContactEntity,r as ContactStatusEnum,i as DealEntity,a as DealStatusEnum,o as PipelineEntity,s as StageEntity,l as TaskEntity,u as TaskPriorityEnum,d as TaskStatusEnum,f as TaskTypeEnum,p as crmPipelineSchemaContribution};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=n({name:`contact.created`,version:1,description:`A new contact has been created.`,payload:t({name:`ContactCreatedPayload`,description:`Payload when a contact is created`,fields:{contactId:{type:e.String_unsecure(),isOptional:!1},email:{type:e.EmailAddress(),isOptional:!0},organizationId:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}})});export{r as ContactCreatedEvent};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=t({name:`DealCreatedPayload`,description:`Payload when a deal is created`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},pipelineId:{type:e.String_unsecure(),isOptional:!1},stageId:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),i=t({name:`DealMovedEventPayload`,description:`Payload when a deal is moved to another stage`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},fromStageId:{type:e.String_unsecure(),isOptional:!1},toStageId:{type:e.String_unsecure(),isOptional:!1},movedBy:{type:e.String_unsecure(),isOptional:!1},movedAt:{type:e.DateTime(),isOptional:!1}}}),a=t({name:`DealWonEventPayload`,description:`Payload when a deal is won`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},currency:{type:e.String_unsecure(),isOptional:!1},contactId:{type:e.String_unsecure(),isOptional:!0},companyId:{type:e.String_unsecure(),isOptional:!0},ownerId:{type:e.String_unsecure(),isOptional:!1},wonAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`DealLostEventPayload`,description:`Payload when a deal is lost`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},lostAt:{type:e.DateTime(),isOptional:!1}}}),s=n({name:`deal.created`,version:1,description:`A new deal has been created.`,payload:r}),c=n({name:`deal.moved`,version:1,description:`A deal has been moved to a different stage.`,payload:i}),l=n({name:`deal.won`,version:1,description:`A deal has been won.`,payload:a}),u=n({name:`deal.lost`,version:1,description:`A deal has been lost.`,payload:o});export{s as DealCreatedEvent,u as DealLostEvent,c as DealMovedEvent,l as DealWonEvent};
@@ -0,0 +1 @@
1
+ import{ContactCreatedEvent as e}from"./contact.event.js";import{DealCreatedEvent as t,DealLostEvent as n,DealMovedEvent as r,DealWonEvent as i}from"./deal.event.js";import{TaskCompletedEvent as a}from"./task.event.js";export{e as ContactCreatedEvent,t as DealCreatedEvent,n as DealLostEvent,r as DealMovedEvent,i as DealWonEvent,a as TaskCompletedEvent};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=n({name:`task.completed`,version:1,description:`A task has been completed.`,payload:t({name:`TaskCompletedPayload`,description:`Payload when a task is completed`,fields:{taskId:{type:e.String_unsecure(),isOptional:!1},type:{type:e.String_unsecure(),isOptional:!1},assignedTo:{type:e.String_unsecure(),isOptional:!1},completedBy:{type:e.String_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})});export{r as TaskCompletedEvent};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{ContactCreatedEvent as e,CrmPipelineEvents as t,DealCreatedEvent as n,DealLostEvent as r,DealMovedEvent as i,DealWonEvent as a,TaskCompletedEvent as o}from"./events.js";import s from"./example.js";import{CrmPipelineFeature as c}from"./feature.js";import{ContactEntity as l,ContactStatusEnum as u}from"./entities/contact.js";import{CompanyEntity as d,CompanySizeEnum as f}from"./entities/company.js";import{DealEntity as p,DealStatusEnum as m,PipelineEntity as h,StageEntity as g}from"./entities/deal.js";import{ActivityEntity as _,TaskEntity as v,TaskPriorityEnum as y,TaskStatusEnum as b,TaskTypeEnum as x}from"./entities/task.js";import{crmPipelineEntities as S,crmPipelineSchemaContribution as C}from"./entities/index.js";import{CreateDealContract as w,CreateDealInputModel as T,DealLostPayloadModel as E,DealModel as D,DealMovedPayloadModel as O,DealStatusFilterEnum as k,DealWonPayloadModel as ee,ListDealsContract as A,ListDealsInputModel as j,ListDealsOutputModel as M,LoseDealContract as N,LoseDealInputModel as P,MoveDealContract as F,MoveDealInputModel as I,WinDealContract as L,WinDealInputModel as R}from"./contracts/deal.js";import"./contracts/index.js";import{MOCK_COMPANIES as z,MOCK_CONTACTS as B,MOCK_DEALS as V,MOCK_STAGES as H}from"./handlers/mock-data.js";import{mockCreateDealHandler as U,mockGetDealsByStageHandler as W,mockGetPipelineStagesHandler as G,mockListDealsHandler as K,mockLoseDealHandler as q,mockMoveDealHandler as J,mockWinDealHandler as Y}from"./handlers/deal.handlers.js";import{DealCardPresentation as X,DealDetailPresentation as Z,DealListPresentation as Q,PipelineKanbanPresentation as $}from"./presentations/pipeline.js";import{CrmDashboardPresentation as te,PipelineMetricsPresentation as ne}from"./presentations/dashboard.js";import{CrmPipelinePresentations as re}from"./presentations/index.js";import"./docs/index.js";import{identityRbacSchemaContribution as ie}from"@lssm/lib.identity-rbac";import{auditTrailSchemaContribution as ae}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as oe}from"@lssm/module.notifications";const se={modules:[ie,ae,oe,C],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{_ as ActivityEntity,d as CompanyEntity,f as CompanySizeEnum,e as ContactCreatedEvent,l as ContactEntity,u as ContactStatusEnum,w as CreateDealContract,T as CreateDealInputModel,te as CrmDashboardPresentation,t as CrmPipelineEvents,c as CrmPipelineFeature,re as CrmPipelinePresentations,X as DealCardPresentation,n as DealCreatedEvent,Z as DealDetailPresentation,p as DealEntity,Q as DealListPresentation,r as DealLostEvent,E as DealLostPayloadModel,D as DealModel,i as DealMovedEvent,O as DealMovedPayloadModel,m as DealStatusEnum,k as DealStatusFilterEnum,a as DealWonEvent,ee as DealWonPayloadModel,A as ListDealsContract,j as ListDealsInputModel,M as ListDealsOutputModel,N as LoseDealContract,P as LoseDealInputModel,z as MOCK_COMPANIES,B as MOCK_CONTACTS,V as MOCK_DEALS,H as MOCK_STAGES,F as MoveDealContract,I as MoveDealInputModel,h as PipelineEntity,$ as PipelineKanbanPresentation,ne as PipelineMetricsPresentation,g as StageEntity,o as TaskCompletedEvent,v as TaskEntity,y as TaskPriorityEnum,b as TaskStatusEnum,x as TaskTypeEnum,L as WinDealContract,R as WinDealInputModel,S as crmPipelineEntities,C as crmPipelineSchemaContribution,s as example,U as mockCreateDealHandler,W as mockGetDealsByStageHandler,G as mockGetPipelineStagesHandler,K as mockListDealsHandler,q as mockLoseDealHandler,J as mockMoveDealHandler,Y as mockWinDealHandler,se as schemaComposition};
1
+ import{CrmPipelineFeature as e}from"./crm-pipeline.feature.js";import t from"./example.js";import{CompanyEntity as n,CompanySizeEnum as r}from"./entities/company.entity.js";import{ContactEntity as i,ContactStatusEnum as a}from"./entities/contact.entity.js";import{DealEntity as o,DealStatusEnum as s,PipelineEntity as c,StageEntity as l}from"./entities/deal.entity.js";import{ActivityEntity as u,TaskEntity as d,TaskPriorityEnum as f,TaskStatusEnum as p,TaskTypeEnum as m}from"./entities/task.entity.js";import{crmPipelineSchemaContribution as h}from"./entities/index.js";import{CreateDealContract as g,CreateDealInputModel as _,DealLostPayloadModel as v,DealModel as y,DealMovedPayloadModel as b,DealStatusFilterEnum as x,DealWonPayloadModel as S,ListDealsContract as C,ListDealsInputModel as w,ListDealsOutputModel as T,LoseDealContract as E,LoseDealInputModel as D,MoveDealContract as O,MoveDealInputModel as k,WinDealContract as ee,WinDealInputModel as A}from"./contracts/deal.contracts.js";import"./contracts/index.js";import{ContactCreatedEvent as j}from"./events/contact.event.js";import{DealCreatedEvent as M,DealLostEvent as N,DealMovedEvent as P,DealWonEvent as F}from"./events/deal.event.js";import{TaskCompletedEvent as I}from"./events/task.event.js";import"./events/index.js";import{MOCK_COMPANIES as L,MOCK_CONTACTS as R,MOCK_DEALS as z,MOCK_STAGES as B}from"./handlers/mock-data.js";import{mockCreateDealHandler as V,mockGetDealsByStageHandler as H,mockGetPipelineStagesHandler as U,mockListDealsHandler as W,mockLoseDealHandler as G,mockMoveDealHandler as K,mockWinDealHandler as q}from"./handlers/deal.handlers.js";import{CrmDashboardPresentation as J,PipelineMetricsPresentation as Y}from"./presentations/dashboard.presentation.js";import{DealCardPresentation as X,DealDetailPresentation as Z,DealListPresentation as Q,PipelineKanbanPresentation as $}from"./presentations/pipeline.presentation.js";import"./presentations/index.js";import"./docs/index.js";import{identityRbacSchemaContribution as te}from"@lssm/lib.identity-rbac";import{auditTrailSchemaContribution as ne}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as re}from"@lssm/module.notifications";const ie={modules:[te,ne,re,h],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{u as ActivityEntity,n as CompanyEntity,r as CompanySizeEnum,j as ContactCreatedEvent,i as ContactEntity,a as ContactStatusEnum,g as CreateDealContract,_ as CreateDealInputModel,J as CrmDashboardPresentation,e as CrmPipelineFeature,X as DealCardPresentation,M as DealCreatedEvent,Z as DealDetailPresentation,o as DealEntity,Q as DealListPresentation,N as DealLostEvent,v as DealLostPayloadModel,y as DealModel,P as DealMovedEvent,b as DealMovedPayloadModel,s as DealStatusEnum,x as DealStatusFilterEnum,F as DealWonEvent,S as DealWonPayloadModel,C as ListDealsContract,w as ListDealsInputModel,T as ListDealsOutputModel,E as LoseDealContract,D as LoseDealInputModel,L as MOCK_COMPANIES,R as MOCK_CONTACTS,z as MOCK_DEALS,B as MOCK_STAGES,O as MoveDealContract,k as MoveDealInputModel,c as PipelineEntity,$ as PipelineKanbanPresentation,Y as PipelineMetricsPresentation,l as StageEntity,I as TaskCompletedEvent,d as TaskEntity,f as TaskPriorityEnum,p as TaskStatusEnum,m as TaskTypeEnum,ee as WinDealContract,A as WinDealInputModel,h as crmPipelineSchemaContribution,t as example,V as mockCreateDealHandler,H as mockGetDealsByStageHandler,U as mockGetPipelineStagesHandler,W as mockListDealsHandler,G as mockLoseDealHandler,K as mockMoveDealHandler,q as mockWinDealHandler,ie as schemaComposition};
@@ -1 +1 @@
1
- import{DealCardPresentation as e,DealDetailPresentation as t,DealListPresentation as n,PipelineKanbanPresentation as r}from"./pipeline.js";import{CrmDashboardPresentation as i,PipelineMetricsPresentation as a}from"./dashboard.js";const o=[i,r,n,t,e,a];export{i as CrmDashboardPresentation,o as CrmPipelinePresentations,e as DealCardPresentation,t as DealDetailPresentation,n as DealListPresentation,r as PipelineKanbanPresentation,a as PipelineMetricsPresentation};
1
+ import{CrmDashboardPresentation as e,PipelineMetricsPresentation as t}from"./dashboard.presentation.js";import{DealCardPresentation as n,DealDetailPresentation as r,DealListPresentation as i,PipelineKanbanPresentation as a}from"./pipeline.presentation.js";export{e as CrmDashboardPresentation,n as DealCardPresentation,r as DealDetailPresentation,i as DealListPresentation,a as PipelineKanbanPresentation,t as PipelineMetricsPresentation};
@@ -0,0 +1 @@
1
+ import{DealModel as e}from"../contracts/deal.contracts.js";const t={meta:{name:`crm.pipeline.kanban`,version:1,description:`Kanban board view of deals organized by stage`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`pipeline`,`kanban`,`deals`]},source:{type:`component`,framework:`react`,componentKey:`PipelineKanbanView`,props:e},targets:[`react`,`markdown`],policy:{flags:[`crm.pipeline.enabled`]}},n={meta:{name:`crm.deal.list`,version:1,description:`List view of deals with value, status, and owner info`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`list`]},source:{type:`component`,framework:`react`,componentKey:`DealListView`,props:e},targets:[`react`,`markdown`,`application/json`],policy:{flags:[`crm.deals.enabled`]}},r={meta:{name:`crm.deal.detail`,version:1,description:`Detailed view of a deal with activities, contacts, and history`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`detail`]},source:{type:`component`,framework:`react`,componentKey:`DealDetailView`},targets:[`react`,`markdown`],policy:{flags:[`crm.deals.enabled`]}},i={meta:{name:`crm.deal.card`,version:1,description:`Compact deal card for kanban board display`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`card`,`kanban`]},source:{type:`component`,framework:`react`,componentKey:`DealCard`,props:e},targets:[`react`],policy:{flags:[`crm.deals.enabled`]}};export{i as DealCardPresentation,r as DealDetailPresentation,n as DealListPresentation,t as PipelineKanbanPresentation};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.crm-pipeline",
3
- "version": "0.0.0-canary-20251213172311",
3
+ "version": "0.0.0-canary-20251215231151",
4
4
  "description": "CRM Pipeline - Contacts, Companies, Deals, Tasks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,23 +8,26 @@
8
8
  "exports": {
9
9
  ".": "./src/index.ts",
10
10
  "./contracts": "./src/contracts/index.ts",
11
- "./contracts/deal": "./src/contracts/deal.ts",
11
+ "./contracts/deal.contracts": "./src/contracts/deal.contracts.ts",
12
+ "./crm-pipeline.feature": "./src/crm-pipeline.feature.ts",
12
13
  "./docs": "./src/docs/index.ts",
13
14
  "./docs/crm-pipeline.docblock": "./src/docs/crm-pipeline.docblock.ts",
14
15
  "./entities": "./src/entities/index.ts",
15
- "./entities/company": "./src/entities/company.ts",
16
- "./entities/contact": "./src/entities/contact.ts",
17
- "./entities/deal": "./src/entities/deal.ts",
18
- "./entities/task": "./src/entities/task.ts",
19
- "./events": "./src/events.ts",
16
+ "./entities/company.entity": "./src/entities/company.entity.ts",
17
+ "./entities/contact.entity": "./src/entities/contact.entity.ts",
18
+ "./entities/deal.entity": "./src/entities/deal.entity.ts",
19
+ "./entities/task.entity": "./src/entities/task.entity.ts",
20
+ "./events": "./src/events/index.ts",
21
+ "./events/contact.event": "./src/events/contact.event.ts",
22
+ "./events/deal.event": "./src/events/deal.event.ts",
23
+ "./events/task.event": "./src/events/task.event.ts",
20
24
  "./example": "./src/example.ts",
21
- "./feature": "./src/feature.ts",
22
25
  "./handlers": "./src/handlers/index.ts",
23
26
  "./handlers/deal.handlers": "./src/handlers/deal.handlers.ts",
24
27
  "./handlers/mock-data": "./src/handlers/mock-data.ts",
25
28
  "./presentations": "./src/presentations/index.ts",
26
- "./presentations/dashboard": "./src/presentations/dashboard.ts",
27
- "./presentations/pipeline": "./src/presentations/pipeline.ts",
29
+ "./presentations/dashboard.presentation": "./src/presentations/dashboard.presentation.ts",
30
+ "./presentations/pipeline.presentation": "./src/presentations/pipeline.presentation.ts",
28
31
  "./*": "./*"
29
32
  },
30
33
  "scripts": {
@@ -51,7 +54,7 @@
51
54
  "devDependencies": {
52
55
  "@lssm/tool.tsdown": "workspace:*",
53
56
  "@lssm/tool.typescript": "workspace:*",
54
- "tsdown": "^0.17.0",
57
+ "tsdown": "^0.17.4",
55
58
  "typescript": "^5.9.3"
56
59
  },
57
60
  "module": "./dist/index.js",
@@ -59,23 +62,26 @@
59
62
  "exports": {
60
63
  ".": "./dist/index.js",
61
64
  "./contracts": "./dist/contracts/index.js",
62
- "./contracts/deal": "./dist/contracts/deal.js",
65
+ "./contracts/deal.contracts": "./dist/contracts/deal.contracts.js",
66
+ "./crm-pipeline.feature": "./dist/crm-pipeline.feature.js",
63
67
  "./docs": "./dist/docs/index.js",
64
68
  "./docs/crm-pipeline.docblock": "./dist/docs/crm-pipeline.docblock.js",
65
69
  "./entities": "./dist/entities/index.js",
66
- "./entities/company": "./dist/entities/company.js",
67
- "./entities/contact": "./dist/entities/contact.js",
68
- "./entities/deal": "./dist/entities/deal.js",
69
- "./entities/task": "./dist/entities/task.js",
70
- "./events": "./dist/events.js",
70
+ "./entities/company.entity": "./dist/entities/company.entity.js",
71
+ "./entities/contact.entity": "./dist/entities/contact.entity.js",
72
+ "./entities/deal.entity": "./dist/entities/deal.entity.js",
73
+ "./entities/task.entity": "./dist/entities/task.entity.js",
74
+ "./events": "./dist/events/index.js",
75
+ "./events/contact.event": "./dist/events/contact.event.js",
76
+ "./events/deal.event": "./dist/events/deal.event.js",
77
+ "./events/task.event": "./dist/events/task.event.js",
71
78
  "./example": "./dist/example.js",
72
- "./feature": "./dist/feature.js",
73
79
  "./handlers": "./dist/handlers/index.js",
74
80
  "./handlers/deal.handlers": "./dist/handlers/deal.handlers.js",
75
81
  "./handlers/mock-data": "./dist/handlers/mock-data.js",
76
82
  "./presentations": "./dist/presentations/index.js",
77
- "./presentations/dashboard": "./dist/presentations/dashboard.js",
78
- "./presentations/pipeline": "./dist/presentations/pipeline.js",
83
+ "./presentations/dashboard.presentation": "./dist/presentations/dashboard.presentation.js",
84
+ "./presentations/pipeline.presentation": "./dist/presentations/pipeline.presentation.js",
79
85
  "./*": "./*"
80
86
  }
81
87
  }
@@ -16,4 +16,4 @@ export {
16
16
  WinDealContract,
17
17
  LoseDealContract,
18
18
  ListDealsContract,
19
- } from './deal';
19
+ } from './deal.contracts';
@@ -1,60 +1,42 @@
1
- // Contact entities
2
- export { ContactStatusEnum, ContactEntity } from './contact';
1
+ export * from './company.entity';
2
+ export * from './contact.entity';
3
+ export * from './deal.entity';
4
+ export * from './task.entity';
3
5
 
4
- // Company entities
5
- export { CompanySizeEnum, CompanyEntity } from './company';
6
-
7
- // Deal entities
8
- export {
9
- DealStatusEnum,
10
- PipelineEntity,
11
- StageEntity,
12
- DealEntity,
13
- } from './deal';
14
-
15
- // Task entities
16
- export {
17
- TaskTypeEnum,
18
- TaskPriorityEnum,
19
- TaskStatusEnum,
20
- TaskEntity,
21
- ActivityEntity,
22
- } from './task';
23
-
24
- // Schema contribution
25
- import { ContactEntity, ContactStatusEnum } from './contact';
26
- import { CompanyEntity, CompanySizeEnum } from './company';
6
+ import type { ModuleSchemaContribution } from '@lssm/lib.schema';
7
+ import { CompanyEntity, CompanySizeEnum } from './company.entity';
8
+ import { ContactEntity, ContactStatusEnum } from './contact.entity';
27
9
  import {
10
+ DealEntity,
28
11
  PipelineEntity,
29
12
  StageEntity,
30
- DealEntity,
31
13
  DealStatusEnum,
32
- } from './deal';
14
+ } from './deal.entity';
33
15
  import {
34
16
  TaskEntity,
35
17
  ActivityEntity,
36
18
  TaskTypeEnum,
37
19
  TaskPriorityEnum,
38
20
  TaskStatusEnum,
39
- } from './task';
40
- import type { ModuleSchemaContribution } from '@lssm/lib.schema';
41
-
42
- export const crmPipelineEntities = [
43
- ContactEntity,
44
- CompanyEntity,
45
- PipelineEntity,
46
- StageEntity,
47
- DealEntity,
48
- TaskEntity,
49
- ActivityEntity,
50
- ];
21
+ } from './task.entity';
51
22
 
23
+ /**
24
+ * CRM Pipeline schema contribution.
25
+ */
52
26
  export const crmPipelineSchemaContribution: ModuleSchemaContribution = {
53
27
  moduleId: '@lssm/example.crm-pipeline',
54
- entities: crmPipelineEntities,
28
+ entities: [
29
+ CompanyEntity,
30
+ ContactEntity,
31
+ DealEntity,
32
+ PipelineEntity,
33
+ StageEntity,
34
+ TaskEntity,
35
+ ActivityEntity,
36
+ ],
55
37
  enums: [
56
- ContactStatusEnum,
57
38
  CompanySizeEnum,
39
+ ContactStatusEnum,
58
40
  DealStatusEnum,
59
41
  TaskTypeEnum,
60
42
  TaskPriorityEnum,
@@ -0,0 +1,26 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
+ import { defineEvent } from '@lssm/lib.contracts';
3
+
4
+ // ============ Contact Event Payloads ============
5
+
6
+ const ContactCreatedPayload = defineSchemaModel({
7
+ name: 'ContactCreatedPayload',
8
+ description: 'Payload when a contact is created',
9
+ fields: {
10
+ contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ email: { type: ScalarTypeEnum.EmailAddress(), isOptional: true },
12
+ organizationId: {
13
+ type: ScalarTypeEnum.String_unsecure(),
14
+ isOptional: false,
15
+ },
16
+ ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
17
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
18
+ },
19
+ });
20
+
21
+ export const ContactCreatedEvent = defineEvent({
22
+ name: 'contact.created',
23
+ version: 1,
24
+ description: 'A new contact has been created.',
25
+ payload: ContactCreatedPayload,
26
+ });
@@ -1,23 +1,6 @@
1
1
  import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
2
  import { defineEvent } from '@lssm/lib.contracts';
3
3
 
4
- // ============ Contact Event Payloads ============
5
-
6
- const ContactCreatedPayload = defineSchemaModel({
7
- name: 'ContactCreatedPayload',
8
- description: 'Payload when a contact is created',
9
- fields: {
10
- contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
- email: { type: ScalarTypeEnum.EmailAddress(), isOptional: true },
12
- organizationId: {
13
- type: ScalarTypeEnum.String_unsecure(),
14
- isOptional: false,
15
- },
16
- ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
17
- createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
18
- },
19
- });
20
-
21
4
  // ============ Deal Event Payloads ============
22
5
 
23
6
  const DealCreatedPayload = defineSchemaModel({
@@ -72,29 +55,6 @@ const DealLostPayload = defineSchemaModel({
72
55
  },
73
56
  });
74
57
 
75
- // ============ Task Event Payloads ============
76
-
77
- const TaskCompletedPayload = defineSchemaModel({
78
- name: 'TaskCompletedPayload',
79
- description: 'Payload when a task is completed',
80
- fields: {
81
- taskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
82
- type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
83
- assignedTo: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
84
- completedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
85
- completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
86
- },
87
- });
88
-
89
- // ============ Events ============
90
-
91
- export const ContactCreatedEvent = defineEvent({
92
- name: 'contact.created',
93
- version: 1,
94
- description: 'A new contact has been created.',
95
- payload: ContactCreatedPayload,
96
- });
97
-
98
58
  export const DealCreatedEvent = defineEvent({
99
59
  name: 'deal.created',
100
60
  version: 1,
@@ -122,21 +82,3 @@ export const DealLostEvent = defineEvent({
122
82
  description: 'A deal has been lost.',
123
83
  payload: DealLostPayload,
124
84
  });
125
-
126
- export const TaskCompletedEvent = defineEvent({
127
- name: 'task.completed',
128
- version: 1,
129
- description: 'A task has been completed.',
130
- payload: TaskCompletedPayload,
131
- });
132
-
133
- // ============ All Events ============
134
-
135
- export const CrmPipelineEvents = {
136
- ContactCreatedEvent,
137
- DealCreatedEvent,
138
- DealMovedEvent,
139
- DealWonEvent,
140
- DealLostEvent,
141
- TaskCompletedEvent,
142
- };
@@ -0,0 +1,3 @@
1
+ export * from './contact.event';
2
+ export * from './deal.event';
3
+ export * from './task.event';
@@ -0,0 +1,23 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
+ import { defineEvent } from '@lssm/lib.contracts';
3
+
4
+ // ============ Task Event Payloads ============
5
+
6
+ const TaskCompletedPayload = defineSchemaModel({
7
+ name: 'TaskCompletedPayload',
8
+ description: 'Payload when a task is completed',
9
+ fields: {
10
+ taskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ assignedTo: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
13
+ completedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
14
+ completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
15
+ },
16
+ });
17
+
18
+ export const TaskCompletedEvent = defineEvent({
19
+ name: 'task.completed',
20
+ version: 1,
21
+ description: 'A task has been completed.',
22
+ payload: TaskCompletedPayload,
23
+ });
package/src/example.ts CHANGED
@@ -18,12 +18,13 @@ const example = {
18
18
  },
19
19
  surfaces: {
20
20
  templates: true,
21
- sandbox: { enabled: true, modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'] },
21
+ sandbox: {
22
+ enabled: true,
23
+ modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'],
24
+ },
22
25
  studio: { enabled: true, installable: true },
23
26
  mcp: { enabled: true },
24
27
  },
25
28
  } as const;
26
29
 
27
30
  export default example;
28
-
29
-
package/src/index.ts CHANGED
@@ -6,7 +6,7 @@ export * from './contracts';
6
6
  export * from './events';
7
7
  export * from './handlers';
8
8
  export * from './presentations';
9
- export * from './feature';
9
+ export * from './crm-pipeline.feature';
10
10
  export { default as example } from './example';
11
11
  import './docs';
12
12
 
@@ -1,38 +1,2 @@
1
- /**
2
- * Presentation descriptors for crm-pipeline
3
- */
4
-
5
- // Pipeline presentations
6
- export {
7
- PipelineKanbanPresentation,
8
- DealListPresentation,
9
- DealDetailPresentation,
10
- DealCardPresentation,
11
- } from './pipeline';
12
-
13
- // Dashboard presentations
14
- export {
15
- CrmDashboardPresentation,
16
- PipelineMetricsPresentation,
17
- } from './dashboard';
18
-
19
- // Re-export all presentations as an array
20
- import {
21
- PipelineKanbanPresentation,
22
- DealListPresentation,
23
- DealDetailPresentation,
24
- DealCardPresentation,
25
- } from './pipeline';
26
- import {
27
- CrmDashboardPresentation,
28
- PipelineMetricsPresentation,
29
- } from './dashboard';
30
-
31
- export const CrmPipelinePresentations = [
32
- CrmDashboardPresentation,
33
- PipelineKanbanPresentation,
34
- DealListPresentation,
35
- DealDetailPresentation,
36
- DealCardPresentation,
37
- PipelineMetricsPresentation,
38
- ];
1
+ export * from './dashboard.presentation';
2
+ export * from './pipeline.presentation';
@@ -2,7 +2,7 @@
2
2
  * Pipeline Presentation Descriptors
3
3
  */
4
4
  import type { PresentationDescriptorV2 } from '@lssm/lib.contracts';
5
- import { DealModel } from '../contracts/deal';
5
+ import { DealModel } from '../contracts/deal.contracts';
6
6
 
7
7
  /**
8
8
  * Kanban board presentation for the sales pipeline.