@contractspec/example.saas-boilerplate 1.57.0 → 1.59.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 (283) hide show
  1. package/.turbo/turbo-build.log +160 -180
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +39 -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 -7
  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 +38 -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 -59
  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 -14
  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 -7
  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 -6
  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 -8
  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 -14
  239. package/dist/ui/renderers/project-list.markdown.d.ts.map +1 -1
  240. package/dist/ui/renderers/project-list.markdown.js +496 -146
  241. package/dist/ui/renderers/project-list.renderer.d.ts +6 -7
  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 +508 -98
  245. package/tsdown.config.js +1 -2
  246. package/.turbo/turbo-build$colon$bundle.log +0 -180
  247. package/dist/billing/billing.entity.js.map +0 -1
  248. package/dist/billing/billing.enum.js.map +0 -1
  249. package/dist/billing/billing.event.js.map +0 -1
  250. package/dist/billing/billing.handler.js.map +0 -1
  251. package/dist/billing/billing.operations.js.map +0 -1
  252. package/dist/billing/billing.presentation.js.map +0 -1
  253. package/dist/billing/billing.schema.js.map +0 -1
  254. package/dist/dashboard/dashboard.presentation.js.map +0 -1
  255. package/dist/docs/saas-boilerplate.docblock.js.map +0 -1
  256. package/dist/example.js.map +0 -1
  257. package/dist/handlers/saas.handlers.js.map +0 -1
  258. package/dist/index.js.map +0 -1
  259. package/dist/presentations/index.js.map +0 -1
  260. package/dist/project/project.entity.js.map +0 -1
  261. package/dist/project/project.enum.js.map +0 -1
  262. package/dist/project/project.event.js.map +0 -1
  263. package/dist/project/project.handler.js.map +0 -1
  264. package/dist/project/project.operations.js.map +0 -1
  265. package/dist/project/project.presentation.js.map +0 -1
  266. package/dist/project/project.schema.js.map +0 -1
  267. package/dist/saas-boilerplate.feature.js.map +0 -1
  268. package/dist/seeders/index.js.map +0 -1
  269. package/dist/settings/settings.entity.js.map +0 -1
  270. package/dist/settings/settings.enum.js.map +0 -1
  271. package/dist/shared/mock-data.js.map +0 -1
  272. package/dist/tests/operations.test-spec.js.map +0 -1
  273. package/dist/ui/SaasDashboard.js.map +0 -1
  274. package/dist/ui/SaasProjectList.js.map +0 -1
  275. package/dist/ui/SaasSettingsPanel.js.map +0 -1
  276. package/dist/ui/hooks/useProjectList.js.map +0 -1
  277. package/dist/ui/hooks/useProjectMutations.js.map +0 -1
  278. package/dist/ui/modals/CreateProjectModal.js.map +0 -1
  279. package/dist/ui/modals/ProjectActionsModal.js.map +0 -1
  280. package/dist/ui/overlays/demo-overlays.js.map +0 -1
  281. package/dist/ui/renderers/project-list.markdown.js.map +0 -1
  282. package/dist/ui/renderers/project-list.renderer.js.map +0 -1
  283. package/tsconfig.tsbuildinfo +0 -1
@@ -1,122 +1,114 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
-
3
- //#region src/billing/billing.entity.ts
4
- /**
5
- * Subscription status enum for entities.
6
- */
7
- const SubscriptionStatusEnum = defineEntityEnum({
8
- name: "SubscriptionStatus",
9
- values: [
10
- "TRIALING",
11
- "ACTIVE",
12
- "PAST_DUE",
13
- "CANCELED",
14
- "PAUSED"
15
- ],
16
- schema: "saas_app",
17
- description: "Status of a subscription."
1
+ // @bun
2
+ // src/billing/billing.entity.ts
3
+ import {
4
+ defineEntity,
5
+ defineEntityEnum,
6
+ field,
7
+ index
8
+ } from "@contractspec/lib.schema";
9
+ var SubscriptionStatusEnum = defineEntityEnum({
10
+ name: "SubscriptionStatus",
11
+ values: ["TRIALING", "ACTIVE", "PAST_DUE", "CANCELED", "PAUSED"],
12
+ schema: "saas_app",
13
+ description: "Status of a subscription."
18
14
  });
19
- /**
20
- * Subscription entity - organization subscription info.
21
- */
22
- const SubscriptionEntity = defineEntity({
23
- name: "Subscription",
24
- description: "Organization subscription/plan information.",
25
- schema: "saas_app",
26
- map: "subscription",
27
- fields: {
28
- id: field.id(),
29
- organizationId: field.foreignKey({ isUnique: true }),
30
- planId: field.string({ description: "Plan identifier" }),
31
- planName: field.string({ description: "Plan display name" }),
32
- status: field.enum("SubscriptionStatus"),
33
- currentPeriodStart: field.dateTime(),
34
- currentPeriodEnd: field.dateTime(),
35
- trialEndsAt: field.dateTime({ isOptional: true }),
36
- cancelAtPeriodEnd: field.boolean({ default: false }),
37
- canceledAt: field.dateTime({ isOptional: true }),
38
- stripeSubscriptionId: field.string({ isOptional: true }),
39
- stripeCustomerId: field.string({ isOptional: true }),
40
- metadata: field.json({ isOptional: true }),
41
- createdAt: field.createdAt(),
42
- updatedAt: field.updatedAt()
43
- },
44
- enums: [SubscriptionStatusEnum]
15
+ var SubscriptionEntity = defineEntity({
16
+ name: "Subscription",
17
+ description: "Organization subscription/plan information.",
18
+ schema: "saas_app",
19
+ map: "subscription",
20
+ fields: {
21
+ id: field.id(),
22
+ organizationId: field.foreignKey({ isUnique: true }),
23
+ planId: field.string({ description: "Plan identifier" }),
24
+ planName: field.string({ description: "Plan display name" }),
25
+ status: field.enum("SubscriptionStatus"),
26
+ currentPeriodStart: field.dateTime(),
27
+ currentPeriodEnd: field.dateTime(),
28
+ trialEndsAt: field.dateTime({ isOptional: true }),
29
+ cancelAtPeriodEnd: field.boolean({ default: false }),
30
+ canceledAt: field.dateTime({ isOptional: true }),
31
+ stripeSubscriptionId: field.string({ isOptional: true }),
32
+ stripeCustomerId: field.string({ isOptional: true }),
33
+ metadata: field.json({ isOptional: true }),
34
+ createdAt: field.createdAt(),
35
+ updatedAt: field.updatedAt()
36
+ },
37
+ enums: [SubscriptionStatusEnum]
45
38
  });
46
- /**
47
- * BillingUsage entity - track feature usage.
48
- */
49
- const BillingUsageEntity = defineEntity({
50
- name: "BillingUsage",
51
- description: "Track usage of metered features.",
52
- schema: "saas_app",
53
- map: "billing_usage",
54
- fields: {
55
- id: field.id(),
56
- organizationId: field.foreignKey(),
57
- feature: field.string({ description: "Feature being tracked (e.g., \"api_calls\", \"storage_gb\")" }),
58
- quantity: field.int({ description: "Usage quantity" }),
59
- unit: field.string({
60
- isOptional: true,
61
- description: "Unit of measurement"
62
- }),
63
- billingPeriod: field.string({ description: "Billing period (e.g., \"2024-01\")" }),
64
- recordedAt: field.dateTime({ description: "When usage was recorded" }),
65
- sourceId: field.string({
66
- isOptional: true,
67
- description: "Source of usage (e.g., request ID)"
68
- }),
69
- sourceType: field.string({ isOptional: true }),
70
- metadata: field.json({ isOptional: true })
71
- },
72
- indexes: [index.on([
73
- "organizationId",
74
- "feature",
75
- "billingPeriod"
76
- ]), index.on(["organizationId", "recordedAt"])]
39
+ var BillingUsageEntity = defineEntity({
40
+ name: "BillingUsage",
41
+ description: "Track usage of metered features.",
42
+ schema: "saas_app",
43
+ map: "billing_usage",
44
+ fields: {
45
+ id: field.id(),
46
+ organizationId: field.foreignKey(),
47
+ feature: field.string({
48
+ description: 'Feature being tracked (e.g., "api_calls", "storage_gb")'
49
+ }),
50
+ quantity: field.int({ description: "Usage quantity" }),
51
+ unit: field.string({
52
+ isOptional: true,
53
+ description: "Unit of measurement"
54
+ }),
55
+ billingPeriod: field.string({
56
+ description: 'Billing period (e.g., "2024-01")'
57
+ }),
58
+ recordedAt: field.dateTime({ description: "When usage was recorded" }),
59
+ sourceId: field.string({
60
+ isOptional: true,
61
+ description: "Source of usage (e.g., request ID)"
62
+ }),
63
+ sourceType: field.string({ isOptional: true }),
64
+ metadata: field.json({ isOptional: true })
65
+ },
66
+ indexes: [
67
+ index.on(["organizationId", "feature", "billingPeriod"]),
68
+ index.on(["organizationId", "recordedAt"])
69
+ ]
77
70
  });
78
- /**
79
- * UsageLimit entity - feature usage limits per plan.
80
- */
81
- const UsageLimitEntity = defineEntity({
82
- name: "UsageLimit",
83
- description: "Usage limits per plan/organization.",
84
- schema: "saas_app",
85
- map: "usage_limit",
86
- fields: {
87
- id: field.id(),
88
- planId: field.string({
89
- isOptional: true,
90
- description: "Plan this limit applies to"
91
- }),
92
- organizationId: field.string({
93
- isOptional: true,
94
- description: "Org-specific override"
95
- }),
96
- feature: field.string({ description: "Feature being limited" }),
97
- limit: field.int({ description: "Maximum allowed usage" }),
98
- resetPeriod: field.string({
99
- default: "\"monthly\"",
100
- description: "When limit resets"
101
- }),
102
- isSoftLimit: field.boolean({
103
- default: false,
104
- description: "Whether to warn vs block"
105
- }),
106
- overage: field.boolean({
107
- default: false,
108
- description: "Whether overage is allowed"
109
- }),
110
- overageRate: field.float({
111
- isOptional: true,
112
- description: "Cost per unit over limit"
113
- }),
114
- createdAt: field.createdAt(),
115
- updatedAt: field.updatedAt()
116
- },
117
- indexes: [index.unique(["planId", "feature"])]
71
+ var UsageLimitEntity = defineEntity({
72
+ name: "UsageLimit",
73
+ description: "Usage limits per plan/organization.",
74
+ schema: "saas_app",
75
+ map: "usage_limit",
76
+ fields: {
77
+ id: field.id(),
78
+ planId: field.string({
79
+ isOptional: true,
80
+ description: "Plan this limit applies to"
81
+ }),
82
+ organizationId: field.string({
83
+ isOptional: true,
84
+ description: "Org-specific override"
85
+ }),
86
+ feature: field.string({ description: "Feature being limited" }),
87
+ limit: field.int({ description: "Maximum allowed usage" }),
88
+ resetPeriod: field.string({
89
+ default: '"monthly"',
90
+ description: "When limit resets"
91
+ }),
92
+ isSoftLimit: field.boolean({
93
+ default: false,
94
+ description: "Whether to warn vs block"
95
+ }),
96
+ overage: field.boolean({
97
+ default: false,
98
+ description: "Whether overage is allowed"
99
+ }),
100
+ overageRate: field.float({
101
+ isOptional: true,
102
+ description: "Cost per unit over limit"
103
+ }),
104
+ createdAt: field.createdAt(),
105
+ updatedAt: field.updatedAt()
106
+ },
107
+ indexes: [index.unique(["planId", "feature"])]
118
108
  });
119
-
120
- //#endregion
121
- export { BillingUsageEntity, SubscriptionEntity, SubscriptionStatusEnum, UsageLimitEntity };
122
- //# sourceMappingURL=billing.entity.js.map
109
+ export {
110
+ UsageLimitEntity,
111
+ SubscriptionStatusEnum,
112
+ SubscriptionEntity,
113
+ BillingUsageEntity
114
+ };
@@ -1,15 +1,10 @@
1
- import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
2
-
3
- //#region src/billing/billing.enum.d.ts
4
1
  /**
5
2
  * Subscription status enum for contract schemas.
6
3
  * Note: Entity enum is defined separately in billing.entity.ts
7
4
  */
8
- declare const SubscriptionStatusSchemaEnum: _contractspec_lib_schema0.EnumType<[string, string, string, string, string]>;
5
+ export declare const SubscriptionStatusSchemaEnum: import("@contractspec/lib.schema").EnumType<[string, string, string, string, string]>;
9
6
  /**
10
7
  * Feature access reason enum.
11
8
  */
12
- declare const FeatureAccessReasonEnum: _contractspec_lib_schema0.EnumType<[string, string, string, string]>;
13
- //#endregion
14
- export { FeatureAccessReasonEnum, SubscriptionStatusSchemaEnum };
9
+ export declare const FeatureAccessReasonEnum: import("@contractspec/lib.schema").EnumType<[string, string, string, string]>;
15
10
  //# sourceMappingURL=billing.enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.enum.d.ts","names":[],"sources":["../../src/billing/billing.enum.ts"],"mappings":";;;;;;AAMA;cAAa,4BAAA,EAMX,yBAAA,CANuC,QAAA;;;;cAW5B,uBAAA,EAKX,yBAAA,CALkC,QAAA"}
1
+ {"version":3,"file":"billing.enum.d.ts","sourceRoot":"","sources":["../../src/billing/billing.enum.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,4BAA4B,uFAMvC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB,+EAKlC,CAAC"}
@@ -1,27 +1,20 @@
1
+ // @bun
2
+ // src/billing/billing.enum.ts
1
3
  import { defineEnum } from "@contractspec/lib.schema";
2
-
3
- //#region src/billing/billing.enum.ts
4
- /**
5
- * Subscription status enum for contract schemas.
6
- * Note: Entity enum is defined separately in billing.entity.ts
7
- */
8
- const SubscriptionStatusSchemaEnum = defineEnum("SubscriptionStatus", [
9
- "TRIALING",
10
- "ACTIVE",
11
- "PAST_DUE",
12
- "CANCELED",
13
- "PAUSED"
4
+ var SubscriptionStatusSchemaEnum = defineEnum("SubscriptionStatus", [
5
+ "TRIALING",
6
+ "ACTIVE",
7
+ "PAST_DUE",
8
+ "CANCELED",
9
+ "PAUSED"
14
10
  ]);
15
- /**
16
- * Feature access reason enum.
17
- */
18
- const FeatureAccessReasonEnum = defineEnum("FeatureAccessReason", [
19
- "included",
20
- "limit_available",
21
- "limit_reached",
22
- "not_in_plan"
11
+ var FeatureAccessReasonEnum = defineEnum("FeatureAccessReason", [
12
+ "included",
13
+ "limit_available",
14
+ "limit_reached",
15
+ "not_in_plan"
23
16
  ]);
24
-
25
- //#endregion
26
- export { FeatureAccessReasonEnum, SubscriptionStatusSchemaEnum };
27
- //# sourceMappingURL=billing.enum.js.map
17
+ export {
18
+ SubscriptionStatusSchemaEnum,
19
+ FeatureAccessReasonEnum
20
+ };
@@ -1,86 +1,80 @@
1
- import * as _contractspec_lib_contracts0 from "@contractspec/lib.contracts";
2
- import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
3
-
4
- //#region src/billing/billing.event.d.ts
5
1
  /**
6
2
  * Event: Feature usage has been recorded.
7
3
  */
8
- declare const UsageRecordedEvent: _contractspec_lib_contracts0.EventSpec<_contractspec_lib_schema0.SchemaModel<{
9
- organizationId: {
10
- type: _contractspec_lib_schema0.FieldType<string, string>;
11
- isOptional: false;
12
- };
13
- feature: {
14
- type: _contractspec_lib_schema0.FieldType<string, string>;
15
- isOptional: false;
16
- };
17
- quantity: {
18
- type: _contractspec_lib_schema0.FieldType<number, number>;
19
- isOptional: false;
20
- };
21
- billingPeriod: {
22
- type: _contractspec_lib_schema0.FieldType<string, string>;
23
- isOptional: false;
24
- };
25
- recordedAt: {
26
- type: _contractspec_lib_schema0.FieldType<Date, string>;
27
- isOptional: false;
28
- };
4
+ export declare const UsageRecordedEvent: import("@contractspec/lib.contracts").EventSpec<import("@contractspec/lib.schema").SchemaModel<{
5
+ organizationId: {
6
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
7
+ isOptional: false;
8
+ };
9
+ feature: {
10
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ quantity: {
14
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
15
+ isOptional: false;
16
+ };
17
+ billingPeriod: {
18
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
19
+ isOptional: false;
20
+ };
21
+ recordedAt: {
22
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
23
+ isOptional: false;
24
+ };
29
25
  }>>;
30
26
  /**
31
27
  * Event: Usage limit has been reached for a feature.
32
28
  */
33
- declare const UsageLimitReachedEvent: _contractspec_lib_contracts0.EventSpec<_contractspec_lib_schema0.SchemaModel<{
34
- organizationId: {
35
- type: _contractspec_lib_schema0.FieldType<string, string>;
36
- isOptional: false;
37
- };
38
- feature: {
39
- type: _contractspec_lib_schema0.FieldType<string, string>;
40
- isOptional: false;
41
- };
42
- limit: {
43
- type: _contractspec_lib_schema0.FieldType<number, number>;
44
- isOptional: false;
45
- };
46
- currentUsage: {
47
- type: _contractspec_lib_schema0.FieldType<number, number>;
48
- isOptional: false;
49
- };
50
- reachedAt: {
51
- type: _contractspec_lib_schema0.FieldType<Date, string>;
52
- isOptional: false;
53
- };
29
+ export declare const UsageLimitReachedEvent: import("@contractspec/lib.contracts").EventSpec<import("@contractspec/lib.schema").SchemaModel<{
30
+ organizationId: {
31
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
32
+ isOptional: false;
33
+ };
34
+ feature: {
35
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
36
+ isOptional: false;
37
+ };
38
+ limit: {
39
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
40
+ isOptional: false;
41
+ };
42
+ currentUsage: {
43
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
44
+ isOptional: false;
45
+ };
46
+ reachedAt: {
47
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
48
+ isOptional: false;
49
+ };
54
50
  }>>;
55
51
  /**
56
52
  * Event: Subscription status has changed.
57
53
  */
58
- declare const SubscriptionChangedEvent: _contractspec_lib_contracts0.EventSpec<_contractspec_lib_schema0.SchemaModel<{
59
- organizationId: {
60
- type: _contractspec_lib_schema0.FieldType<string, string>;
61
- isOptional: false;
62
- };
63
- previousPlan: {
64
- type: _contractspec_lib_schema0.FieldType<string, string>;
65
- isOptional: true;
66
- };
67
- newPlan: {
68
- type: _contractspec_lib_schema0.FieldType<string, string>;
69
- isOptional: false;
70
- };
71
- previousStatus: {
72
- type: _contractspec_lib_schema0.FieldType<string, string>;
73
- isOptional: true;
74
- };
75
- newStatus: {
76
- type: _contractspec_lib_schema0.FieldType<string, string>;
77
- isOptional: false;
78
- };
79
- changedAt: {
80
- type: _contractspec_lib_schema0.FieldType<Date, string>;
81
- isOptional: false;
82
- };
54
+ export declare const SubscriptionChangedEvent: import("@contractspec/lib.contracts").EventSpec<import("@contractspec/lib.schema").SchemaModel<{
55
+ organizationId: {
56
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
57
+ isOptional: false;
58
+ };
59
+ previousPlan: {
60
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
61
+ isOptional: true;
62
+ };
63
+ newPlan: {
64
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
65
+ isOptional: false;
66
+ };
67
+ previousStatus: {
68
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
69
+ isOptional: true;
70
+ };
71
+ newStatus: {
72
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
73
+ isOptional: false;
74
+ };
75
+ changedAt: {
76
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
77
+ isOptional: false;
78
+ };
83
79
  }>>;
84
- //#endregion
85
- export { SubscriptionChangedEvent, UsageLimitReachedEvent, UsageRecordedEvent };
86
80
  //# sourceMappingURL=billing.event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.event.d.ts","names":[],"sources":["../../src/billing/billing.event.ts"],"mappings":";;;;;;;cAmEa,kBAAA,EAAkB,4BAAA,CAAA,SAAA,2BAAA,WAAA;;UAU7B,yBAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;cAKW,sBAAA,EAAsB,4BAAA,CAAA,SAAA,2BAAA,WAAA;;UAUjC,yBAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;cAKW,wBAAA,EAAwB,4BAAA,CAAA,SAAA,2BAAA,WAAA;;UAUnC,yBAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"billing.event.d.ts","sourceRoot":"","sources":["../../src/billing/billing.event.ts"],"names":[],"mappings":"AAgEA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;GAU7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;GAUjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;GAUnC,CAAC"}