business-as-code 2.1.3 → 2.3.0
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/CHANGELOG.md +10 -0
- package/README.md +2 -0
- package/package.json +16 -13
- package/src/dollar.ts +5 -2
- package/src/entities/organization.ts +31 -18
- package/src/goals.ts +78 -12
- package/src/index.ts +48 -18
- package/src/kpis.ts +62 -8
- package/src/metrics.ts +92 -79
- package/src/okrs.ts +120 -20
- package/src/organization.ts +12 -15
- package/src/process.ts +11 -12
- package/src/product.ts +8 -9
- package/src/queries.ts +238 -75
- package/src/roles.ts +62 -61
- package/src/workflow.ts +22 -15
- package/test/business.test.ts +282 -0
- package/test/dollar.test.ts +270 -0
- package/test/entities.test.ts +628 -0
- package/test/financials.test.ts +539 -0
- package/test/goals.test.ts +451 -0
- package/{src → test}/index.test.ts +1 -1
- package/test/kpis.test.ts +440 -0
- package/test/metrics.test.ts +744 -0
- package/test/okrs.test.ts +741 -0
- package/test/organization.test.ts +548 -0
- package/test/process.test.ts +503 -0
- package/test/product.test.ts +430 -0
- package/test/queries.test.ts +556 -0
- package/test/roles.test.ts +546 -0
- package/test/service.test.ts +450 -0
- package/test/types.test.ts +1141 -0
- package/test/vision.test.ts +214 -0
- package/test/workflow.test.ts +501 -0
- package/vitest.config.ts +47 -0
- package/.turbo/turbo-build.log +0 -5
- package/LICENSE +0 -21
- package/dist/business.d.ts +0 -62
- package/dist/business.d.ts.map +0 -1
- package/dist/business.js +0 -109
- package/dist/business.js.map +0 -1
- package/dist/canvas/activities.d.ts +0 -19
- package/dist/canvas/activities.d.ts.map +0 -1
- package/dist/canvas/activities.js +0 -20
- package/dist/canvas/activities.js.map +0 -1
- package/dist/canvas/channels.d.ts +0 -20
- package/dist/canvas/channels.d.ts.map +0 -1
- package/dist/canvas/channels.js +0 -21
- package/dist/canvas/channels.js.map +0 -1
- package/dist/canvas/relationships.d.ts +0 -20
- package/dist/canvas/relationships.d.ts.map +0 -1
- package/dist/canvas/relationships.js +0 -21
- package/dist/canvas/relationships.js.map +0 -1
- package/dist/canvas/resources.d.ts +0 -20
- package/dist/canvas/resources.d.ts.map +0 -1
- package/dist/canvas/resources.js +0 -30
- package/dist/canvas/resources.js.map +0 -1
- package/dist/canvas/revenue.d.ts +0 -22
- package/dist/canvas/revenue.d.ts.map +0 -1
- package/dist/canvas/revenue.js +0 -30
- package/dist/canvas/revenue.js.map +0 -1
- package/dist/canvas/segments.d.ts +0 -20
- package/dist/canvas/segments.d.ts.map +0 -1
- package/dist/canvas/segments.js +0 -28
- package/dist/canvas/segments.js.map +0 -1
- package/dist/canvas/types.d.ts +0 -232
- package/dist/canvas/types.d.ts.map +0 -1
- package/dist/canvas/types.js +0 -8
- package/dist/canvas/types.js.map +0 -1
- package/dist/canvas/value.d.ts +0 -20
- package/dist/canvas/value.d.ts.map +0 -1
- package/dist/canvas/value.js +0 -21
- package/dist/canvas/value.js.map +0 -1
- package/dist/dollar.d.ts +0 -60
- package/dist/dollar.d.ts.map +0 -1
- package/dist/dollar.js +0 -107
- package/dist/dollar.js.map +0 -1
- package/dist/entities/assets.d.ts +0 -21
- package/dist/entities/assets.d.ts.map +0 -1
- package/dist/entities/assets.js +0 -323
- package/dist/entities/assets.js.map +0 -1
- package/dist/entities/business.d.ts +0 -36
- package/dist/entities/business.d.ts.map +0 -1
- package/dist/entities/business.js +0 -370
- package/dist/entities/business.js.map +0 -1
- package/dist/entities/communication.d.ts +0 -21
- package/dist/entities/communication.d.ts.map +0 -1
- package/dist/entities/communication.js +0 -255
- package/dist/entities/communication.js.map +0 -1
- package/dist/entities/customers.d.ts +0 -58
- package/dist/entities/customers.d.ts.map +0 -1
- package/dist/entities/customers.js +0 -989
- package/dist/entities/customers.js.map +0 -1
- package/dist/entities/financials.d.ts +0 -59
- package/dist/entities/financials.d.ts.map +0 -1
- package/dist/entities/financials.js +0 -932
- package/dist/entities/financials.js.map +0 -1
- package/dist/entities/goals.d.ts +0 -58
- package/dist/entities/goals.d.ts.map +0 -1
- package/dist/entities/goals.js +0 -800
- package/dist/entities/goals.js.map +0 -1
- package/dist/entities/index.d.ts +0 -299
- package/dist/entities/index.d.ts.map +0 -1
- package/dist/entities/index.js +0 -198
- package/dist/entities/index.js.map +0 -1
- package/dist/entities/legal.d.ts +0 -21
- package/dist/entities/legal.d.ts.map +0 -1
- package/dist/entities/legal.js +0 -301
- package/dist/entities/legal.js.map +0 -1
- package/dist/entities/market.d.ts +0 -21
- package/dist/entities/market.d.ts.map +0 -1
- package/dist/entities/market.js +0 -301
- package/dist/entities/market.js.map +0 -1
- package/dist/entities/marketing.d.ts +0 -67
- package/dist/entities/marketing.d.ts.map +0 -1
- package/dist/entities/marketing.js +0 -1157
- package/dist/entities/marketing.js.map +0 -1
- package/dist/entities/offerings.d.ts +0 -51
- package/dist/entities/offerings.d.ts.map +0 -1
- package/dist/entities/offerings.js +0 -727
- package/dist/entities/offerings.js.map +0 -1
- package/dist/entities/operations.d.ts +0 -58
- package/dist/entities/operations.d.ts.map +0 -1
- package/dist/entities/operations.js +0 -787
- package/dist/entities/operations.js.map +0 -1
- package/dist/entities/organization.d.ts +0 -57
- package/dist/entities/organization.d.ts.map +0 -1
- package/dist/entities/organization.js +0 -807
- package/dist/entities/organization.js.map +0 -1
- package/dist/entities/partnerships.d.ts +0 -21
- package/dist/entities/partnerships.d.ts.map +0 -1
- package/dist/entities/partnerships.js +0 -300
- package/dist/entities/partnerships.js.map +0 -1
- package/dist/entities/planning.d.ts +0 -0
- package/dist/entities/planning.d.ts.map +0 -1
- package/dist/entities/planning.js +0 -271
- package/dist/entities/planning.js.map +0 -1
- package/dist/entities/projects.d.ts +0 -25
- package/dist/entities/projects.d.ts.map +0 -1
- package/dist/entities/projects.js +0 -349
- package/dist/entities/projects.js.map +0 -1
- package/dist/entities/risk.d.ts +0 -21
- package/dist/entities/risk.d.ts.map +0 -1
- package/dist/entities/risk.js +0 -293
- package/dist/entities/risk.js.map +0 -1
- package/dist/entities/sales.d.ts +0 -72
- package/dist/entities/sales.d.ts.map +0 -1
- package/dist/entities/sales.js +0 -1248
- package/dist/entities/sales.js.map +0 -1
- package/dist/financials.d.ts +0 -130
- package/dist/financials.d.ts.map +0 -1
- package/dist/financials.js +0 -297
- package/dist/financials.js.map +0 -1
- package/dist/goals.d.ts +0 -87
- package/dist/goals.d.ts.map +0 -1
- package/dist/goals.js +0 -215
- package/dist/goals.js.map +0 -1
- package/dist/index.d.ts +0 -97
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -132
- package/dist/index.js.map +0 -1
- package/dist/kpis.d.ts +0 -118
- package/dist/kpis.d.ts.map +0 -1
- package/dist/kpis.js +0 -232
- package/dist/kpis.js.map +0 -1
- package/dist/metrics.d.ts +0 -448
- package/dist/metrics.d.ts.map +0 -1
- package/dist/metrics.js +0 -325
- package/dist/metrics.js.map +0 -1
- package/dist/okrs.d.ts +0 -123
- package/dist/okrs.d.ts.map +0 -1
- package/dist/okrs.js +0 -269
- package/dist/okrs.js.map +0 -1
- package/dist/organization.d.ts +0 -585
- package/dist/organization.d.ts.map +0 -1
- package/dist/organization.js +0 -173
- package/dist/organization.js.map +0 -1
- package/dist/process.d.ts +0 -112
- package/dist/process.d.ts.map +0 -1
- package/dist/process.js +0 -241
- package/dist/process.js.map +0 -1
- package/dist/product.d.ts +0 -85
- package/dist/product.d.ts.map +0 -1
- package/dist/product.js +0 -145
- package/dist/product.js.map +0 -1
- package/dist/queries.d.ts +0 -304
- package/dist/queries.d.ts.map +0 -1
- package/dist/queries.js +0 -415
- package/dist/queries.js.map +0 -1
- package/dist/roles.d.ts +0 -340
- package/dist/roles.d.ts.map +0 -1
- package/dist/roles.js +0 -255
- package/dist/roles.js.map +0 -1
- package/dist/service.d.ts +0 -61
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -140
- package/dist/service.js.map +0 -1
- package/dist/types.d.ts +0 -459
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/vision.d.ts +0 -38
- package/dist/vision.d.ts.map +0 -1
- package/dist/vision.js +0 -68
- package/dist/vision.js.map +0 -1
- package/dist/workflow.d.ts +0 -115
- package/dist/workflow.d.ts.map +0 -1
- package/dist/workflow.js +0 -247
- package/dist/workflow.js.map +0 -1
- package/src/business.js +0 -108
- package/src/canvas/activities.ts +0 -32
- package/src/canvas/canvas.ts +0 -482
- package/src/canvas/channels.ts +0 -34
- package/src/canvas/costs.ts +0 -43
- package/src/canvas/economics.ts +0 -99
- package/src/canvas/index.ts +0 -206
- package/src/canvas/partnerships.ts +0 -34
- package/src/canvas/projections.ts +0 -141
- package/src/canvas/relationships.ts +0 -34
- package/src/canvas/resources.ts +0 -43
- package/src/canvas/revenue.ts +0 -56
- package/src/canvas/segments.ts +0 -42
- package/src/canvas/types.ts +0 -363
- package/src/canvas/value.ts +0 -34
- package/src/dollar.js +0 -106
- package/src/entities/assets.js +0 -322
- package/src/entities/business.js +0 -369
- package/src/entities/communication.js +0 -254
- package/src/entities/customers.js +0 -988
- package/src/entities/financials.js +0 -931
- package/src/entities/goals.js +0 -799
- package/src/entities/index.js +0 -197
- package/src/entities/legal.js +0 -300
- package/src/entities/market.js +0 -300
- package/src/entities/marketing.js +0 -1156
- package/src/entities/offerings.js +0 -726
- package/src/entities/operations.js +0 -786
- package/src/entities/organization.js +0 -806
- package/src/entities/partnerships.js +0 -299
- package/src/entities/planning.js +0 -270
- package/src/entities/projects.js +0 -348
- package/src/entities/risk.js +0 -292
- package/src/entities/sales.js +0 -1247
- package/src/financials.js +0 -296
- package/src/goals.js +0 -214
- package/src/index.js +0 -131
- package/src/index.test.js +0 -274
- package/src/kpis.js +0 -231
- package/src/metrics.js +0 -324
- package/src/okrs.js +0 -268
- package/src/organization.js +0 -172
- package/src/process.js +0 -240
- package/src/product.js +0 -144
- package/src/queries.js +0 -414
- package/src/roles.js +0 -254
- package/src/service.js +0 -139
- package/src/types.js +0 -4
- package/src/vision.js +0 -67
- package/src/workflow.js +0 -246
- package/tests/canvas.test.ts +0 -842
package/dist/business.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Business entity definition
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Define a business entity with organizational structure, mission, and values
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* const acme = Business({
|
|
10
|
-
* name: 'Acme Corp',
|
|
11
|
-
* description: 'Building the future of widgets',
|
|
12
|
-
* industry: 'Technology',
|
|
13
|
-
* mission: 'To make widgets accessible to everyone',
|
|
14
|
-
* values: ['Innovation', 'Customer Focus', 'Integrity'],
|
|
15
|
-
* targetMarket: 'SMB and Enterprise',
|
|
16
|
-
* foundedAt: new Date('2020-01-01'),
|
|
17
|
-
* teamSize: 50,
|
|
18
|
-
* structure: {
|
|
19
|
-
* departments: [
|
|
20
|
-
* {
|
|
21
|
-
* name: 'Engineering',
|
|
22
|
-
* head: 'Jane Smith',
|
|
23
|
-
* members: ['Alice', 'Bob', 'Charlie'],
|
|
24
|
-
* budget: 2000000,
|
|
25
|
-
* },
|
|
26
|
-
* {
|
|
27
|
-
* name: 'Sales',
|
|
28
|
-
* head: 'John Doe',
|
|
29
|
-
* members: ['David', 'Eve'],
|
|
30
|
-
* budget: 1000000,
|
|
31
|
-
* },
|
|
32
|
-
* ],
|
|
33
|
-
* },
|
|
34
|
-
* })
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export function Business(definition) {
|
|
38
|
-
// Validate required fields
|
|
39
|
-
if (!definition.name) {
|
|
40
|
-
throw new Error('Business name is required');
|
|
41
|
-
}
|
|
42
|
-
// Return validated business definition
|
|
43
|
-
return {
|
|
44
|
-
...definition,
|
|
45
|
-
foundedAt: definition.foundedAt || new Date(),
|
|
46
|
-
teamSize: definition.teamSize || 0,
|
|
47
|
-
values: definition.values || [],
|
|
48
|
-
metadata: definition.metadata || {},
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get total budget across all departments
|
|
53
|
-
*/
|
|
54
|
-
export function getTotalBudget(business) {
|
|
55
|
-
if (!business.structure?.departments)
|
|
56
|
-
return 0;
|
|
57
|
-
return business.structure.departments.reduce((total, dept) => {
|
|
58
|
-
return total + (dept.budget || 0);
|
|
59
|
-
}, 0);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get total team size across all departments
|
|
63
|
-
*/
|
|
64
|
-
export function getTotalTeamSize(business) {
|
|
65
|
-
if (!business.structure?.departments)
|
|
66
|
-
return business.teamSize || 0;
|
|
67
|
-
return business.structure.departments.reduce((total, dept) => {
|
|
68
|
-
return total + (dept.members?.length || 0);
|
|
69
|
-
}, 0);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Get department by name
|
|
73
|
-
*/
|
|
74
|
-
export function getDepartment(business, name) {
|
|
75
|
-
return business.structure?.departments?.find(d => d.name === name);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Get team by name
|
|
79
|
-
*/
|
|
80
|
-
export function getTeam(business, name) {
|
|
81
|
-
return business.structure?.teams?.find(t => t.name === name);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Validate business definition
|
|
85
|
-
*/
|
|
86
|
-
export function validateBusiness(business) {
|
|
87
|
-
const errors = [];
|
|
88
|
-
if (!business.name) {
|
|
89
|
-
errors.push('Business name is required');
|
|
90
|
-
}
|
|
91
|
-
if (business.teamSize && business.teamSize < 0) {
|
|
92
|
-
errors.push('Team size cannot be negative');
|
|
93
|
-
}
|
|
94
|
-
if (business.structure?.departments) {
|
|
95
|
-
for (const dept of business.structure.departments) {
|
|
96
|
-
if (!dept.name) {
|
|
97
|
-
errors.push('Department name is required');
|
|
98
|
-
}
|
|
99
|
-
if (dept.budget && dept.budget < 0) {
|
|
100
|
-
errors.push(`Department ${dept.name} budget cannot be negative`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
valid: errors.length === 0,
|
|
106
|
-
errors,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=business.js.map
|
package/dist/business.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"business.js","sourceRoot":"","sources":["../src/business.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Key Activities
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with key activities.
|
|
5
|
-
*/
|
|
6
|
-
import type { KeyActivity, ActivityCategory } from './types.js';
|
|
7
|
-
export interface CreateKeyActivityInput {
|
|
8
|
-
name: string;
|
|
9
|
-
category: ActivityCategory;
|
|
10
|
-
description?: string;
|
|
11
|
-
resources?: string[];
|
|
12
|
-
metrics?: string[];
|
|
13
|
-
uptime?: number;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Create a key activity
|
|
17
|
-
*/
|
|
18
|
-
export declare function createKeyActivity(input: CreateKeyActivityInput): KeyActivity;
|
|
19
|
-
//# sourceMappingURL=activities.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activities.d.ts","sourceRoot":"","sources":["../../src/canvas/activities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAW5E"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Key Activities
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with key activities.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a key activity
|
|
8
|
-
*/
|
|
9
|
-
export function createKeyActivity(input) {
|
|
10
|
-
const { name, category, description, resources, metrics, uptime } = input;
|
|
11
|
-
return {
|
|
12
|
-
name,
|
|
13
|
-
category,
|
|
14
|
-
description,
|
|
15
|
-
resources,
|
|
16
|
-
metrics,
|
|
17
|
-
uptime,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=activities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/canvas/activities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAEzE,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,WAAW;QACX,SAAS;QACT,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Channels
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with channels.
|
|
5
|
-
*/
|
|
6
|
-
import type { Channel, ChannelType, ChannelPhase } from './types.js';
|
|
7
|
-
export interface CreateChannelInput {
|
|
8
|
-
name: string;
|
|
9
|
-
type: ChannelType;
|
|
10
|
-
phases?: ChannelPhase[];
|
|
11
|
-
costPerAcquisition?: number;
|
|
12
|
-
partnerType?: string;
|
|
13
|
-
revenueShare?: number;
|
|
14
|
-
conversionRate?: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a channel
|
|
18
|
-
*/
|
|
19
|
-
export declare function createChannel(input: CreateChannelInput): Channel;
|
|
20
|
-
//# sourceMappingURL=channels.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/canvas/channels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEpE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAYhE"}
|
package/dist/canvas/channels.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Channels
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with channels.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a channel
|
|
8
|
-
*/
|
|
9
|
-
export function createChannel(input) {
|
|
10
|
-
const { name, type, phases, costPerAcquisition, partnerType, revenueShare, conversionRate } = input;
|
|
11
|
-
return {
|
|
12
|
-
name,
|
|
13
|
-
type,
|
|
14
|
-
phases,
|
|
15
|
-
costPerAcquisition,
|
|
16
|
-
partnerType,
|
|
17
|
-
revenueShare,
|
|
18
|
-
conversionRate,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=channels.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/canvas/channels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAEnG,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,kBAAkB;QAClB,WAAW;QACX,YAAY;QACZ,cAAc;KACf,CAAA;AACH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Customer Relationships
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with customer relationships.
|
|
5
|
-
*/
|
|
6
|
-
import type { CustomerRelationship, RelationshipType } from './types.js';
|
|
7
|
-
export interface CreateCustomerRelationshipInput {
|
|
8
|
-
name: string;
|
|
9
|
-
type: RelationshipType;
|
|
10
|
-
segment?: string;
|
|
11
|
-
touchFrequency?: string;
|
|
12
|
-
automationLevel?: number;
|
|
13
|
-
supportChannels?: string[];
|
|
14
|
-
platforms?: string[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a customer relationship
|
|
18
|
-
*/
|
|
19
|
-
export declare function createCustomerRelationship(input: CreateCustomerRelationshipInput): CustomerRelationship;
|
|
20
|
-
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/canvas/relationships.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAExE,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,GAAG,oBAAoB,CAYvG"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Customer Relationships
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with customer relationships.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a customer relationship
|
|
8
|
-
*/
|
|
9
|
-
export function createCustomerRelationship(input) {
|
|
10
|
-
const { name, type, segment, touchFrequency, automationLevel, supportChannels, platforms } = input;
|
|
11
|
-
return {
|
|
12
|
-
name,
|
|
13
|
-
type,
|
|
14
|
-
segment,
|
|
15
|
-
touchFrequency,
|
|
16
|
-
automationLevel,
|
|
17
|
-
supportChannels,
|
|
18
|
-
platforms,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=relationships.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../src/canvas/relationships.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAsC;IAC/E,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAElG,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,cAAc;QACd,eAAe;QACf,eAAe;QACf,SAAS;KACV,CAAA;AACH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Key Resources
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with key resources.
|
|
5
|
-
*/
|
|
6
|
-
import type { KeyResource, ResourceType } from './types.js';
|
|
7
|
-
export interface CreateKeyResourceInput {
|
|
8
|
-
name: string;
|
|
9
|
-
type: ResourceType;
|
|
10
|
-
cost?: number;
|
|
11
|
-
depreciation?: string;
|
|
12
|
-
protectionType?: string;
|
|
13
|
-
headcount?: number;
|
|
14
|
-
averageCost?: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a key resource
|
|
18
|
-
*/
|
|
19
|
-
export declare function createKeyResource(input: CreateKeyResourceInput): KeyResource;
|
|
20
|
-
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/canvas/resources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAqB5E"}
|
package/dist/canvas/resources.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Key Resources
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with key resources.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a key resource
|
|
8
|
-
*/
|
|
9
|
-
export function createKeyResource(input) {
|
|
10
|
-
const { name, type, cost, depreciation, protectionType, headcount, averageCost } = input;
|
|
11
|
-
// Calculate total cost for human resources
|
|
12
|
-
let totalCost;
|
|
13
|
-
if (headcount !== undefined && averageCost !== undefined) {
|
|
14
|
-
totalCost = headcount * averageCost;
|
|
15
|
-
}
|
|
16
|
-
else if (cost !== undefined) {
|
|
17
|
-
totalCost = cost;
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
name,
|
|
21
|
-
type,
|
|
22
|
-
cost,
|
|
23
|
-
depreciation,
|
|
24
|
-
protectionType,
|
|
25
|
-
headcount,
|
|
26
|
-
averageCost,
|
|
27
|
-
totalCost,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=resources.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/canvas/resources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAExF,2CAA2C;IAC3C,IAAI,SAA6B,CAAA;IACjC,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACzD,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;IACrC,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,YAAY;QACZ,cAAc;QACd,SAAS;QACT,WAAW;QACX,SAAS;KACV,CAAA;AACH,CAAC"}
|
package/dist/canvas/revenue.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Revenue Streams
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with revenue streams.
|
|
5
|
-
*/
|
|
6
|
-
import type { RevenueStream, RevenueType, PricingModel, PricingTier } from './types.js';
|
|
7
|
-
export interface CreateRevenueStreamInput {
|
|
8
|
-
name: string;
|
|
9
|
-
type: RevenueType;
|
|
10
|
-
pricingModel: PricingModel;
|
|
11
|
-
price?: number;
|
|
12
|
-
billingCycle?: 'monthly' | 'quarterly' | 'annual';
|
|
13
|
-
pricePerUnit?: number;
|
|
14
|
-
unitName?: string;
|
|
15
|
-
tiers?: PricingTier[];
|
|
16
|
-
activeCustomers?: number;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Create a revenue stream
|
|
20
|
-
*/
|
|
21
|
-
export declare function createRevenueStream(input: CreateRevenueStreamInput): RevenueStream;
|
|
22
|
-
//# sourceMappingURL=revenue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revenue.d.ts","sourceRoot":"","sources":["../../src/canvas/revenue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEvF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,aAAa,CAgClF"}
|
package/dist/canvas/revenue.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Revenue Streams
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with revenue streams.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a revenue stream
|
|
8
|
-
*/
|
|
9
|
-
export function createRevenueStream(input) {
|
|
10
|
-
const { name, type, pricingModel, price, billingCycle, pricePerUnit, unitName, tiers, activeCustomers, } = input;
|
|
11
|
-
// Calculate annual revenue if we have the required fields
|
|
12
|
-
let annualRevenue;
|
|
13
|
-
if (price !== undefined && activeCustomers !== undefined) {
|
|
14
|
-
const multiplier = billingCycle === 'annual' ? 1 : billingCycle === 'quarterly' ? 4 : 12;
|
|
15
|
-
annualRevenue = price * multiplier * activeCustomers;
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
name,
|
|
19
|
-
type,
|
|
20
|
-
pricingModel,
|
|
21
|
-
price,
|
|
22
|
-
billingCycle,
|
|
23
|
-
pricePerUnit,
|
|
24
|
-
unitName,
|
|
25
|
-
tiers,
|
|
26
|
-
activeCustomers,
|
|
27
|
-
annualRevenue,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=revenue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revenue.js","sourceRoot":"","sources":["../../src/canvas/revenue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EACJ,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,eAAe,GAChB,GAAG,KAAK,CAAA;IAET,0DAA0D;IAC1D,IAAI,aAAiC,CAAA;IACrC,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACxF,aAAa,GAAG,KAAK,GAAG,UAAU,GAAG,eAAe,CAAA;IACtD,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,YAAY;QACZ,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,KAAK;QACL,eAAe;QACf,aAAa;KACd,CAAA;AACH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Customer Segments
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with customer segments.
|
|
5
|
-
*/
|
|
6
|
-
import type { CustomerSegment, CustomerSegmentType } from './types.js';
|
|
7
|
-
export interface CreateCustomerSegmentInput {
|
|
8
|
-
name: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
type: CustomerSegmentType;
|
|
11
|
-
characteristics?: string[];
|
|
12
|
-
size?: number;
|
|
13
|
-
revenuePerCustomer?: number;
|
|
14
|
-
expectedPenetration?: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a customer segment
|
|
18
|
-
*/
|
|
19
|
-
export declare function createCustomerSegment(input: CreateCustomerSegmentInput): CustomerSegment;
|
|
20
|
-
//# sourceMappingURL=segments.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/canvas/segments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEtE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,mBAAmB,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,eAAe,CAoBxF"}
|
package/dist/canvas/segments.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Customer Segments
|
|
3
|
-
*
|
|
4
|
-
* Functions for creating and working with customer segments.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Create a customer segment
|
|
8
|
-
*/
|
|
9
|
-
export function createCustomerSegment(input) {
|
|
10
|
-
const { name, description, type, characteristics, size, revenuePerCustomer, expectedPenetration } = input;
|
|
11
|
-
// Calculate potential if we have the required fields
|
|
12
|
-
let potential;
|
|
13
|
-
if (size !== undefined && revenuePerCustomer !== undefined) {
|
|
14
|
-
const penetration = expectedPenetration ?? 1;
|
|
15
|
-
potential = size * revenuePerCustomer * penetration;
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
name,
|
|
19
|
-
description,
|
|
20
|
-
type,
|
|
21
|
-
characteristics,
|
|
22
|
-
size,
|
|
23
|
-
revenuePerCustomer,
|
|
24
|
-
expectedPenetration,
|
|
25
|
-
potential,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=segments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/canvas/segments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAA;IAEzG,qDAAqD;IACrD,IAAI,SAA6B,CAAA;IACjC,IAAI,IAAI,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,mBAAmB,IAAI,CAAC,CAAA;QAC5C,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,WAAW,CAAA;IACrD,CAAC;IAED,OAAO;QACL,IAAI;QACJ,WAAW;QACX,IAAI;QACJ,eAAe;QACf,IAAI;QACJ,kBAAkB;QAClB,mBAAmB;QACnB,SAAS;KACV,CAAA;AACH,CAAC"}
|