@contractspec/example.saas-boilerplate 1.44.1 → 1.45.1

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 (45) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +24 -24
  2. package/.turbo/turbo-build.log +24 -24
  3. package/CHANGELOG.md +45 -0
  4. package/dist/billing/billing.event.js +3 -3
  5. package/dist/billing/billing.event.js.map +1 -1
  6. package/dist/billing/billing.operations.d.ts +42 -42
  7. package/dist/billing/billing.operations.js +5 -5
  8. package/dist/billing/billing.operations.js.map +1 -1
  9. package/dist/billing/billing.presentation.js +2 -2
  10. package/dist/billing/billing.presentation.js.map +1 -1
  11. package/dist/billing/billing.schema.d.ts +47 -47
  12. package/dist/billing/billing.schema.d.ts.map +1 -1
  13. package/dist/dashboard/dashboard.presentation.js +2 -2
  14. package/dist/dashboard/dashboard.presentation.js.map +1 -1
  15. package/dist/example.d.ts +3 -33
  16. package/dist/example.d.ts.map +1 -1
  17. package/dist/example.js +16 -11
  18. package/dist/example.js.map +1 -1
  19. package/dist/project/project.entity.d.ts +24 -24
  20. package/dist/project/project.enum.d.ts +3 -3
  21. package/dist/project/project.event.d.ts +21 -21
  22. package/dist/project/project.event.js +4 -4
  23. package/dist/project/project.event.js.map +1 -1
  24. package/dist/project/project.operations.d.ts +105 -105
  25. package/dist/project/project.operations.d.ts.map +1 -1
  26. package/dist/project/project.operations.js +8 -8
  27. package/dist/project/project.operations.js.map +1 -1
  28. package/dist/project/project.presentation.js +2 -2
  29. package/dist/project/project.presentation.js.map +1 -1
  30. package/dist/project/project.schema.d.ts +54 -54
  31. package/dist/saas-boilerplate.feature.js +38 -38
  32. package/dist/saas-boilerplate.feature.js.map +1 -1
  33. package/dist/settings/settings.entity.d.ts +24 -24
  34. package/dist/settings/settings.enum.d.ts +2 -2
  35. package/package.json +10 -10
  36. package/src/billing/billing.event.ts +3 -3
  37. package/src/billing/billing.operations.ts +5 -5
  38. package/src/billing/billing.presentation.ts +2 -2
  39. package/src/dashboard/dashboard.presentation.ts +2 -2
  40. package/src/example.ts +16 -9
  41. package/src/project/project.event.ts +4 -4
  42. package/src/project/project.operations.ts +8 -8
  43. package/src/project/project.presentation.ts +2 -2
  44. package/src/saas-boilerplate.feature.ts +42 -38
  45. package/tsconfig.tsbuildinfo +1 -1
@@ -6,27 +6,27 @@ $ tsdown
6
6
  ℹ tsconfig: tsconfig.json
7
7
  ℹ Build start
8
8
  ℹ Cleaning 111 files
9
- ℹ dist/project/project.operations.js  5.80 kB │ gzip: 1.46 kB
9
+ ℹ dist/project/project.operations.js  5.85 kB │ gzip: 1.46 kB
10
10
  ℹ dist/index.js  5.37 kB │ gzip: 1.17 kB
11
11
  ℹ dist/billing/billing.schema.js  4.79 kB │ gzip: 0.86 kB
12
12
  ℹ dist/project/project.schema.js  4.60 kB │ gzip: 0.77 kB
13
- ℹ dist/billing/billing.operations.js  4.25 kB │ gzip: 1.27 kB
13
+ ℹ dist/billing/billing.operations.js  4.28 kB │ gzip: 1.28 kB
14
14
  ℹ dist/docs/saas-boilerplate.docblock.js  3.77 kB │ gzip: 1.47 kB
15
- ℹ dist/project/project.event.js  3.67 kB │ gzip: 0.66 kB
15
+ ℹ dist/project/project.event.js  3.69 kB │ gzip: 0.66 kB
16
16
  ℹ dist/billing/billing.entity.js  3.65 kB │ gzip: 1.12 kB
17
- ℹ dist/billing/billing.event.js  3.34 kB │ gzip: 0.70 kB
18
- ℹ dist/saas-boilerplate.feature.js  3.03 kB │ gzip: 0.68 kB
17
+ ℹ dist/billing/billing.event.js  3.36 kB │ gzip: 0.71 kB
18
+ ℹ dist/saas-boilerplate.feature.js  3.26 kB │ gzip: 0.69 kB
19
19
  ℹ dist/shared/mock-data.js  2.89 kB │ gzip: 0.98 kB
20
20
  ℹ dist/project/project.handler.js  2.61 kB │ gzip: 0.89 kB
21
21
  ℹ dist/project/project.entity.js  2.37 kB │ gzip: 0.84 kB
22
22
  ℹ dist/settings/settings.entity.js  2.14 kB │ gzip: 0.80 kB
23
23
  ℹ dist/billing/index.js  1.68 kB │ gzip: 0.39 kB
24
24
  ℹ dist/project/index.js  1.67 kB │ gzip: 0.37 kB
25
- ℹ dist/project/project.presentation.js  1.59 kB │ gzip: 0.61 kB
26
- ℹ dist/billing/billing.presentation.js  1.49 kB │ gzip: 0.56 kB
25
+ ℹ dist/project/project.presentation.js  1.60 kB │ gzip: 0.61 kB
26
+ ℹ dist/billing/billing.presentation.js  1.50 kB │ gzip: 0.56 kB
27
27
  ℹ dist/billing/billing.handler.js  1.45 kB │ gzip: 0.58 kB
28
- ℹ dist/dashboard/dashboard.presentation.js  1.44 kB │ gzip: 0.56 kB
29
- ℹ dist/example.js  0.93 kB │ gzip: 0.49 kB
28
+ ℹ dist/dashboard/dashboard.presentation.js  1.45 kB │ gzip: 0.56 kB
29
+ ℹ dist/example.js  1.04 kB │ gzip: 0.54 kB
30
30
  ℹ dist/presentations/index.js  0.86 kB │ gzip: 0.28 kB
31
31
  ℹ dist/billing/billing.enum.js  0.64 kB │ gzip: 0.36 kB
32
32
  ℹ dist/project/project.enum.js  0.61 kB │ gzip: 0.32 kB
@@ -35,26 +35,26 @@ $ tsdown
35
35
  ℹ dist/settings/index.js  0.20 kB │ gzip: 0.11 kB
36
36
  ℹ dist/dashboard/index.js  0.17 kB │ gzip: 0.10 kB
37
37
  ℹ dist/docs/index.js  0.04 kB │ gzip: 0.06 kB
38
- ℹ dist/project/project.operations.js.map  9.54 kB │ gzip: 1.99 kB
38
+ ℹ dist/project/project.operations.js.map  9.59 kB │ gzip: 1.99 kB
39
39
  ℹ dist/billing/billing.schema.js.map  6.87 kB │ gzip: 1.26 kB
40
40
  ℹ dist/project/project.schema.js.map  6.85 kB │ gzip: 1.13 kB
41
- ℹ dist/billing/billing.operations.js.map  6.79 kB │ gzip: 1.75 kB
41
+ ℹ dist/billing/billing.operations.js.map  6.82 kB │ gzip: 1.76 kB
42
42
  ℹ dist/billing/billing.entity.js.map  6.25 kB │ gzip: 1.77 kB
43
43
  ℹ dist/project/project.handler.js.map  5.62 kB │ gzip: 1.68 kB
44
- ℹ dist/project/project.event.js.map  5.51 kB │ gzip: 0.95 kB
45
- ℹ dist/saas-boilerplate.feature.js.map  5.26 kB │ gzip: 1.33 kB
46
- ℹ dist/billing/billing.event.js.map  4.91 kB │ gzip: 1.04 kB
44
+ ℹ dist/project/project.event.js.map  5.53 kB │ gzip: 0.95 kB
45
+ ℹ dist/saas-boilerplate.feature.js.map  5.52 kB │ gzip: 1.33 kB
46
+ ℹ dist/billing/billing.event.js.map  4.93 kB │ gzip: 1.05 kB
47
47
  ℹ dist/docs/saas-boilerplate.docblock.js.map  4.63 kB │ gzip: 1.68 kB
48
48
  ℹ dist/shared/mock-data.js.map  4.50 kB │ gzip: 1.31 kB
49
49
  ℹ dist/project/project.entity.js.map  3.94 kB │ gzip: 1.30 kB
50
50
  ℹ dist/billing/billing.handler.js.map  3.76 kB │ gzip: 1.29 kB
51
51
  ℹ dist/settings/settings.entity.js.map  3.62 kB │ gzip: 1.22 kB
52
52
  ℹ dist/index.js.map  2.53 kB │ gzip: 0.86 kB
53
- ℹ dist/project/project.presentation.js.map  2.50 kB │ gzip: 0.85 kB
54
- ℹ dist/billing/billing.presentation.js.map  2.39 kB │ gzip: 0.78 kB
55
- ℹ dist/dashboard/dashboard.presentation.js.map  2.33 kB │ gzip: 0.79 kB
53
+ ℹ dist/project/project.presentation.js.map  2.51 kB │ gzip: 0.86 kB
54
+ ℹ dist/billing/billing.presentation.js.map  2.40 kB │ gzip: 0.79 kB
55
+ ℹ dist/dashboard/dashboard.presentation.js.map  2.35 kB │ gzip: 0.79 kB
56
+ ℹ dist/example.js.map  1.63 kB │ gzip: 0.79 kB
56
57
  ℹ dist/project/project.operations.d.ts.map  1.37 kB │ gzip: 0.39 kB
57
- ℹ dist/example.js.map  1.35 kB │ gzip: 0.68 kB
58
58
  ℹ dist/presentations/index.js.map  1.14 kB │ gzip: 0.45 kB
59
59
  ℹ dist/billing/billing.schema.d.ts.map  1.07 kB │ gzip: 0.41 kB
60
60
  ℹ dist/project/project.schema.d.ts.map  1.03 kB │ gzip: 0.38 kB
@@ -78,11 +78,11 @@ $ tsdown
78
78
  ℹ dist/settings/settings.enum.d.ts.map  0.18 kB │ gzip: 0.15 kB
79
79
  ℹ dist/index.d.ts.map  0.17 kB │ gzip: 0.13 kB
80
80
  ℹ dist/saas-boilerplate.feature.d.ts.map  0.17 kB │ gzip: 0.13 kB
81
- ℹ dist/example.d.ts.map  0.14 kB │ gzip: 0.13 kB
82
81
  ℹ dist/presentations/index.d.ts.map  0.14 kB │ gzip: 0.13 kB
83
- ℹ dist/project/project.operations.d.ts 11.70 kB │ gzip: 0.87 kB
82
+ ℹ dist/example.d.ts.map  0.12 kB │ gzip: 0.12 kB
83
+ ℹ dist/project/project.operations.d.ts 11.80 kB │ gzip: 0.87 kB
84
84
  ℹ dist/project/project.schema.d.ts  6.56 kB │ gzip: 0.76 kB
85
- ℹ dist/billing/billing.schema.d.ts  5.72 kB │ gzip: 0.79 kB
85
+ ℹ dist/billing/billing.schema.d.ts  5.68 kB │ gzip: 0.79 kB
86
86
  ℹ dist/index.d.ts  5.02 kB │ gzip: 1.06 kB
87
87
  ℹ dist/billing/billing.operations.d.ts  4.98 kB │ gzip: 0.78 kB
88
88
  ℹ dist/billing/billing.entity.d.ts  2.91 kB │ gzip: 0.52 kB
@@ -95,7 +95,6 @@ $ tsdown
95
95
  ℹ dist/project/project.entity.d.ts  1.79 kB │ gzip: 0.42 kB
96
96
  ℹ dist/settings/settings.entity.d.ts  1.71 kB │ gzip: 0.37 kB
97
97
  ℹ dist/shared/mock-data.d.ts  1.68 kB │ gzip: 0.50 kB
98
- ℹ dist/example.d.ts  1.18 kB │ gzip: 0.48 kB
99
98
  ℹ dist/presentations/index.d.ts  0.90 kB │ gzip: 0.28 kB
100
99
  ℹ dist/project/project.enum.d.ts  0.63 kB │ gzip: 0.30 kB
101
100
  ℹ dist/billing/billing.enum.d.ts  0.63 kB │ gzip: 0.30 kB
@@ -105,9 +104,10 @@ $ tsdown
105
104
  ℹ dist/billing/billing.presentation.d.ts  0.46 kB │ gzip: 0.22 kB
106
105
  ℹ dist/saas-boilerplate.feature.d.ts  0.41 kB │ gzip: 0.25 kB
107
106
  ℹ dist/settings/settings.enum.d.ts  0.31 kB │ gzip: 0.20 kB
107
+ ℹ dist/example.d.ts  0.20 kB │ gzip: 0.16 kB
108
108
  ℹ dist/settings/index.d.ts  0.19 kB │ gzip: 0.11 kB
109
109
  ℹ dist/dashboard/index.d.ts  0.16 kB │ gzip: 0.10 kB
110
110
  ℹ dist/docs/index.d.ts  0.01 kB │ gzip: 0.03 kB
111
111
  ℹ dist/docs/saas-boilerplate.docblock.d.ts  0.01 kB │ gzip: 0.03 kB
112
- ℹ 103 files, total: 230.57 kB
113
- ✔ Build complete in 21607ms
112
+ ℹ 103 files, total: 230.81 kB
113
+ ✔ Build complete in 27041ms
@@ -3,31 +3,31 @@ $ tsc --noEmit
3
3
  $ tsdown
4
4
  ℹ tsdown v0.18.3 powered by rolldown v1.0.0-beta.57
5
5
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/saas-boilerplate/tsdown.config.js
6
- ℹ entry: src/example.ts, src/index.ts, src/saas-boilerplate.feature.ts, src/billing/billing.entity.ts, src/billing/billing.enum.ts, src/billing/billing.event.ts, src/billing/billing.handler.ts, src/billing/billing.operations.ts, src/billing/billing.presentation.ts, src/billing/billing.schema.ts, src/billing/index.ts, src/dashboard/dashboard.presentation.ts, src/dashboard/index.ts, src/docs/index.ts, src/docs/saas-boilerplate.docblock.ts, src/handlers/index.ts, src/presentations/index.ts, src/project/index.ts, src/project/project.entity.ts, src/project/project.enum.ts, src/project/project.event.ts, src/project/project.handler.ts, src/project/project.operations.ts, src/project/project.presentation.ts, src/project/project.schema.ts, src/settings/index.ts, src/settings/settings.entity.ts, src/settings/settings.enum.ts, src/shared/mock-data.ts
6
+ ℹ entry: src/example.ts, src/index.ts, src/saas-boilerplate.feature.ts, src/billing/billing.entity.ts, src/billing/billing.enum.ts, src/billing/billing.event.ts, src/billing/billing.handler.ts, src/billing/billing.operations.ts, src/billing/billing.presentation.ts, src/billing/billing.schema.ts, src/billing/index.ts, src/dashboard/dashboard.presentation.ts, src/dashboard/index.ts, src/docs/index.ts, src/docs/saas-boilerplate.docblock.ts, src/handlers/index.ts, src/presentations/index.ts, src/project/index.ts, src/project/project.entity.ts, src/project/project.enum.ts, src/project/project.event.ts, src/project/project.handler.ts, src/project/project.operations.ts, src/project/project.presentation.ts, src/project/project.schema.ts, src/shared/mock-data.ts, src/settings/index.ts, src/settings/settings.entity.ts, src/settings/settings.enum.ts
7
7
  ℹ target: esnext
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
- ℹ dist/project/project.operations.js  5.80 kB │ gzip: 1.46 kB
10
+ ℹ dist/project/project.operations.js  5.85 kB │ gzip: 1.46 kB
11
11
  ℹ dist/index.js  5.37 kB │ gzip: 1.17 kB
12
12
  ℹ dist/billing/billing.schema.js  4.79 kB │ gzip: 0.86 kB
13
13
  ℹ dist/project/project.schema.js  4.60 kB │ gzip: 0.77 kB
14
- ℹ dist/billing/billing.operations.js  4.25 kB │ gzip: 1.27 kB
14
+ ℹ dist/billing/billing.operations.js  4.28 kB │ gzip: 1.28 kB
15
15
  ℹ dist/docs/saas-boilerplate.docblock.js  3.77 kB │ gzip: 1.47 kB
16
- ℹ dist/project/project.event.js  3.67 kB │ gzip: 0.66 kB
16
+ ℹ dist/project/project.event.js  3.69 kB │ gzip: 0.66 kB
17
17
  ℹ dist/billing/billing.entity.js  3.65 kB │ gzip: 1.12 kB
18
- ℹ dist/billing/billing.event.js  3.34 kB │ gzip: 0.70 kB
19
- ℹ dist/saas-boilerplate.feature.js  3.03 kB │ gzip: 0.68 kB
18
+ ℹ dist/billing/billing.event.js  3.36 kB │ gzip: 0.71 kB
19
+ ℹ dist/saas-boilerplate.feature.js  3.26 kB │ gzip: 0.69 kB
20
20
  ℹ dist/shared/mock-data.js  2.89 kB │ gzip: 0.98 kB
21
21
  ℹ dist/project/project.handler.js  2.61 kB │ gzip: 0.89 kB
22
22
  ℹ dist/project/project.entity.js  2.37 kB │ gzip: 0.84 kB
23
23
  ℹ dist/settings/settings.entity.js  2.14 kB │ gzip: 0.80 kB
24
24
  ℹ dist/billing/index.js  1.68 kB │ gzip: 0.39 kB
25
25
  ℹ dist/project/index.js  1.67 kB │ gzip: 0.37 kB
26
- ℹ dist/project/project.presentation.js  1.59 kB │ gzip: 0.61 kB
27
- ℹ dist/billing/billing.presentation.js  1.49 kB │ gzip: 0.56 kB
26
+ ℹ dist/project/project.presentation.js  1.60 kB │ gzip: 0.61 kB
27
+ ℹ dist/billing/billing.presentation.js  1.50 kB │ gzip: 0.56 kB
28
28
  ℹ dist/billing/billing.handler.js  1.45 kB │ gzip: 0.58 kB
29
- ℹ dist/dashboard/dashboard.presentation.js  1.44 kB │ gzip: 0.56 kB
30
- ℹ dist/example.js  0.93 kB │ gzip: 0.49 kB
29
+ ℹ dist/dashboard/dashboard.presentation.js  1.45 kB │ gzip: 0.56 kB
30
+ ℹ dist/example.js  1.04 kB │ gzip: 0.54 kB
31
31
  ℹ dist/presentations/index.js  0.86 kB │ gzip: 0.28 kB
32
32
  ℹ dist/billing/billing.enum.js  0.64 kB │ gzip: 0.36 kB
33
33
  ℹ dist/project/project.enum.js  0.61 kB │ gzip: 0.32 kB
@@ -36,26 +36,26 @@ $ tsdown
36
36
  ℹ dist/settings/index.js  0.20 kB │ gzip: 0.11 kB
37
37
  ℹ dist/dashboard/index.js  0.17 kB │ gzip: 0.10 kB
38
38
  ℹ dist/docs/index.js  0.04 kB │ gzip: 0.06 kB
39
- ℹ dist/project/project.operations.js.map  9.54 kB │ gzip: 1.99 kB
39
+ ℹ dist/project/project.operations.js.map  9.59 kB │ gzip: 1.99 kB
40
40
  ℹ dist/billing/billing.schema.js.map  6.87 kB │ gzip: 1.26 kB
41
41
  ℹ dist/project/project.schema.js.map  6.85 kB │ gzip: 1.13 kB
42
- ℹ dist/billing/billing.operations.js.map  6.79 kB │ gzip: 1.75 kB
42
+ ℹ dist/billing/billing.operations.js.map  6.82 kB │ gzip: 1.76 kB
43
43
  ℹ dist/billing/billing.entity.js.map  6.25 kB │ gzip: 1.77 kB
44
44
  ℹ dist/project/project.handler.js.map  5.62 kB │ gzip: 1.68 kB
45
- ℹ dist/project/project.event.js.map  5.51 kB │ gzip: 0.95 kB
46
- ℹ dist/saas-boilerplate.feature.js.map  5.26 kB │ gzip: 1.33 kB
47
- ℹ dist/billing/billing.event.js.map  4.91 kB │ gzip: 1.04 kB
45
+ ℹ dist/project/project.event.js.map  5.53 kB │ gzip: 0.95 kB
46
+ ℹ dist/saas-boilerplate.feature.js.map  5.52 kB │ gzip: 1.33 kB
47
+ ℹ dist/billing/billing.event.js.map  4.93 kB │ gzip: 1.05 kB
48
48
  ℹ dist/docs/saas-boilerplate.docblock.js.map  4.63 kB │ gzip: 1.68 kB
49
49
  ℹ dist/shared/mock-data.js.map  4.50 kB │ gzip: 1.31 kB
50
50
  ℹ dist/project/project.entity.js.map  3.94 kB │ gzip: 1.30 kB
51
51
  ℹ dist/billing/billing.handler.js.map  3.76 kB │ gzip: 1.29 kB
52
52
  ℹ dist/settings/settings.entity.js.map  3.62 kB │ gzip: 1.22 kB
53
53
  ℹ dist/index.js.map  2.53 kB │ gzip: 0.86 kB
54
- ℹ dist/project/project.presentation.js.map  2.50 kB │ gzip: 0.85 kB
55
- ℹ dist/billing/billing.presentation.js.map  2.39 kB │ gzip: 0.78 kB
56
- ℹ dist/dashboard/dashboard.presentation.js.map  2.33 kB │ gzip: 0.79 kB
54
+ ℹ dist/project/project.presentation.js.map  2.51 kB │ gzip: 0.86 kB
55
+ ℹ dist/billing/billing.presentation.js.map  2.40 kB │ gzip: 0.79 kB
56
+ ℹ dist/dashboard/dashboard.presentation.js.map  2.35 kB │ gzip: 0.79 kB
57
+ ℹ dist/example.js.map  1.63 kB │ gzip: 0.79 kB
57
58
  ℹ dist/project/project.operations.d.ts.map  1.37 kB │ gzip: 0.39 kB
58
- ℹ dist/example.js.map  1.35 kB │ gzip: 0.68 kB
59
59
  ℹ dist/presentations/index.js.map  1.14 kB │ gzip: 0.45 kB
60
60
  ℹ dist/billing/billing.schema.d.ts.map  1.07 kB │ gzip: 0.41 kB
61
61
  ℹ dist/project/project.schema.d.ts.map  1.03 kB │ gzip: 0.38 kB
@@ -79,8 +79,8 @@ $ tsdown
79
79
  ℹ dist/settings/settings.enum.d.ts.map  0.18 kB │ gzip: 0.15 kB
80
80
  ℹ dist/index.d.ts.map  0.17 kB │ gzip: 0.13 kB
81
81
  ℹ dist/saas-boilerplate.feature.d.ts.map  0.17 kB │ gzip: 0.13 kB
82
- ℹ dist/example.d.ts.map  0.14 kB │ gzip: 0.13 kB
83
82
  ℹ dist/presentations/index.d.ts.map  0.14 kB │ gzip: 0.13 kB
83
+ ℹ dist/example.d.ts.map  0.12 kB │ gzip: 0.12 kB
84
84
  ℹ dist/project/project.operations.d.ts 11.81 kB │ gzip: 0.87 kB
85
85
  ℹ dist/project/project.schema.d.ts  6.56 kB │ gzip: 0.76 kB
86
86
  ℹ dist/billing/billing.schema.d.ts  5.72 kB │ gzip: 0.79 kB
@@ -96,19 +96,19 @@ $ tsdown
96
96
  ℹ dist/project/project.entity.d.ts  1.79 kB │ gzip: 0.42 kB
97
97
  ℹ dist/settings/settings.entity.d.ts  1.71 kB │ gzip: 0.37 kB
98
98
  ℹ dist/shared/mock-data.d.ts  1.68 kB │ gzip: 0.50 kB
99
- ℹ dist/example.d.ts  1.18 kB │ gzip: 0.48 kB
100
99
  ℹ dist/presentations/index.d.ts  0.90 kB │ gzip: 0.28 kB
101
100
  ℹ dist/project/project.enum.d.ts  0.63 kB │ gzip: 0.30 kB
102
- ℹ dist/billing/billing.enum.d.ts  0.63 kB │ gzip: 0.29 kB
101
+ ℹ dist/billing/billing.enum.d.ts  0.63 kB │ gzip: 0.30 kB
103
102
  ℹ dist/handlers/index.d.ts  0.58 kB │ gzip: 0.20 kB
104
103
  ℹ dist/dashboard/dashboard.presentation.d.ts  0.47 kB │ gzip: 0.23 kB
105
104
  ℹ dist/project/project.presentation.d.ts  0.46 kB │ gzip: 0.22 kB
106
105
  ℹ dist/billing/billing.presentation.d.ts  0.46 kB │ gzip: 0.22 kB
107
106
  ℹ dist/saas-boilerplate.feature.d.ts  0.41 kB │ gzip: 0.25 kB
108
107
  ℹ dist/settings/settings.enum.d.ts  0.31 kB │ gzip: 0.20 kB
108
+ ℹ dist/example.d.ts  0.20 kB │ gzip: 0.16 kB
109
109
  ℹ dist/settings/index.d.ts  0.19 kB │ gzip: 0.11 kB
110
110
  ℹ dist/dashboard/index.d.ts  0.16 kB │ gzip: 0.10 kB
111
111
  ℹ dist/docs/index.d.ts  0.01 kB │ gzip: 0.03 kB
112
112
  ℹ dist/docs/saas-boilerplate.docblock.d.ts  0.01 kB │ gzip: 0.03 kB
113
- ℹ 103 files, total: 230.63 kB
114
- ✔ Build complete in 25443ms
113
+ ℹ 103 files, total: 230.81 kB
114
+ ✔ Build complete in 27280ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # @contractspec/example.saas-boilerplate
2
2
 
3
+ ## 1.45.1
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: improve app config and examples contracts
8
+ - Updated dependencies
9
+ - @contractspec/module.notifications@1.45.1
10
+ - @contractspec/module.audit-trail@1.45.1
11
+ - @contractspec/lib.identity-rbac@1.45.1
12
+ - @contractspec/lib.contracts@1.45.1
13
+ - @contractspec/lib.schema@1.45.1
14
+ - @contractspec/lib.jobs@1.45.1
15
+ - @contractspec/lib.bus@1.45.1
16
+
17
+ ## 1.45.0
18
+
19
+ ### Minor Changes
20
+
21
+ - e73ca1d: feat: improve app config and examples contracts
22
+ feat: Contract layers support (features, examples, app-configs)
23
+
24
+ ### New CLI Commands
25
+ - `contractspec list layers` - List all contract layers with filtering
26
+
27
+ ### Enhanced Commands
28
+ - `contractspec ci` - New `layers` check category validates features/examples/config
29
+ - `contractspec doctor` - New `layers` health checks
30
+ - `contractspec integrity` - Now shows layer statistics
31
+
32
+ ### New APIs
33
+ - `discoverLayers()` - Scan workspace for all layer files
34
+ - `scanExampleSource()` - Parse ExampleSpec from source code
35
+ - `isExampleFile()` - Check if file is an example spec
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [e73ca1d]
40
+ - @contractspec/module.notifications@1.45.0
41
+ - @contractspec/module.audit-trail@1.45.0
42
+ - @contractspec/lib.identity-rbac@1.45.0
43
+ - @contractspec/lib.contracts@1.45.0
44
+ - @contractspec/lib.schema@1.45.0
45
+ - @contractspec/lib.jobs@1.45.0
46
+ - @contractspec/lib.bus@1.45.0
47
+
3
48
  ## 1.44.1
4
49
 
5
50
  ### Patch Changes
@@ -99,7 +99,7 @@ const SubscriptionChangedPayload = defineSchemaModel({
99
99
  const UsageRecordedEvent = defineEvent({
100
100
  meta: {
101
101
  key: "billing.usage.recorded",
102
- version: 1,
102
+ version: "1.0.0",
103
103
  description: "Feature usage has been recorded.",
104
104
  stability: "stable",
105
105
  owners: ["@saas-team"],
@@ -117,7 +117,7 @@ const UsageRecordedEvent = defineEvent({
117
117
  const UsageLimitReachedEvent = defineEvent({
118
118
  meta: {
119
119
  key: "billing.limit.reached",
120
- version: 1,
120
+ version: "1.0.0",
121
121
  description: "Usage limit has been reached for a feature.",
122
122
  stability: "stable",
123
123
  owners: ["@saas-team"],
@@ -135,7 +135,7 @@ const UsageLimitReachedEvent = defineEvent({
135
135
  const SubscriptionChangedEvent = defineEvent({
136
136
  meta: {
137
137
  key: "billing.subscription.changed",
138
- version: 1,
138
+ version: "1.0.0",
139
139
  description: "Subscription status has changed.",
140
140
  stability: "stable",
141
141
  owners: ["@saas-team"],
@@ -1 +1 @@
1
- {"version":3,"file":"billing.event.js","names":[],"sources":["../../src/billing/billing.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n/**\n * Payload when feature usage is recorded.\n */\nconst UsageRecordedPayload = defineSchemaModel({\n name: 'UsageRecordedPayload',\n description: 'Payload when feature usage is recorded',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quantity: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n billingPeriod: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n recordedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when usage limit is reached.\n */\nconst UsageLimitReachedPayload = defineSchemaModel({\n name: 'UsageLimitReachedPayload',\n description: 'Payload when usage limit is reached',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n limit: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n currentUsage: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n reachedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when subscription status changes.\n */\nconst SubscriptionChangedPayload = defineSchemaModel({\n name: 'SubscriptionChangedPayload',\n description: 'Payload when subscription status changes',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n previousPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n newPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousStatus: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n newStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Event: Feature usage has been recorded.\n */\nexport const UsageRecordedEvent = defineEvent({\n meta: {\n key: 'billing.usage.recorded',\n version: 1,\n description: 'Feature usage has been recorded.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'usage', 'recorded'],\n },\n payload: UsageRecordedPayload,\n});\n\n/**\n * Event: Usage limit has been reached for a feature.\n */\nexport const UsageLimitReachedEvent = defineEvent({\n meta: {\n key: 'billing.limit.reached',\n version: 1,\n description: 'Usage limit has been reached for a feature.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'limit', 'reached'],\n },\n payload: UsageLimitReachedPayload,\n});\n\n/**\n * Event: Subscription status has changed.\n */\nexport const SubscriptionChangedEvent = defineEvent({\n meta: {\n key: 'billing.subscription.changed',\n version: 1,\n description: 'Subscription status has changed.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'subscription', 'changed'],\n },\n payload: SubscriptionChangedPayload,\n});\n"],"mappings":";;;;;;;AAMA,MAAM,uBAAuB,kBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,UAAU;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACpE,eAAe;GACb,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,YAAY;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EACnE;CACF,CAAC;;;;AAKF,MAAM,2BAA2B,kBAAkB;CACjD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,OAAO;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACjE,cAAc;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,6BAA6B,kBAAkB;CACnD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAa,qBAAqB,YAAY;CAC5C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAW;EACvC;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,yBAAyB,YAAY;CAChD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAU;EACtC;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,2BAA2B,YAAY;CAClD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAgB;GAAU;EAC7C;CACD,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"billing.event.js","names":[],"sources":["../../src/billing/billing.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n/**\n * Payload when feature usage is recorded.\n */\nconst UsageRecordedPayload = defineSchemaModel({\n name: 'UsageRecordedPayload',\n description: 'Payload when feature usage is recorded',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quantity: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n billingPeriod: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n recordedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when usage limit is reached.\n */\nconst UsageLimitReachedPayload = defineSchemaModel({\n name: 'UsageLimitReachedPayload',\n description: 'Payload when usage limit is reached',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n feature: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n limit: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n currentUsage: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n reachedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when subscription status changes.\n */\nconst SubscriptionChangedPayload = defineSchemaModel({\n name: 'SubscriptionChangedPayload',\n description: 'Payload when subscription status changes',\n fields: {\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n previousPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n newPlan: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousStatus: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n newStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Event: Feature usage has been recorded.\n */\nexport const UsageRecordedEvent = defineEvent({\n meta: {\n key: 'billing.usage.recorded',\n version: '1.0.0',\n description: 'Feature usage has been recorded.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'usage', 'recorded'],\n },\n payload: UsageRecordedPayload,\n});\n\n/**\n * Event: Usage limit has been reached for a feature.\n */\nexport const UsageLimitReachedEvent = defineEvent({\n meta: {\n key: 'billing.limit.reached',\n version: '1.0.0',\n description: 'Usage limit has been reached for a feature.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'limit', 'reached'],\n },\n payload: UsageLimitReachedPayload,\n});\n\n/**\n * Event: Subscription status has changed.\n */\nexport const SubscriptionChangedEvent = defineEvent({\n meta: {\n key: 'billing.subscription.changed',\n version: '1.0.0',\n description: 'Subscription status has changed.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['billing', 'subscription', 'changed'],\n },\n payload: SubscriptionChangedPayload,\n});\n"],"mappings":";;;;;;;AAMA,MAAM,uBAAuB,kBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,UAAU;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACpE,eAAe;GACb,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,YAAY;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EACnE;CACF,CAAC;;;;AAKF,MAAM,2BAA2B,kBAAkB;CACjD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,OAAO;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACjE,cAAc;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,6BAA6B,kBAAkB;CACnD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAa,qBAAqB,YAAY;CAC5C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAW;EACvC;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,yBAAyB,YAAY;CAChD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAU;EACtC;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,2BAA2B,YAAY;CAClD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAgB;GAAU;EAC7C;CACD,SAAS;CACV,CAAC"}
@@ -1,100 +1,100 @@
1
- import * as _contractspec_lib_schema329 from "@contractspec/lib.schema";
1
+ import * as _contractspec_lib_schema306 from "@contractspec/lib.schema";
2
2
  import * as _contractspec_lib_contracts11 from "@contractspec/lib.contracts";
3
3
 
4
4
  //#region src/billing/billing.operations.d.ts
5
5
  /**
6
6
  * Get subscription status.
7
7
  */
8
- declare const GetSubscriptionContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema329.AnySchemaModel, _contractspec_lib_schema329.SchemaModel<{
8
+ declare const GetSubscriptionContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema306.AnySchemaModel, _contractspec_lib_schema306.SchemaModel<{
9
9
  id: {
10
- type: _contractspec_lib_schema329.FieldType<string, string>;
10
+ type: _contractspec_lib_schema306.FieldType<string, string>;
11
11
  isOptional: false;
12
12
  };
13
13
  organizationId: {
14
- type: _contractspec_lib_schema329.FieldType<string, string>;
14
+ type: _contractspec_lib_schema306.FieldType<string, string>;
15
15
  isOptional: false;
16
16
  };
17
17
  planId: {
18
- type: _contractspec_lib_schema329.FieldType<string, string>;
18
+ type: _contractspec_lib_schema306.FieldType<string, string>;
19
19
  isOptional: false;
20
20
  };
21
21
  planName: {
22
- type: _contractspec_lib_schema329.FieldType<string, string>;
22
+ type: _contractspec_lib_schema306.FieldType<string, string>;
23
23
  isOptional: false;
24
24
  };
25
25
  status: {
26
- type: _contractspec_lib_schema329.EnumType<[string, string, string, string, string]>;
26
+ type: _contractspec_lib_schema306.EnumType<[string, string, string, string, string]>;
27
27
  isOptional: false;
28
28
  };
29
29
  currentPeriodStart: {
30
- type: _contractspec_lib_schema329.FieldType<Date, string>;
30
+ type: _contractspec_lib_schema306.FieldType<Date, string>;
31
31
  isOptional: false;
32
32
  };
33
33
  currentPeriodEnd: {
34
- type: _contractspec_lib_schema329.FieldType<Date, string>;
34
+ type: _contractspec_lib_schema306.FieldType<Date, string>;
35
35
  isOptional: false;
36
36
  };
37
37
  trialEndsAt: {
38
- type: _contractspec_lib_schema329.FieldType<Date, string>;
38
+ type: _contractspec_lib_schema306.FieldType<Date, string>;
39
39
  isOptional: true;
40
40
  };
41
41
  cancelAtPeriodEnd: {
42
- type: _contractspec_lib_schema329.FieldType<boolean, boolean>;
42
+ type: _contractspec_lib_schema306.FieldType<boolean, boolean>;
43
43
  isOptional: false;
44
44
  };
45
45
  }>, undefined>;
46
46
  /**
47
47
  * Record feature usage.
48
48
  */
49
- declare const RecordUsageContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema329.SchemaModel<{
49
+ declare const RecordUsageContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema306.SchemaModel<{
50
50
  feature: {
51
- type: _contractspec_lib_schema329.FieldType<string, string>;
51
+ type: _contractspec_lib_schema306.FieldType<string, string>;
52
52
  isOptional: false;
53
53
  };
54
54
  quantity: {
55
- type: _contractspec_lib_schema329.FieldType<number, number>;
55
+ type: _contractspec_lib_schema306.FieldType<number, number>;
56
56
  isOptional: false;
57
57
  };
58
58
  sourceId: {
59
- type: _contractspec_lib_schema329.FieldType<string, string>;
59
+ type: _contractspec_lib_schema306.FieldType<string, string>;
60
60
  isOptional: true;
61
61
  };
62
62
  sourceType: {
63
- type: _contractspec_lib_schema329.FieldType<string, string>;
63
+ type: _contractspec_lib_schema306.FieldType<string, string>;
64
64
  isOptional: true;
65
65
  };
66
66
  metadata: {
67
- type: _contractspec_lib_schema329.FieldType<Record<string, unknown>, Record<string, unknown>>;
67
+ type: _contractspec_lib_schema306.FieldType<Record<string, unknown>, Record<string, unknown>>;
68
68
  isOptional: true;
69
69
  };
70
- }>, _contractspec_lib_schema329.SchemaModel<{
70
+ }>, _contractspec_lib_schema306.SchemaModel<{
71
71
  recorded: {
72
- type: _contractspec_lib_schema329.FieldType<boolean, boolean>;
72
+ type: _contractspec_lib_schema306.FieldType<boolean, boolean>;
73
73
  isOptional: false;
74
74
  };
75
75
  currentUsage: {
76
- type: _contractspec_lib_schema329.FieldType<number, number>;
76
+ type: _contractspec_lib_schema306.FieldType<number, number>;
77
77
  isOptional: false;
78
78
  };
79
79
  limit: {
80
- type: _contractspec_lib_schema329.FieldType<number, number>;
80
+ type: _contractspec_lib_schema306.FieldType<number, number>;
81
81
  isOptional: true;
82
82
  };
83
83
  limitReached: {
84
- type: _contractspec_lib_schema329.FieldType<boolean, boolean>;
84
+ type: _contractspec_lib_schema306.FieldType<boolean, boolean>;
85
85
  isOptional: false;
86
86
  };
87
87
  }>, {
88
88
  key: string;
89
- version: number;
89
+ version: string;
90
90
  when: string;
91
- payload: _contractspec_lib_schema329.SchemaModel<{
91
+ payload: _contractspec_lib_schema306.SchemaModel<{
92
92
  feature: {
93
- type: _contractspec_lib_schema329.FieldType<string, string>;
93
+ type: _contractspec_lib_schema306.FieldType<string, string>;
94
94
  isOptional: false;
95
95
  };
96
96
  quantity: {
97
- type: _contractspec_lib_schema329.FieldType<number, number>;
97
+ type: _contractspec_lib_schema306.FieldType<number, number>;
98
98
  isOptional: false;
99
99
  };
100
100
  }>;
@@ -102,36 +102,36 @@ declare const RecordUsageContract: _contractspec_lib_contracts11.OperationSpec<_
102
102
  /**
103
103
  * Get usage summary.
104
104
  */
105
- declare const GetUsageSummaryContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema329.SchemaModel<{
105
+ declare const GetUsageSummaryContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema306.SchemaModel<{
106
106
  billingPeriod: {
107
- type: _contractspec_lib_schema329.FieldType<string, string>;
107
+ type: _contractspec_lib_schema306.FieldType<string, string>;
108
108
  isOptional: true;
109
109
  };
110
- }>, _contractspec_lib_schema329.SchemaModel<{
110
+ }>, _contractspec_lib_schema306.SchemaModel<{
111
111
  billingPeriod: {
112
- type: _contractspec_lib_schema329.FieldType<string, string>;
112
+ type: _contractspec_lib_schema306.FieldType<string, string>;
113
113
  isOptional: false;
114
114
  };
115
115
  usage: {
116
- type: _contractspec_lib_schema329.SchemaModel<{
116
+ type: _contractspec_lib_schema306.SchemaModel<{
117
117
  feature: {
118
- type: _contractspec_lib_schema329.FieldType<string, string>;
118
+ type: _contractspec_lib_schema306.FieldType<string, string>;
119
119
  isOptional: false;
120
120
  };
121
121
  used: {
122
- type: _contractspec_lib_schema329.FieldType<number, number>;
122
+ type: _contractspec_lib_schema306.FieldType<number, number>;
123
123
  isOptional: false;
124
124
  };
125
125
  limit: {
126
- type: _contractspec_lib_schema329.FieldType<number, number>;
126
+ type: _contractspec_lib_schema306.FieldType<number, number>;
127
127
  isOptional: true;
128
128
  };
129
129
  unit: {
130
- type: _contractspec_lib_schema329.FieldType<string, string>;
130
+ type: _contractspec_lib_schema306.FieldType<string, string>;
131
131
  isOptional: true;
132
132
  };
133
133
  percentage: {
134
- type: _contractspec_lib_schema329.FieldType<number, number>;
134
+ type: _contractspec_lib_schema306.FieldType<number, number>;
135
135
  isOptional: true;
136
136
  };
137
137
  }>;
@@ -142,22 +142,22 @@ declare const GetUsageSummaryContract: _contractspec_lib_contracts11.OperationSp
142
142
  /**
143
143
  * Check feature access.
144
144
  */
145
- declare const CheckFeatureAccessContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema329.SchemaModel<{
145
+ declare const CheckFeatureAccessContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema306.SchemaModel<{
146
146
  feature: {
147
- type: _contractspec_lib_schema329.FieldType<string, string>;
147
+ type: _contractspec_lib_schema306.FieldType<string, string>;
148
148
  isOptional: false;
149
149
  };
150
- }>, _contractspec_lib_schema329.SchemaModel<{
150
+ }>, _contractspec_lib_schema306.SchemaModel<{
151
151
  hasAccess: {
152
- type: _contractspec_lib_schema329.FieldType<boolean, boolean>;
152
+ type: _contractspec_lib_schema306.FieldType<boolean, boolean>;
153
153
  isOptional: false;
154
154
  };
155
155
  reason: {
156
- type: _contractspec_lib_schema329.EnumType<[string, string, string, string]>;
156
+ type: _contractspec_lib_schema306.EnumType<[string, string, string, string]>;
157
157
  isOptional: true;
158
158
  };
159
159
  upgradeUrl: {
160
- type: _contractspec_lib_schema329.FieldType<string, string>;
160
+ type: _contractspec_lib_schema306.FieldType<string, string>;
161
161
  isOptional: true;
162
162
  };
163
163
  }>, undefined>;
@@ -9,7 +9,7 @@ const OWNERS = ["@example.saas-boilerplate"];
9
9
  const GetSubscriptionContract = defineQuery({
10
10
  meta: {
11
11
  key: "saas.billing.subscription.get",
12
- version: 1,
12
+ version: "1.0.0",
13
13
  stability: "stable",
14
14
  owners: [...OWNERS],
15
15
  tags: [
@@ -50,7 +50,7 @@ const GetSubscriptionContract = defineQuery({
50
50
  const RecordUsageContract = defineCommand({
51
51
  meta: {
52
52
  key: "saas.billing.usage.record",
53
- version: 1,
53
+ version: "1.0.0",
54
54
  stability: "stable",
55
55
  owners: [...OWNERS],
56
56
  tags: [
@@ -69,7 +69,7 @@ const RecordUsageContract = defineCommand({
69
69
  policy: { auth: "user" },
70
70
  sideEffects: { emits: [{
71
71
  key: "billing.usage.recorded",
72
- version: 1,
72
+ version: "1.0.0",
73
73
  when: "Usage is recorded",
74
74
  payload: UsageRecordedPayloadModel
75
75
  }] },
@@ -100,7 +100,7 @@ const RecordUsageContract = defineCommand({
100
100
  const GetUsageSummaryContract = defineQuery({
101
101
  meta: {
102
102
  key: "saas.billing.usage.summary",
103
- version: 1,
103
+ version: "1.0.0",
104
104
  stability: "stable",
105
105
  owners: [...OWNERS],
106
106
  tags: [
@@ -141,7 +141,7 @@ const GetUsageSummaryContract = defineQuery({
141
141
  const CheckFeatureAccessContract = defineQuery({
142
142
  meta: {
143
143
  key: "saas.billing.feature.check",
144
- version: 1,
144
+ version: "1.0.0",
145
145
  stability: "stable",
146
146
  owners: [...OWNERS],
147
147
  tags: [
@@ -1 +1 @@
1
- {"version":3,"file":"billing.operations.js","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":["import { defineCommand, defineQuery } from '@contractspec/lib.contracts';\nimport {\n CheckFeatureAccessInputModel,\n CheckFeatureAccessOutputModel,\n GetUsageSummaryInputModel,\n GetUsageSummaryOutputModel,\n RecordUsageInputModel,\n RecordUsageOutputModel,\n SubscriptionModel,\n UsageRecordedPayloadModel,\n} from './billing.schema';\n\nconst OWNERS = ['@example.saas-boilerplate'] as const;\n\n/**\n * Get subscription status.\n */\nexport const GetSubscriptionContract = defineQuery({\n meta: {\n key: 'saas.billing.subscription.get',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'subscription'],\n description: 'Get organization subscription status.',\n goal: 'Show current plan and billing status.',\n context: 'Billing page, plan upgrade prompts.',\n },\n io: {\n input: null,\n output: SubscriptionModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-subscription-happy-path',\n given: ['Organization has active subscription'],\n when: ['User requests subscription status'],\n then: ['Subscription details are returned'],\n },\n ],\n examples: [\n {\n key: 'get-basic',\n input: null,\n output: {\n plan: 'pro',\n status: 'active',\n currentPeriodEnd: '2025-02-01T00:00:00Z',\n },\n },\n ],\n },\n});\n\n/**\n * Record feature usage.\n */\nexport const RecordUsageContract = defineCommand({\n meta: {\n key: 'saas.billing.usage.record',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Record usage of a metered feature.',\n goal: 'Track feature usage for billing.',\n context: 'Called by services when metered features are used.',\n },\n io: {\n input: RecordUsageInputModel,\n output: RecordUsageOutputModel,\n },\n policy: {\n auth: 'user',\n },\n sideEffects: {\n emits: [\n {\n key: 'billing.usage.recorded',\n version: 1,\n when: 'Usage is recorded',\n payload: UsageRecordedPayloadModel,\n },\n ],\n },\n acceptance: {\n scenarios: [\n {\n key: 'record-usage-happy-path',\n given: ['Organization exists'],\n when: ['System records feature usage'],\n then: ['Usage is recorded'],\n },\n ],\n examples: [\n {\n key: 'record-api-call',\n input: { feature: 'api_calls', quantity: 1, idempotencyKey: 'abc-123' },\n output: { recorded: true, currentUsage: 100 },\n },\n ],\n },\n});\n\n/**\n * Get usage summary.\n */\nexport const GetUsageSummaryContract = defineQuery({\n meta: {\n key: 'saas.billing.usage.summary',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Get usage summary for the current billing period.',\n goal: 'Show usage vs limits.',\n context: 'Billing page, usage dashboards.',\n },\n io: {\n input: GetUsageSummaryInputModel,\n output: GetUsageSummaryOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-usage-happy-path',\n given: ['Organization has usage history'],\n when: ['User requests usage summary'],\n then: ['Usage metrics are returned'],\n },\n ],\n examples: [\n {\n key: 'get-current-usage',\n input: { period: 'current' },\n output: { features: [{ name: 'api_calls', used: 100, limit: 1000 }] },\n },\n ],\n },\n});\n\n/**\n * Check feature access.\n */\nexport const CheckFeatureAccessContract = defineQuery({\n meta: {\n key: 'saas.billing.feature.check',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'feature'],\n description: 'Check if organization has access to a feature.',\n goal: 'Gate features based on plan/usage.',\n context: 'Feature access checks, upgrade prompts.',\n },\n io: {\n input: CheckFeatureAccessInputModel,\n output: CheckFeatureAccessOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'check-access-granted',\n given: ['Organization is on Pro plan'],\n when: ['User checks access to Pro feature'],\n then: ['Access is granted'],\n },\n ],\n examples: [\n {\n key: 'check-advanced-reports',\n input: { feature: 'advanced_reports' },\n output: { hasAccess: true, reason: 'Included in Pro plan' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAYA,MAAM,SAAS,CAAC,4BAA4B;;;;AAK5C,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAe;EACzC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,uCAAuC;GAC/C,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oCAAoC;GAC5C,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;GACP,QAAQ;IACN,MAAM;IACN,QAAQ;IACR,kBAAkB;IACnB;GACF,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,cAAc;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,aAAa,EACX,OAAO,CACL;EACE,KAAK;EACL,SAAS;EACT,MAAM;EACN,SAAS;EACV,CACF,EACF;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,sBAAsB;GAC9B,MAAM,CAAC,+BAA+B;GACtC,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IAAE,SAAS;IAAa,UAAU;IAAG,gBAAgB;IAAW;GACvE,QAAQ;IAAE,UAAU;IAAM,cAAc;IAAK;GAC9C,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,iCAAiC;GACzC,MAAM,CAAC,8BAA8B;GACrC,MAAM,CAAC,6BAA6B;GACrC,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,QAAQ,WAAW;GAC5B,QAAQ,EAAE,UAAU,CAAC;IAAE,MAAM;IAAa,MAAM;IAAK,OAAO;IAAM,CAAC,EAAE;GACtE,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,YAAY;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAU;EACpC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,8BAA8B;GACtC,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,SAAS,oBAAoB;GACtC,QAAQ;IAAE,WAAW;IAAM,QAAQ;IAAwB;GAC5D,CACF;EACF;CACF,CAAC"}
1
+ {"version":3,"file":"billing.operations.js","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":["import { defineCommand, defineQuery } from '@contractspec/lib.contracts';\nimport {\n CheckFeatureAccessInputModel,\n CheckFeatureAccessOutputModel,\n GetUsageSummaryInputModel,\n GetUsageSummaryOutputModel,\n RecordUsageInputModel,\n RecordUsageOutputModel,\n SubscriptionModel,\n UsageRecordedPayloadModel,\n} from './billing.schema';\n\nconst OWNERS = ['@example.saas-boilerplate'] as const;\n\n/**\n * Get subscription status.\n */\nexport const GetSubscriptionContract = defineQuery({\n meta: {\n key: 'saas.billing.subscription.get',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'subscription'],\n description: 'Get organization subscription status.',\n goal: 'Show current plan and billing status.',\n context: 'Billing page, plan upgrade prompts.',\n },\n io: {\n input: null,\n output: SubscriptionModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-subscription-happy-path',\n given: ['Organization has active subscription'],\n when: ['User requests subscription status'],\n then: ['Subscription details are returned'],\n },\n ],\n examples: [\n {\n key: 'get-basic',\n input: null,\n output: {\n plan: 'pro',\n status: 'active',\n currentPeriodEnd: '2025-02-01T00:00:00Z',\n },\n },\n ],\n },\n});\n\n/**\n * Record feature usage.\n */\nexport const RecordUsageContract = defineCommand({\n meta: {\n key: 'saas.billing.usage.record',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Record usage of a metered feature.',\n goal: 'Track feature usage for billing.',\n context: 'Called by services when metered features are used.',\n },\n io: {\n input: RecordUsageInputModel,\n output: RecordUsageOutputModel,\n },\n policy: {\n auth: 'user',\n },\n sideEffects: {\n emits: [\n {\n key: 'billing.usage.recorded',\n version: '1.0.0',\n when: 'Usage is recorded',\n payload: UsageRecordedPayloadModel,\n },\n ],\n },\n acceptance: {\n scenarios: [\n {\n key: 'record-usage-happy-path',\n given: ['Organization exists'],\n when: ['System records feature usage'],\n then: ['Usage is recorded'],\n },\n ],\n examples: [\n {\n key: 'record-api-call',\n input: { feature: 'api_calls', quantity: 1, idempotencyKey: 'abc-123' },\n output: { recorded: true, currentUsage: 100 },\n },\n ],\n },\n});\n\n/**\n * Get usage summary.\n */\nexport const GetUsageSummaryContract = defineQuery({\n meta: {\n key: 'saas.billing.usage.summary',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Get usage summary for the current billing period.',\n goal: 'Show usage vs limits.',\n context: 'Billing page, usage dashboards.',\n },\n io: {\n input: GetUsageSummaryInputModel,\n output: GetUsageSummaryOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-usage-happy-path',\n given: ['Organization has usage history'],\n when: ['User requests usage summary'],\n then: ['Usage metrics are returned'],\n },\n ],\n examples: [\n {\n key: 'get-current-usage',\n input: { period: 'current' },\n output: { features: [{ name: 'api_calls', used: 100, limit: 1000 }] },\n },\n ],\n },\n});\n\n/**\n * Check feature access.\n */\nexport const CheckFeatureAccessContract = defineQuery({\n meta: {\n key: 'saas.billing.feature.check',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'feature'],\n description: 'Check if organization has access to a feature.',\n goal: 'Gate features based on plan/usage.',\n context: 'Feature access checks, upgrade prompts.',\n },\n io: {\n input: CheckFeatureAccessInputModel,\n output: CheckFeatureAccessOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'check-access-granted',\n given: ['Organization is on Pro plan'],\n when: ['User checks access to Pro feature'],\n then: ['Access is granted'],\n },\n ],\n examples: [\n {\n key: 'check-advanced-reports',\n input: { feature: 'advanced_reports' },\n output: { hasAccess: true, reason: 'Included in Pro plan' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAYA,MAAM,SAAS,CAAC,4BAA4B;;;;AAK5C,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAe;EACzC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,uCAAuC;GAC/C,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oCAAoC;GAC5C,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;GACP,QAAQ;IACN,MAAM;IACN,QAAQ;IACR,kBAAkB;IACnB;GACF,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,cAAc;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,aAAa,EACX,OAAO,CACL;EACE,KAAK;EACL,SAAS;EACT,MAAM;EACN,SAAS;EACV,CACF,EACF;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,sBAAsB;GAC9B,MAAM,CAAC,+BAA+B;GACtC,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IAAE,SAAS;IAAa,UAAU;IAAG,gBAAgB;IAAW;GACvE,QAAQ;IAAE,UAAU;IAAM,cAAc;IAAK;GAC9C,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,iCAAiC;GACzC,MAAM,CAAC,8BAA8B;GACrC,MAAM,CAAC,6BAA6B;GACrC,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,QAAQ,WAAW;GAC5B,QAAQ,EAAE,UAAU,CAAC;IAAE,MAAM;IAAa,MAAM;IAAK,OAAO;IAAM,CAAC,EAAE;GACtE,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,YAAY;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAU;EACpC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,8BAA8B;GACtC,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,SAAS,oBAAoB;GACtC,QAAQ;IAAE,WAAW;IAAM,QAAQ;IAAwB;GAC5D,CACF;EACF;CACF,CAAC"}