@planecloud/validation 1.0.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.
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecordUsageSchema = exports.CreatePaymentMethodSchema = exports.UpdateSubscriptionSchema = exports.CreateSubscriptionSchema = exports.AddFundsSchema = exports.CreateWalletSchema = exports.InvoiceSchema = exports.PaymentMethodSchema = exports.SubscriptionSchema = exports.LedgerSchema = exports.WalletSchema = exports.BillingPlanSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.BillingPlanSchema = zod_1.z.object({
6
+ id: zod_1.z.string().uuid(),
7
+ name: zod_1.z.string().min(1).max(100),
8
+ description: zod_1.z.string().max(500).optional(),
9
+ type: zod_1.z.enum(["USAGE_BASED", "TIERED", "FIXED"]),
10
+ pricing: zod_1.z.object({
11
+ currency: zod_1.z.string().length(3),
12
+ rates: zod_1.z.array(zod_1.z.object({
13
+ metric: zod_1.z.string(),
14
+ unit: zod_1.z.string(),
15
+ price: zod_1.z.number(),
16
+ })),
17
+ tiers: zod_1.z
18
+ .array(zod_1.z.object({
19
+ from: zod_1.z.number(),
20
+ to: zod_1.z.number().optional(),
21
+ price: zod_1.z.number(),
22
+ }))
23
+ .optional(),
24
+ }),
25
+ features: zod_1.z.array(zod_1.z.string()),
26
+ isActive: zod_1.z.boolean(),
27
+ createdAt: zod_1.z.date(),
28
+ updatedAt: zod_1.z.date(),
29
+ });
30
+ exports.WalletSchema = zod_1.z.object({
31
+ id: zod_1.z.string().uuid(),
32
+ organizationId: zod_1.z.string().uuid(),
33
+ balance: zod_1.z.object({
34
+ amount: zod_1.z.number().min(0),
35
+ currency: zod_1.z.string().length(3),
36
+ }),
37
+ currency: zod_1.z.string().length(3),
38
+ autoTopUpEnabled: zod_1.z.boolean(),
39
+ autoTopUpThreshold: zod_1.z.object({
40
+ amount: zod_1.z.number().min(0),
41
+ currency: zod_1.z.string().length(3),
42
+ }),
43
+ autoTopUpAmount: zod_1.z.object({
44
+ amount: zod_1.z.number().min(0),
45
+ currency: zod_1.z.string().length(3),
46
+ }),
47
+ lastTopUpAt: zod_1.z.date().optional(),
48
+ createdAt: zod_1.z.date(),
49
+ updatedAt: zod_1.z.date(),
50
+ });
51
+ exports.LedgerSchema = zod_1.z.object({
52
+ id: zod_1.z.string().uuid(),
53
+ organizationId: zod_1.z.string().uuid(),
54
+ walletId: zod_1.z.string().uuid(),
55
+ type: zod_1.z.enum(["CHARGE", "PAYMENT", "REFUND", "ADJUSTMENT"]),
56
+ amount: zod_1.z.object({
57
+ amount: zod_1.z.number(),
58
+ currency: zod_1.z.string().length(3),
59
+ }),
60
+ description: zod_1.z.string(),
61
+ referenceId: zod_1.z.string().uuid().optional(),
62
+ referenceType: zod_1.z
63
+ .enum(["INSTANCE", "BACKUP", "SUBSCRIPTION", "PAYMENT"])
64
+ .optional(),
65
+ metadata: zod_1.z.record(zod_1.z.any()),
66
+ processedAt: zod_1.z.date(),
67
+ createdAt: zod_1.z.date(),
68
+ updatedAt: zod_1.z.date(),
69
+ });
70
+ exports.SubscriptionSchema = zod_1.z.object({
71
+ id: zod_1.z.string().uuid(),
72
+ organizationId: zod_1.z.string().uuid(),
73
+ instanceId: zod_1.z.string().uuid(),
74
+ planId: zod_1.z.string().uuid(),
75
+ status: zod_1.z.enum(["ACTIVE", "CANCELLED", "PAST_DUE", "UNPAID"]),
76
+ currentPeriodStart: zod_1.z.date(),
77
+ currentPeriodEnd: zod_1.z.date(),
78
+ billingCycle: zod_1.z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]),
79
+ unitPrice: zod_1.z.object({
80
+ amount: zod_1.z.number().min(0),
81
+ currency: zod_1.z.string().length(3),
82
+ }),
83
+ usage: zod_1.z.array(zod_1.z.object({
84
+ name: zod_1.z.string(),
85
+ value: zod_1.z.number(),
86
+ unit: zod_1.z.string(),
87
+ recordedAt: zod_1.z.date(),
88
+ })),
89
+ isActive: zod_1.z.boolean(),
90
+ createdAt: zod_1.z.date(),
91
+ updatedAt: zod_1.z.date(),
92
+ });
93
+ exports.PaymentMethodSchema = zod_1.z.object({
94
+ id: zod_1.z.string().uuid(),
95
+ organizationId: zod_1.z.string().uuid(),
96
+ type: zod_1.z.enum(["CREDIT_CARD", "BANK_ACCOUNT", "CRYPTO"]),
97
+ provider: zod_1.z.enum(["STRIPE", "YOOKASSA", "CLOUDPAYMENTS"]),
98
+ providerId: zod_1.z.string(),
99
+ last4: zod_1.z.string().optional(),
100
+ expiryMonth: zod_1.z.number().int().min(1).max(12).optional(),
101
+ expiryYear: zod_1.z.number().int().min(new Date().getFullYear()).optional(),
102
+ isDefault: zod_1.z.boolean(),
103
+ metadata: zod_1.z.record(zod_1.z.any()),
104
+ createdAt: zod_1.z.date(),
105
+ updatedAt: zod_1.z.date(),
106
+ });
107
+ exports.InvoiceSchema = zod_1.z.object({
108
+ id: zod_1.z.string().uuid(),
109
+ organizationId: zod_1.z.string().uuid(),
110
+ number: zod_1.z.string(),
111
+ status: zod_1.z.enum(["DRAFT", "PENDING", "PAID", "OVERDUE", "CANCELLED"]),
112
+ amount: zod_1.z.object({
113
+ amount: zod_1.z.number().min(0),
114
+ currency: zod_1.z.string().length(3),
115
+ }),
116
+ taxAmount: zod_1.z.object({
117
+ amount: zod_1.z.number().min(0),
118
+ currency: zod_1.z.string().length(3),
119
+ }),
120
+ totalAmount: zod_1.z.object({
121
+ amount: zod_1.z.number().min(0),
122
+ currency: zod_1.z.string().length(3),
123
+ }),
124
+ dueDate: zod_1.z.date(),
125
+ paidAt: zod_1.z.date().optional(),
126
+ lineItems: zod_1.z.array(zod_1.z.object({
127
+ description: zod_1.z.string(),
128
+ quantity: zod_1.z.number().min(0),
129
+ unitPrice: zod_1.z.object({
130
+ amount: zod_1.z.number(),
131
+ currency: zod_1.z.string().length(3),
132
+ }),
133
+ amount: zod_1.z.object({
134
+ amount: zod_1.z.number(),
135
+ currency: zod_1.z.string().length(3),
136
+ }),
137
+ period: zod_1.z.object({
138
+ start: zod_1.z.date(),
139
+ end: zod_1.z.date(),
140
+ }),
141
+ })),
142
+ createdAt: zod_1.z.date(),
143
+ updatedAt: zod_1.z.date(),
144
+ });
145
+ // Input schemas for validation
146
+ exports.CreateWalletSchema = zod_1.z.object({
147
+ organizationId: zod_1.z.string().uuid(),
148
+ currency: zod_1.z.string().length(3).default("USD"),
149
+ autoTopUpEnabled: zod_1.z.boolean().default(false),
150
+ autoTopUpThreshold: zod_1.z
151
+ .object({
152
+ amount: zod_1.z.number().min(0),
153
+ currency: zod_1.z.string().length(3),
154
+ })
155
+ .optional(),
156
+ autoTopUpAmount: zod_1.z
157
+ .object({
158
+ amount: zod_1.z.number().min(0),
159
+ currency: zod_1.z.string().length(3),
160
+ })
161
+ .optional(),
162
+ });
163
+ exports.AddFundsSchema = zod_1.z.object({
164
+ walletId: zod_1.z.string().uuid(),
165
+ amount: zod_1.z.object({
166
+ amount: zod_1.z.number().min(0.01),
167
+ currency: zod_1.z.string().length(3),
168
+ }),
169
+ paymentMethodId: zod_1.z.string().uuid(),
170
+ });
171
+ exports.CreateSubscriptionSchema = zod_1.z.object({
172
+ organizationId: zod_1.z.string().uuid(),
173
+ instanceId: zod_1.z.string().uuid(),
174
+ planId: zod_1.z.string().uuid(),
175
+ billingCycle: zod_1.z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]),
176
+ });
177
+ exports.UpdateSubscriptionSchema = zod_1.z.object({
178
+ planId: zod_1.z.string().uuid().optional(),
179
+ billingCycle: zod_1.z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]).optional(),
180
+ });
181
+ exports.CreatePaymentMethodSchema = zod_1.z.object({
182
+ organizationId: zod_1.z.string().uuid(),
183
+ type: zod_1.z.enum(["CREDIT_CARD", "BANK_ACCOUNT", "CRYPTO"]),
184
+ provider: zod_1.z.enum(["STRIPE", "YOOKASSA", "CLOUDPAYMENTS"]),
185
+ token: zod_1.z.string(),
186
+ isDefault: zod_1.z.boolean().default(false),
187
+ });
188
+ exports.RecordUsageSchema = zod_1.z.object({
189
+ subscriptionId: zod_1.z.string().uuid(),
190
+ usage: zod_1.z.array(zod_1.z.object({
191
+ name: zod_1.z.string(),
192
+ value: zod_1.z.number(),
193
+ unit: zod_1.z.string(),
194
+ })),
195
+ });
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import { z } from "zod";
2
+ export declare const BaseEntitySchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ createdAt: z.ZodDate;
5
+ updatedAt: z.ZodDate;
6
+ }, "strip", z.ZodTypeAny, {
7
+ id: string;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ }, {
11
+ id: string;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }>;
15
+ export declare const PaginationParamsSchema: z.ZodObject<{
16
+ page: z.ZodDefault<z.ZodNumber>;
17
+ limit: z.ZodDefault<z.ZodNumber>;
18
+ offset: z.ZodOptional<z.ZodNumber>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ page: number;
21
+ limit: number;
22
+ offset?: number | undefined;
23
+ }, {
24
+ page?: number | undefined;
25
+ limit?: number | undefined;
26
+ offset?: number | undefined;
27
+ }>;
28
+ export declare const MoneySchema: z.ZodObject<{
29
+ amount: z.ZodNumber;
30
+ currency: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ amount: number;
33
+ currency: string;
34
+ }, {
35
+ amount: number;
36
+ currency: string;
37
+ }>;
38
+ export declare const RegionSchema: z.ZodObject<{
39
+ id: z.ZodString;
40
+ name: z.ZodString;
41
+ code: z.ZodString;
42
+ provider: z.ZodString;
43
+ }, "strip", z.ZodTypeAny, {
44
+ id: string;
45
+ code: string;
46
+ name: string;
47
+ provider: string;
48
+ }, {
49
+ id: string;
50
+ code: string;
51
+ name: string;
52
+ provider: string;
53
+ }>;
54
+ export declare const SpecificationSchema: z.ZodObject<{
55
+ cpu: z.ZodNumber;
56
+ ram: z.ZodNumber;
57
+ storage: z.ZodNumber;
58
+ }, "strip", z.ZodTypeAny, {
59
+ cpu: number;
60
+ ram: number;
61
+ storage: number;
62
+ }, {
63
+ cpu: number;
64
+ ram: number;
65
+ storage: number;
66
+ }>;
67
+ export declare const DateTimeRangeSchema: z.ZodEffects<z.ZodObject<{
68
+ start: z.ZodDate;
69
+ end: z.ZodDate;
70
+ }, "strip", z.ZodTypeAny, {
71
+ start: Date;
72
+ end: Date;
73
+ }, {
74
+ start: Date;
75
+ end: Date;
76
+ }>, {
77
+ start: Date;
78
+ end: Date;
79
+ }, {
80
+ start: Date;
81
+ end: Date;
82
+ }>;
83
+ export declare const TagsSchema: z.ZodRecord<z.ZodString, z.ZodString>;
84
+ export declare const InstanceStatusSchema: z.ZodEnum<["NONE", "PROVISIONING", "RUNNING", "RECONFIGURING", "SUSPENDED", "DELETING", "TERMINATED", "ERROR"]>;
85
+ export declare const DeploymentStatusSchema: z.ZodEnum<["PENDING", "BUILDING", "DEPLOYING", "ACTIVE", "FAILED", "ROLLBACK"]>;
86
+ export declare const BillingStatusSchema: z.ZodEnum<["IN_GOOD_STANDING", "WARNING", "GRACE_PERIOD", "LOCKED", "RECOVERING", "TERMINATED"]>;
87
+ export declare const ApiResponseSchema: <T extends z.ZodType>(dataSchema: T) => z.ZodObject<{
88
+ success: z.ZodBoolean;
89
+ data: z.ZodOptional<T>;
90
+ error: z.ZodOptional<z.ZodObject<{
91
+ code: z.ZodString;
92
+ message: z.ZodString;
93
+ details: z.ZodOptional<z.ZodAny>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ code: string;
96
+ message: string;
97
+ details?: any;
98
+ }, {
99
+ code: string;
100
+ message: string;
101
+ details?: any;
102
+ }>>;
103
+ }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
104
+ success: z.ZodBoolean;
105
+ data: z.ZodOptional<T>;
106
+ error: z.ZodOptional<z.ZodObject<{
107
+ code: z.ZodString;
108
+ message: z.ZodString;
109
+ details: z.ZodOptional<z.ZodAny>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ code: string;
112
+ message: string;
113
+ details?: any;
114
+ }, {
115
+ code: string;
116
+ message: string;
117
+ details?: any;
118
+ }>>;
119
+ }>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
120
+ success: z.ZodBoolean;
121
+ data: z.ZodOptional<T>;
122
+ error: z.ZodOptional<z.ZodObject<{
123
+ code: z.ZodString;
124
+ message: z.ZodString;
125
+ details: z.ZodOptional<z.ZodAny>;
126
+ }, "strip", z.ZodTypeAny, {
127
+ code: string;
128
+ message: string;
129
+ details?: any;
130
+ }, {
131
+ code: string;
132
+ message: string;
133
+ details?: any;
134
+ }>>;
135
+ }> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
136
+ export declare const PaginatedResponseSchema: <T extends z.ZodType>(dataSchema: T) => z.ZodObject<{
137
+ data: z.ZodArray<T, "many">;
138
+ pagination: z.ZodObject<{
139
+ page: z.ZodNumber;
140
+ limit: z.ZodNumber;
141
+ total: z.ZodNumber;
142
+ totalPages: z.ZodNumber;
143
+ hasNext: z.ZodBoolean;
144
+ hasPrev: z.ZodBoolean;
145
+ }, "strip", z.ZodTypeAny, {
146
+ page: number;
147
+ limit: number;
148
+ total: number;
149
+ totalPages: number;
150
+ hasNext: boolean;
151
+ hasPrev: boolean;
152
+ }, {
153
+ page: number;
154
+ limit: number;
155
+ total: number;
156
+ totalPages: number;
157
+ hasNext: boolean;
158
+ hasPrev: boolean;
159
+ }>;
160
+ }, "strip", z.ZodTypeAny, {
161
+ data: T["_output"][];
162
+ pagination: {
163
+ page: number;
164
+ limit: number;
165
+ total: number;
166
+ totalPages: number;
167
+ hasNext: boolean;
168
+ hasPrev: boolean;
169
+ };
170
+ }, {
171
+ data: T["_input"][];
172
+ pagination: {
173
+ page: number;
174
+ limit: number;
175
+ total: number;
176
+ totalPages: number;
177
+ hasNext: boolean;
178
+ hasPrev: boolean;
179
+ };
180
+ }>;
181
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAO5B,CAAC;AAEL,eAAO,MAAM,UAAU,uCAAmC,CAAC;AAG3D,eAAO,MAAM,oBAAoB,iHAS/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,iFAOjC,CAAC;AAEH,eAAO,MAAM,mBAAmB,kGAO9B,CAAC;AAGH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAWhE,CAAC;AAEL,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWtE,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaginatedResponseSchema = exports.ApiResponseSchema = exports.BillingStatusSchema = exports.DeploymentStatusSchema = exports.InstanceStatusSchema = exports.TagsSchema = exports.DateTimeRangeSchema = exports.SpecificationSchema = exports.RegionSchema = exports.MoneySchema = exports.PaginationParamsSchema = exports.BaseEntitySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // Common validation schemas
6
+ exports.BaseEntitySchema = zod_1.z.object({
7
+ id: zod_1.z.string().uuid(),
8
+ createdAt: zod_1.z.date(),
9
+ updatedAt: zod_1.z.date(),
10
+ });
11
+ exports.PaginationParamsSchema = zod_1.z.object({
12
+ page: zod_1.z.number().int().min(1).default(1),
13
+ limit: zod_1.z.number().int().min(1).max(100).default(20),
14
+ offset: zod_1.z.number().int().min(0).optional(),
15
+ });
16
+ exports.MoneySchema = zod_1.z.object({
17
+ amount: zod_1.z.number().min(0),
18
+ currency: zod_1.z.string().length(3),
19
+ });
20
+ exports.RegionSchema = zod_1.z.object({
21
+ id: zod_1.z.string().uuid(),
22
+ name: zod_1.z.string().min(1).max(100),
23
+ code: zod_1.z.string().min(2).max(10),
24
+ provider: zod_1.z.string().min(1),
25
+ });
26
+ exports.SpecificationSchema = zod_1.z.object({
27
+ cpu: zod_1.z.number().int().min(1),
28
+ ram: zod_1.z.number().min(0.5),
29
+ storage: zod_1.z.number().min(1),
30
+ });
31
+ exports.DateTimeRangeSchema = zod_1.z
32
+ .object({
33
+ start: zod_1.z.date(),
34
+ end: zod_1.z.date(),
35
+ })
36
+ .refine((data) => data.end > data.start, {
37
+ message: "End date must be after start date",
38
+ });
39
+ exports.TagsSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.string());
40
+ // Enum schemas
41
+ exports.InstanceStatusSchema = zod_1.z.enum([
42
+ "NONE",
43
+ "PROVISIONING",
44
+ "RUNNING",
45
+ "RECONFIGURING",
46
+ "SUSPENDED",
47
+ "DELETING",
48
+ "TERMINATED",
49
+ "ERROR",
50
+ ]);
51
+ exports.DeploymentStatusSchema = zod_1.z.enum([
52
+ "PENDING",
53
+ "BUILDING",
54
+ "DEPLOYING",
55
+ "ACTIVE",
56
+ "FAILED",
57
+ "ROLLBACK",
58
+ ]);
59
+ exports.BillingStatusSchema = zod_1.z.enum([
60
+ "IN_GOOD_STANDING",
61
+ "WARNING",
62
+ "GRACE_PERIOD",
63
+ "LOCKED",
64
+ "RECOVERING",
65
+ "TERMINATED",
66
+ ]);
67
+ // API Response schemas
68
+ const ApiResponseSchema = (dataSchema) => zod_1.z.object({
69
+ success: zod_1.z.boolean(),
70
+ data: dataSchema.optional(),
71
+ error: zod_1.z
72
+ .object({
73
+ code: zod_1.z.string(),
74
+ message: zod_1.z.string(),
75
+ details: zod_1.z.any().optional(),
76
+ })
77
+ .optional(),
78
+ });
79
+ exports.ApiResponseSchema = ApiResponseSchema;
80
+ const PaginatedResponseSchema = (dataSchema) => zod_1.z.object({
81
+ data: zod_1.z.array(dataSchema),
82
+ pagination: zod_1.z.object({
83
+ page: zod_1.z.number().int().min(1),
84
+ limit: zod_1.z.number().int().min(1),
85
+ total: zod_1.z.number().int().min(0),
86
+ totalPages: zod_1.z.number().int().min(0),
87
+ hasNext: zod_1.z.boolean(),
88
+ hasPrev: zod_1.z.boolean(),
89
+ }),
90
+ });
91
+ exports.PaginatedResponseSchema = PaginatedResponseSchema;
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"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"}