@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,153 +1,91 @@
1
- import { defineEvent } from "@contractspec/lib.contracts";
1
+ // @bun
2
+ // src/billing/billing.event.ts
2
3
  import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
3
-
4
- //#region src/billing/billing.event.ts
5
- /**
6
- * Payload when feature usage is recorded.
7
- */
8
- const UsageRecordedPayload = defineSchemaModel({
9
- name: "UsageRecordedPayload",
10
- description: "Payload when feature usage is recorded",
11
- fields: {
12
- organizationId: {
13
- type: ScalarTypeEnum.String_unsecure(),
14
- isOptional: false
15
- },
16
- feature: {
17
- type: ScalarTypeEnum.String_unsecure(),
18
- isOptional: false
19
- },
20
- quantity: {
21
- type: ScalarTypeEnum.Int_unsecure(),
22
- isOptional: false
23
- },
24
- billingPeriod: {
25
- type: ScalarTypeEnum.String_unsecure(),
26
- isOptional: false
27
- },
28
- recordedAt: {
29
- type: ScalarTypeEnum.DateTime(),
30
- isOptional: false
31
- }
32
- }
4
+ import { defineEvent } from "@contractspec/lib.contracts";
5
+ var UsageRecordedPayload = defineSchemaModel({
6
+ name: "UsageRecordedPayload",
7
+ description: "Payload when feature usage is recorded",
8
+ fields: {
9
+ organizationId: {
10
+ type: ScalarTypeEnum.String_unsecure(),
11
+ isOptional: false
12
+ },
13
+ feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
14
+ quantity: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
15
+ billingPeriod: {
16
+ type: ScalarTypeEnum.String_unsecure(),
17
+ isOptional: false
18
+ },
19
+ recordedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
20
+ }
33
21
  });
34
- /**
35
- * Payload when usage limit is reached.
36
- */
37
- const UsageLimitReachedPayload = defineSchemaModel({
38
- name: "UsageLimitReachedPayload",
39
- description: "Payload when usage limit is reached",
40
- fields: {
41
- organizationId: {
42
- type: ScalarTypeEnum.String_unsecure(),
43
- isOptional: false
44
- },
45
- feature: {
46
- type: ScalarTypeEnum.String_unsecure(),
47
- isOptional: false
48
- },
49
- limit: {
50
- type: ScalarTypeEnum.Int_unsecure(),
51
- isOptional: false
52
- },
53
- currentUsage: {
54
- type: ScalarTypeEnum.Int_unsecure(),
55
- isOptional: false
56
- },
57
- reachedAt: {
58
- type: ScalarTypeEnum.DateTime(),
59
- isOptional: false
60
- }
61
- }
22
+ var UsageLimitReachedPayload = defineSchemaModel({
23
+ name: "UsageLimitReachedPayload",
24
+ description: "Payload when usage limit is reached",
25
+ fields: {
26
+ organizationId: {
27
+ type: ScalarTypeEnum.String_unsecure(),
28
+ isOptional: false
29
+ },
30
+ feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
31
+ limit: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
32
+ currentUsage: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
33
+ reachedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
34
+ }
62
35
  });
63
- /**
64
- * Payload when subscription status changes.
65
- */
66
- const SubscriptionChangedPayload = defineSchemaModel({
67
- name: "SubscriptionChangedPayload",
68
- description: "Payload when subscription status changes",
69
- fields: {
70
- organizationId: {
71
- type: ScalarTypeEnum.String_unsecure(),
72
- isOptional: false
73
- },
74
- previousPlan: {
75
- type: ScalarTypeEnum.String_unsecure(),
76
- isOptional: true
77
- },
78
- newPlan: {
79
- type: ScalarTypeEnum.String_unsecure(),
80
- isOptional: false
81
- },
82
- previousStatus: {
83
- type: ScalarTypeEnum.String_unsecure(),
84
- isOptional: true
85
- },
86
- newStatus: {
87
- type: ScalarTypeEnum.String_unsecure(),
88
- isOptional: false
89
- },
90
- changedAt: {
91
- type: ScalarTypeEnum.DateTime(),
92
- isOptional: false
93
- }
94
- }
36
+ var SubscriptionChangedPayload = defineSchemaModel({
37
+ name: "SubscriptionChangedPayload",
38
+ description: "Payload when subscription status changes",
39
+ fields: {
40
+ organizationId: {
41
+ type: ScalarTypeEnum.String_unsecure(),
42
+ isOptional: false
43
+ },
44
+ previousPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
45
+ newPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
46
+ previousStatus: {
47
+ type: ScalarTypeEnum.String_unsecure(),
48
+ isOptional: true
49
+ },
50
+ newStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
51
+ changedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
52
+ }
95
53
  });
96
- /**
97
- * Event: Feature usage has been recorded.
98
- */
99
- const UsageRecordedEvent = defineEvent({
100
- meta: {
101
- key: "billing.usage.recorded",
102
- version: "1.0.0",
103
- description: "Feature usage has been recorded.",
104
- stability: "stable",
105
- owners: ["@saas-team"],
106
- tags: [
107
- "billing",
108
- "usage",
109
- "recorded"
110
- ]
111
- },
112
- payload: UsageRecordedPayload
54
+ var UsageRecordedEvent = defineEvent({
55
+ meta: {
56
+ key: "billing.usage.recorded",
57
+ version: "1.0.0",
58
+ description: "Feature usage has been recorded.",
59
+ stability: "stable",
60
+ owners: ["@saas-team"],
61
+ tags: ["billing", "usage", "recorded"]
62
+ },
63
+ payload: UsageRecordedPayload
113
64
  });
114
- /**
115
- * Event: Usage limit has been reached for a feature.
116
- */
117
- const UsageLimitReachedEvent = defineEvent({
118
- meta: {
119
- key: "billing.limit.reached",
120
- version: "1.0.0",
121
- description: "Usage limit has been reached for a feature.",
122
- stability: "stable",
123
- owners: ["@saas-team"],
124
- tags: [
125
- "billing",
126
- "limit",
127
- "reached"
128
- ]
129
- },
130
- payload: UsageLimitReachedPayload
65
+ var UsageLimitReachedEvent = defineEvent({
66
+ meta: {
67
+ key: "billing.limit.reached",
68
+ version: "1.0.0",
69
+ description: "Usage limit has been reached for a feature.",
70
+ stability: "stable",
71
+ owners: ["@saas-team"],
72
+ tags: ["billing", "limit", "reached"]
73
+ },
74
+ payload: UsageLimitReachedPayload
131
75
  });
132
- /**
133
- * Event: Subscription status has changed.
134
- */
135
- const SubscriptionChangedEvent = defineEvent({
136
- meta: {
137
- key: "billing.subscription.changed",
138
- version: "1.0.0",
139
- description: "Subscription status has changed.",
140
- stability: "stable",
141
- owners: ["@saas-team"],
142
- tags: [
143
- "billing",
144
- "subscription",
145
- "changed"
146
- ]
147
- },
148
- payload: SubscriptionChangedPayload
76
+ var SubscriptionChangedEvent = defineEvent({
77
+ meta: {
78
+ key: "billing.subscription.changed",
79
+ version: "1.0.0",
80
+ description: "Subscription status has changed.",
81
+ stability: "stable",
82
+ owners: ["@saas-team"],
83
+ tags: ["billing", "subscription", "changed"]
84
+ },
85
+ payload: SubscriptionChangedPayload
149
86
  });
150
-
151
- //#endregion
152
- export { SubscriptionChangedEvent, UsageLimitReachedEvent, UsageRecordedEvent };
153
- //# sourceMappingURL=billing.event.js.map
87
+ export {
88
+ UsageRecordedEvent,
89
+ UsageLimitReachedEvent,
90
+ SubscriptionChangedEvent
91
+ };
@@ -1,82 +1,79 @@
1
- //#region src/billing/billing.handler.d.ts
2
- interface Subscription {
3
- id: string;
4
- organizationId: string;
5
- planId: string;
6
- planName: string;
7
- status: 'ACTIVE' | 'TRIALING' | 'PAST_DUE' | 'CANCELED' | 'UNPAID';
8
- currentPeriodStart: Date;
9
- currentPeriodEnd: Date;
10
- limits: {
11
- projects: number;
12
- users: number;
13
- storage: number;
14
- apiCalls: number;
15
- };
16
- usage: {
17
- projects: number;
18
- users: number;
19
- storage: number;
20
- apiCalls: number;
21
- };
1
+ export interface Subscription {
2
+ id: string;
3
+ organizationId: string;
4
+ planId: string;
5
+ planName: string;
6
+ status: 'ACTIVE' | 'TRIALING' | 'PAST_DUE' | 'CANCELED' | 'UNPAID';
7
+ currentPeriodStart: Date;
8
+ currentPeriodEnd: Date;
9
+ limits: {
10
+ projects: number;
11
+ users: number;
12
+ storage: number;
13
+ apiCalls: number;
14
+ };
15
+ usage: {
16
+ projects: number;
17
+ users: number;
18
+ storage: number;
19
+ apiCalls: number;
20
+ };
22
21
  }
23
- interface UsageSummary {
24
- organizationId: string;
25
- period: string;
26
- apiCalls: {
27
- total: number;
28
- limit: number;
29
- percentUsed: number;
30
- };
31
- storage: {
32
- totalGb: number;
33
- limitGb: number;
34
- percentUsed: number;
35
- };
36
- activeProjects: number;
37
- activeUsers: number;
38
- breakdown: {
39
- date: string;
40
- apiCalls: number;
41
- storageGb: number;
42
- }[];
22
+ export interface UsageSummary {
23
+ organizationId: string;
24
+ period: string;
25
+ apiCalls: {
26
+ total: number;
27
+ limit: number;
28
+ percentUsed: number;
29
+ };
30
+ storage: {
31
+ totalGb: number;
32
+ limitGb: number;
33
+ percentUsed: number;
34
+ };
35
+ activeProjects: number;
36
+ activeUsers: number;
37
+ breakdown: {
38
+ date: string;
39
+ apiCalls: number;
40
+ storageGb: number;
41
+ }[];
43
42
  }
44
- interface RecordUsageInput {
45
- metric: string;
46
- quantity: number;
47
- timestamp?: Date;
48
- metadata?: Record<string, unknown>;
43
+ export interface RecordUsageInput {
44
+ metric: string;
45
+ quantity: number;
46
+ timestamp?: Date;
47
+ metadata?: Record<string, unknown>;
49
48
  }
50
- interface CheckFeatureAccessInput {
51
- feature: string;
49
+ export interface CheckFeatureAccessInput {
50
+ feature: string;
52
51
  }
53
- interface CheckFeatureAccessOutput {
54
- allowed: boolean;
55
- reason?: 'PLAN_LIMIT' | 'FEATURE_NOT_INCLUDED' | 'QUOTA_EXCEEDED' | 'SUBSCRIPTION_INACTIVE';
56
- currentUsage?: number;
57
- limit?: number;
52
+ export interface CheckFeatureAccessOutput {
53
+ allowed: boolean;
54
+ reason?: 'PLAN_LIMIT' | 'FEATURE_NOT_INCLUDED' | 'QUOTA_EXCEEDED' | 'SUBSCRIPTION_INACTIVE';
55
+ currentUsage?: number;
56
+ limit?: number;
58
57
  }
59
58
  /**
60
59
  * Mock handler for GetSubscriptionContract.
61
60
  */
62
- declare function mockGetSubscriptionHandler(): Promise<Subscription>;
61
+ export declare function mockGetSubscriptionHandler(): Promise<Subscription>;
63
62
  /**
64
63
  * Mock handler for GetUsageSummaryContract.
65
64
  */
66
- declare function mockGetUsageSummaryHandler(input: {
67
- period?: string;
65
+ export declare function mockGetUsageSummaryHandler(input: {
66
+ period?: string;
68
67
  }): Promise<UsageSummary>;
69
68
  /**
70
69
  * Mock handler for RecordUsageContract.
71
70
  */
72
- declare function mockRecordUsageHandler(input: RecordUsageInput): Promise<{
73
- recorded: boolean;
74
- newTotal: number;
71
+ export declare function mockRecordUsageHandler(input: RecordUsageInput): Promise<{
72
+ recorded: boolean;
73
+ newTotal: number;
75
74
  }>;
76
75
  /**
77
76
  * Mock handler for CheckFeatureAccessContract.
78
77
  */
79
- declare function mockCheckFeatureAccessHandler(input: CheckFeatureAccessInput): Promise<CheckFeatureAccessOutput>;
80
- //#endregion
81
- export { CheckFeatureAccessInput, CheckFeatureAccessOutput, RecordUsageInput, Subscription, UsageSummary, mockCheckFeatureAccessHandler, mockGetSubscriptionHandler, mockGetUsageSummaryHandler, mockRecordUsageHandler };
78
+ export declare function mockCheckFeatureAccessHandler(input: CheckFeatureAccessInput): Promise<CheckFeatureAccessOutput>;
82
79
  //# sourceMappingURL=billing.handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.handler.d.ts","names":[],"sources":["../../src/billing/billing.handler.ts"],"sourcesContent":[],"mappings":";UAMiB,YAAA;EAAA,EAAA,EAAA,MAAA;EAsBA,cAAA,EAAY,MAAA;EAsBZ,MAAA,EAAA,MAAA;EAOA,QAAA,EAAA,MAAA;EAIA,MAAA,EAAA,QAAA,GAAA,UAAwB,GAAA,UAAA,GAAA,UAAA,GAAA,QAAA;EAcnB,kBAAA,EA/DA,IA+DA;EAOA,gBAAA,EArEF,IAqEE;EAYA,MAAA,EAAA;IAeA,QAAA,EAAA,MAAA;IACb,KAAA,EAAA,MAAA;IACE,OAAA,EAAA,MAAA;IAAR,QAAA,EAAA,MAAA;EAAO,CAAA;;;;;;;;UAnFO,YAAA;;;;;;;;;;;;;;;;;;;;;UAsBA,gBAAA;;;cAGH;aACD;;UAGI,uBAAA;;;UAIA,wBAAA;;;;;;;;;iBAcK,0BAAA,CAAA,GAA8B,QAAQ;;;;iBAOtC,0BAAA;;IAElB,QAAQ;;;;iBAUU,sBAAA,QACb,mBACN;;;;;;;iBAamB,6BAAA,QACb,0BACN,QAAQ"}
1
+ {"version":3,"file":"billing.handler.d.ts","sourceRoot":"","sources":["../../src/billing/billing.handler.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnE,kBAAkB,EAAE,IAAI,CAAC;IACzB,gBAAgB,EAAE,IAAI,CAAC;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EACH,YAAY,GACZ,sBAAsB,GACtB,gBAAgB,GAChB,uBAAuB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,YAAY,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKxB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAQlD;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAyBnC"}
@@ -1,58 +1,149 @@
1
- import { MOCK_SUBSCRIPTION, MOCK_USAGE_SUMMARY } from "../shared/mock-data.js";
1
+ // @bun
2
+ // src/shared/mock-data.ts
3
+ var MOCK_PROJECTS = [
4
+ {
5
+ id: "proj-1",
6
+ name: "Marketing Website",
7
+ description: "Main company website redesign project",
8
+ slug: "marketing-website",
9
+ organizationId: "demo-org",
10
+ createdBy: "user-1",
11
+ status: "ACTIVE",
12
+ isPublic: false,
13
+ tags: ["marketing", "website", "redesign"],
14
+ createdAt: new Date("2024-01-15T10:00:00Z"),
15
+ updatedAt: new Date("2024-03-20T14:30:00Z")
16
+ },
17
+ {
18
+ id: "proj-2",
19
+ name: "Mobile App v2",
20
+ description: "Next generation mobile application",
21
+ slug: "mobile-app-v2",
22
+ organizationId: "demo-org",
23
+ createdBy: "user-2",
24
+ status: "ACTIVE",
25
+ isPublic: false,
26
+ tags: ["mobile", "app", "v2"],
27
+ createdAt: new Date("2024-02-01T09:00:00Z"),
28
+ updatedAt: new Date("2024-04-05T11:15:00Z")
29
+ },
30
+ {
31
+ id: "proj-3",
32
+ name: "API Integration",
33
+ description: "Third-party API integration project",
34
+ slug: "api-integration",
35
+ organizationId: "demo-org",
36
+ createdBy: "user-1",
37
+ status: "DRAFT",
38
+ isPublic: false,
39
+ tags: ["api", "integration"],
40
+ createdAt: new Date("2024-03-10T08:00:00Z"),
41
+ updatedAt: new Date("2024-03-10T08:00:00Z")
42
+ },
43
+ {
44
+ id: "proj-4",
45
+ name: "Analytics Dashboard",
46
+ description: "Internal analytics and reporting dashboard",
47
+ slug: "analytics-dashboard",
48
+ organizationId: "demo-org",
49
+ createdBy: "user-3",
50
+ status: "ARCHIVED",
51
+ isPublic: true,
52
+ tags: ["analytics", "dashboard", "reporting"],
53
+ createdAt: new Date("2023-10-01T12:00:00Z"),
54
+ updatedAt: new Date("2024-02-28T16:45:00Z")
55
+ }
56
+ ];
57
+ var MOCK_SUBSCRIPTION = {
58
+ id: "sub-1",
59
+ organizationId: "demo-org",
60
+ planId: "pro",
61
+ planName: "Professional",
62
+ status: "ACTIVE",
63
+ currentPeriodStart: new Date("2024-04-01T00:00:00Z"),
64
+ currentPeriodEnd: new Date("2024-05-01T00:00:00Z"),
65
+ limits: {
66
+ projects: 25,
67
+ users: 10,
68
+ storage: 50,
69
+ apiCalls: 1e5
70
+ },
71
+ usage: {
72
+ projects: 4,
73
+ users: 5,
74
+ storage: 12.5,
75
+ apiCalls: 45230
76
+ }
77
+ };
78
+ var MOCK_USAGE_SUMMARY = {
79
+ organizationId: "demo-org",
80
+ period: "current_month",
81
+ apiCalls: {
82
+ total: 45230,
83
+ limit: 1e5,
84
+ percentUsed: 45.23
85
+ },
86
+ storage: {
87
+ totalGb: 12.5,
88
+ limitGb: 50,
89
+ percentUsed: 25
90
+ },
91
+ activeProjects: 4,
92
+ activeUsers: 5,
93
+ breakdown: [
94
+ { date: "2024-04-01", apiCalls: 3200, storageGb: 12.1 },
95
+ { date: "2024-04-02", apiCalls: 2800, storageGb: 12.2 },
96
+ { date: "2024-04-03", apiCalls: 4100, storageGb: 12.3 },
97
+ { date: "2024-04-04", apiCalls: 3600, storageGb: 12.4 },
98
+ { date: "2024-04-05", apiCalls: 3800, storageGb: 12.5 }
99
+ ]
100
+ };
2
101
 
3
- //#region src/billing/billing.handler.ts
4
- /**
5
- * Mock handlers for Billing contracts.
6
- */
7
- /**
8
- * Mock handler for GetSubscriptionContract.
9
- */
102
+ // src/billing/billing.handler.ts
10
103
  async function mockGetSubscriptionHandler() {
11
- return MOCK_SUBSCRIPTION;
104
+ return MOCK_SUBSCRIPTION;
12
105
  }
13
- /**
14
- * Mock handler for GetUsageSummaryContract.
15
- */
16
106
  async function mockGetUsageSummaryHandler(input) {
17
- return {
18
- ...MOCK_USAGE_SUMMARY,
19
- period: input.period ?? "current_month"
20
- };
107
+ return {
108
+ ...MOCK_USAGE_SUMMARY,
109
+ period: input.period ?? "current_month"
110
+ };
21
111
  }
22
- /**
23
- * Mock handler for RecordUsageContract.
24
- */
25
112
  async function mockRecordUsageHandler(input) {
26
- return {
27
- recorded: true,
28
- newTotal: MOCK_USAGE_SUMMARY.apiCalls.total + input.quantity
29
- };
113
+ const currentUsage = MOCK_USAGE_SUMMARY.apiCalls.total;
114
+ const newTotal = currentUsage + input.quantity;
115
+ return {
116
+ recorded: true,
117
+ newTotal
118
+ };
30
119
  }
31
- /**
32
- * Mock handler for CheckFeatureAccessContract.
33
- */
34
120
  async function mockCheckFeatureAccessHandler(input) {
35
- const { feature } = input;
36
- return {
37
- custom_domains: { allowed: true },
38
- api_access: {
39
- allowed: true,
40
- currentUsage: MOCK_USAGE_SUMMARY.apiCalls.total,
41
- limit: MOCK_USAGE_SUMMARY.apiCalls.limit
42
- },
43
- advanced_analytics: {
44
- allowed: false,
45
- reason: "FEATURE_NOT_INCLUDED"
46
- },
47
- unlimited_projects: {
48
- allowed: false,
49
- reason: "PLAN_LIMIT",
50
- currentUsage: MOCK_SUBSCRIPTION.usage.projects,
51
- limit: MOCK_SUBSCRIPTION.limits.projects
52
- }
53
- }[feature] ?? { allowed: true };
121
+ const { feature } = input;
122
+ const featureMap = {
123
+ custom_domains: {
124
+ allowed: true
125
+ },
126
+ api_access: {
127
+ allowed: true,
128
+ currentUsage: MOCK_USAGE_SUMMARY.apiCalls.total,
129
+ limit: MOCK_USAGE_SUMMARY.apiCalls.limit
130
+ },
131
+ advanced_analytics: {
132
+ allowed: false,
133
+ reason: "FEATURE_NOT_INCLUDED"
134
+ },
135
+ unlimited_projects: {
136
+ allowed: false,
137
+ reason: "PLAN_LIMIT",
138
+ currentUsage: MOCK_SUBSCRIPTION.usage.projects,
139
+ limit: MOCK_SUBSCRIPTION.limits.projects
140
+ }
141
+ };
142
+ return featureMap[feature] ?? { allowed: true };
54
143
  }
55
-
56
- //#endregion
57
- export { mockCheckFeatureAccessHandler, mockGetSubscriptionHandler, mockGetUsageSummaryHandler, mockRecordUsageHandler };
58
- //# sourceMappingURL=billing.handler.js.map
144
+ export {
145
+ mockRecordUsageHandler,
146
+ mockGetUsageSummaryHandler,
147
+ mockGetSubscriptionHandler,
148
+ mockCheckFeatureAccessHandler
149
+ };