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

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,18 +2,18 @@ $ 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.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/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
6
6
  ℹ target: esnext
7
7
  ℹ tsconfig: tsconfig.json
8
8
  ℹ Build start
9
- ℹ dist/index.js 5.03 kB │ gzip: 1.28 kB
9
+ ℹ dist/index.js 5.04 kB │ gzip: 1.28 kB
10
10
  ℹ dist/docs/saas-boilerplate.docblock.js 3.46 kB │ gzip: 1.38 kB
11
11
  ℹ dist/project/project.contracts.js 2.78 kB │ gzip: 0.94 kB
12
12
  ℹ dist/billing/billing.schema.js 2.73 kB │ gzip: 0.70 kB
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.feature.js 1.95 kB │ gzip: 0.52 kB
16
+ ℹ dist/saas-boilerplate.feature.js 1.95 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: 42.99 kB
39
- ✔ Build complete in 102ms
38
+ ℹ 29 files, total: 43.01 kB
39
+ ✔ Build complete in 61ms
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-20251216033905
3
+ ## 0.0.0-canary-20251216035145
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-20251216033905
10
- - @lssm/lib.schema@0.0.0-canary-20251216033905
11
- - @lssm/lib.jobs@0.0.0-canary-20251216033905
12
- - @lssm/lib.bus@0.0.0-canary-20251216033905
13
- - @lssm/lib.identity-rbac@0.0.0-canary-20251216033905
14
- - @lssm/module.audit-trail@0.0.0-canary-20251216033905
15
- - @lssm/module.notifications@0.0.0-canary-20251216033905
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
@@ -1 +1 @@
1
- import{CheckFeatureAccessInputModel as e,CheckFeatureAccessOutputModel as t,GetUsageSummaryInputModel as n,GetUsageSummaryOutputModel as r,RecordUsageInputModel as i,RecordUsageOutputModel as a,SubscriptionModel as o,UsageRecordedPayloadModel as s}from"./billing.schema.js";import{defineCommand as c,defineQuery as l}from"@lssm/lib.contracts";const u=[`example.saas-boilerplate`],d=l({meta:{name:`saas.billing.subscription.get`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`subscription`],description:`Get organization subscription status.`,goal:`Show current plan and billing status.`,context:`Billing page, plan upgrade prompts.`},io:{input:null,output:o},policy:{auth:`user`}}),f=c({meta:{name:`saas.billing.usage.record`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`usage`],description:`Record usage of a metered feature.`,goal:`Track feature usage for billing.`,context:`Called by services when metered features are used.`},io:{input:i,output:a},policy:{auth:`user`},sideEffects:{emits:[{name:`billing.usage.recorded`,version:1,when:`Usage is recorded`,payload:s}]}}),p=l({meta:{name:`saas.billing.usage.summary`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`usage`],description:`Get usage summary for the current billing period.`,goal:`Show usage vs limits.`,context:`Billing page, usage dashboards.`},io:{input:n,output:r},policy:{auth:`user`}}),m=l({meta:{name:`saas.billing.feature.check`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`feature`],description:`Check if organization has access to a feature.`,goal:`Gate features based on plan/usage.`,context:`Feature access checks, upgrade prompts.`},io:{input:e,output:t},policy:{auth:`user`}});export{m as CheckFeatureAccessContract,d as GetSubscriptionContract,p as GetUsageSummaryContract,f as RecordUsageContract};
1
+ import{CheckFeatureAccessInputModel as e,CheckFeatureAccessOutputModel as t,GetUsageSummaryInputModel as n,GetUsageSummaryOutputModel as r,RecordUsageInputModel as i,RecordUsageOutputModel as a,SubscriptionModel as o,UsageRecordedPayloadModel as s}from"./billing.schema.js";import{defineCommand as c,defineQuery as l}from"@lssm/lib.contracts";const u=[`@example.saas-boilerplate`],d=l({meta:{name:`saas.billing.subscription.get`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`subscription`],description:`Get organization subscription status.`,goal:`Show current plan and billing status.`,context:`Billing page, plan upgrade prompts.`},io:{input:null,output:o},policy:{auth:`user`}}),f=c({meta:{name:`saas.billing.usage.record`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`usage`],description:`Record usage of a metered feature.`,goal:`Track feature usage for billing.`,context:`Called by services when metered features are used.`},io:{input:i,output:a},policy:{auth:`user`},sideEffects:{emits:[{name:`billing.usage.recorded`,version:1,when:`Usage is recorded`,payload:s}]}}),p=l({meta:{name:`saas.billing.usage.summary`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`usage`],description:`Get usage summary for the current billing period.`,goal:`Show usage vs limits.`,context:`Billing page, usage dashboards.`},io:{input:n,output:r},policy:{auth:`user`}}),m=l({meta:{name:`saas.billing.feature.check`,version:1,stability:`stable`,owners:[...u],tags:[`saas`,`billing`,`feature`],description:`Check if organization has access to a feature.`,goal:`Gate features based on plan/usage.`,context:`Feature access checks, upgrade prompts.`},io:{input:e,output:t},policy:{auth:`user`}});export{m as CheckFeatureAccessContract,d as GetSubscriptionContract,p as GetUsageSummaryContract,f as RecordUsageContract};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import e from"./example.js";import{FeatureAccessReasonEnum as t,SubscriptionStatusSchemaEnum as n}from"./billing/billing.enum.js";import{CheckFeatureAccessInputModel as r,CheckFeatureAccessOutputModel as i,GetUsageSummaryInputModel as a,GetUsageSummaryOutputModel as o,RecordUsageInputModel as s,RecordUsageOutputModel as c,SubscriptionModel as ee,UsageRecordedPayloadModel as te,UsageSummaryModel as ne}from"./billing/billing.schema.js";import{CheckFeatureAccessContract as re,GetSubscriptionContract as l,GetUsageSummaryContract as u,RecordUsageContract as d}from"./billing/billing.contracts.js";import{SubscriptionChangedEvent as f,UsageLimitReachedEvent as p,UsageRecordedEvent as m}from"./billing/billing.event.js";import{BillingUsageEntity as h,SubscriptionEntity as g,SubscriptionStatusEnum as _,UsageLimitEntity as v}from"./billing/billing.entity.js";import{SubscriptionPresentation as y,UsageDashboardPresentation as b}from"./billing/billing.presentation.js";import{mockCheckFeatureAccessHandler as x,mockGetSubscriptionHandler as S,mockGetUsageSummaryHandler as C,mockRecordUsageHandler as w}from"./billing/billing.handler.js";import"./billing/index.js";import{ProjectStatusFilterEnum as T,ProjectStatusSchemaEnum as E}from"./project/project.enum.js";import{CreateProjectInputModel as D,DeleteProjectInputModel as O,DeleteProjectOutputModel as k,GetProjectInputModel as A,ListProjectsInputModel as j,ListProjectsOutputModel as M,ProjectDeletedPayloadModel as N,ProjectModel as P,UpdateProjectInputModel as F}from"./project/project.schema.js";import{CreateProjectContract as ie,DeleteProjectContract as I,GetProjectContract as L,ListProjectsContract as R,UpdateProjectContract as z}from"./project/project.contracts.js";import{ProjectArchivedEvent as B,ProjectCreatedEvent as V,ProjectDeletedEvent as H,ProjectUpdatedEvent as U}from"./project/project.event.js";import{ProjectEntity as W,ProjectMemberEntity as G,ProjectStatusEnum as K}from"./project/project.entity.js";import{ProjectDetailPresentation as q,ProjectListPresentation as J}from"./project/project.presentation.js";import{mockCreateProjectHandler as Y,mockDeleteProjectHandler as ae,mockGetProjectHandler as oe,mockListProjectsHandler as se,mockUpdateProjectHandler as ce}from"./project/project.handler.js";import"./project/index.js";import{SettingsScopeEnum as X}from"./settings/settings.enum.js";import{FeatureFlagEntity as Z,SettingsEntity as Q}from"./settings/settings.entity.js";import"./settings/index.js";import{SaasDashboardPresentation as le,SettingsPanelPresentation as ue}from"./dashboard/dashboard.presentation.js";import{SaasBoilerplateFeature as de}from"./saas.feature.js";import"./docs/index.js";import{identityRbacSchemaContribution as fe}from"@lssm/lib.identity-rbac";import{jobsSchemaContribution as pe}from"@lssm/lib.jobs";import{auditTrailSchemaContribution as me}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as he}from"@lssm/module.notifications";const $={moduleId:`@lssm/example.saas-boilerplate`,entities:[W,G,Q,Z,g,h,v],enums:[K,X,_]},ge={modules:[fe,pe,me,he,$],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{h as BillingUsageEntity,re as CheckFeatureAccessContract,r as CheckFeatureAccessInputModel,i as CheckFeatureAccessOutputModel,ie as CreateProjectContract,D as CreateProjectInputModel,I as DeleteProjectContract,O as DeleteProjectInputModel,k as DeleteProjectOutputModel,t as FeatureAccessReasonEnum,Z as FeatureFlagEntity,L as GetProjectContract,A as GetProjectInputModel,l as GetSubscriptionContract,u as GetUsageSummaryContract,a as GetUsageSummaryInputModel,o as GetUsageSummaryOutputModel,R as ListProjectsContract,j as ListProjectsInputModel,M as ListProjectsOutputModel,B as ProjectArchivedEvent,V as ProjectCreatedEvent,H as ProjectDeletedEvent,N as ProjectDeletedPayloadModel,q as ProjectDetailPresentation,W as ProjectEntity,J as ProjectListPresentation,G as ProjectMemberEntity,P as ProjectModel,K as ProjectStatusEnum,T as ProjectStatusFilterEnum,E as ProjectStatusSchemaEnum,U as ProjectUpdatedEvent,d as RecordUsageContract,s as RecordUsageInputModel,c as RecordUsageOutputModel,de as SaasBoilerplateFeature,le as SaasDashboardPresentation,Q as SettingsEntity,ue as SettingsPanelPresentation,X as SettingsScopeEnum,f as SubscriptionChangedEvent,g as SubscriptionEntity,ee as SubscriptionModel,y as SubscriptionPresentation,_ as SubscriptionStatusEnum,n as SubscriptionStatusSchemaEnum,z as UpdateProjectContract,F as UpdateProjectInputModel,b as UsageDashboardPresentation,v as UsageLimitEntity,p as UsageLimitReachedEvent,m as UsageRecordedEvent,te as UsageRecordedPayloadModel,ne as UsageSummaryModel,e as example,x as mockCheckFeatureAccessHandler,Y as mockCreateProjectHandler,ae as mockDeleteProjectHandler,oe as mockGetProjectHandler,S as mockGetSubscriptionHandler,C as mockGetUsageSummaryHandler,se as mockListProjectsHandler,w as mockRecordUsageHandler,ce as mockUpdateProjectHandler,$ as saasBoilerplateSchemaContribution,ge as schemaComposition};
1
+ import e from"./example.js";import{FeatureAccessReasonEnum as t,SubscriptionStatusSchemaEnum as n}from"./billing/billing.enum.js";import{CheckFeatureAccessInputModel as r,CheckFeatureAccessOutputModel as i,GetUsageSummaryInputModel as a,GetUsageSummaryOutputModel as o,RecordUsageInputModel as s,RecordUsageOutputModel as c,SubscriptionModel as ee,UsageRecordedPayloadModel as te,UsageSummaryModel as ne}from"./billing/billing.schema.js";import{CheckFeatureAccessContract as re,GetSubscriptionContract as l,GetUsageSummaryContract as u,RecordUsageContract as d}from"./billing/billing.contracts.js";import{SubscriptionChangedEvent as f,UsageLimitReachedEvent as p,UsageRecordedEvent as m}from"./billing/billing.event.js";import{BillingUsageEntity as h,SubscriptionEntity as g,SubscriptionStatusEnum as _,UsageLimitEntity as v}from"./billing/billing.entity.js";import{SubscriptionPresentation as y,UsageDashboardPresentation as b}from"./billing/billing.presentation.js";import{mockCheckFeatureAccessHandler as x,mockGetSubscriptionHandler as S,mockGetUsageSummaryHandler as C,mockRecordUsageHandler as w}from"./billing/billing.handler.js";import"./billing/index.js";import{ProjectStatusFilterEnum as T,ProjectStatusSchemaEnum as E}from"./project/project.enum.js";import{CreateProjectInputModel as D,DeleteProjectInputModel as O,DeleteProjectOutputModel as k,GetProjectInputModel as A,ListProjectsInputModel as j,ListProjectsOutputModel as M,ProjectDeletedPayloadModel as N,ProjectModel as P,UpdateProjectInputModel as F}from"./project/project.schema.js";import{CreateProjectContract as ie,DeleteProjectContract as I,GetProjectContract as L,ListProjectsContract as R,UpdateProjectContract as z}from"./project/project.contracts.js";import{ProjectArchivedEvent as B,ProjectCreatedEvent as V,ProjectDeletedEvent as H,ProjectUpdatedEvent as U}from"./project/project.event.js";import{ProjectEntity as W,ProjectMemberEntity as G,ProjectStatusEnum as K}from"./project/project.entity.js";import{ProjectDetailPresentation as q,ProjectListPresentation as J}from"./project/project.presentation.js";import{mockCreateProjectHandler as Y,mockDeleteProjectHandler as ae,mockGetProjectHandler as oe,mockListProjectsHandler as se,mockUpdateProjectHandler as ce}from"./project/project.handler.js";import"./project/index.js";import{SettingsScopeEnum as X}from"./settings/settings.enum.js";import{FeatureFlagEntity as Z,SettingsEntity as Q}from"./settings/settings.entity.js";import"./settings/index.js";import{SaasDashboardPresentation as le,SettingsPanelPresentation as ue}from"./dashboard/dashboard.presentation.js";import{SaasBoilerplateFeature as de}from"./saas-boilerplate.feature.js";import"./docs/index.js";import{identityRbacSchemaContribution as fe}from"@lssm/lib.identity-rbac";import{jobsSchemaContribution as pe}from"@lssm/lib.jobs";import{auditTrailSchemaContribution as me}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as he}from"@lssm/module.notifications";const $={moduleId:`@lssm/example.saas-boilerplate`,entities:[W,G,Q,Z,g,h,v],enums:[K,X,_]},ge={modules:[fe,pe,me,he,$],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{h as BillingUsageEntity,re as CheckFeatureAccessContract,r as CheckFeatureAccessInputModel,i as CheckFeatureAccessOutputModel,ie as CreateProjectContract,D as CreateProjectInputModel,I as DeleteProjectContract,O as DeleteProjectInputModel,k as DeleteProjectOutputModel,t as FeatureAccessReasonEnum,Z as FeatureFlagEntity,L as GetProjectContract,A as GetProjectInputModel,l as GetSubscriptionContract,u as GetUsageSummaryContract,a as GetUsageSummaryInputModel,o as GetUsageSummaryOutputModel,R as ListProjectsContract,j as ListProjectsInputModel,M as ListProjectsOutputModel,B as ProjectArchivedEvent,V as ProjectCreatedEvent,H as ProjectDeletedEvent,N as ProjectDeletedPayloadModel,q as ProjectDetailPresentation,W as ProjectEntity,J as ProjectListPresentation,G as ProjectMemberEntity,P as ProjectModel,K as ProjectStatusEnum,T as ProjectStatusFilterEnum,E as ProjectStatusSchemaEnum,U as ProjectUpdatedEvent,d as RecordUsageContract,s as RecordUsageInputModel,c as RecordUsageOutputModel,de as SaasBoilerplateFeature,le as SaasDashboardPresentation,Q as SettingsEntity,ue as SettingsPanelPresentation,X as SettingsScopeEnum,f as SubscriptionChangedEvent,g as SubscriptionEntity,ee as SubscriptionModel,y as SubscriptionPresentation,_ as SubscriptionStatusEnum,n as SubscriptionStatusSchemaEnum,z as UpdateProjectContract,F as UpdateProjectInputModel,b as UsageDashboardPresentation,v as UsageLimitEntity,p as UsageLimitReachedEvent,m as UsageRecordedEvent,te as UsageRecordedPayloadModel,ne as UsageSummaryModel,e as example,x as mockCheckFeatureAccessHandler,Y as mockCreateProjectHandler,ae as mockDeleteProjectHandler,oe as mockGetProjectHandler,S as mockGetSubscriptionHandler,C as mockGetUsageSummaryHandler,se as mockListProjectsHandler,w as mockRecordUsageHandler,ce as mockUpdateProjectHandler,$ as saasBoilerplateSchemaContribution,ge as schemaComposition};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.saas-boilerplate",
3
- "version": "0.0.0-canary-20251216033905",
3
+ "version": "0.0.0-canary-20251216035145",
4
4
  "description": "SaaS Boilerplate - Users, Orgs, Projects, Billing, Settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,7 +30,7 @@
30
30
  "./project/project.handler": "./src/project/project.handler.ts",
31
31
  "./project/project.presentation": "./src/project/project.presentation.ts",
32
32
  "./project/project.schema": "./src/project/project.schema.ts",
33
- "./saas.feature": "./src/saas.feature.ts",
33
+ "./saas-boilerplate.feature": "./src/saas-boilerplate.feature.ts",
34
34
  "./settings": "./src/settings/index.ts",
35
35
  "./settings/settings.entity": "./src/settings/settings.entity.ts",
36
36
  "./settings/settings.enum": "./src/settings/settings.enum.ts",
@@ -91,7 +91,7 @@
91
91
  "./project/project.handler": "./dist/project/project.handler.js",
92
92
  "./project/project.presentation": "./dist/project/project.presentation.js",
93
93
  "./project/project.schema": "./dist/project/project.schema.js",
94
- "./saas.feature": "./dist/saas.feature.js",
94
+ "./saas-boilerplate.feature": "./dist/saas-boilerplate.feature.js",
95
95
  "./settings": "./dist/settings/index.js",
96
96
  "./settings/settings.entity": "./dist/settings/settings.entity.js",
97
97
  "./settings/settings.enum": "./dist/settings/settings.enum.js",
@@ -10,7 +10,7 @@ import {
10
10
  CheckFeatureAccessOutputModel,
11
11
  } from './billing.schema';
12
12
 
13
- const OWNERS = ['example.saas-boilerplate'] as const;
13
+ const OWNERS = ['@example.saas-boilerplate'] as const;
14
14
 
15
15
  /**
16
16
  * Get subscription status.
package/src/index.ts CHANGED
@@ -8,7 +8,7 @@ export * from './settings';
8
8
  export * from './dashboard';
9
9
 
10
10
  // Export feature and example metadata
11
- export * from './saas.feature';
11
+ export * from './saas-boilerplate.feature';
12
12
  export { default as example } from './example';
13
13
 
14
14
  // Import docs for registration