@frigear-nu/subscriptions 0.0.9 → 0.1.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 (36) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +9 -4
  3. package/dist/runtime/app/components/SubscriptionPlans.d.vue.ts +4 -4
  4. package/dist/runtime/app/components/SubscriptionPlans.vue +4 -1
  5. package/dist/runtime/app/components/SubscriptionPlans.vue.d.ts +4 -4
  6. package/dist/runtime/app/components/SubscriptionStatus.d.vue.ts +7 -2
  7. package/dist/runtime/app/components/SubscriptionStatus.vue +25 -22
  8. package/dist/runtime/app/components/SubscriptionStatus.vue.d.ts +7 -2
  9. package/dist/runtime/app/components/Users/Admin/Membership.d.vue.ts +3 -3
  10. package/dist/runtime/app/components/Users/Admin/Membership.vue +90 -94
  11. package/dist/runtime/app/components/Users/Admin/Membership.vue.d.ts +3 -3
  12. package/dist/runtime/app/composables/useSubscription.d.ts +8 -1
  13. package/dist/runtime/app/pages/cancel.d.vue.ts +1 -1
  14. package/dist/runtime/app/pages/cancel.vue +7 -15
  15. package/dist/runtime/app/pages/cancel.vue.d.ts +1 -1
  16. package/dist/runtime/app/pages/membership.d.vue.ts +1 -1
  17. package/dist/runtime/app/pages/membership.vue +21 -23
  18. package/dist/runtime/app/pages/membership.vue.d.ts +1 -1
  19. package/dist/runtime/app/pages/success.d.vue.ts +1 -1
  20. package/dist/runtime/app/pages/success.vue +7 -17
  21. package/dist/runtime/app/pages/success.vue.d.ts +1 -1
  22. package/dist/runtime/app/tabs/Membership.d.vue.ts +3 -3
  23. package/dist/runtime/app/tabs/Membership.vue +26 -21
  24. package/dist/runtime/app/tabs/Membership.vue.d.ts +3 -3
  25. package/dist/runtime/app/widgets/AdminCurrentSubscription.d.vue.ts +1 -1
  26. package/dist/runtime/app/widgets/AdminCurrentSubscription.vue +9 -5
  27. package/dist/runtime/app/widgets/AdminCurrentSubscription.vue.d.ts +1 -1
  28. package/dist/runtime/app/widgets/MembershipSummary.d.vue.ts +3 -0
  29. package/dist/runtime/app/widgets/MembershipSummary.vue +36 -0
  30. package/dist/runtime/app/widgets/MembershipSummary.vue.d.ts +3 -0
  31. package/dist/runtime/i18n/lang/da.json +16 -4
  32. package/dist/runtime/i18n/lang/en.json +16 -4
  33. package/dist/runtime/menus.js +3 -5
  34. package/dist/runtime/server/db/schema.postgresql.d.ts +240 -0
  35. package/dist/runtime/server/db/schema.postgresql.js +22 -0
  36. package/package.json +18 -18
@@ -0,0 +1,240 @@
1
+ export declare const subscriptions: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "subscriptions";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "subscriptions";
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ userId: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "userId";
24
+ tableName: "subscriptions";
25
+ dataType: "number";
26
+ columnType: "PgInteger";
27
+ data: number;
28
+ driverParam: string | number;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: undefined;
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ planKey: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "planKey";
41
+ tableName: "subscriptions";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: false;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ priceId: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "priceId";
58
+ tableName: "subscriptions";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ status: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "status";
75
+ tableName: "subscriptions";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ cancelAtPeriodEnd: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "cancelAtPeriodEnd";
92
+ tableName: "subscriptions";
93
+ dataType: "boolean";
94
+ columnType: "PgBoolean";
95
+ data: boolean;
96
+ driverParam: boolean;
97
+ notNull: true;
98
+ hasDefault: true;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: undefined;
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ currentPeriodStart: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "currentPeriodStart";
109
+ tableName: "subscriptions";
110
+ dataType: "date";
111
+ columnType: "PgTimestamp";
112
+ data: Date;
113
+ driverParam: string;
114
+ notNull: false;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: undefined;
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ currentPeriodEnd: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "currentPeriodEnd";
126
+ tableName: "subscriptions";
127
+ dataType: "date";
128
+ columnType: "PgTimestamp";
129
+ data: Date;
130
+ driverParam: string;
131
+ notNull: false;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: undefined;
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ endedAt: import("drizzle-orm/pg-core").PgColumn<{
142
+ name: "endedAt";
143
+ tableName: "subscriptions";
144
+ dataType: "date";
145
+ columnType: "PgTimestamp";
146
+ data: Date;
147
+ driverParam: string;
148
+ notNull: false;
149
+ hasDefault: false;
150
+ isPrimaryKey: false;
151
+ isAutoincrement: false;
152
+ hasRuntimeDefault: false;
153
+ enumValues: undefined;
154
+ baseColumn: never;
155
+ identity: undefined;
156
+ generated: undefined;
157
+ }, {}, {}>;
158
+ source: import("drizzle-orm/pg-core").PgColumn<{
159
+ name: "source";
160
+ tableName: "subscriptions";
161
+ dataType: "string";
162
+ columnType: "PgText";
163
+ data: string;
164
+ driverParam: string;
165
+ notNull: true;
166
+ hasDefault: true;
167
+ isPrimaryKey: false;
168
+ isAutoincrement: false;
169
+ hasRuntimeDefault: false;
170
+ enumValues: [string, ...string[]];
171
+ baseColumn: never;
172
+ identity: undefined;
173
+ generated: undefined;
174
+ }, {}, {}>;
175
+ rawItems: import("drizzle-orm/pg-core").PgColumn<{
176
+ name: "rawItems";
177
+ tableName: "subscriptions";
178
+ dataType: "json";
179
+ columnType: "PgJsonb";
180
+ data: {
181
+ id: string;
182
+ priceId: string;
183
+ lookupKey: string | null;
184
+ quantity: number | null;
185
+ }[];
186
+ driverParam: unknown;
187
+ notNull: false;
188
+ hasDefault: false;
189
+ isPrimaryKey: false;
190
+ isAutoincrement: false;
191
+ hasRuntimeDefault: false;
192
+ enumValues: undefined;
193
+ baseColumn: never;
194
+ identity: undefined;
195
+ generated: undefined;
196
+ }, {}, {
197
+ $type: {
198
+ id: string;
199
+ priceId: string;
200
+ lookupKey: string | null;
201
+ quantity: number | null;
202
+ }[];
203
+ }>;
204
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
205
+ name: "createdAt";
206
+ tableName: "subscriptions";
207
+ dataType: "date";
208
+ columnType: "PgTimestamp";
209
+ data: Date;
210
+ driverParam: string;
211
+ notNull: true;
212
+ hasDefault: true;
213
+ isPrimaryKey: false;
214
+ isAutoincrement: false;
215
+ hasRuntimeDefault: true;
216
+ enumValues: undefined;
217
+ baseColumn: never;
218
+ identity: undefined;
219
+ generated: undefined;
220
+ }, {}, {}>;
221
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
222
+ name: "updatedAt";
223
+ tableName: "subscriptions";
224
+ dataType: "date";
225
+ columnType: "PgTimestamp";
226
+ data: Date;
227
+ driverParam: string;
228
+ notNull: true;
229
+ hasDefault: true;
230
+ isPrimaryKey: false;
231
+ isAutoincrement: false;
232
+ hasRuntimeDefault: true;
233
+ enumValues: undefined;
234
+ baseColumn: never;
235
+ identity: undefined;
236
+ generated: undefined;
237
+ }, {}, {}>;
238
+ };
239
+ dialect: "pg";
240
+ }>;
@@ -0,0 +1,22 @@
1
+ import { pgTable, text, integer, boolean, jsonb, timestamp, index } from "drizzle-orm/pg-core";
2
+ export const subscriptions = pgTable("subscriptions", {
3
+ /** The Stripe subscription id (`sub_...`). */
4
+ id: text().primaryKey(),
5
+ userId: integer().notNull(),
6
+ /** Configured plan key, or null when the price isn't part of any configured plan. */
7
+ planKey: text(),
8
+ priceId: text().notNull(),
9
+ /** The raw Stripe status (`active`, `trialing`, `past_due`, `canceled`, ...). */
10
+ status: text().notNull(),
11
+ cancelAtPeriodEnd: boolean().notNull().default(false),
12
+ currentPeriodStart: timestamp({ withTimezone: true }),
13
+ currentPeriodEnd: timestamp({ withTimezone: true }),
14
+ endedAt: timestamp({ withTimezone: true }),
15
+ /** `stripe` for webhook-synced rows, `manual` for free grants made by staff (no Stripe subscription behind it). */
16
+ source: text().notNull().default("stripe"),
17
+ rawItems: jsonb().$type(),
18
+ createdAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date()),
19
+ updatedAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date()).$onUpdateFn(() => /* @__PURE__ */ new Date())
20
+ }, (t) => [
21
+ index("subscription_user_idx").on(t.userId)
22
+ ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frigear-nu/subscriptions",
3
- "version": "0.0.9",
3
+ "version": "0.1.0",
4
4
  "description": "Recurring subscriptions (plans, checkout, upgrade/downgrade, billing portal and entitlements) for the frigear ecosystem, built on @frigear-nu/stripe.",
5
5
  "homepage": "https://docs.frigear.dev/modules/subscriptions",
6
6
  "repository": {
@@ -30,14 +30,14 @@
30
30
  "playground"
31
31
  ],
32
32
  "dependencies": {
33
- "@frigear-nu/auth": "0.0.4",
34
- "@frigear-nu/mcp": "0.0.4",
35
- "@frigear-nu/module-kit": "1.0.0",
36
- "@frigear-nu/stripe": "0.0.9",
37
- "@frigear-nu/ui": "0.0.8",
38
- "@frigear-nu/users": "1.0.10",
33
+ "@frigear-nu/auth": "0.1.0",
34
+ "@frigear-nu/mcp": "0.1.0",
35
+ "@frigear-nu/module-kit": "1.1.0",
36
+ "@frigear-nu/stripe": "0.1.0",
37
+ "@frigear-nu/ui": "0.1.0",
38
+ "@frigear-nu/users": "1.1.0",
39
39
  "@libsql/client": "^0.18.0",
40
- "@nuxt/kit": "^4.6.0",
40
+ "@nuxt/kit": "^4.6.1",
41
41
  "@vueuse/core": "^15.0.0",
42
42
  "drizzle-kit": "^0.31.11",
43
43
  "drizzle-orm": "^0.45.3",
@@ -47,9 +47,9 @@
47
47
  "zod": "^4.6.5"
48
48
  },
49
49
  "peerDependencies": {
50
- "@frigear-nu/menu": "0.0.10",
51
- "@frigear-nu/widget": "0.0.3",
52
- "@nuxt/ui": "^4.10.0",
50
+ "@frigear-nu/menu": "0.1.0",
51
+ "@frigear-nu/widget": "0.1.0",
52
+ "@nuxt/ui": "^4.11.2",
53
53
  "@nuxthub/core": "^0.10.8"
54
54
  },
55
55
  "peerDependenciesMeta": {
@@ -64,21 +64,21 @@
64
64
  }
65
65
  },
66
66
  "devDependencies": {
67
- "@frigear-nu/menu": "0.0.10",
68
- "@frigear-nu/widget": "0.0.3",
67
+ "@frigear-nu/menu": "0.1.0",
68
+ "@frigear-nu/widget": "0.1.0",
69
69
  "@nuxt/devtools": "^3.4.2",
70
70
  "@nuxt/eslint-config": "^1.17.0",
71
71
  "@nuxt/module-builder": "^1.0.3",
72
- "@nuxt/schema": "^4.6.0",
72
+ "@nuxt/schema": "^4.6.1",
73
73
  "@nuxt/test-utils": "^4.3.2",
74
- "@nuxt/ui": "^4.11.0",
74
+ "@nuxt/ui": "^4.11.2",
75
75
  "@nuxthub/core": "^0.10.8",
76
- "@types/node": "latest",
76
+ "@types/node": "^26.6.5",
77
77
  "changelogen": "^0.6.2",
78
- "eslint": "^10.10.0",
78
+ "eslint": "^10.12.0",
79
79
  "nuxt": "^4.6.1",
80
80
  "typescript": "^6.0.3",
81
- "vitest": "^5.0.1",
81
+ "vitest": "^5.0.2",
82
82
  "vue-tsc": "^3.3.11"
83
83
  },
84
84
  "scripts": {