@contractspec/example.saas-boilerplate 1.56.1 → 1.58.0

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.
Files changed (284) hide show
  1. package/.turbo/turbo-build.log +160 -188
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +45 -0
  4. package/dist/billing/billing.entity.d.ts +40 -45
  5. package/dist/billing/billing.entity.d.ts.map +1 -1
  6. package/dist/billing/billing.entity.js +110 -118
  7. package/dist/billing/billing.enum.d.ts +2 -8
  8. package/dist/billing/billing.enum.d.ts.map +1 -1
  9. package/dist/billing/billing.enum.js +17 -24
  10. package/dist/billing/billing.event.d.ts +67 -73
  11. package/dist/billing/billing.event.d.ts.map +1 -1
  12. package/dist/billing/billing.event.js +84 -146
  13. package/dist/billing/billing.handler.d.ts +59 -62
  14. package/dist/billing/billing.handler.d.ts.map +1 -1
  15. package/dist/billing/billing.handler.js +140 -49
  16. package/dist/billing/billing.operations.d.ts +138 -144
  17. package/dist/billing/billing.operations.d.ts.map +1 -1
  18. package/dist/billing/billing.operations.js +273 -175
  19. package/dist/billing/billing.presentation.d.ts +2 -7
  20. package/dist/billing/billing.presentation.d.ts.map +1 -1
  21. package/dist/billing/billing.presentation.js +51 -57
  22. package/dist/billing/billing.schema.d.ts +159 -164
  23. package/dist/billing/billing.schema.d.ts.map +1 -1
  24. package/dist/billing/billing.schema.js +112 -204
  25. package/dist/billing/index.d.ts +11 -8
  26. package/dist/billing/index.d.ts.map +1 -0
  27. package/dist/billing/index.js +689 -9
  28. package/dist/browser/billing/billing.entity.js +113 -0
  29. package/dist/browser/billing/billing.enum.js +19 -0
  30. package/dist/browser/billing/billing.event.js +90 -0
  31. package/dist/browser/billing/billing.handler.js +148 -0
  32. package/dist/browser/billing/billing.operations.js +278 -0
  33. package/dist/browser/billing/billing.presentation.js +52 -0
  34. package/dist/browser/billing/billing.schema.js +121 -0
  35. package/dist/browser/billing/index.js +688 -0
  36. package/dist/browser/dashboard/dashboard.presentation.js +52 -0
  37. package/dist/browser/dashboard/index.js +52 -0
  38. package/dist/browser/docs/index.js +93 -0
  39. package/dist/browser/docs/saas-boilerplate.docblock.js +93 -0
  40. package/dist/browser/example.js +39 -0
  41. package/dist/browser/handlers/index.js +358 -0
  42. package/dist/browser/handlers/saas.handlers.js +134 -0
  43. package/dist/browser/index.js +3340 -0
  44. package/dist/browser/presentations/index.js +290 -0
  45. package/dist/browser/project/index.js +790 -0
  46. package/dist/browser/project/project.entity.js +77 -0
  47. package/dist/browser/project/project.enum.js +18 -0
  48. package/dist/browser/project/project.event.js +103 -0
  49. package/dist/browser/project/project.handler.js +178 -0
  50. package/dist/browser/project/project.operations.js +372 -0
  51. package/dist/browser/project/project.presentation.js +177 -0
  52. package/dist/browser/project/project.schema.js +134 -0
  53. package/dist/browser/saas-boilerplate.feature.js +88 -0
  54. package/dist/browser/seeders/index.js +20 -0
  55. package/dist/browser/settings/index.js +75 -0
  56. package/dist/browser/settings/settings.entity.js +74 -0
  57. package/dist/browser/settings/settings.enum.js +11 -0
  58. package/dist/browser/shared/mock-data.js +104 -0
  59. package/dist/browser/shared/overlay-types.js +0 -0
  60. package/dist/browser/tests/operations.test-spec.js +112 -0
  61. package/dist/browser/ui/SaasDashboard.js +988 -0
  62. package/dist/browser/ui/SaasProjectList.js +162 -0
  63. package/dist/browser/ui/SaasSettingsPanel.js +145 -0
  64. package/dist/browser/ui/hooks/index.js +159 -0
  65. package/dist/browser/ui/hooks/useProjectList.js +66 -0
  66. package/dist/browser/ui/hooks/useProjectMutations.js +91 -0
  67. package/dist/browser/ui/index.js +1808 -0
  68. package/dist/browser/ui/modals/CreateProjectModal.js +153 -0
  69. package/dist/browser/ui/modals/ProjectActionsModal.js +335 -0
  70. package/dist/browser/ui/modals/index.js +487 -0
  71. package/dist/browser/ui/overlays/demo-overlays.js +61 -0
  72. package/dist/browser/ui/overlays/index.js +61 -0
  73. package/dist/browser/ui/renderers/index.js +675 -0
  74. package/dist/browser/ui/renderers/project-list.markdown.js +499 -0
  75. package/dist/browser/ui/renderers/project-list.renderer.js +177 -0
  76. package/dist/dashboard/dashboard.presentation.d.ts +2 -7
  77. package/dist/dashboard/dashboard.presentation.d.ts.map +1 -1
  78. package/dist/dashboard/dashboard.presentation.js +51 -53
  79. package/dist/dashboard/index.d.ts +5 -2
  80. package/dist/dashboard/index.d.ts.map +1 -0
  81. package/dist/dashboard/index.js +53 -3
  82. package/dist/docs/index.d.ts +2 -1
  83. package/dist/docs/index.d.ts.map +1 -0
  84. package/dist/docs/index.js +94 -1
  85. package/dist/docs/saas-boilerplate.docblock.d.ts +2 -1
  86. package/dist/docs/saas-boilerplate.docblock.d.ts.map +1 -0
  87. package/dist/docs/saas-boilerplate.docblock.js +45 -51
  88. package/dist/example.d.ts +2 -6
  89. package/dist/example.d.ts.map +1 -1
  90. package/dist/example.js +37 -50
  91. package/dist/handlers/index.d.ts +7 -4
  92. package/dist/handlers/index.d.ts.map +1 -0
  93. package/dist/handlers/index.js +358 -4
  94. package/dist/handlers/saas.handlers.d.ts +60 -60
  95. package/dist/handlers/saas.handlers.d.ts.map +1 -1
  96. package/dist/handlers/saas.handlers.js +127 -140
  97. package/dist/index.d.ts +15 -45
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +3335 -75
  100. package/dist/node/billing/billing.entity.js +113 -0
  101. package/dist/node/billing/billing.enum.js +19 -0
  102. package/dist/node/billing/billing.event.js +90 -0
  103. package/dist/node/billing/billing.handler.js +148 -0
  104. package/dist/node/billing/billing.operations.js +278 -0
  105. package/dist/node/billing/billing.presentation.js +52 -0
  106. package/dist/node/billing/billing.schema.js +121 -0
  107. package/dist/node/billing/index.js +688 -0
  108. package/dist/node/dashboard/dashboard.presentation.js +52 -0
  109. package/dist/node/dashboard/index.js +52 -0
  110. package/dist/node/docs/index.js +93 -0
  111. package/dist/node/docs/saas-boilerplate.docblock.js +93 -0
  112. package/dist/node/example.js +39 -0
  113. package/dist/node/handlers/index.js +358 -0
  114. package/dist/node/handlers/saas.handlers.js +134 -0
  115. package/dist/node/index.js +3340 -0
  116. package/dist/node/presentations/index.js +290 -0
  117. package/dist/node/project/index.js +790 -0
  118. package/dist/node/project/project.entity.js +77 -0
  119. package/dist/node/project/project.enum.js +18 -0
  120. package/dist/node/project/project.event.js +103 -0
  121. package/dist/node/project/project.handler.js +178 -0
  122. package/dist/node/project/project.operations.js +372 -0
  123. package/dist/node/project/project.presentation.js +177 -0
  124. package/dist/node/project/project.schema.js +134 -0
  125. package/dist/node/saas-boilerplate.feature.js +88 -0
  126. package/dist/node/seeders/index.js +20 -0
  127. package/dist/node/settings/index.js +75 -0
  128. package/dist/node/settings/settings.entity.js +74 -0
  129. package/dist/node/settings/settings.enum.js +11 -0
  130. package/dist/node/shared/mock-data.js +104 -0
  131. package/dist/node/shared/overlay-types.js +0 -0
  132. package/dist/node/tests/operations.test-spec.js +112 -0
  133. package/dist/node/ui/SaasDashboard.js +988 -0
  134. package/dist/node/ui/SaasProjectList.js +162 -0
  135. package/dist/node/ui/SaasSettingsPanel.js +145 -0
  136. package/dist/node/ui/hooks/index.js +159 -0
  137. package/dist/node/ui/hooks/useProjectList.js +66 -0
  138. package/dist/node/ui/hooks/useProjectMutations.js +91 -0
  139. package/dist/node/ui/index.js +1808 -0
  140. package/dist/node/ui/modals/CreateProjectModal.js +153 -0
  141. package/dist/node/ui/modals/ProjectActionsModal.js +335 -0
  142. package/dist/node/ui/modals/index.js +487 -0
  143. package/dist/node/ui/overlays/demo-overlays.js +61 -0
  144. package/dist/node/ui/overlays/index.js +61 -0
  145. package/dist/node/ui/renderers/index.js +675 -0
  146. package/dist/node/ui/renderers/project-list.markdown.js +499 -0
  147. package/dist/node/ui/renderers/project-list.renderer.js +177 -0
  148. package/dist/presentations/index.d.ts +13 -15
  149. package/dist/presentations/index.d.ts.map +1 -1
  150. package/dist/presentations/index.js +289 -15
  151. package/dist/project/index.d.ts +11 -8
  152. package/dist/project/index.d.ts.map +1 -0
  153. package/dist/project/index.js +791 -9
  154. package/dist/project/project.entity.d.ts +23 -28
  155. package/dist/project/project.entity.d.ts.map +1 -1
  156. package/dist/project/project.entity.js +75 -82
  157. package/dist/project/project.enum.d.ts +2 -8
  158. package/dist/project/project.enum.d.ts.map +1 -1
  159. package/dist/project/project.enum.js +16 -23
  160. package/dist/project/project.event.d.ts +69 -75
  161. package/dist/project/project.event.d.ts.map +1 -1
  162. package/dist/project/project.event.js +95 -156
  163. package/dist/project/project.handler.d.ts +44 -47
  164. package/dist/project/project.handler.d.ts.map +1 -1
  165. package/dist/project/project.handler.js +168 -71
  166. package/dist/project/project.operations.d.ts +341 -347
  167. package/dist/project/project.operations.d.ts.map +1 -1
  168. package/dist/project/project.operations.js +366 -253
  169. package/dist/project/project.presentation.d.ts +2 -7
  170. package/dist/project/project.presentation.d.ts.map +1 -1
  171. package/dist/project/project.presentation.js +174 -61
  172. package/dist/project/project.schema.d.ts +191 -196
  173. package/dist/project/project.schema.d.ts.map +1 -1
  174. package/dist/project/project.schema.js +125 -205
  175. package/dist/saas-boilerplate.feature.d.ts +1 -7
  176. package/dist/saas-boilerplate.feature.d.ts.map +1 -1
  177. package/dist/saas-boilerplate.feature.js +87 -206
  178. package/dist/seeders/index.d.ts +4 -8
  179. package/dist/seeders/index.d.ts.map +1 -1
  180. package/dist/seeders/index.js +18 -16
  181. package/dist/settings/index.d.ts +6 -3
  182. package/dist/settings/index.d.ts.map +1 -0
  183. package/dist/settings/index.js +75 -3
  184. package/dist/settings/settings.entity.d.ts +23 -28
  185. package/dist/settings/settings.entity.d.ts.map +1 -1
  186. package/dist/settings/settings.entity.js +72 -75
  187. package/dist/settings/settings.enum.d.ts +1 -6
  188. package/dist/settings/settings.enum.d.ts.map +1 -1
  189. package/dist/settings/settings.enum.js +10 -19
  190. package/dist/shared/mock-data.d.ts +74 -77
  191. package/dist/shared/mock-data.d.ts.map +1 -1
  192. package/dist/shared/mock-data.js +102 -135
  193. package/dist/shared/overlay-types.d.ts +25 -28
  194. package/dist/shared/overlay-types.d.ts.map +1 -1
  195. package/dist/shared/overlay-types.js +1 -0
  196. package/dist/tests/operations.test-spec.d.ts +4 -9
  197. package/dist/tests/operations.test-spec.d.ts.map +1 -1
  198. package/dist/tests/operations.test-spec.js +108 -118
  199. package/dist/ui/SaasDashboard.d.ts +1 -6
  200. package/dist/ui/SaasDashboard.d.ts.map +1 -1
  201. package/dist/ui/SaasDashboard.js +977 -286
  202. package/dist/ui/SaasProjectList.d.ts +4 -11
  203. package/dist/ui/SaasProjectList.d.ts.map +1 -1
  204. package/dist/ui/SaasProjectList.js +159 -72
  205. package/dist/ui/SaasSettingsPanel.d.ts +1 -6
  206. package/dist/ui/SaasSettingsPanel.d.ts.map +1 -1
  207. package/dist/ui/SaasSettingsPanel.js +142 -134
  208. package/dist/ui/hooks/index.d.ts +3 -3
  209. package/dist/ui/hooks/index.d.ts.map +1 -0
  210. package/dist/ui/hooks/index.js +158 -4
  211. package/dist/ui/hooks/useProjectList.d.ts +26 -30
  212. package/dist/ui/hooks/useProjectList.d.ts.map +1 -1
  213. package/dist/ui/hooks/useProjectList.js +63 -71
  214. package/dist/ui/hooks/useProjectMutations.d.ts +20 -24
  215. package/dist/ui/hooks/useProjectMutations.d.ts.map +1 -1
  216. package/dist/ui/hooks/useProjectMutations.js +88 -142
  217. package/dist/ui/index.d.ts +8 -14
  218. package/dist/ui/index.d.ts.map +1 -0
  219. package/dist/ui/index.js +1809 -15
  220. package/dist/ui/modals/CreateProjectModal.d.ts +10 -19
  221. package/dist/ui/modals/CreateProjectModal.d.ts.map +1 -1
  222. package/dist/ui/modals/CreateProjectModal.js +150 -135
  223. package/dist/ui/modals/ProjectActionsModal.d.ts +20 -33
  224. package/dist/ui/modals/ProjectActionsModal.d.ts.map +1 -1
  225. package/dist/ui/modals/ProjectActionsModal.js +333 -289
  226. package/dist/ui/modals/index.d.ts +3 -3
  227. package/dist/ui/modals/index.d.ts.map +1 -0
  228. package/dist/ui/modals/index.js +487 -3
  229. package/dist/ui/overlays/demo-overlays.d.ts +10 -9
  230. package/dist/ui/overlays/demo-overlays.d.ts.map +1 -1
  231. package/dist/ui/overlays/demo-overlays.js +60 -68
  232. package/dist/ui/overlays/index.d.ts +2 -2
  233. package/dist/ui/overlays/index.d.ts.map +1 -0
  234. package/dist/ui/overlays/index.js +62 -3
  235. package/dist/ui/renderers/index.d.ts +3 -3
  236. package/dist/ui/renderers/index.d.ts.map +1 -0
  237. package/dist/ui/renderers/index.js +675 -3
  238. package/dist/ui/renderers/project-list.markdown.d.ts +15 -15
  239. package/dist/ui/renderers/project-list.markdown.d.ts.map +1 -1
  240. package/dist/ui/renderers/project-list.markdown.js +496 -144
  241. package/dist/ui/renderers/project-list.renderer.d.ts +6 -8
  242. package/dist/ui/renderers/project-list.renderer.d.ts.map +1 -1
  243. package/dist/ui/renderers/project-list.renderer.js +176 -15
  244. package/package.json +509 -99
  245. package/src/ui/renderers/project-list.markdown.ts +1 -1
  246. package/tsdown.config.js +1 -2
  247. package/.turbo/turbo-build$colon$bundle.log +0 -188
  248. package/dist/billing/billing.entity.js.map +0 -1
  249. package/dist/billing/billing.enum.js.map +0 -1
  250. package/dist/billing/billing.event.js.map +0 -1
  251. package/dist/billing/billing.handler.js.map +0 -1
  252. package/dist/billing/billing.operations.js.map +0 -1
  253. package/dist/billing/billing.presentation.js.map +0 -1
  254. package/dist/billing/billing.schema.js.map +0 -1
  255. package/dist/dashboard/dashboard.presentation.js.map +0 -1
  256. package/dist/docs/saas-boilerplate.docblock.js.map +0 -1
  257. package/dist/example.js.map +0 -1
  258. package/dist/handlers/saas.handlers.js.map +0 -1
  259. package/dist/index.js.map +0 -1
  260. package/dist/presentations/index.js.map +0 -1
  261. package/dist/project/project.entity.js.map +0 -1
  262. package/dist/project/project.enum.js.map +0 -1
  263. package/dist/project/project.event.js.map +0 -1
  264. package/dist/project/project.handler.js.map +0 -1
  265. package/dist/project/project.operations.js.map +0 -1
  266. package/dist/project/project.presentation.js.map +0 -1
  267. package/dist/project/project.schema.js.map +0 -1
  268. package/dist/saas-boilerplate.feature.js.map +0 -1
  269. package/dist/seeders/index.js.map +0 -1
  270. package/dist/settings/settings.entity.js.map +0 -1
  271. package/dist/settings/settings.enum.js.map +0 -1
  272. package/dist/shared/mock-data.js.map +0 -1
  273. package/dist/tests/operations.test-spec.js.map +0 -1
  274. package/dist/ui/SaasDashboard.js.map +0 -1
  275. package/dist/ui/SaasProjectList.js.map +0 -1
  276. package/dist/ui/SaasSettingsPanel.js.map +0 -1
  277. package/dist/ui/hooks/useProjectList.js.map +0 -1
  278. package/dist/ui/hooks/useProjectMutations.js.map +0 -1
  279. package/dist/ui/modals/CreateProjectModal.js.map +0 -1
  280. package/dist/ui/modals/ProjectActionsModal.js.map +0 -1
  281. package/dist/ui/overlays/demo-overlays.js.map +0 -1
  282. package/dist/ui/renderers/project-list.markdown.js.map +0 -1
  283. package/dist/ui/renderers/project-list.renderer.js.map +0 -1
  284. package/tsconfig.tsbuildinfo +0 -1
@@ -1,10 +1,6 @@
1
- import { DatabasePort } from "@contractspec/lib.runtime-sandbox";
2
-
3
- //#region src/seeders/index.d.ts
4
- declare function seedSaasBoilerplate(params: {
5
- projectId: string;
6
- db: DatabasePort;
1
+ import type { DatabasePort } from '@contractspec/lib.runtime-sandbox';
2
+ export declare function seedSaasBoilerplate(params: {
3
+ projectId: string;
4
+ db: DatabasePort;
7
5
  }): Promise<void>;
8
- //#endregion
9
- export { seedSaasBoilerplate };
10
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/seeders/index.ts"],"sourcesContent":[],"mappings":";;;iBAEsB,mBAAA;;EAAA,EAAA,EAEhB,YAFgB;IAGrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/seeders/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,YAAY,CAAC;CAClB,iBAsBA"}
@@ -1,19 +1,21 @@
1
- //#region src/seeders/index.ts
1
+ // @bun
2
+ // src/seeders/index.ts
2
3
  async function seedSaasBoilerplate(params) {
3
- const { projectId, db } = params;
4
- if ((await db.query(`SELECT COUNT(*) as count FROM saas_project WHERE "projectId" = $1`, [projectId])).rows[0]?.count > 0) return;
5
- await db.execute(`INSERT INTO saas_project (id, "projectId", "organizationId", name, description, status, tier)
4
+ const { projectId, db } = params;
5
+ const existing = await db.query(`SELECT COUNT(*) as count FROM saas_project WHERE "projectId" = $1`, [projectId]);
6
+ if (existing.rows[0]?.count > 0)
7
+ return;
8
+ await db.execute(`INSERT INTO saas_project (id, "projectId", "organizationId", name, description, status, tier)
6
9
  VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
7
- "saas_proj_1",
8
- projectId,
9
- "org_demo",
10
- "Demo Project",
11
- "A demo SaaS project",
12
- "ACTIVE",
13
- "PRO"
14
- ]);
10
+ "saas_proj_1",
11
+ projectId,
12
+ "org_demo",
13
+ "Demo Project",
14
+ "A demo SaaS project",
15
+ "ACTIVE",
16
+ "PRO"
17
+ ]);
15
18
  }
16
-
17
- //#endregion
18
- export { seedSaasBoilerplate };
19
- //# sourceMappingURL=index.js.map
19
+ export {
20
+ seedSaasBoilerplate
21
+ };
@@ -1,3 +1,6 @@
1
- import { SettingsScopeEnum } from "./settings.enum.js";
2
- import { FeatureFlagEntity, SettingsEntity } from "./settings.entity.js";
3
- export { FeatureFlagEntity, SettingsEntity, SettingsScopeEnum };
1
+ /**
2
+ * Settings domain - application, organization, and user settings.
3
+ */
4
+ export { SettingsScopeEnum } from './settings.enum';
5
+ export { SettingsEntity, FeatureFlagEntity } from './settings.entity';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,4 +1,76 @@
1
- import { SettingsScopeEnum } from "./settings.enum.js";
2
- import { FeatureFlagEntity, SettingsEntity } from "./settings.entity.js";
1
+ // @bun
2
+ // src/settings/settings.enum.ts
3
+ import { defineEntityEnum } from "@contractspec/lib.schema";
4
+ var SettingsScopeEnum = defineEntityEnum({
5
+ name: "SettingsScope",
6
+ values: ["APP", "ORG", "USER", "PROJECT"],
7
+ schema: "saas_app",
8
+ description: "Scope of a setting."
9
+ });
3
10
 
4
- export { FeatureFlagEntity, SettingsEntity, SettingsScopeEnum };
11
+ // src/settings/settings.entity.ts
12
+ import { defineEntity, field, index } from "@contractspec/lib.schema";
13
+ var SettingsEntity = defineEntity({
14
+ name: "Settings",
15
+ description: "Application, organization, or user settings.",
16
+ schema: "saas_app",
17
+ map: "settings",
18
+ fields: {
19
+ id: field.id(),
20
+ key: field.string({
21
+ description: 'Setting key (e.g., "theme", "notifications.email")'
22
+ }),
23
+ scope: field.enum("SettingsScope"),
24
+ scopeId: field.string({
25
+ isOptional: true,
26
+ description: "ID of scoped entity (org, user, project)"
27
+ }),
28
+ value: field.json({ description: "Setting value" }),
29
+ valueType: field.string({
30
+ default: '"string"',
31
+ description: "Type hint for value"
32
+ }),
33
+ schema: field.json({
34
+ isOptional: true,
35
+ description: "JSON schema for validation"
36
+ }),
37
+ description: field.string({ isOptional: true }),
38
+ isSecret: field.boolean({
39
+ default: false,
40
+ description: "Whether value should be encrypted"
41
+ }),
42
+ createdAt: field.createdAt(),
43
+ updatedAt: field.updatedAt()
44
+ },
45
+ indexes: [
46
+ index.unique(["scope", "scopeId", "key"]),
47
+ index.on(["scope", "key"])
48
+ ],
49
+ enums: [SettingsScopeEnum]
50
+ });
51
+ var FeatureFlagEntity = defineEntity({
52
+ name: "FeatureFlag",
53
+ description: "Feature flags for progressive rollout.",
54
+ schema: "saas_app",
55
+ map: "feature_flag",
56
+ fields: {
57
+ id: field.id(),
58
+ key: field.string({ isUnique: true, description: "Feature flag key" }),
59
+ name: field.string({ description: "Human-readable name" }),
60
+ description: field.string({ isOptional: true }),
61
+ enabled: field.boolean({ default: false }),
62
+ defaultValue: field.boolean({ default: false }),
63
+ rules: field.json({ isOptional: true, description: "Targeting rules" }),
64
+ rolloutPercentage: field.int({
65
+ default: 0,
66
+ description: "Percentage rollout (0-100)"
67
+ }),
68
+ createdAt: field.createdAt(),
69
+ updatedAt: field.updatedAt()
70
+ }
71
+ });
72
+ export {
73
+ SettingsScopeEnum,
74
+ SettingsEntity,
75
+ FeatureFlagEntity
76
+ };
@@ -1,37 +1,32 @@
1
- import * as _contractspec_lib_schema291 from "@contractspec/lib.schema";
2
-
3
- //#region src/settings/settings.entity.d.ts
4
1
  /**
5
2
  * Settings entity - key-value configuration store.
6
3
  */
7
- declare const SettingsEntity: _contractspec_lib_schema291.EntitySpec<{
8
- id: _contractspec_lib_schema291.EntityScalarField;
9
- key: _contractspec_lib_schema291.EntityScalarField;
10
- scope: _contractspec_lib_schema291.EntityEnumField;
11
- scopeId: _contractspec_lib_schema291.EntityScalarField;
12
- value: _contractspec_lib_schema291.EntityScalarField;
13
- valueType: _contractspec_lib_schema291.EntityScalarField;
14
- schema: _contractspec_lib_schema291.EntityScalarField;
15
- description: _contractspec_lib_schema291.EntityScalarField;
16
- isSecret: _contractspec_lib_schema291.EntityScalarField;
17
- createdAt: _contractspec_lib_schema291.EntityScalarField;
18
- updatedAt: _contractspec_lib_schema291.EntityScalarField;
4
+ export declare const SettingsEntity: import("@contractspec/lib.schema").EntitySpec<{
5
+ id: import("@contractspec/lib.schema").EntityScalarField;
6
+ key: import("@contractspec/lib.schema").EntityScalarField;
7
+ scope: import("@contractspec/lib.schema").EntityEnumField;
8
+ scopeId: import("@contractspec/lib.schema").EntityScalarField;
9
+ value: import("@contractspec/lib.schema").EntityScalarField;
10
+ valueType: import("@contractspec/lib.schema").EntityScalarField;
11
+ schema: import("@contractspec/lib.schema").EntityScalarField;
12
+ description: import("@contractspec/lib.schema").EntityScalarField;
13
+ isSecret: import("@contractspec/lib.schema").EntityScalarField;
14
+ createdAt: import("@contractspec/lib.schema").EntityScalarField;
15
+ updatedAt: import("@contractspec/lib.schema").EntityScalarField;
19
16
  }>;
20
17
  /**
21
18
  * FeatureFlag entity - feature toggles.
22
19
  */
23
- declare const FeatureFlagEntity: _contractspec_lib_schema291.EntitySpec<{
24
- id: _contractspec_lib_schema291.EntityScalarField;
25
- key: _contractspec_lib_schema291.EntityScalarField;
26
- name: _contractspec_lib_schema291.EntityScalarField;
27
- description: _contractspec_lib_schema291.EntityScalarField;
28
- enabled: _contractspec_lib_schema291.EntityScalarField;
29
- defaultValue: _contractspec_lib_schema291.EntityScalarField;
30
- rules: _contractspec_lib_schema291.EntityScalarField;
31
- rolloutPercentage: _contractspec_lib_schema291.EntityScalarField;
32
- createdAt: _contractspec_lib_schema291.EntityScalarField;
33
- updatedAt: _contractspec_lib_schema291.EntityScalarField;
20
+ export declare const FeatureFlagEntity: import("@contractspec/lib.schema").EntitySpec<{
21
+ id: import("@contractspec/lib.schema").EntityScalarField;
22
+ key: import("@contractspec/lib.schema").EntityScalarField;
23
+ name: import("@contractspec/lib.schema").EntityScalarField;
24
+ description: import("@contractspec/lib.schema").EntityScalarField;
25
+ enabled: import("@contractspec/lib.schema").EntityScalarField;
26
+ defaultValue: import("@contractspec/lib.schema").EntityScalarField;
27
+ rules: import("@contractspec/lib.schema").EntityScalarField;
28
+ rolloutPercentage: import("@contractspec/lib.schema").EntityScalarField;
29
+ createdAt: import("@contractspec/lib.schema").EntityScalarField;
30
+ updatedAt: import("@contractspec/lib.schema").EntityScalarField;
34
31
  }>;
35
- //#endregion
36
- export { FeatureFlagEntity, SettingsEntity };
37
32
  //# sourceMappingURL=settings.entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.entity.d.ts","names":[],"sources":["../../src/settings/settings.entity.ts"],"sourcesContent":[],"mappings":";;;;;;AAMa,cAAA,cAiDX,8BAjDyB,UAiDzB,CAAA;EAAA,EAAA,EAAA,2BAAA,CAAA,iBAAA;;;;;;;;;;;;;AAKF;;cAAa,+CAAiB;MA4B5B,2BAAA,CAAA;;;;;;;;0DA5B4B;EAAA,SAAA,+CAAA"}
1
+ {"version":3,"file":"settings.entity.d.ts","sourceRoot":"","sources":["../../src/settings/settings.entity.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAiDzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;EA4B5B,CAAC"}
@@ -1,78 +1,75 @@
1
- import { SettingsScopeEnum } from "./settings.enum.js";
2
- import { defineEntity, field, index } from "@contractspec/lib.schema";
1
+ // @bun
2
+ // src/settings/settings.enum.ts
3
+ import { defineEntityEnum } from "@contractspec/lib.schema";
4
+ var SettingsScopeEnum = defineEntityEnum({
5
+ name: "SettingsScope",
6
+ values: ["APP", "ORG", "USER", "PROJECT"],
7
+ schema: "saas_app",
8
+ description: "Scope of a setting."
9
+ });
3
10
 
4
- //#region src/settings/settings.entity.ts
5
- /**
6
- * Settings entity - key-value configuration store.
7
- */
8
- const SettingsEntity = defineEntity({
9
- name: "Settings",
10
- description: "Application, organization, or user settings.",
11
- schema: "saas_app",
12
- map: "settings",
13
- fields: {
14
- id: field.id(),
15
- key: field.string({ description: "Setting key (e.g., \"theme\", \"notifications.email\")" }),
16
- scope: field.enum("SettingsScope"),
17
- scopeId: field.string({
18
- isOptional: true,
19
- description: "ID of scoped entity (org, user, project)"
20
- }),
21
- value: field.json({ description: "Setting value" }),
22
- valueType: field.string({
23
- default: "\"string\"",
24
- description: "Type hint for value"
25
- }),
26
- schema: field.json({
27
- isOptional: true,
28
- description: "JSON schema for validation"
29
- }),
30
- description: field.string({ isOptional: true }),
31
- isSecret: field.boolean({
32
- default: false,
33
- description: "Whether value should be encrypted"
34
- }),
35
- createdAt: field.createdAt(),
36
- updatedAt: field.updatedAt()
37
- },
38
- indexes: [index.unique([
39
- "scope",
40
- "scopeId",
41
- "key"
42
- ]), index.on(["scope", "key"])],
43
- enums: [SettingsScopeEnum]
11
+ // src/settings/settings.entity.ts
12
+ import { defineEntity, field, index } from "@contractspec/lib.schema";
13
+ var SettingsEntity = defineEntity({
14
+ name: "Settings",
15
+ description: "Application, organization, or user settings.",
16
+ schema: "saas_app",
17
+ map: "settings",
18
+ fields: {
19
+ id: field.id(),
20
+ key: field.string({
21
+ description: 'Setting key (e.g., "theme", "notifications.email")'
22
+ }),
23
+ scope: field.enum("SettingsScope"),
24
+ scopeId: field.string({
25
+ isOptional: true,
26
+ description: "ID of scoped entity (org, user, project)"
27
+ }),
28
+ value: field.json({ description: "Setting value" }),
29
+ valueType: field.string({
30
+ default: '"string"',
31
+ description: "Type hint for value"
32
+ }),
33
+ schema: field.json({
34
+ isOptional: true,
35
+ description: "JSON schema for validation"
36
+ }),
37
+ description: field.string({ isOptional: true }),
38
+ isSecret: field.boolean({
39
+ default: false,
40
+ description: "Whether value should be encrypted"
41
+ }),
42
+ createdAt: field.createdAt(),
43
+ updatedAt: field.updatedAt()
44
+ },
45
+ indexes: [
46
+ index.unique(["scope", "scopeId", "key"]),
47
+ index.on(["scope", "key"])
48
+ ],
49
+ enums: [SettingsScopeEnum]
44
50
  });
45
- /**
46
- * FeatureFlag entity - feature toggles.
47
- */
48
- const FeatureFlagEntity = defineEntity({
49
- name: "FeatureFlag",
50
- description: "Feature flags for progressive rollout.",
51
- schema: "saas_app",
52
- map: "feature_flag",
53
- fields: {
54
- id: field.id(),
55
- key: field.string({
56
- isUnique: true,
57
- description: "Feature flag key"
58
- }),
59
- name: field.string({ description: "Human-readable name" }),
60
- description: field.string({ isOptional: true }),
61
- enabled: field.boolean({ default: false }),
62
- defaultValue: field.boolean({ default: false }),
63
- rules: field.json({
64
- isOptional: true,
65
- description: "Targeting rules"
66
- }),
67
- rolloutPercentage: field.int({
68
- default: 0,
69
- description: "Percentage rollout (0-100)"
70
- }),
71
- createdAt: field.createdAt(),
72
- updatedAt: field.updatedAt()
73
- }
51
+ var FeatureFlagEntity = defineEntity({
52
+ name: "FeatureFlag",
53
+ description: "Feature flags for progressive rollout.",
54
+ schema: "saas_app",
55
+ map: "feature_flag",
56
+ fields: {
57
+ id: field.id(),
58
+ key: field.string({ isUnique: true, description: "Feature flag key" }),
59
+ name: field.string({ description: "Human-readable name" }),
60
+ description: field.string({ isOptional: true }),
61
+ enabled: field.boolean({ default: false }),
62
+ defaultValue: field.boolean({ default: false }),
63
+ rules: field.json({ isOptional: true, description: "Targeting rules" }),
64
+ rolloutPercentage: field.int({
65
+ default: 0,
66
+ description: "Percentage rollout (0-100)"
67
+ }),
68
+ createdAt: field.createdAt(),
69
+ updatedAt: field.updatedAt()
70
+ }
74
71
  });
75
-
76
- //#endregion
77
- export { FeatureFlagEntity, SettingsEntity };
78
- //# sourceMappingURL=settings.entity.js.map
72
+ export {
73
+ SettingsEntity,
74
+ FeatureFlagEntity
75
+ };
@@ -1,10 +1,5 @@
1
- import * as _contractspec_lib_schema314 from "@contractspec/lib.schema";
2
-
3
- //#region src/settings/settings.enum.d.ts
4
1
  /**
5
2
  * Settings scope enum.
6
3
  */
7
- declare const SettingsScopeEnum: _contractspec_lib_schema314.EntityEnumDef;
8
- //#endregion
9
- export { SettingsScopeEnum };
4
+ export declare const SettingsScopeEnum: import("@contractspec/lib.schema").EntityEnumDef;
10
5
  //# sourceMappingURL=settings.enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.enum.d.ts","names":[],"sources":["../../src/settings/settings.enum.ts"],"sourcesContent":[],"mappings":";;;;;;AAKa,cAAA,iBAKX,EAAA,2BAAA,CAL4B,aAK5B"}
1
+ {"version":3,"file":"settings.enum.d.ts","sourceRoot":"","sources":["../../src/settings/settings.enum.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,iBAAiB,kDAK5B,CAAC"}
@@ -1,21 +1,12 @@
1
+ // @bun
2
+ // src/settings/settings.enum.ts
1
3
  import { defineEntityEnum } from "@contractspec/lib.schema";
2
-
3
- //#region src/settings/settings.enum.ts
4
- /**
5
- * Settings scope enum.
6
- */
7
- const SettingsScopeEnum = defineEntityEnum({
8
- name: "SettingsScope",
9
- values: [
10
- "APP",
11
- "ORG",
12
- "USER",
13
- "PROJECT"
14
- ],
15
- schema: "saas_app",
16
- description: "Scope of a setting."
4
+ var SettingsScopeEnum = defineEntityEnum({
5
+ name: "SettingsScope",
6
+ values: ["APP", "ORG", "USER", "PROJECT"],
7
+ schema: "saas_app",
8
+ description: "Scope of a setting."
17
9
  });
18
-
19
- //#endregion
20
- export { SettingsScopeEnum };
21
- //# sourceMappingURL=settings.enum.js.map
10
+ export {
11
+ SettingsScopeEnum
12
+ };
@@ -1,86 +1,83 @@
1
- //#region src/shared/mock-data.d.ts
2
1
  /**
3
2
  * Shared mock data for saas-boilerplate handlers.
4
3
  */
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;
4
+ export declare const MOCK_PROJECTS: ({
5
+ id: string;
6
+ name: string;
7
+ description: string;
8
+ slug: string;
9
+ organizationId: string;
10
+ createdBy: string;
11
+ status: "ACTIVE";
12
+ isPublic: boolean;
13
+ tags: string[];
14
+ createdAt: Date;
15
+ updatedAt: Date;
17
16
  } | {
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;
17
+ id: string;
18
+ name: string;
19
+ description: string;
20
+ slug: string;
21
+ organizationId: string;
22
+ createdBy: string;
23
+ status: "DRAFT";
24
+ isPublic: boolean;
25
+ tags: string[];
26
+ createdAt: Date;
27
+ updatedAt: Date;
29
28
  } | {
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;
29
+ id: string;
30
+ name: string;
31
+ description: string;
32
+ slug: string;
33
+ organizationId: string;
34
+ createdBy: string;
35
+ status: "ARCHIVED";
36
+ isPublic: boolean;
37
+ tags: string[];
38
+ createdAt: Date;
39
+ updatedAt: Date;
41
40
  })[];
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
- };
41
+ export declare const MOCK_SUBSCRIPTION: {
42
+ id: string;
43
+ organizationId: string;
44
+ planId: string;
45
+ planName: string;
46
+ status: "ACTIVE";
47
+ currentPeriodStart: Date;
48
+ currentPeriodEnd: Date;
49
+ limits: {
50
+ projects: number;
51
+ users: number;
52
+ storage: number;
53
+ apiCalls: number;
54
+ };
55
+ usage: {
56
+ projects: number;
57
+ users: number;
58
+ storage: number;
59
+ apiCalls: number;
60
+ };
62
61
  };
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
- }[];
62
+ export declare const MOCK_USAGE_SUMMARY: {
63
+ organizationId: string;
64
+ period: string;
65
+ apiCalls: {
66
+ total: number;
67
+ limit: number;
68
+ percentUsed: number;
69
+ };
70
+ storage: {
71
+ totalGb: number;
72
+ limitGb: number;
73
+ percentUsed: number;
74
+ };
75
+ activeProjects: number;
76
+ activeUsers: number;
77
+ breakdown: {
78
+ date: string;
79
+ apiCalls: number;
80
+ storageGb: number;
81
+ }[];
83
82
  };
84
- //#endregion
85
- export { MOCK_PROJECTS, MOCK_SUBSCRIPTION, MOCK_USAGE_SUMMARY };
86
83
  //# sourceMappingURL=mock-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-data.d.ts","names":[],"sources":["../../src/shared/mock-data.ts"],"sourcesContent":[],"mappings":";;AAMA;;cAAa;;;;;;EAyDA,SAAA,EAAA,MAAA;EAwBA,MAAA,EAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAxBA;;;;;;sBAoBZ;oBAAA;;;;;;;;;;;;;;cAIY"}
1
+ {"version":3,"file":"mock-data.d.ts","sourceRoot":"","sources":["../../src/shared/mock-data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqDzB,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;CAoB7B,CAAC;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;CAsB9B,CAAC"}