@lssm/example.saas-boilerplate 0.0.0-canary-20251216031832 → 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/feature.ts, src/index.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
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.02 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/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 78ms
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-20251216031832
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-20251216031832
10
- - @lssm/lib.schema@0.0.0-canary-20251216031832
11
- - @lssm/lib.jobs@0.0.0-canary-20251216031832
12
- - @lssm/lib.bus@0.0.0-canary-20251216031832
13
- - @lssm/lib.identity-rbac@0.0.0-canary-20251216031832
14
- - @lssm/module.audit-trail@0.0.0-canary-20251216031832
15
- - @lssm/module.notifications@0.0.0-canary-20251216031832
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{SaasBoilerplateFeature as t}from"./feature.js";import{FeatureAccessReasonEnum as n,SubscriptionStatusSchemaEnum as r}from"./billing/billing.enum.js";import{CheckFeatureAccessInputModel as i,CheckFeatureAccessOutputModel as a,GetUsageSummaryInputModel as o,GetUsageSummaryOutputModel as s,RecordUsageInputModel as c,RecordUsageOutputModel as ee,SubscriptionModel as te,UsageRecordedPayloadModel as ne,UsageSummaryModel as re}from"./billing/billing.schema.js";import{CheckFeatureAccessContract as l,GetSubscriptionContract as u,GetUsageSummaryContract as d,RecordUsageContract as f}from"./billing/billing.contracts.js";import{SubscriptionChangedEvent as p,UsageLimitReachedEvent as m,UsageRecordedEvent as h}from"./billing/billing.event.js";import{BillingUsageEntity as g,SubscriptionEntity as _,SubscriptionStatusEnum as v,UsageLimitEntity as y}from"./billing/billing.entity.js";import{SubscriptionPresentation as b,UsageDashboardPresentation as x}from"./billing/billing.presentation.js";import{mockCheckFeatureAccessHandler as S,mockGetSubscriptionHandler as C,mockGetUsageSummaryHandler as w,mockRecordUsageHandler as T}from"./billing/billing.handler.js";import"./billing/index.js";import{ProjectStatusFilterEnum as E,ProjectStatusSchemaEnum as D}from"./project/project.enum.js";import{CreateProjectInputModel as O,DeleteProjectInputModel as k,DeleteProjectOutputModel as A,GetProjectInputModel as j,ListProjectsInputModel as M,ListProjectsOutputModel as N,ProjectDeletedPayloadModel as P,ProjectModel as F,UpdateProjectInputModel as ie}from"./project/project.schema.js";import{CreateProjectContract as I,DeleteProjectContract as L,GetProjectContract as R,ListProjectsContract as z,UpdateProjectContract as B}from"./project/project.contracts.js";import{ProjectArchivedEvent as V,ProjectCreatedEvent as H,ProjectDeletedEvent as U,ProjectUpdatedEvent as W}from"./project/project.event.js";import{ProjectEntity as G,ProjectMemberEntity as K,ProjectStatusEnum as q}from"./project/project.entity.js";import{ProjectDetailPresentation as J,ProjectListPresentation as Y}from"./project/project.presentation.js";import{mockCreateProjectHandler as ae,mockDeleteProjectHandler as oe,mockGetProjectHandler as se,mockListProjectsHandler as ce,mockUpdateProjectHandler as le}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 ue,SettingsPanelPresentation as de}from"./dashboard/dashboard.presentation.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:[G,K,Q,Z,_,g,y],enums:[q,X,v]},ge={modules:[fe,pe,me,he,$],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{g as BillingUsageEntity,l as CheckFeatureAccessContract,i as CheckFeatureAccessInputModel,a as CheckFeatureAccessOutputModel,I as CreateProjectContract,O as CreateProjectInputModel,L as DeleteProjectContract,k as DeleteProjectInputModel,A as DeleteProjectOutputModel,n as FeatureAccessReasonEnum,Z as FeatureFlagEntity,R as GetProjectContract,j as GetProjectInputModel,u as GetSubscriptionContract,d as GetUsageSummaryContract,o as GetUsageSummaryInputModel,s as GetUsageSummaryOutputModel,z as ListProjectsContract,M as ListProjectsInputModel,N as ListProjectsOutputModel,V as ProjectArchivedEvent,H as ProjectCreatedEvent,U as ProjectDeletedEvent,P as ProjectDeletedPayloadModel,J as ProjectDetailPresentation,G as ProjectEntity,Y as ProjectListPresentation,K as ProjectMemberEntity,F as ProjectModel,q as ProjectStatusEnum,E as ProjectStatusFilterEnum,D as ProjectStatusSchemaEnum,W as ProjectUpdatedEvent,f as RecordUsageContract,c as RecordUsageInputModel,ee as RecordUsageOutputModel,t as SaasBoilerplateFeature,ue as SaasDashboardPresentation,Q as SettingsEntity,de as SettingsPanelPresentation,X as SettingsScopeEnum,p as SubscriptionChangedEvent,_ as SubscriptionEntity,te as SubscriptionModel,b as SubscriptionPresentation,v as SubscriptionStatusEnum,r as SubscriptionStatusSchemaEnum,B as UpdateProjectContract,ie as UpdateProjectInputModel,x as UsageDashboardPresentation,y as UsageLimitEntity,m as UsageLimitReachedEvent,h as UsageRecordedEvent,ne as UsageRecordedPayloadModel,re as UsageSummaryModel,e as example,S as mockCheckFeatureAccessHandler,ae as mockCreateProjectHandler,oe as mockDeleteProjectHandler,se as mockGetProjectHandler,C as mockGetSubscriptionHandler,w as mockGetUsageSummaryHandler,ce as mockListProjectsHandler,T as mockRecordUsageHandler,le 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-20251216031832",
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",
@@ -20,7 +20,6 @@
20
20
  "./docs": "./src/docs/index.ts",
21
21
  "./docs/saas-boilerplate.docblock": "./src/docs/saas-boilerplate.docblock.ts",
22
22
  "./example": "./src/example.ts",
23
- "./feature": "./src/feature.ts",
24
23
  "./handlers": "./src/handlers/index.ts",
25
24
  "./presentations": "./src/presentations/index.ts",
26
25
  "./project": "./src/project/index.ts",
@@ -31,6 +30,7 @@
31
30
  "./project/project.handler": "./src/project/project.handler.ts",
32
31
  "./project/project.presentation": "./src/project/project.presentation.ts",
33
32
  "./project/project.schema": "./src/project/project.schema.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",
@@ -81,7 +81,6 @@
81
81
  "./docs": "./dist/docs/index.js",
82
82
  "./docs/saas-boilerplate.docblock": "./dist/docs/saas-boilerplate.docblock.js",
83
83
  "./example": "./dist/example.js",
84
- "./feature": "./dist/feature.js",
85
84
  "./handlers": "./dist/handlers/index.js",
86
85
  "./presentations": "./dist/presentations/index.js",
87
86
  "./project": "./dist/project/index.js",
@@ -92,6 +91,7 @@
92
91
  "./project/project.handler": "./dist/project/project.handler.js",
93
92
  "./project/project.presentation": "./dist/project/project.presentation.js",
94
93
  "./project/project.schema": "./dist/project/project.schema.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.
@@ -113,4 +113,3 @@ export const CheckFeatureAccessContract = defineQuery({
113
113
  auth: 'user',
114
114
  },
115
115
  });
116
-
@@ -151,4 +151,3 @@ export const UsageLimitEntity = defineEntity({
151
151
  },
152
152
  indexes: [index.unique(['planId', 'feature'])],
153
153
  });
154
-
@@ -21,4 +21,3 @@ export const FeatureAccessReasonEnum = defineEnum('FeatureAccessReason', [
21
21
  'limit_reached',
22
22
  'not_in_plan',
23
23
  ]);
24
-
@@ -91,4 +91,3 @@ export const SubscriptionChangedEvent = defineEvent({
91
91
  description: 'Subscription status has changed.',
92
92
  payload: SubscriptionChangedPayload,
93
93
  });
94
-
@@ -135,4 +135,3 @@ export async function mockCheckFeatureAccessHandler(
135
135
 
136
136
  return featureMap[feature] ?? { allowed: true };
137
137
  }
138
-
@@ -46,4 +46,3 @@ export const UsageDashboardPresentation: PresentationDescriptorV2 = {
46
46
  flags: ['saas.billing.enabled'],
47
47
  },
48
48
  };
49
-
@@ -1,5 +1,8 @@
1
1
  import { defineSchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';
2
- import { SubscriptionStatusSchemaEnum, FeatureAccessReasonEnum } from './billing.enum';
2
+ import {
3
+ SubscriptionStatusSchemaEnum,
4
+ FeatureAccessReasonEnum,
5
+ } from './billing.enum';
3
6
 
4
7
  /**
5
8
  * Organization subscription details schema.
@@ -128,4 +131,3 @@ export const CheckFeatureAccessOutputModel = defineSchemaModel({
128
131
  upgradeUrl: { type: ScalarTypeEnum.URL(), isOptional: true },
129
132
  },
130
133
  });
131
-
@@ -62,4 +62,3 @@ export {
62
62
  type CheckFeatureAccessInput,
63
63
  type CheckFeatureAccessOutput,
64
64
  } from './billing.handler';
65
-
@@ -46,4 +46,3 @@ export const SettingsPanelPresentation: PresentationDescriptorV2 = {
46
46
  flags: ['saas.enabled'],
47
47
  },
48
48
  };
49
-
@@ -6,4 +6,3 @@ export {
6
6
  SaasDashboardPresentation,
7
7
  SettingsPanelPresentation,
8
8
  } from './dashboard.presentation';
9
-
@@ -18,5 +18,3 @@ export {
18
18
  mockUpdateProjectHandler,
19
19
  mockDeleteProjectHandler,
20
20
  } from '../project/project.handler';
21
-
22
-
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 './feature';
11
+ export * from './saas-boilerplate.feature';
12
12
  export { default as example } from './example';
13
13
 
14
14
  // Import docs for registration
@@ -34,5 +34,3 @@ export const SaasBoilerplatePresentations = {
34
34
  SaasDashboardPresentation: undefined,
35
35
  SettingsPanelPresentation: undefined,
36
36
  };
37
-
38
-
@@ -64,4 +64,3 @@ export {
64
64
  type ListProjectsInput,
65
65
  type ListProjectsOutput,
66
66
  } from './project.handler';
67
-
@@ -182,4 +182,3 @@ export const ListProjectsContract = defineQuery({
182
182
  auth: 'user',
183
183
  },
184
184
  });
185
-
@@ -86,4 +86,3 @@ export const ProjectMemberEntity = defineEntity({
86
86
  },
87
87
  indexes: [index.unique(['projectId', 'userId'])],
88
88
  });
89
-
@@ -20,4 +20,3 @@ export const ProjectStatusFilterEnum = defineEnum('ProjectStatusFilter', [
20
20
  'ARCHIVED',
21
21
  'all',
22
22
  ]);
23
-
@@ -106,4 +106,3 @@ export const ProjectArchivedEvent = defineEvent({
106
106
  description: 'A project has been archived.',
107
107
  payload: ProjectArchivedPayload,
108
108
  });
109
-
@@ -166,4 +166,3 @@ export async function mockDeleteProjectHandler(input: {
166
166
 
167
167
  return { success: true };
168
168
  }
169
-
@@ -48,4 +48,3 @@ export const ProjectDetailPresentation: PresentationDescriptorV2 = {
48
48
  flags: ['saas.projects.enabled'],
49
49
  },
50
50
  };
51
-
@@ -1,5 +1,8 @@
1
1
  import { defineSchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';
2
- import { ProjectStatusSchemaEnum, ProjectStatusFilterEnum } from './project.enum';
2
+ import {
3
+ ProjectStatusSchemaEnum,
4
+ ProjectStatusFilterEnum,
5
+ } from './project.enum';
3
6
 
4
7
  /**
5
8
  * A project within an organization.
@@ -142,4 +145,3 @@ export const ListProjectsOutputModel = defineSchemaModel({
142
145
  total: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
143
146
  },
144
147
  });
145
-
@@ -7,4 +7,3 @@ export { SettingsScopeEnum } from './settings.enum';
7
7
 
8
8
  // Entities
9
9
  export { SettingsEntity, FeatureFlagEntity } from './settings.entity';
10
-
@@ -87,4 +87,3 @@ export const FeatureFlagEntity = defineEntity({
87
87
  updatedAt: field.updatedAt(),
88
88
  },
89
89
  });
90
-
@@ -9,4 +9,3 @@ export const SettingsScopeEnum = defineEntityEnum({
9
9
  schema: 'saas_app',
10
10
  description: 'Scope of a setting.',
11
11
  });
12
-
@@ -108,4 +108,3 @@ export const MOCK_USAGE_SUMMARY = {
108
108
  { date: '2024-04-05', apiCalls: 3800, storageGb: 12.5 },
109
109
  ],
110
110
  };
111
-