@86d-store/memberships 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.
- package/README.md +193 -0
- package/dist/admin/components/_shared.d.ts +13 -0
- package/dist/admin/components/_shared.d.ts.map +1 -0
- package/dist/admin/components/_shared.js +17 -0
- package/dist/admin/components/membership-admin.d.ts +2 -0
- package/dist/admin/components/membership-admin.d.ts.map +1 -0
- package/dist/admin/components/membership-admin.js +47 -0
- package/dist/admin/components/membership-plans.d.ts +2 -0
- package/dist/admin/components/membership-plans.d.ts.map +1 -0
- package/dist/admin/components/membership-plans.js +153 -0
- package/dist/admin/endpoints/add-benefit.d.ts +28 -0
- package/dist/admin/endpoints/add-benefit.d.ts.map +1 -0
- package/dist/admin/endpoints/add-benefit.js +37 -0
- package/dist/admin/endpoints/cancel-membership.d.ts +16 -0
- package/dist/admin/endpoints/cancel-membership.d.ts.map +1 -0
- package/dist/admin/endpoints/cancel-membership.js +19 -0
- package/dist/admin/endpoints/create-plan.d.ts +29 -0
- package/dist/admin/endpoints/create-plan.d.ts.map +1 -0
- package/dist/admin/endpoints/create-plan.js +48 -0
- package/dist/admin/endpoints/delete-plan.d.ts +16 -0
- package/dist/admin/endpoints/delete-plan.d.ts.map +1 -0
- package/dist/admin/endpoints/delete-plan.js +14 -0
- package/dist/admin/endpoints/gate-product.d.ts +19 -0
- package/dist/admin/endpoints/gate-product.d.ts.map +1 -0
- package/dist/admin/endpoints/gate-product.js +25 -0
- package/dist/admin/endpoints/get-membership.d.ts +18 -0
- package/dist/admin/endpoints/get-membership.d.ts.map +1 -0
- package/dist/admin/endpoints/get-membership.js +15 -0
- package/dist/admin/endpoints/get-stats.d.ts +6 -0
- package/dist/admin/endpoints/get-stats.d.ts.map +1 -0
- package/dist/admin/endpoints/get-stats.js +7 -0
- package/dist/admin/endpoints/list-memberships.d.ts +20 -0
- package/dist/admin/endpoints/list-memberships.d.ts.map +1 -0
- package/dist/admin/endpoints/list-memberships.js +32 -0
- package/dist/admin/endpoints/list-plans.d.ts +16 -0
- package/dist/admin/endpoints/list-plans.d.ts.map +1 -0
- package/dist/admin/endpoints/list-plans.js +29 -0
- package/dist/admin/endpoints/pause-membership.d.ts +16 -0
- package/dist/admin/endpoints/pause-membership.d.ts.map +1 -0
- package/dist/admin/endpoints/pause-membership.js +19 -0
- package/dist/admin/endpoints/remove-benefit.d.ts +16 -0
- package/dist/admin/endpoints/remove-benefit.d.ts.map +1 -0
- package/dist/admin/endpoints/remove-benefit.js +14 -0
- package/dist/admin/endpoints/resume-membership.d.ts +16 -0
- package/dist/admin/endpoints/resume-membership.d.ts.map +1 -0
- package/dist/admin/endpoints/resume-membership.js +19 -0
- package/dist/admin/endpoints/routes.d.ts +237 -0
- package/dist/admin/endpoints/routes.d.ts.map +1 -0
- package/dist/admin/endpoints/routes.js +30 -0
- package/dist/admin/endpoints/ungate-product.d.ts +13 -0
- package/dist/admin/endpoints/ungate-product.d.ts.map +1 -0
- package/dist/admin/endpoints/ungate-product.js +22 -0
- package/dist/admin/endpoints/update-plan.d.ts +32 -0
- package/dist/admin/endpoints/update-plan.d.ts.map +1 -0
- package/dist/admin/endpoints/update-plan.js +62 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/schema.d.ts +102 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +63 -0
- package/dist/service-impl.d.ts +4 -0
- package/dist/service-impl.d.ts.map +1 -0
- package/dist/service-impl.js +414 -0
- package/dist/service.d.ts +145 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +1 -0
- package/dist/store/components/_hooks.d.ts +9 -0
- package/dist/store/components/_hooks.d.ts.map +1 -0
- package/dist/store/components/_hooks.js +13 -0
- package/dist/store/components/_utils.d.ts +11 -0
- package/dist/store/components/_utils.d.ts.map +1 -0
- package/dist/store/components/_utils.js +98 -0
- package/dist/store/components/mdx.d.ts +10 -0
- package/dist/store/components/mdx.d.ts.map +1 -0
- package/dist/store/components/mdx.js +9 -0
- package/dist/store/components/my-membership.d.ts +2 -0
- package/dist/store/components/my-membership.d.ts.map +1 -0
- package/dist/store/components/my-membership.js +42 -0
- package/dist/store/components/my-membership.mdx +13 -0
- package/dist/store/components/plan-detail.d.ts +5 -0
- package/dist/store/components/plan-detail.d.ts.map +1 -0
- package/dist/store/components/plan-detail.js +50 -0
- package/dist/store/components/plan-detail.mdx +15 -0
- package/dist/store/components/plan-listing.d.ts +2 -0
- package/dist/store/components/plan-listing.d.ts.map +1 -0
- package/dist/store/components/plan-listing.js +21 -0
- package/dist/store/components/plan-listing.mdx +13 -0
- package/dist/store/endpoints/cancel.d.ts +16 -0
- package/dist/store/endpoints/cancel.d.ts.map +1 -0
- package/dist/store/endpoints/cancel.js +25 -0
- package/dist/store/endpoints/check-access.d.ts +10 -0
- package/dist/store/endpoints/check-access.d.ts.map +1 -0
- package/dist/store/endpoints/check-access.js +20 -0
- package/dist/store/endpoints/get-membership.d.ts +19 -0
- package/dist/store/endpoints/get-membership.d.ts.map +1 -0
- package/dist/store/endpoints/get-membership.js +18 -0
- package/dist/store/endpoints/get-plan.d.ts +18 -0
- package/dist/store/endpoints/get-plan.d.ts.map +1 -0
- package/dist/store/endpoints/get-plan.js +17 -0
- package/dist/store/endpoints/list-plans.d.ts +11 -0
- package/dist/store/endpoints/list-plans.d.ts.map +1 -0
- package/dist/store/endpoints/list-plans.js +18 -0
- package/dist/store/endpoints/routes.d.ts +82 -0
- package/dist/store/endpoints/routes.d.ts.map +1 -0
- package/dist/store/endpoints/routes.js +14 -0
- package/dist/store/endpoints/subscribe.d.ts +16 -0
- package/dist/store/endpoints/subscribe.d.ts.map +1 -0
- package/dist/store/endpoints/subscribe.js +30 -0
- package/package.json +93 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { sanitizeText } from "@86d-store/core/sanitize";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
export const createPlan = createAdminEndpoint("/admin/memberships/plans/create", {
|
|
5
|
+
method: "POST",
|
|
6
|
+
body: z.object({
|
|
7
|
+
name: z.string().min(1).max(200).transform(sanitizeText),
|
|
8
|
+
slug: z.string().min(1).max(200),
|
|
9
|
+
description: z.string().max(5000).transform(sanitizeText).optional(),
|
|
10
|
+
price: z.number().min(0),
|
|
11
|
+
billingInterval: z.enum(["monthly", "yearly", "lifetime"]),
|
|
12
|
+
trialDays: z.number().int().min(0).max(365).optional(),
|
|
13
|
+
features: z.array(z.string().max(500)).max(50).optional(),
|
|
14
|
+
isActive: z.boolean().optional(),
|
|
15
|
+
maxMembers: z.number().int().min(1).optional(),
|
|
16
|
+
sortOrder: z.number().int().min(0).max(10000).optional(),
|
|
17
|
+
}),
|
|
18
|
+
}, async (ctx) => {
|
|
19
|
+
const controller = ctx.context.controllers
|
|
20
|
+
.memberships;
|
|
21
|
+
const existing = await controller.getPlanBySlug(ctx.body.slug);
|
|
22
|
+
if (existing) {
|
|
23
|
+
return {
|
|
24
|
+
error: "A plan with this slug already exists",
|
|
25
|
+
status: 400,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const params = {
|
|
29
|
+
name: ctx.body.name,
|
|
30
|
+
slug: ctx.body.slug,
|
|
31
|
+
price: ctx.body.price,
|
|
32
|
+
billingInterval: ctx.body.billingInterval,
|
|
33
|
+
};
|
|
34
|
+
if (ctx.body.description != null)
|
|
35
|
+
params.description = ctx.body.description;
|
|
36
|
+
if (ctx.body.trialDays != null)
|
|
37
|
+
params.trialDays = ctx.body.trialDays;
|
|
38
|
+
if (ctx.body.features != null)
|
|
39
|
+
params.features = ctx.body.features;
|
|
40
|
+
if (ctx.body.isActive != null)
|
|
41
|
+
params.isActive = ctx.body.isActive;
|
|
42
|
+
if (ctx.body.maxMembers != null)
|
|
43
|
+
params.maxMembers = ctx.body.maxMembers;
|
|
44
|
+
if (ctx.body.sortOrder != null)
|
|
45
|
+
params.sortOrder = ctx.body.sortOrder;
|
|
46
|
+
const plan = await controller.createPlan(params);
|
|
47
|
+
return { plan };
|
|
48
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const deletePlan: import("better-call").StrictEndpoint<"/admin/memberships/plans/:id/delete", {
|
|
3
|
+
method: "POST";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
status: number;
|
|
10
|
+
success?: never;
|
|
11
|
+
} | {
|
|
12
|
+
success: boolean;
|
|
13
|
+
error?: never;
|
|
14
|
+
status?: never;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=delete-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-plan.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/delete-plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;EAiBtB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const deletePlan = createAdminEndpoint("/admin/memberships/plans/:id/delete", {
|
|
4
|
+
method: "POST",
|
|
5
|
+
params: z.object({ id: z.string().min(1) }),
|
|
6
|
+
}, async (ctx) => {
|
|
7
|
+
const controller = ctx.context.controllers
|
|
8
|
+
.memberships;
|
|
9
|
+
const deleted = await controller.deletePlan(ctx.params.id);
|
|
10
|
+
if (!deleted) {
|
|
11
|
+
return { error: "Plan not found", status: 404 };
|
|
12
|
+
}
|
|
13
|
+
return { success: true };
|
|
14
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const gateProduct: import("better-call").StrictEndpoint<"/admin/memberships/plans/:planId/products/gate", {
|
|
3
|
+
method: "POST";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
planId: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
body: z.ZodObject<{
|
|
8
|
+
productIds: z.ZodArray<z.ZodString>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
}, {
|
|
11
|
+
error: string;
|
|
12
|
+
status: number;
|
|
13
|
+
gated?: never;
|
|
14
|
+
} | {
|
|
15
|
+
gated: number;
|
|
16
|
+
error?: never;
|
|
17
|
+
status?: never;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=gate-product.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-product.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/gate-product.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;EA6BvB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const gateProduct = createAdminEndpoint("/admin/memberships/plans/:planId/products/gate", {
|
|
4
|
+
method: "POST",
|
|
5
|
+
params: z.object({ planId: z.string().min(1) }),
|
|
6
|
+
body: z.object({
|
|
7
|
+
productIds: z.array(z.string().min(1)).min(1).max(100),
|
|
8
|
+
}),
|
|
9
|
+
}, async (ctx) => {
|
|
10
|
+
const controller = ctx.context.controllers
|
|
11
|
+
.memberships;
|
|
12
|
+
const plan = await controller.getPlan(ctx.params.planId);
|
|
13
|
+
if (!plan) {
|
|
14
|
+
return { error: "Plan not found", status: 404 };
|
|
15
|
+
}
|
|
16
|
+
let gated = 0;
|
|
17
|
+
for (const productId of ctx.body.productIds) {
|
|
18
|
+
await controller.gateProduct({
|
|
19
|
+
planId: ctx.params.planId,
|
|
20
|
+
productId,
|
|
21
|
+
});
|
|
22
|
+
gated++;
|
|
23
|
+
}
|
|
24
|
+
return { gated };
|
|
25
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getMembership: import("better-call").StrictEndpoint<"/admin/memberships/:id", {
|
|
3
|
+
method: "GET";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
status: number;
|
|
10
|
+
membership?: never;
|
|
11
|
+
plan?: never;
|
|
12
|
+
} | {
|
|
13
|
+
membership: import("../..").Membership;
|
|
14
|
+
plan: import("../..").MembershipPlan | null;
|
|
15
|
+
error?: never;
|
|
16
|
+
status?: never;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=get-membership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-membership.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/get-membership.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAmBzB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const getMembership = createAdminEndpoint("/admin/memberships/:id", {
|
|
4
|
+
method: "GET",
|
|
5
|
+
params: z.object({ id: z.string().min(1) }),
|
|
6
|
+
}, async (ctx) => {
|
|
7
|
+
const controller = ctx.context.controllers
|
|
8
|
+
.memberships;
|
|
9
|
+
const membership = await controller.getMembership(ctx.params.id);
|
|
10
|
+
if (!membership) {
|
|
11
|
+
return { error: "Membership not found", status: 404 };
|
|
12
|
+
}
|
|
13
|
+
const plan = await controller.getPlan(membership.planId);
|
|
14
|
+
return { membership, plan };
|
|
15
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-stats.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/get-stats.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;;EAWpB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
export const getStats = createAdminEndpoint("/admin/memberships/stats", { method: "GET" }, async (ctx) => {
|
|
3
|
+
const controller = ctx.context.controllers
|
|
4
|
+
.memberships;
|
|
5
|
+
const stats = await controller.getStats();
|
|
6
|
+
return { stats };
|
|
7
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const listMemberships: import("better-call").StrictEndpoint<"/admin/memberships", {
|
|
3
|
+
method: "GET";
|
|
4
|
+
query: z.ZodObject<{
|
|
5
|
+
planId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
7
|
+
active: "active";
|
|
8
|
+
trial: "trial";
|
|
9
|
+
expired: "expired";
|
|
10
|
+
cancelled: "cancelled";
|
|
11
|
+
paused: "paused";
|
|
12
|
+
}>>;
|
|
13
|
+
take: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
14
|
+
skip: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
}, {
|
|
17
|
+
memberships: import("../..").Membership[];
|
|
18
|
+
total: number;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=list-memberships.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-memberships.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/list-memberships.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;EAiC3B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const listMemberships = createAdminEndpoint("/admin/memberships", {
|
|
4
|
+
method: "GET",
|
|
5
|
+
query: z.object({
|
|
6
|
+
planId: z.string().optional(),
|
|
7
|
+
status: z
|
|
8
|
+
.enum(["active", "trial", "expired", "cancelled", "paused"])
|
|
9
|
+
.optional(),
|
|
10
|
+
take: z.coerce.number().int().min(1).max(100).optional(),
|
|
11
|
+
skip: z.coerce.number().int().min(0).optional(),
|
|
12
|
+
}),
|
|
13
|
+
}, async (ctx) => {
|
|
14
|
+
const controller = ctx.context.controllers
|
|
15
|
+
.memberships;
|
|
16
|
+
const params = {
|
|
17
|
+
take: ctx.query.take ?? 50,
|
|
18
|
+
skip: ctx.query.skip ?? 0,
|
|
19
|
+
};
|
|
20
|
+
if (ctx.query.planId != null)
|
|
21
|
+
params.planId = ctx.query.planId;
|
|
22
|
+
if (ctx.query.status != null)
|
|
23
|
+
params.status = ctx.query.status;
|
|
24
|
+
const memberships = await controller.listMemberships(params);
|
|
25
|
+
const countParams = {};
|
|
26
|
+
if (ctx.query.planId != null)
|
|
27
|
+
countParams.planId = ctx.query.planId;
|
|
28
|
+
if (ctx.query.status != null)
|
|
29
|
+
countParams.status = ctx.query.status;
|
|
30
|
+
const total = await controller.countMemberships(countParams);
|
|
31
|
+
return { memberships, total };
|
|
32
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const listPlans: import("better-call").StrictEndpoint<"/admin/memberships/plans", {
|
|
3
|
+
method: "GET";
|
|
4
|
+
query: z.ZodObject<{
|
|
5
|
+
active: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
true: "true";
|
|
7
|
+
false: "false";
|
|
8
|
+
}>>;
|
|
9
|
+
take: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
10
|
+
skip: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
}, {
|
|
13
|
+
plans: import("../..").MembershipPlan[];
|
|
14
|
+
total: number;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=list-plans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-plans.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/list-plans.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;EA8BrB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const listPlans = createAdminEndpoint("/admin/memberships/plans", {
|
|
4
|
+
method: "GET",
|
|
5
|
+
query: z.object({
|
|
6
|
+
active: z.enum(["true", "false"]).optional(),
|
|
7
|
+
take: z.coerce.number().int().min(1).max(100).optional(),
|
|
8
|
+
skip: z.coerce.number().int().min(0).optional(),
|
|
9
|
+
}),
|
|
10
|
+
}, async (ctx) => {
|
|
11
|
+
const controller = ctx.context.controllers
|
|
12
|
+
.memberships;
|
|
13
|
+
const params = {
|
|
14
|
+
take: ctx.query.take ?? 50,
|
|
15
|
+
skip: ctx.query.skip ?? 0,
|
|
16
|
+
};
|
|
17
|
+
if (ctx.query.active === "true")
|
|
18
|
+
params.isActive = true;
|
|
19
|
+
else if (ctx.query.active === "false")
|
|
20
|
+
params.isActive = false;
|
|
21
|
+
const plans = await controller.listPlans(params);
|
|
22
|
+
const countParams = {};
|
|
23
|
+
if (ctx.query.active === "true")
|
|
24
|
+
countParams.isActive = true;
|
|
25
|
+
else if (ctx.query.active === "false")
|
|
26
|
+
countParams.isActive = false;
|
|
27
|
+
const total = await controller.countPlans(countParams);
|
|
28
|
+
return { plans, total };
|
|
29
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const pauseMembership: import("better-call").StrictEndpoint<"/admin/memberships/:id/pause", {
|
|
3
|
+
method: "POST";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
status: number;
|
|
10
|
+
membership?: never;
|
|
11
|
+
} | {
|
|
12
|
+
membership: import("../..").Membership;
|
|
13
|
+
error?: never;
|
|
14
|
+
status?: never;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=pause-membership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause-membership.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/pause-membership.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;EAqB3B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const pauseMembership = createAdminEndpoint("/admin/memberships/:id/pause", {
|
|
4
|
+
method: "POST",
|
|
5
|
+
params: z.object({ id: z.string().min(1) }),
|
|
6
|
+
}, async (ctx) => {
|
|
7
|
+
const controller = ctx.context.controllers
|
|
8
|
+
.memberships;
|
|
9
|
+
const membership = await controller.pauseMembership(ctx.params.id);
|
|
10
|
+
if (!membership) {
|
|
11
|
+
return { error: "Membership not found", status: 404 };
|
|
12
|
+
}
|
|
13
|
+
void ctx.context.events?.emit("membership.paused", {
|
|
14
|
+
membershipId: membership.id,
|
|
15
|
+
customerId: membership.customerId,
|
|
16
|
+
planId: membership.planId,
|
|
17
|
+
});
|
|
18
|
+
return { membership };
|
|
19
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const removeBenefit: import("better-call").StrictEndpoint<"/admin/memberships/benefits/:id/remove", {
|
|
3
|
+
method: "POST";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
status: number;
|
|
10
|
+
success?: never;
|
|
11
|
+
} | {
|
|
12
|
+
success: boolean;
|
|
13
|
+
error?: never;
|
|
14
|
+
status?: never;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=remove-benefit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-benefit.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/remove-benefit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;EAiBzB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const removeBenefit = createAdminEndpoint("/admin/memberships/benefits/:id/remove", {
|
|
4
|
+
method: "POST",
|
|
5
|
+
params: z.object({ id: z.string().min(1) }),
|
|
6
|
+
}, async (ctx) => {
|
|
7
|
+
const controller = ctx.context.controllers
|
|
8
|
+
.memberships;
|
|
9
|
+
const removed = await controller.removeBenefit(ctx.params.id);
|
|
10
|
+
if (!removed) {
|
|
11
|
+
return { error: "Benefit not found", status: 404 };
|
|
12
|
+
}
|
|
13
|
+
return { success: true };
|
|
14
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const resumeMembership: import("better-call").StrictEndpoint<"/admin/memberships/:id/resume", {
|
|
3
|
+
method: "POST";
|
|
4
|
+
params: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
status: number;
|
|
10
|
+
membership?: never;
|
|
11
|
+
} | {
|
|
12
|
+
membership: import("../..").Membership;
|
|
13
|
+
error?: never;
|
|
14
|
+
status?: never;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=resume-membership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-membership.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/resume-membership.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;EAqB5B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createAdminEndpoint } from "@86d-store/core/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const resumeMembership = createAdminEndpoint("/admin/memberships/:id/resume", {
|
|
4
|
+
method: "POST",
|
|
5
|
+
params: z.object({ id: z.string().min(1) }),
|
|
6
|
+
}, async (ctx) => {
|
|
7
|
+
const controller = ctx.context.controllers
|
|
8
|
+
.memberships;
|
|
9
|
+
const membership = await controller.resumeMembership(ctx.params.id);
|
|
10
|
+
if (!membership) {
|
|
11
|
+
return { error: "Membership not found", status: 404 };
|
|
12
|
+
}
|
|
13
|
+
void ctx.context.events?.emit("membership.resumed", {
|
|
14
|
+
membershipId: membership.id,
|
|
15
|
+
customerId: membership.customerId,
|
|
16
|
+
planId: membership.planId,
|
|
17
|
+
});
|
|
18
|
+
return { membership };
|
|
19
|
+
});
|