@lssm/example.crm-pipeline 0.0.0-canary-20251213172311 → 0.0.0-canary-20251215220103
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/.turbo/turbo-build.log +12 -8
- package/CHANGELOG.md +8 -8
- package/dist/contracts/index.js +1 -1
- package/dist/events/contact.event.js +1 -0
- package/dist/events/deal.event.js +1 -0
- package/dist/events/index.js +1 -0
- package/dist/events/task.event.js +1 -0
- package/dist/index.js +1 -1
- package/dist/presentations/pipeline.js +1 -1
- package/package.json +11 -5
- package/src/contracts/index.ts +1 -1
- package/src/events/contact.event.ts +26 -0
- package/src/events/deal.event.ts +84 -0
- package/src/events/index.ts +3 -0
- package/src/events/task.event.ts +23 -0
- package/src/example.ts +4 -3
- package/src/presentations/pipeline.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- /package/dist/contracts/{deal.js → deal.contracts.js} +0 -0
- /package/src/contracts/{deal.ts → deal.contracts.ts} +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
$ bun build:bundle && bun build:types
|
|
2
2
|
$ tsdown
|
|
3
|
-
[34mℹ[39m tsdown [2mv0.17.
|
|
3
|
+
[34mℹ[39m tsdown [2mv0.17.4[22m powered by rolldown [2mv1.0.0-beta.53[22m
|
|
4
4
|
[34mℹ[39m config file: [4m/home/runner/work/contractspec/contractspec/packages/examples/crm-pipeline/tsdown.config.js[24m
|
|
5
|
-
[34mℹ[39m entry: [34msrc/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[39m
|
|
5
|
+
[34mℹ[39m entry: [34msrc/events.ts, src/example.ts, src/feature.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.ts, src/entities/contact.ts, src/entities/deal.ts, src/entities/index.ts, src/entities/task.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.ts, src/presentations/index.ts, src/presentations/pipeline.ts[39m
|
|
6
6
|
[34mℹ[39m target: [34mesnext[39m
|
|
7
7
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
8
8
|
[34mℹ[39m Build start
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1mcontracts/deal.js[22m
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m3.
|
|
9
|
+
[34mℹ[39m [2mdist/[22m[1mcontracts/deal.contracts.js[22m [2m5.38 kB[22m [2m│ gzip: 1.27 kB[22m
|
|
10
|
+
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m3.59 kB[22m [2m│ gzip: 1.10 kB[22m
|
|
11
11
|
[34mℹ[39m [2mdist/[22m[1mhandlers/mock-data.js[22m [2m3.36 kB[22m [2m│ gzip: 0.97 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1mdocs/crm-pipeline.docblock.js[22m [2m3.31 kB[22m [2m│ gzip: 1.36 kB[22m
|
|
13
13
|
[34mℹ[39m [2mdist/[22m[1mevents.js[22m [2m3.12 kB[22m [2m│ gzip: 0.69 kB[22m
|
|
14
14
|
[34mℹ[39m [2mdist/[22m[1mentities/deal.js[22m [2m2.52 kB[22m [2m│ gzip: 0.87 kB[22m
|
|
15
15
|
[34mℹ[39m [2mdist/[22m[1mentities/task.js[22m [2m2.35 kB[22m [2m│ gzip: 0.81 kB[22m
|
|
16
|
+
[34mℹ[39m [2mdist/[22m[1mevents/deal.event.js[22m [2m2.07 kB[22m [2m│ gzip: 0.50 kB[22m
|
|
16
17
|
[34mℹ[39m [2mdist/[22m[1mhandlers/deal.handlers.js[22m [2m1.85 kB[22m [2m│ gzip: 0.78 kB[22m
|
|
17
18
|
[34mℹ[39m [2mdist/[22m[1mentities/contact.js[22m [2m1.68 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
18
|
-
[34mℹ[39m [2mdist/[22m[1mpresentations/pipeline.js[22m [2m1.
|
|
19
|
+
[34mℹ[39m [2mdist/[22m[1mpresentations/pipeline.js[22m [2m1.49 kB[22m [2m│ gzip: 0.49 kB[22m
|
|
19
20
|
[34mℹ[39m [2mdist/[22m[1mfeature.js[22m [2m1.41 kB[22m [2m│ gzip: 0.44 kB[22m
|
|
20
21
|
[34mℹ[39m [2mdist/[22m[1mentities/company.js[22m [2m1.35 kB[22m [2m│ gzip: 0.59 kB[22m
|
|
21
|
-
[34mℹ[39m [2mdist/[22m[1mcontracts/index.js[22m [2m0.
|
|
22
|
+
[34mℹ[39m [2mdist/[22m[1mcontracts/index.js[22m [2m0.80 kB[22m [2m│ gzip: 0.27 kB[22m
|
|
22
23
|
[34mℹ[39m [2mdist/[22m[1mentities/index.js[22m [2m0.77 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
23
24
|
[34mℹ[39m [2mdist/[22m[1mpresentations/dashboard.js[22m [2m0.74 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
24
25
|
[34mℹ[39m [2mdist/[22m[1mhandlers/index.js[22m [2m0.60 kB[22m [2m│ gzip: 0.25 kB[22m
|
|
26
|
+
[34mℹ[39m [2mdist/[22m[1mevents/contact.event.js[22m [2m0.59 kB[22m [2m│ gzip: 0.30 kB[22m
|
|
25
27
|
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m0.59 kB[22m [2m│ gzip: 0.36 kB[22m
|
|
28
|
+
[34mℹ[39m [2mdist/[22m[1mevents/task.event.js[22m [2m0.58 kB[22m [2m│ gzip: 0.29 kB[22m
|
|
26
29
|
[34mℹ[39m [2mdist/[22m[1mpresentations/index.js[22m [2m0.47 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
30
|
+
[34mℹ[39m [2mdist/[22m[1mevents/index.js[22m [2m0.35 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
27
31
|
[34mℹ[39m [2mdist/[22m[1mdocs/index.js[22m [2m0.04 kB[22m [2m│ gzip: 0.06 kB[22m
|
|
28
|
-
[34mℹ[39m
|
|
29
|
-
[32m✔[39m Build complete in [
|
|
32
|
+
[34mℹ[39m 23 files, total: 39.00 kB
|
|
33
|
+
[32m✔[39m Build complete in [32m68ms[39m
|
|
30
34
|
$ tsc --noEmit
|
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# @lssm/example.crm-pipeline
|
|
2
2
|
|
|
3
|
-
## 0.0.0-canary-
|
|
3
|
+
## 0.0.0-canary-20251215220103
|
|
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-
|
|
10
|
-
- @lssm/lib.schema@0.0.0-canary-
|
|
11
|
-
- @lssm/lib.jobs@0.0.0-canary-
|
|
12
|
-
- @lssm/lib.bus@0.0.0-canary-
|
|
13
|
-
- @lssm/lib.identity-rbac@0.0.0-canary-
|
|
14
|
-
- @lssm/module.audit-trail@0.0.0-canary-
|
|
15
|
-
- @lssm/module.notifications@0.0.0-canary-
|
|
9
|
+
- @lssm/lib.contracts@0.0.0-canary-20251215220103
|
|
10
|
+
- @lssm/lib.schema@0.0.0-canary-20251215220103
|
|
11
|
+
- @lssm/lib.jobs@0.0.0-canary-20251215220103
|
|
12
|
+
- @lssm/lib.bus@0.0.0-canary-20251215220103
|
|
13
|
+
- @lssm/lib.identity-rbac@0.0.0-canary-20251215220103
|
|
14
|
+
- @lssm/module.audit-trail@0.0.0-canary-20251215220103
|
|
15
|
+
- @lssm/module.notifications@0.0.0-canary-20251215220103
|
package/dist/contracts/index.js
CHANGED
|
@@ -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};
|
|
@@ -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{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.contracts.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 +1 @@
|
|
|
1
|
-
import{DealModel as e}from"../contracts/deal.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};
|
|
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-
|
|
3
|
+
"version": "0.0.0-canary-20251215220103",
|
|
4
4
|
"description": "CRM Pipeline - Contacts, Companies, Deals, Tasks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
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
12
|
"./docs": "./src/docs/index.ts",
|
|
13
13
|
"./docs/crm-pipeline.docblock": "./src/docs/crm-pipeline.docblock.ts",
|
|
14
14
|
"./entities": "./src/entities/index.ts",
|
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
"./entities/deal": "./src/entities/deal.ts",
|
|
18
18
|
"./entities/task": "./src/entities/task.ts",
|
|
19
19
|
"./events": "./src/events.ts",
|
|
20
|
+
"./events/contact.event": "./src/events/contact.event.ts",
|
|
21
|
+
"./events/deal.event": "./src/events/deal.event.ts",
|
|
22
|
+
"./events/task.event": "./src/events/task.event.ts",
|
|
20
23
|
"./example": "./src/example.ts",
|
|
21
24
|
"./feature": "./src/feature.ts",
|
|
22
25
|
"./handlers": "./src/handlers/index.ts",
|
|
@@ -51,7 +54,7 @@
|
|
|
51
54
|
"devDependencies": {
|
|
52
55
|
"@lssm/tool.tsdown": "workspace:*",
|
|
53
56
|
"@lssm/tool.typescript": "workspace:*",
|
|
54
|
-
"tsdown": "^0.17.
|
|
57
|
+
"tsdown": "^0.17.4",
|
|
55
58
|
"typescript": "^5.9.3"
|
|
56
59
|
},
|
|
57
60
|
"module": "./dist/index.js",
|
|
@@ -59,7 +62,7 @@
|
|
|
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",
|
|
63
66
|
"./docs": "./dist/docs/index.js",
|
|
64
67
|
"./docs/crm-pipeline.docblock": "./dist/docs/crm-pipeline.docblock.js",
|
|
65
68
|
"./entities": "./dist/entities/index.js",
|
|
@@ -67,7 +70,10 @@
|
|
|
67
70
|
"./entities/contact": "./dist/entities/contact.js",
|
|
68
71
|
"./entities/deal": "./dist/entities/deal.js",
|
|
69
72
|
"./entities/task": "./dist/entities/task.js",
|
|
70
|
-
"./events": "./dist/events.js",
|
|
73
|
+
"./events": "./dist/events/index.js",
|
|
74
|
+
"./events/contact.event": "./dist/events/contact.event.js",
|
|
75
|
+
"./events/deal.event": "./dist/events/deal.event.js",
|
|
76
|
+
"./events/task.event": "./dist/events/task.event.js",
|
|
71
77
|
"./example": "./dist/example.js",
|
|
72
78
|
"./feature": "./dist/feature.js",
|
|
73
79
|
"./handlers": "./dist/handlers/index.js",
|
package/src/contracts/index.ts
CHANGED
|
@@ -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
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
|
|
2
|
+
import { defineEvent } from '@lssm/lib.contracts';
|
|
3
|
+
|
|
4
|
+
// ============ Deal Event Payloads ============
|
|
5
|
+
|
|
6
|
+
const DealCreatedPayload = defineSchemaModel({
|
|
7
|
+
name: 'DealCreatedPayload',
|
|
8
|
+
description: 'Payload when a deal is created',
|
|
9
|
+
fields: {
|
|
10
|
+
dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
11
|
+
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
12
|
+
value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
|
|
13
|
+
pipelineId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
14
|
+
stageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
15
|
+
ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
16
|
+
createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const DealMovedPayload = defineSchemaModel({
|
|
21
|
+
name: 'DealMovedEventPayload',
|
|
22
|
+
description: 'Payload when a deal is moved to another stage',
|
|
23
|
+
fields: {
|
|
24
|
+
dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
25
|
+
fromStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
26
|
+
toStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
27
|
+
movedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
28
|
+
movedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const DealWonPayload = defineSchemaModel({
|
|
33
|
+
name: 'DealWonEventPayload',
|
|
34
|
+
description: 'Payload when a deal is won',
|
|
35
|
+
fields: {
|
|
36
|
+
dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
37
|
+
value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
|
|
38
|
+
currency: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
39
|
+
contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
40
|
+
companyId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
41
|
+
ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
42
|
+
wonAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const DealLostPayload = defineSchemaModel({
|
|
47
|
+
name: 'DealLostEventPayload',
|
|
48
|
+
description: 'Payload when a deal is lost',
|
|
49
|
+
fields: {
|
|
50
|
+
dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
51
|
+
value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
|
|
52
|
+
reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
53
|
+
ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
54
|
+
lostAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const DealCreatedEvent = defineEvent({
|
|
59
|
+
name: 'deal.created',
|
|
60
|
+
version: 1,
|
|
61
|
+
description: 'A new deal has been created.',
|
|
62
|
+
payload: DealCreatedPayload,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export const DealMovedEvent = defineEvent({
|
|
66
|
+
name: 'deal.moved',
|
|
67
|
+
version: 1,
|
|
68
|
+
description: 'A deal has been moved to a different stage.',
|
|
69
|
+
payload: DealMovedPayload,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
export const DealWonEvent = defineEvent({
|
|
73
|
+
name: 'deal.won',
|
|
74
|
+
version: 1,
|
|
75
|
+
description: 'A deal has been won.',
|
|
76
|
+
payload: DealWonPayload,
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
export const DealLostEvent = defineEvent({
|
|
80
|
+
name: 'deal.lost',
|
|
81
|
+
version: 1,
|
|
82
|
+
description: 'A deal has been lost.',
|
|
83
|
+
payload: DealLostPayload,
|
|
84
|
+
});
|
|
@@ -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: {
|
|
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
|
-
|
|
@@ -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.
|