@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.
- package/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +8 -8
- package/dist/billing/billing.contracts.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/src/billing/billing.contracts.ts +1 -2
- package/src/billing/billing.entity.ts +0 -1
- package/src/billing/billing.enum.ts +0 -1
- package/src/billing/billing.event.ts +0 -1
- package/src/billing/billing.handler.ts +0 -1
- package/src/billing/billing.presentation.ts +0 -1
- package/src/billing/billing.schema.ts +4 -2
- package/src/billing/index.ts +0 -1
- package/src/dashboard/dashboard.presentation.ts +0 -1
- package/src/dashboard/index.ts +0 -1
- package/src/handlers/index.ts +0 -2
- package/src/index.ts +1 -1
- package/src/presentations/index.ts +0 -2
- package/src/project/index.ts +0 -1
- package/src/project/project.contracts.ts +0 -1
- package/src/project/project.entity.ts +0 -1
- package/src/project/project.enum.ts +0 -1
- package/src/project/project.event.ts +0 -1
- package/src/project/project.handler.ts +0 -1
- package/src/project/project.presentation.ts +0 -1
- package/src/project/project.schema.ts +4 -2
- package/src/settings/index.ts +0 -1
- package/src/settings/settings.entity.ts +0 -1
- package/src/settings/settings.enum.ts +0 -1
- package/src/shared/mock-data.ts +0 -1
- package/tsconfig.tsbuildinfo +1 -1
- /package/dist/{feature.js → saas-boilerplate.feature.js} +0 -0
- /package/src/{feature.ts → saas-boilerplate.feature.ts} +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -2,18 +2,18 @@ $ bun build:bundle && bun build:types
|
|
|
2
2
|
$ tsdown
|
|
3
3
|
[34mℹ[39m tsdown [2mv0.17.4[22m powered by rolldown [2mv1.0.0-beta.53[22m
|
|
4
4
|
[34mℹ[39m config file: [4m/home/runner/work/contractspec/contractspec/packages/examples/saas-boilerplate/tsdown.config.js[24m
|
|
5
|
-
[34mℹ[39m entry: [34msrc/example.ts, src/
|
|
5
|
+
[34mℹ[39m entry: [34msrc/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[39m
|
|
6
6
|
[34mℹ[39m target: [34mesnext[39m
|
|
7
7
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
8
8
|
[34mℹ[39m Build start
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m5.
|
|
9
|
+
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m5.04 kB[22m [2m│ gzip: 1.28 kB[22m
|
|
10
10
|
[34mℹ[39m [2mdist/[22m[1mdocs/saas-boilerplate.docblock.js[22m [2m3.46 kB[22m [2m│ gzip: 1.38 kB[22m
|
|
11
11
|
[34mℹ[39m [2mdist/[22m[1mproject/project.contracts.js[22m [2m2.78 kB[22m [2m│ gzip: 0.94 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1mbilling/billing.schema.js[22m [2m2.73 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
13
13
|
[34mℹ[39m [2mdist/[22m[1mbilling/billing.entity.js[22m [2m2.57 kB[22m [2m│ gzip: 0.94 kB[22m
|
|
14
14
|
[34mℹ[39m [2mdist/[22m[1mproject/project.schema.js[22m [2m2.57 kB[22m [2m│ gzip: 0.59 kB[22m
|
|
15
15
|
[34mℹ[39m [2mdist/[22m[1mshared/mock-data.js[22m [2m2.06 kB[22m [2m│ gzip: 0.78 kB[22m
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[
|
|
16
|
+
[34mℹ[39m [2mdist/[22m[1msaas-boilerplate.feature.js[22m [2m1.95 kB[22m [2m│ gzip: 0.52 kB[22m
|
|
17
17
|
[34mℹ[39m [2mdist/[22m[1mproject/index.js[22m [2m1.87 kB[22m [2m│ gzip: 0.50 kB[22m
|
|
18
18
|
[34mℹ[39m [2mdist/[22m[1mbilling/index.js[22m [2m1.87 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
19
19
|
[34mℹ[39m [2mdist/[22m[1mbilling/billing.contracts.js[22m [2m1.86 kB[22m [2m│ gzip: 0.69 kB[22m
|
|
@@ -35,6 +35,6 @@ $ tsdown
|
|
|
35
35
|
[34mℹ[39m [2mdist/[22m[1msettings/index.js[22m [2m0.21 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
36
36
|
[34mℹ[39m [2mdist/[22m[1mdashboard/index.js[22m [2m0.17 kB[22m [2m│ gzip: 0.11 kB[22m
|
|
37
37
|
[34mℹ[39m [2mdist/[22m[1mdocs/index.js[22m [2m0.04 kB[22m [2m│ gzip: 0.06 kB[22m
|
|
38
|
-
[34mℹ[39m 29 files, total:
|
|
39
|
-
[32m✔[39m Build complete in [
|
|
38
|
+
[34mℹ[39m 29 files, total: 43.01 kB
|
|
39
|
+
[32m✔[39m Build complete in [32m61ms[39m
|
|
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-
|
|
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-
|
|
10
|
-
- @lssm/lib.schema@0.0.0-canary-
|
|
11
|
-
- @lssm/lib.jobs@0.0.0-canary-
|
|
12
|
-
- @lssm/lib.bus@0.0.0-canary-
|
|
13
|
-
- @lssm/lib.identity-rbac@0.0.0-canary-
|
|
14
|
-
- @lssm/module.audit-trail@0.0.0-canary-
|
|
15
|
-
- @lssm/module.notifications@0.0.0-canary-
|
|
9
|
+
- @lssm/lib.contracts@0.0.0-canary-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=[
|
|
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{
|
|
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-
|
|
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
|
-
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { defineSchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';
|
|
2
|
-
import {
|
|
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
|
-
|
package/src/billing/index.ts
CHANGED
package/src/dashboard/index.ts
CHANGED
package/src/handlers/index.ts
CHANGED
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
|
package/src/project/index.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { defineSchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';
|
|
2
|
-
import {
|
|
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
|
-
|
package/src/settings/index.ts
CHANGED
package/src/shared/mock-data.ts
CHANGED