@lssm/example.saas-boilerplate 0.0.0-canary-20251216035145 → 0.0.0-canary-20251217023603

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.
@@ -2,7 +2,7 @@ $ bun build:bundle && bun build:types
2
2
  $ tsdown
3
3
  ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
4
4
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/saas-boilerplate/tsdown.config.js
5
- ℹ entry: src/example.ts, src/index.ts, src/saas-boilerplate.feature.ts, src/billing/billing.contracts.ts, src/billing/billing.entity.ts, src/billing/billing.enum.ts, src/billing/billing.event.ts, src/billing/billing.handler.ts, src/billing/billing.presentation.ts, src/billing/billing.schema.ts, src/billing/index.ts, src/dashboard/dashboard.presentation.ts, src/dashboard/index.ts, src/docs/index.ts, src/docs/saas-boilerplate.docblock.ts, src/handlers/index.ts, src/presentations/index.ts, src/project/index.ts, src/project/project.contracts.ts, src/project/project.entity.ts, src/project/project.enum.ts, src/project/project.event.ts, src/project/project.handler.ts, src/project/project.presentation.ts, src/project/project.schema.ts, src/settings/index.ts, src/settings/settings.entity.ts, src/settings/settings.enum.ts, src/shared/mock-data.ts
5
+ ℹ entry: src/example.ts, src/index.ts, src/saas-boilerplate.feature.ts, src/dashboard/dashboard.presentation.ts, src/dashboard/index.ts, src/docs/index.ts, src/docs/saas-boilerplate.docblock.ts, src/billing/billing.contracts.ts, src/billing/billing.entity.ts, src/billing/billing.enum.ts, src/billing/billing.event.ts, src/billing/billing.handler.ts, src/billing/billing.presentation.ts, src/billing/billing.schema.ts, src/billing/index.ts, src/handlers/index.ts, src/presentations/index.ts, src/project/index.ts, src/project/project.contracts.ts, src/project/project.entity.ts, src/project/project.enum.ts, src/project/project.event.ts, src/project/project.handler.ts, src/project/project.presentation.ts, src/project/project.schema.ts, src/settings/index.ts, src/settings/settings.entity.ts, src/settings/settings.enum.ts, src/shared/mock-data.ts
6
6
  ℹ target: esnext
7
7
  ℹ tsconfig: tsconfig.json
8
8
  ℹ Build start
@@ -13,7 +13,7 @@ $ tsdown
13
13
  ℹ dist/billing/billing.entity.js 2.57 kB │ gzip: 0.94 kB
14
14
  ℹ dist/project/project.schema.js 2.57 kB │ gzip: 0.59 kB
15
15
  ℹ dist/shared/mock-data.js 2.06 kB │ gzip: 0.78 kB
16
- ℹ dist/saas-boilerplate.feature.js 1.95 kB │ gzip: 0.52 kB
16
+ ℹ dist/saas-boilerplate.feature.js 2.00 kB │ gzip: 0.52 kB
17
17
  ℹ dist/project/index.js 1.87 kB │ gzip: 0.50 kB
18
18
  ℹ dist/billing/index.js 1.87 kB │ gzip: 0.51 kB
19
19
  ℹ dist/billing/billing.contracts.js 1.86 kB │ gzip: 0.69 kB
@@ -35,6 +35,6 @@ $ tsdown
35
35
  ℹ dist/settings/index.js 0.21 kB │ gzip: 0.13 kB
36
36
  ℹ dist/dashboard/index.js 0.17 kB │ gzip: 0.11 kB
37
37
  ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
38
- ℹ 29 files, total: 43.01 kB
39
- ✔ Build complete in 61ms
38
+ ℹ 29 files, total: 43.06 kB
39
+ ✔ Build complete in 66ms
40
40
  $ tsc --noEmit
package/CHANGELOG.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # @lssm/example.saas-boilerplate
2
2
 
3
- ## 0.0.0-canary-20251216035145
3
+ ## 0.0.0-canary-20251217023603
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-20251216035145
10
- - @lssm/lib.schema@0.0.0-canary-20251216035145
11
- - @lssm/lib.jobs@0.0.0-canary-20251216035145
12
- - @lssm/lib.bus@0.0.0-canary-20251216035145
13
- - @lssm/lib.identity-rbac@0.0.0-canary-20251216035145
14
- - @lssm/module.audit-trail@0.0.0-canary-20251216035145
15
- - @lssm/module.notifications@0.0.0-canary-20251216035145
9
+ - @lssm/lib.contracts@0.0.0-canary-20251217023603
10
+ - @lssm/lib.schema@0.0.0-canary-20251217023603
11
+ - @lssm/lib.jobs@0.0.0-canary-20251217023603
12
+ - @lssm/lib.bus@0.0.0-canary-20251217023603
13
+ - @lssm/lib.identity-rbac@0.0.0-canary-20251217023603
14
+ - @lssm/module.audit-trail@0.0.0-canary-20251217023603
15
+ - @lssm/module.notifications@0.0.0-canary-20251217023603
@@ -1 +1 @@
1
- const e={meta:{name:`saas.billing.subscription`,version:1,description:`Subscription status with plan info, limits, and current usage`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`billing`,`subscription`]},source:{type:`component`,framework:`react`,componentKey:`SubscriptionView`},targets:[`react`,`markdown`],policy:{flags:[`saas.billing.enabled`]}},t={meta:{name:`saas.billing.usage`,version:1,description:`Usage metrics and breakdown by resource type`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`billing`,`usage`,`metrics`]},source:{type:`component`,framework:`react`,componentKey:`UsageDashboardView`},targets:[`react`,`markdown`],policy:{flags:[`saas.billing.enabled`]}};export{e as SubscriptionPresentation,t as UsageDashboardPresentation};
1
+ const e={meta:{name:`saas.billing.subscription`,version:1,description:`Subscription status with plan info, limits, and current usage`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`billing`,`subscription`]},source:{type:`component`,framework:`react`,componentKey:`SubscriptionView`},targets:[`react`,`markdown`],policy:{flags:[`saas.billing.enabled`]}},t={meta:{name:`saas.billing.usage`,version:1,description:`Usage metrics and breakdown by resource type`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`billing`,`usage`,`metrics`]},source:{type:`component`,framework:`react`,componentKey:`UsageDashboardView`},targets:[`react`,`markdown`],policy:{flags:[`saas.billing.enabled`]}};export{e as SubscriptionPresentation,t as UsageDashboardPresentation};
@@ -1 +1 @@
1
- const e={meta:{name:`saas.dashboard`,version:1,description:`Main SaaS dashboard with project overview, usage stats, and quick actions`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`dashboard`,`overview`]},source:{type:`component`,framework:`react`,componentKey:`SaasDashboard`},targets:[`react`,`markdown`],policy:{flags:[`saas.enabled`]}},t={meta:{name:`saas.settings`,version:1,description:`Organization and user settings panel`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`settings`,`config`]},source:{type:`component`,framework:`react`,componentKey:`SettingsPanel`},targets:[`react`],policy:{flags:[`saas.enabled`]}};export{e as SaasDashboardPresentation,t as SettingsPanelPresentation};
1
+ const e={meta:{name:`saas.dashboard`,version:1,description:`Main SaaS dashboard with project overview, usage stats, and quick actions`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`dashboard`,`overview`]},source:{type:`component`,framework:`react`,componentKey:`SaasDashboard`},targets:[`react`,`markdown`],policy:{flags:[`saas.enabled`]}},t={meta:{name:`saas.settings`,version:1,description:`Organization and user settings panel`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`settings`,`config`]},source:{type:`component`,framework:`react`,componentKey:`SettingsPanel`},targets:[`react`],policy:{flags:[`saas.enabled`]}};export{e as SaasDashboardPresentation,t as SettingsPanelPresentation};
@@ -1 +1 @@
1
- import{ProjectModel as e}from"./project.schema.js";const t={meta:{name:`saas.project.list`,version:1,description:`List view of projects with status, tags, and last updated info`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`project`,`list`,`dashboard`]},source:{type:`component`,framework:`react`,componentKey:`ProjectListView`,props:e},targets:[`react`,`markdown`,`application/json`],policy:{flags:[`saas.projects.enabled`]}},n={meta:{name:`saas.project.detail`,version:1,description:`Detailed view of a project with settings and activity`,domain:`saas-boilerplate`,owners:[`saas-team`],tags:[`project`,`detail`]},source:{type:`component`,framework:`react`,componentKey:`ProjectDetailView`},targets:[`react`,`markdown`],policy:{flags:[`saas.projects.enabled`]}};export{n as ProjectDetailPresentation,t as ProjectListPresentation};
1
+ import{ProjectModel as e}from"./project.schema.js";const t={meta:{name:`saas.project.list`,version:1,description:`List view of projects with status, tags, and last updated info`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`project`,`list`,`dashboard`]},source:{type:`component`,framework:`react`,componentKey:`ProjectListView`,props:e},targets:[`react`,`markdown`,`application/json`],policy:{flags:[`saas.projects.enabled`]}},n={meta:{name:`saas.project.detail`,version:1,description:`Detailed view of a project with settings and activity`,domain:`saas-boilerplate`,owners:[`@saas-team`],tags:[`project`,`detail`]},source:{type:`component`,framework:`react`,componentKey:`ProjectDetailView`},targets:[`react`,`markdown`],policy:{flags:[`saas.projects.enabled`]}};export{n as ProjectDetailPresentation,t as ProjectListPresentation};
@@ -1 +1 @@
1
- const e={meta:{key:`saas-boilerplate`,title:`SaaS Boilerplate`,description:`SaaS application foundation with projects, billing, and settings`,domain:`saas`,owners:[`saas-team`],tags:[`saas`,`projects`,`billing`],stability:`experimental`},operations:[{name:`saas.project.create`,version:1},{name:`saas.project.get`,version:1},{name:`saas.project.update`,version:1},{name:`saas.project.delete`,version:1},{name:`saas.project.list`,version:1},{name:`saas.billing.getSubscription`,version:1},{name:`saas.billing.recordUsage`,version:1},{name:`saas.billing.getUsageSummary`,version:1},{name:`saas.billing.checkFeatureAccess`,version:1}],events:[{name:`project.created`,version:1},{name:`project.updated`,version:1},{name:`project.deleted`,version:1},{name:`usage.recorded`,version:1},{name:`subscription.updated`,version:1},{name:`limit.exceeded`,version:1}],presentations:[{name:`saas.dashboard`,version:1},{name:`saas.project.list`,version:1},{name:`saas.project.detail`,version:1},{name:`saas.billing.subscription`,version:1},{name:`saas.billing.usage`,version:1},{name:`saas.settings`,version:1}],opToPresentation:[{op:{name:`saas.project.list`,version:1},pres:{name:`saas.project.list`,version:1}},{op:{name:`saas.project.get`,version:1},pres:{name:`saas.project.detail`,version:1}},{op:{name:`saas.billing.getSubscription`,version:1},pres:{name:`saas.billing.subscription`,version:1}},{op:{name:`saas.billing.getUsageSummary`,version:1},pres:{name:`saas.billing.usage`,version:1}}],presentationsTargets:[{name:`saas.dashboard`,version:1,targets:[`react`,`markdown`]},{name:`saas.project.list`,version:1,targets:[`react`,`markdown`,`application/json`]},{name:`saas.billing.subscription`,version:1,targets:[`react`,`markdown`]},{name:`saas.billing.usage`,version:1,targets:[`react`,`markdown`]}],capabilities:{requires:[{key:`identity`,version:1},{key:`audit-trail`,version:1},{key:`notifications`,version:1}]}};export{e as SaasBoilerplateFeature};
1
+ const e={meta:{key:`saas-boilerplate`,title:`SaaS Boilerplate`,description:`SaaS application foundation with projects, billing, and settings`,domain:`saas`,owners:[`@saas-team`],tags:[`saas`,`projects`,`billing`],stability:`experimental`},operations:[{name:`saas.project.create`,version:1},{name:`saas.project.get`,version:1},{name:`saas.project.update`,version:1},{name:`saas.project.delete`,version:1},{name:`saas.project.list`,version:1},{name:`saas.billing.subscription.get`,version:1},{name:`saas.billing.usage.record`,version:1},{name:`saas.billing.usage.summary`,version:1},{name:`saas.billing.feature.check`,version:1}],events:[{name:`project.created`,version:1},{name:`project.updated`,version:1},{name:`project.deleted`,version:1},{name:`project.archived`,version:1},{name:`billing.usage.recorded`,version:1},{name:`billing.subscription.changed`,version:1},{name:`billing.limit.reached`,version:1}],presentations:[{name:`saas.dashboard`,version:1},{name:`saas.project.list`,version:1},{name:`saas.project.detail`,version:1},{name:`saas.billing.subscription`,version:1},{name:`saas.billing.usage`,version:1},{name:`saas.settings`,version:1}],opToPresentation:[{op:{name:`saas.project.list`,version:1},pres:{name:`saas.project.list`,version:1}},{op:{name:`saas.project.get`,version:1},pres:{name:`saas.project.detail`,version:1}},{op:{name:`saas.billing.subscription.get`,version:1},pres:{name:`saas.billing.subscription`,version:1}},{op:{name:`saas.billing.usage.summary`,version:1},pres:{name:`saas.billing.usage`,version:1}}],presentationsTargets:[{name:`saas.dashboard`,version:1,targets:[`react`,`markdown`]},{name:`saas.project.list`,version:1,targets:[`react`,`markdown`,`application/json`]},{name:`saas.billing.subscription`,version:1,targets:[`react`,`markdown`]},{name:`saas.billing.usage`,version:1,targets:[`react`,`markdown`]}],capabilities:{requires:[{key:`identity`,version:1},{key:`audit-trail`,version:1},{key:`notifications`,version:1}]}};export{e as SaasBoilerplateFeature};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.saas-boilerplate",
3
- "version": "0.0.0-canary-20251216035145",
3
+ "version": "0.0.0-canary-20251217023603",
4
4
  "description": "SaaS Boilerplate - Users, Orgs, Projects, Billing, Settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -10,7 +10,7 @@ export const SubscriptionPresentation: PresentationDescriptorV2 = {
10
10
  description:
11
11
  'Subscription status with plan info, limits, and current usage',
12
12
  domain: 'saas-boilerplate',
13
- owners: ['saas-team'],
13
+ owners: ['@saas-team'],
14
14
  tags: ['billing', 'subscription'],
15
15
  },
16
16
  source: {
@@ -33,7 +33,7 @@ export const UsageDashboardPresentation: PresentationDescriptorV2 = {
33
33
  version: 1,
34
34
  description: 'Usage metrics and breakdown by resource type',
35
35
  domain: 'saas-boilerplate',
36
- owners: ['saas-team'],
36
+ owners: ['@saas-team'],
37
37
  tags: ['billing', 'usage', 'metrics'],
38
38
  },
39
39
  source: {
@@ -10,7 +10,7 @@ export const SaasDashboardPresentation: PresentationDescriptorV2 = {
10
10
  description:
11
11
  'Main SaaS dashboard with project overview, usage stats, and quick actions',
12
12
  domain: 'saas-boilerplate',
13
- owners: ['saas-team'],
13
+ owners: ['@saas-team'],
14
14
  tags: ['dashboard', 'overview'],
15
15
  },
16
16
  source: {
@@ -33,7 +33,7 @@ export const SettingsPanelPresentation: PresentationDescriptorV2 = {
33
33
  version: 1,
34
34
  description: 'Organization and user settings panel',
35
35
  domain: 'saas-boilerplate',
36
- owners: ['saas-team'],
36
+ owners: ['@saas-team'],
37
37
  tags: ['settings', 'config'],
38
38
  },
39
39
  source: {
@@ -11,7 +11,7 @@ export const ProjectListPresentation: PresentationDescriptorV2 = {
11
11
  description:
12
12
  'List view of projects with status, tags, and last updated info',
13
13
  domain: 'saas-boilerplate',
14
- owners: ['saas-team'],
14
+ owners: ['@saas-team'],
15
15
  tags: ['project', 'list', 'dashboard'],
16
16
  },
17
17
  source: {
@@ -35,7 +35,7 @@ export const ProjectDetailPresentation: PresentationDescriptorV2 = {
35
35
  version: 1,
36
36
  description: 'Detailed view of a project with settings and activity',
37
37
  domain: 'saas-boilerplate',
38
- owners: ['saas-team'],
38
+ owners: ['@saas-team'],
39
39
  tags: ['project', 'detail'],
40
40
  },
41
41
  source: {
@@ -16,7 +16,7 @@ export const SaasBoilerplateFeature: FeatureModuleSpec = {
16
16
  description:
17
17
  'SaaS application foundation with projects, billing, and settings',
18
18
  domain: 'saas',
19
- owners: ['saas-team'],
19
+ owners: ['@saas-team'],
20
20
  tags: ['saas', 'projects', 'billing'],
21
21
  stability: 'experimental',
22
22
  },
@@ -31,10 +31,10 @@ export const SaasBoilerplateFeature: FeatureModuleSpec = {
31
31
  { name: 'saas.project.list', version: 1 },
32
32
 
33
33
  // Billing operations
34
- { name: 'saas.billing.getSubscription', version: 1 },
35
- { name: 'saas.billing.recordUsage', version: 1 },
36
- { name: 'saas.billing.getUsageSummary', version: 1 },
37
- { name: 'saas.billing.checkFeatureAccess', version: 1 },
34
+ { name: 'saas.billing.subscription.get', version: 1 },
35
+ { name: 'saas.billing.usage.record', version: 1 },
36
+ { name: 'saas.billing.usage.summary', version: 1 },
37
+ { name: 'saas.billing.feature.check', version: 1 },
38
38
  ],
39
39
 
40
40
  // Events emitted by this feature
@@ -43,11 +43,12 @@ export const SaasBoilerplateFeature: FeatureModuleSpec = {
43
43
  { name: 'project.created', version: 1 },
44
44
  { name: 'project.updated', version: 1 },
45
45
  { name: 'project.deleted', version: 1 },
46
+ { name: 'project.archived', version: 1 },
46
47
 
47
48
  // Billing events
48
- { name: 'usage.recorded', version: 1 },
49
- { name: 'subscription.updated', version: 1 },
50
- { name: 'limit.exceeded', version: 1 },
49
+ { name: 'billing.usage.recorded', version: 1 },
50
+ { name: 'billing.subscription.changed', version: 1 },
51
+ { name: 'billing.limit.reached', version: 1 },
51
52
  ],
52
53
 
53
54
  // Presentations associated with this feature
@@ -71,11 +72,11 @@ export const SaasBoilerplateFeature: FeatureModuleSpec = {
71
72
  pres: { name: 'saas.project.detail', version: 1 },
72
73
  },
73
74
  {
74
- op: { name: 'saas.billing.getSubscription', version: 1 },
75
+ op: { name: 'saas.billing.subscription.get', version: 1 },
75
76
  pres: { name: 'saas.billing.subscription', version: 1 },
76
77
  },
77
78
  {
78
- op: { name: 'saas.billing.getUsageSummary', version: 1 },
79
+ op: { name: 'saas.billing.usage.summary', version: 1 },
79
80
  pres: { name: 'saas.billing.usage', version: 1 },
80
81
  },
81
82
  ],