@lssm/example.saas-boilerplate 0.0.0-canary-20251217054315 → 0.0.0-canary-20251217060433

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.
@@ -0,0 +1,234 @@
1
+ import * as _lssm_lib_schema293 from "@lssm/lib.schema";
2
+
3
+ //#region src/project/project.schema.d.ts
4
+ /**
5
+ * A project within an organization.
6
+ */
7
+ declare const ProjectModel: _lssm_lib_schema293.SchemaModel<{
8
+ id: {
9
+ type: _lssm_lib_schema293.FieldType<string, string>;
10
+ isOptional: false;
11
+ };
12
+ name: {
13
+ type: _lssm_lib_schema293.FieldType<string, string>;
14
+ isOptional: false;
15
+ };
16
+ description: {
17
+ type: _lssm_lib_schema293.FieldType<string, string>;
18
+ isOptional: true;
19
+ };
20
+ slug: {
21
+ type: _lssm_lib_schema293.FieldType<string, string>;
22
+ isOptional: true;
23
+ };
24
+ organizationId: {
25
+ type: _lssm_lib_schema293.FieldType<string, string>;
26
+ isOptional: false;
27
+ };
28
+ createdBy: {
29
+ type: _lssm_lib_schema293.FieldType<string, string>;
30
+ isOptional: false;
31
+ };
32
+ status: {
33
+ type: _lssm_lib_schema293.EnumType<[string, string, string, string]>;
34
+ isOptional: false;
35
+ };
36
+ isPublic: {
37
+ type: _lssm_lib_schema293.FieldType<boolean, boolean>;
38
+ isOptional: false;
39
+ };
40
+ tags: {
41
+ type: _lssm_lib_schema293.FieldType<string, string>;
42
+ isArray: true;
43
+ isOptional: false;
44
+ };
45
+ createdAt: {
46
+ type: _lssm_lib_schema293.FieldType<Date, string>;
47
+ isOptional: false;
48
+ };
49
+ updatedAt: {
50
+ type: _lssm_lib_schema293.FieldType<Date, string>;
51
+ isOptional: false;
52
+ };
53
+ }>;
54
+ /**
55
+ * Input for creating a project.
56
+ */
57
+ declare const CreateProjectInputModel: _lssm_lib_schema293.SchemaModel<{
58
+ name: {
59
+ type: _lssm_lib_schema293.FieldType<string, string>;
60
+ isOptional: false;
61
+ };
62
+ description: {
63
+ type: _lssm_lib_schema293.FieldType<string, string>;
64
+ isOptional: true;
65
+ };
66
+ slug: {
67
+ type: _lssm_lib_schema293.FieldType<string, string>;
68
+ isOptional: true;
69
+ };
70
+ isPublic: {
71
+ type: _lssm_lib_schema293.FieldType<boolean, boolean>;
72
+ isOptional: true;
73
+ };
74
+ tags: {
75
+ type: _lssm_lib_schema293.FieldType<string, string>;
76
+ isArray: true;
77
+ isOptional: true;
78
+ };
79
+ }>;
80
+ /**
81
+ * Input for updating a project.
82
+ */
83
+ declare const UpdateProjectInputModel: _lssm_lib_schema293.SchemaModel<{
84
+ projectId: {
85
+ type: _lssm_lib_schema293.FieldType<string, string>;
86
+ isOptional: false;
87
+ };
88
+ name: {
89
+ type: _lssm_lib_schema293.FieldType<string, string>;
90
+ isOptional: true;
91
+ };
92
+ description: {
93
+ type: _lssm_lib_schema293.FieldType<string, string>;
94
+ isOptional: true;
95
+ };
96
+ slug: {
97
+ type: _lssm_lib_schema293.FieldType<string, string>;
98
+ isOptional: true;
99
+ };
100
+ isPublic: {
101
+ type: _lssm_lib_schema293.FieldType<boolean, boolean>;
102
+ isOptional: true;
103
+ };
104
+ tags: {
105
+ type: _lssm_lib_schema293.FieldType<string, string>;
106
+ isArray: true;
107
+ isOptional: true;
108
+ };
109
+ status: {
110
+ type: _lssm_lib_schema293.EnumType<[string, string, string, string]>;
111
+ isOptional: true;
112
+ };
113
+ }>;
114
+ /**
115
+ * Input for getting a project.
116
+ */
117
+ declare const GetProjectInputModel: _lssm_lib_schema293.SchemaModel<{
118
+ projectId: {
119
+ type: _lssm_lib_schema293.FieldType<string, string>;
120
+ isOptional: false;
121
+ };
122
+ }>;
123
+ /**
124
+ * Input for deleting a project.
125
+ */
126
+ declare const DeleteProjectInputModel: _lssm_lib_schema293.SchemaModel<{
127
+ projectId: {
128
+ type: _lssm_lib_schema293.FieldType<string, string>;
129
+ isOptional: false;
130
+ };
131
+ }>;
132
+ /**
133
+ * Output for delete operation.
134
+ */
135
+ declare const DeleteProjectOutputModel: _lssm_lib_schema293.SchemaModel<{
136
+ success: {
137
+ type: _lssm_lib_schema293.FieldType<boolean, boolean>;
138
+ isOptional: false;
139
+ };
140
+ }>;
141
+ /**
142
+ * Payload for project deleted event.
143
+ */
144
+ declare const ProjectDeletedPayloadModel: _lssm_lib_schema293.SchemaModel<{
145
+ projectId: {
146
+ type: _lssm_lib_schema293.FieldType<string, string>;
147
+ isOptional: false;
148
+ };
149
+ }>;
150
+ /**
151
+ * Input for listing projects.
152
+ */
153
+ declare const ListProjectsInputModel: _lssm_lib_schema293.SchemaModel<{
154
+ status: {
155
+ type: _lssm_lib_schema293.EnumType<[string, string, string, string]>;
156
+ isOptional: true;
157
+ };
158
+ search: {
159
+ type: _lssm_lib_schema293.FieldType<string, string>;
160
+ isOptional: true;
161
+ };
162
+ limit: {
163
+ type: _lssm_lib_schema293.FieldType<number, number>;
164
+ isOptional: true;
165
+ defaultValue: number;
166
+ };
167
+ offset: {
168
+ type: _lssm_lib_schema293.FieldType<number, number>;
169
+ isOptional: true;
170
+ defaultValue: number;
171
+ };
172
+ }>;
173
+ /**
174
+ * Output for listing projects.
175
+ */
176
+ declare const ListProjectsOutputModel: _lssm_lib_schema293.SchemaModel<{
177
+ projects: {
178
+ type: _lssm_lib_schema293.SchemaModel<{
179
+ id: {
180
+ type: _lssm_lib_schema293.FieldType<string, string>;
181
+ isOptional: false;
182
+ };
183
+ name: {
184
+ type: _lssm_lib_schema293.FieldType<string, string>;
185
+ isOptional: false;
186
+ };
187
+ description: {
188
+ type: _lssm_lib_schema293.FieldType<string, string>;
189
+ isOptional: true;
190
+ };
191
+ slug: {
192
+ type: _lssm_lib_schema293.FieldType<string, string>;
193
+ isOptional: true;
194
+ };
195
+ organizationId: {
196
+ type: _lssm_lib_schema293.FieldType<string, string>;
197
+ isOptional: false;
198
+ };
199
+ createdBy: {
200
+ type: _lssm_lib_schema293.FieldType<string, string>;
201
+ isOptional: false;
202
+ };
203
+ status: {
204
+ type: _lssm_lib_schema293.EnumType<[string, string, string, string]>;
205
+ isOptional: false;
206
+ };
207
+ isPublic: {
208
+ type: _lssm_lib_schema293.FieldType<boolean, boolean>;
209
+ isOptional: false;
210
+ };
211
+ tags: {
212
+ type: _lssm_lib_schema293.FieldType<string, string>;
213
+ isArray: true;
214
+ isOptional: false;
215
+ };
216
+ createdAt: {
217
+ type: _lssm_lib_schema293.FieldType<Date, string>;
218
+ isOptional: false;
219
+ };
220
+ updatedAt: {
221
+ type: _lssm_lib_schema293.FieldType<Date, string>;
222
+ isOptional: false;
223
+ };
224
+ }>;
225
+ isArray: true;
226
+ isOptional: false;
227
+ };
228
+ total: {
229
+ type: _lssm_lib_schema293.FieldType<number, number>;
230
+ isOptional: false;
231
+ };
232
+ }>;
233
+ //#endregion
234
+ export { CreateProjectInputModel, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectInputModel, ListProjectsInputModel, ListProjectsOutputModel, ProjectDeletedPayloadModel, ProjectModel, UpdateProjectInputModel };
@@ -0,0 +1,11 @@
1
+ import { FeatureModuleSpec } from "@lssm/lib.contracts";
2
+
3
+ //#region src/saas-boilerplate.feature.d.ts
4
+
5
+ /**
6
+ * SaaS Boilerplate feature module that bundles project management,
7
+ * billing, and settings operations into an installable feature.
8
+ */
9
+ declare const SaasBoilerplateFeature: FeatureModuleSpec;
10
+ //#endregion
11
+ export { SaasBoilerplateFeature };
@@ -0,0 +1,3 @@
1
+ import { SettingsScopeEnum } from "./settings.enum.js";
2
+ import { FeatureFlagEntity, SettingsEntity } from "./settings.entity.js";
3
+ export { FeatureFlagEntity, SettingsEntity, SettingsScopeEnum };
@@ -0,0 +1,36 @@
1
+ import * as _lssm_lib_schema105 from "@lssm/lib.schema";
2
+
3
+ //#region src/settings/settings.entity.d.ts
4
+ /**
5
+ * Settings entity - key-value configuration store.
6
+ */
7
+ declare const SettingsEntity: _lssm_lib_schema105.EntitySpec<{
8
+ id: _lssm_lib_schema105.EntityScalarField;
9
+ key: _lssm_lib_schema105.EntityScalarField;
10
+ scope: _lssm_lib_schema105.EntityEnumField;
11
+ scopeId: _lssm_lib_schema105.EntityScalarField;
12
+ value: _lssm_lib_schema105.EntityScalarField;
13
+ valueType: _lssm_lib_schema105.EntityScalarField;
14
+ schema: _lssm_lib_schema105.EntityScalarField;
15
+ description: _lssm_lib_schema105.EntityScalarField;
16
+ isSecret: _lssm_lib_schema105.EntityScalarField;
17
+ createdAt: _lssm_lib_schema105.EntityScalarField;
18
+ updatedAt: _lssm_lib_schema105.EntityScalarField;
19
+ }>;
20
+ /**
21
+ * FeatureFlag entity - feature toggles.
22
+ */
23
+ declare const FeatureFlagEntity: _lssm_lib_schema105.EntitySpec<{
24
+ id: _lssm_lib_schema105.EntityScalarField;
25
+ key: _lssm_lib_schema105.EntityScalarField;
26
+ name: _lssm_lib_schema105.EntityScalarField;
27
+ description: _lssm_lib_schema105.EntityScalarField;
28
+ enabled: _lssm_lib_schema105.EntityScalarField;
29
+ defaultValue: _lssm_lib_schema105.EntityScalarField;
30
+ rules: _lssm_lib_schema105.EntityScalarField;
31
+ rolloutPercentage: _lssm_lib_schema105.EntityScalarField;
32
+ createdAt: _lssm_lib_schema105.EntityScalarField;
33
+ updatedAt: _lssm_lib_schema105.EntityScalarField;
34
+ }>;
35
+ //#endregion
36
+ export { FeatureFlagEntity, SettingsEntity };
@@ -0,0 +1,9 @@
1
+ import * as _lssm_lib_schema346 from "@lssm/lib.schema";
2
+
3
+ //#region src/settings/settings.enum.d.ts
4
+ /**
5
+ * Settings scope enum.
6
+ */
7
+ declare const SettingsScopeEnum: _lssm_lib_schema346.EntityEnumDef;
8
+ //#endregion
9
+ export { SettingsScopeEnum };
@@ -0,0 +1,85 @@
1
+ //#region src/shared/mock-data.d.ts
2
+ /**
3
+ * Shared mock data for saas-boilerplate handlers.
4
+ */
5
+ declare const MOCK_PROJECTS: ({
6
+ id: string;
7
+ name: string;
8
+ description: string;
9
+ slug: string;
10
+ organizationId: string;
11
+ createdBy: string;
12
+ status: "ACTIVE";
13
+ isPublic: boolean;
14
+ tags: string[];
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ } | {
18
+ id: string;
19
+ name: string;
20
+ description: string;
21
+ slug: string;
22
+ organizationId: string;
23
+ createdBy: string;
24
+ status: "DRAFT";
25
+ isPublic: boolean;
26
+ tags: string[];
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ } | {
30
+ id: string;
31
+ name: string;
32
+ description: string;
33
+ slug: string;
34
+ organizationId: string;
35
+ createdBy: string;
36
+ status: "ARCHIVED";
37
+ isPublic: boolean;
38
+ tags: string[];
39
+ createdAt: Date;
40
+ updatedAt: Date;
41
+ })[];
42
+ declare const MOCK_SUBSCRIPTION: {
43
+ id: string;
44
+ organizationId: string;
45
+ planId: string;
46
+ planName: string;
47
+ status: "ACTIVE";
48
+ currentPeriodStart: Date;
49
+ currentPeriodEnd: Date;
50
+ limits: {
51
+ projects: number;
52
+ users: number;
53
+ storage: number;
54
+ apiCalls: number;
55
+ };
56
+ usage: {
57
+ projects: number;
58
+ users: number;
59
+ storage: number;
60
+ apiCalls: number;
61
+ };
62
+ };
63
+ declare const MOCK_USAGE_SUMMARY: {
64
+ organizationId: string;
65
+ period: string;
66
+ apiCalls: {
67
+ total: number;
68
+ limit: number;
69
+ percentUsed: number;
70
+ };
71
+ storage: {
72
+ totalGb: number;
73
+ limitGb: number;
74
+ percentUsed: number;
75
+ };
76
+ activeProjects: number;
77
+ activeUsers: number;
78
+ breakdown: {
79
+ date: string;
80
+ apiCalls: number;
81
+ storageGb: number;
82
+ }[];
83
+ };
84
+ //#endregion
85
+ export { MOCK_PROJECTS, MOCK_SUBSCRIPTION, MOCK_USAGE_SUMMARY };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.saas-boilerplate",
3
- "version": "0.0.0-canary-20251217054315",
3
+ "version": "0.0.0-canary-20251217060433",
4
4
  "description": "SaaS Boilerplate - Users, Orgs, Projects, Billing, Settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,18 +51,18 @@
51
51
  "test": "bun run"
52
52
  },
53
53
  "dependencies": {
54
- "@lssm/lib.schema": "0.0.0-canary-20251217054315",
55
- "@lssm/lib.contracts": "0.0.0-canary-20251217054315",
56
- "@lssm/lib.bus": "0.0.0-canary-20251217054315",
57
- "@lssm/lib.identity-rbac": "0.0.0-canary-20251217054315",
58
- "@lssm/lib.jobs": "0.0.0-canary-20251217054315",
59
- "@lssm/module.audit-trail": "0.0.0-canary-20251217054315",
60
- "@lssm/module.notifications": "0.0.0-canary-20251217054315",
54
+ "@lssm/lib.schema": "0.0.0-canary-20251217060433",
55
+ "@lssm/lib.contracts": "0.0.0-canary-20251217060433",
56
+ "@lssm/lib.bus": "0.0.0-canary-20251217060433",
57
+ "@lssm/lib.identity-rbac": "0.0.0-canary-20251217060433",
58
+ "@lssm/lib.jobs": "0.0.0-canary-20251217060433",
59
+ "@lssm/module.audit-trail": "0.0.0-canary-20251217060433",
60
+ "@lssm/module.notifications": "0.0.0-canary-20251217060433",
61
61
  "zod": "^4.1.13"
62
62
  },
63
63
  "devDependencies": {
64
- "@lssm/tool.tsdown": "0.0.0-canary-20251217054315",
65
- "@lssm/tool.typescript": "0.0.0-canary-20251217054315",
64
+ "@lssm/tool.tsdown": "0.0.0-canary-20251217060433",
65
+ "@lssm/tool.typescript": "0.0.0-canary-20251217060433",
66
66
  "tsdown": "^0.17.4",
67
67
  "typescript": "^5.9.3"
68
68
  },