@trigger.dev/platform 1.0.20-beta.0 → 1.0.20-beta.2
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/dist/index.cjs +57 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +143 -1
- package/dist/index.d.ts +143 -1
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var v3_exports = {};
|
|
22
22
|
__export(v3_exports, {
|
|
23
23
|
AddOn: () => AddOn,
|
|
24
|
+
AddOnDefinition: () => AddOnDefinition,
|
|
24
25
|
AddOns: () => AddOns,
|
|
25
26
|
BillingAlertsResult: () => BillingAlertsResult,
|
|
26
27
|
BillingClient: () => BillingClient,
|
|
@@ -39,6 +40,8 @@ __export(v3_exports, {
|
|
|
39
40
|
ReportInvocationUsageResult: () => ReportInvocationUsageResult,
|
|
40
41
|
ReportUsagePlan: () => ReportUsagePlan,
|
|
41
42
|
ReportUsageResult: () => ReportUsageResult,
|
|
43
|
+
SetAddOnBody: () => SetAddOnBody,
|
|
44
|
+
SetAddOnResult: () => SetAddOnResult,
|
|
42
45
|
SetPlanBodySchema: () => SetPlanBodySchema,
|
|
43
46
|
SubscribeResultSchema: () => SubscribeResultSchema,
|
|
44
47
|
SubscriptionResult: () => SubscriptionResult,
|
|
@@ -125,14 +128,29 @@ var Plans = import_zod.z.object({
|
|
|
125
128
|
pro: PaidPlanDefinition,
|
|
126
129
|
enterprise: EnterprisePlanDefinition
|
|
127
130
|
});
|
|
131
|
+
var AddOnPricing = import_zod.z.object({
|
|
132
|
+
/** The step size - must purchase in multiples of this amount */
|
|
133
|
+
stepSize: import_zod.z.number(),
|
|
134
|
+
/** Price per step in cents */
|
|
135
|
+
centsPerStep: import_zod.z.number()
|
|
136
|
+
});
|
|
128
137
|
var PlansResult = import_zod.z.object({
|
|
129
138
|
plans: Plans,
|
|
130
139
|
usagePricing: import_zod.z.object({
|
|
131
140
|
centsPerRunInvocation: import_zod.z.number(),
|
|
132
141
|
machines: import_zod.z.record(import_zod.z.string(), MachineDefinition),
|
|
133
142
|
defaultMachine: import_zod.z.string()
|
|
143
|
+
}),
|
|
144
|
+
addOnPricing: import_zod.z.object({
|
|
145
|
+
concurrency: AddOnPricing
|
|
134
146
|
})
|
|
135
147
|
});
|
|
148
|
+
var AddOnDefinition = import_zod.z.object({
|
|
149
|
+
// Change to a union later
|
|
150
|
+
code: import_zod.z.literal("concurrency"),
|
|
151
|
+
priceCode: import_zod.z.string(),
|
|
152
|
+
pricing: AddOnPricing
|
|
153
|
+
});
|
|
136
154
|
var AddOn = import_zod.z.object({
|
|
137
155
|
purchased: import_zod.z.number(),
|
|
138
156
|
quota: import_zod.z.number().optional()
|
|
@@ -203,6 +221,29 @@ var SubscribeResultSchema = import_zod3.z.discriminatedUnion("action", [
|
|
|
203
221
|
UpdatedSubscriptionResultSchema,
|
|
204
222
|
CanceledSubscriptionResultSchema
|
|
205
223
|
]);
|
|
224
|
+
var SetAddOnBody = import_zod3.z.object({
|
|
225
|
+
type: import_zod3.z.literal("concurrency"),
|
|
226
|
+
amount: import_zod3.z.number()
|
|
227
|
+
});
|
|
228
|
+
var SetAddOnResult = import_zod3.z.discriminatedUnion("result", [
|
|
229
|
+
import_zod3.z.object({
|
|
230
|
+
result: import_zod3.z.literal("error"),
|
|
231
|
+
error: import_zod3.z.string()
|
|
232
|
+
}),
|
|
233
|
+
import_zod3.z.object({
|
|
234
|
+
result: import_zod3.z.literal("success"),
|
|
235
|
+
type: import_zod3.z.string(),
|
|
236
|
+
amount: import_zod3.z.number(),
|
|
237
|
+
subscription: import_zod3.z.object({
|
|
238
|
+
id: import_zod3.z.string()
|
|
239
|
+
})
|
|
240
|
+
}),
|
|
241
|
+
import_zod3.z.object({
|
|
242
|
+
result: import_zod3.z.literal("max_quota_reached"),
|
|
243
|
+
type: import_zod3.z.string(),
|
|
244
|
+
maxQuota: import_zod3.z.number()
|
|
245
|
+
})
|
|
246
|
+
]);
|
|
206
247
|
|
|
207
248
|
// src/v3/schemas/portal.ts
|
|
208
249
|
var import_zod4 = require("zod");
|
|
@@ -351,6 +392,19 @@ var BillingClient = class {
|
|
|
351
392
|
}
|
|
352
393
|
);
|
|
353
394
|
}
|
|
395
|
+
async setAddOn(orgId, body) {
|
|
396
|
+
return await this.fetch(
|
|
397
|
+
`/api/v1/orgs/${orgId}/v3/subscription/addon`,
|
|
398
|
+
SetAddOnResult,
|
|
399
|
+
{
|
|
400
|
+
method: "POST",
|
|
401
|
+
headers: {
|
|
402
|
+
"Content-Type": "application/json"
|
|
403
|
+
},
|
|
404
|
+
body: JSON.stringify(body)
|
|
405
|
+
}
|
|
406
|
+
);
|
|
407
|
+
}
|
|
354
408
|
async createPortalSession(orgId, body) {
|
|
355
409
|
return await this.fetch(
|
|
356
410
|
`/api/v1/orgs/${orgId}/v3/subscription/portal`,
|
|
@@ -563,6 +617,7 @@ var defaultMachine = "small-1x";
|
|
|
563
617
|
// Annotate the CommonJS export names for ESM import in node:
|
|
564
618
|
0 && (module.exports = {
|
|
565
619
|
AddOn,
|
|
620
|
+
AddOnDefinition,
|
|
566
621
|
AddOns,
|
|
567
622
|
BillingAlertsResult,
|
|
568
623
|
BillingClient,
|
|
@@ -581,6 +636,8 @@ var defaultMachine = "small-1x";
|
|
|
581
636
|
ReportInvocationUsageResult,
|
|
582
637
|
ReportUsagePlan,
|
|
583
638
|
ReportUsageResult,
|
|
639
|
+
SetAddOnBody,
|
|
640
|
+
SetAddOnResult,
|
|
584
641
|
SetPlanBodySchema,
|
|
585
642
|
SubscribeResultSchema,
|
|
586
643
|
SubscriptionResult,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v3/index.ts","../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["export * from \"./schemas\";\nexport * from \"./client\";\nexport * from \"./machineDefinition\";\nexport * from \"./machinePresets\";\n","import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\n\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<\n typeof UpdatedSubscriptionResultSchema\n>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<\n typeof CreateSubscriptionFlowStartSchema\n>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<\n typeof CanceledSubscriptionResultSchema\n>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<\n typeof CustomerPortalRequestBodySchema\n>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\nexport const ErrorSchema = z.object({\n error: z.string(),\n});\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\nconst BooleanParam = z.preprocess(\n (val) => (val === \"true\" ? true : false),\n z.boolean()\n);\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string(),\n costInCents: z.number(),\n additionalData: z.record(z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<\n typeof ReportInvocationUsageEvent\n>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<\n typeof UpdateBillingAlertsRequest\n>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<\n typeof RegistryCredentialsResponseSchema\n>;\n","import { ZodType, z } from \"zod\";\nimport {\n BillingAlertsResult,\n CurrentPlan,\n CustomerPortalRequestBody,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageEvent,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SetPlanBody,\n SubscribeResultSchema,\n UpdateBillingAlertsRequest,\n UsageParams,\n UsageResult,\n UsageSeriesParams,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<\n typeof ReportInvocationUsageResult\n>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type RegistryCredentialsResult = Result<\n typeof RegistryCredentialsResponseSchema\n>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage?${search?.toString()}`,\n UsageResult\n );\n }\n\n async usageSeries(\n orgId: string,\n params: UsageSeriesParams\n ): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription`,\n SubscribeResultSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/portal`,\n CustomerPortalSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(\n `/api/v1/usage/ingest/invocation`,\n ReportInvocationUsageResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n }\n );\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/entitlement`,\n ReportUsageResult\n );\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult\n );\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n const json = await response.json();\n const parsedError = ErrorSchema.parse(json);\n return {\n success: false,\n error: parsedError.error,\n };\n }\n\n const json = await response.json();\n const parsed = schema.parse(json);\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | Date\n | Date[]\n | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond =\n cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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","names":["import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","json","centsPerVCpuSecond","centsPerGbRamSecond"]}
|
|
1
|
+
{"version":3,"sources":["../src/v3/index.ts","../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["export * from \"./schemas\";\nexport * from \"./client\";\nexport * from \"./machineDefinition\";\nexport * from \"./machinePresets\";\n","import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\n\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n // Change to a union later\n code: z.literal(\"concurrency\"),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<\n typeof UpdatedSubscriptionResultSchema\n>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<\n typeof CreateSubscriptionFlowStartSchema\n>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<\n typeof CanceledSubscriptionResultSchema\n>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.literal(\"concurrency\"),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<\n typeof CustomerPortalRequestBodySchema\n>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\nexport const ErrorSchema = z.object({\n error: z.string(),\n});\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\nconst BooleanParam = z.preprocess(\n (val) => (val === \"true\" ? true : false),\n z.boolean()\n);\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string(),\n costInCents: z.number(),\n additionalData: z.record(z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<\n typeof ReportInvocationUsageEvent\n>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<\n typeof UpdateBillingAlertsRequest\n>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<\n typeof RegistryCredentialsResponseSchema\n>;\n","import { ZodType, z } from \"zod\";\nimport {\n BillingAlertsResult,\n CurrentPlan,\n CustomerPortalRequestBody,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageEvent,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SetPlanBody,\n SubscribeResultSchema,\n UpdateBillingAlertsRequest,\n UsageParams,\n UsageResult,\n UsageSeriesParams,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n SetAddOnBody,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<\n typeof ReportInvocationUsageResult\n>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type RegistryCredentialsResult = Result<\n typeof RegistryCredentialsResponseSchema\n>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage?${search?.toString()}`,\n UsageResult\n );\n }\n\n async usageSeries(\n orgId: string,\n params: UsageSeriesParams\n ): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription`,\n SubscribeResultSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/addon`,\n SetAddOnResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/portal`,\n CustomerPortalSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(\n `/api/v1/usage/ingest/invocation`,\n ReportInvocationUsageResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n }\n );\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/entitlement`,\n ReportUsageResult\n );\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult\n );\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n const json = await response.json();\n const parsedError = ErrorSchema.parse(json);\n return {\n success: false,\n error: parsedError.error,\n };\n }\n\n const json = await response.json();\n const parsed = schema.parse(json);\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | Date\n | Date[]\n | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond =\n cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iBAAkB;AAElB,IAAM,kBAAkB,aAAE,OAAO;AAAA,EAC/B,QAAQ,aAAE,OAAO;AAAA,EACjB,WAAW,aAAE,QAAQ,EAAE,SAAS;AAClC,CAAC;AAID,IAAM,wBAAwB,aAAE,OAAO;AAAA,EACrC,YAAY,aAAE,OAAO;AAAA,EACrB,SAAS,aAAE,OAAO;AAAA,EAClB,SAAS,aAAE,OAAO;AAAA,EAClB,aAAa,aAAE,OAAO;AAAA,EACtB,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEhC,QAAQ,aAAE,OAAO;AACnB,CAAC;AAGD,IAAM,SAAS,aAAE,OAAO;AAAA,EACtB,eAAe,aAAE,OAAO;AAAA,EACxB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,uBAAuB,aAAE,QAAQ;AAAA,EACjC,+BAA+B;AAAA,EAC/B,UAAU;AAAA,EACV,SAAS,aAAE,KAAK,CAAC,aAAa,OAAO,CAAC;AACxC,CAAC;AAID,IAAM,iBAAiB;AAAA,EACrB,OAAO,aAAE,OAAO;AAAA,EAChB,MAAM,aAAE,OAAO;AACjB;AAEA,IAAM,gBAAgB;AAAA,EACpB,eAAe,aAAE,OAAO;AAAA,EACxB,gBAAgB,aAAE,OAAO;AAAA,EACzB,iBAAiB,aAAE,OAAO,EAAE,SAAS;AACvC;AAEA,IAAM,qBAAqB,aAAE,OAAO;AAAA,EAClC,GAAG;AAAA,EACH,MAAM,aAAE,QAAQ,MAAM;AAAA,EACtB,QAAQ;AACV,CAAC;AAGD,IAAM,qBAAqB,aAAE,OAAO;AAAA,EAClC,GAAG;AAAA,EACH,MAAM,aAAE,QAAQ,MAAM;AAAA,EACtB,WAAW,aAAE,OAAO;AAAA,EACpB,QAAQ,aAAE,OAAO,aAAa;AAAA,EAC9B,QAAQ;AACV,CAAC;AAGD,IAAM,2BAA2B,aAAE,OAAO;AAAA,EACxC,GAAG;AAAA,EACH,MAAM,aAAE,QAAQ,YAAY;AAAA,EAC5B,QAAQ;AACV,CAAC;AAGM,IAAM,uBAAuB,aAAE,mBAAmB,QAAQ;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,oBAAoB,aAAE,OAAO;AAAA,EACjC,MAAM,aAAE,OAAO;AAAA,EACf,OAAO,aAAE,OAAO;AAAA,EAChB,KAAK,aAAE,OAAO;AAAA,EACd,QAAQ,aAAE,OAAO;AAAA,EACjB,YAAY,aAAE,OAAO;AACvB,CAAC;AAIM,IAAM,QAAQ,aAAE,OAAO;AAAA,EAC5B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,YAAY;AACd,CAAC;AAID,IAAM,eAAe,aAAE,OAAO;AAAA;AAAA,EAE5B,UAAU,aAAE,OAAO;AAAA;AAAA,EAEnB,cAAc,aAAE,OAAO;AACzB,CAAC;AAGM,IAAM,cAAc,aAAE,OAAO;AAAA,EAClC,OAAO;AAAA,EACP,cAAc,aAAE,OAAO;AAAA,IACrB,uBAAuB,aAAE,OAAO;AAAA,IAChC,UAAU,aAAE,OAAO,aAAE,OAAO,GAAG,iBAAiB;AAAA,IAChD,gBAAgB,aAAE,OAAO;AAAA,EAC3B,CAAC;AAAA,EACD,cAAc,aAAE,OAAO;AAAA,IACrB,aAAa;AAAA,EACf,CAAC;AACH,CAAC;AAIM,IAAM,kBAAkB,aAAE,OAAO;AAAA;AAAA,EAEtC,MAAM,aAAE,QAAQ,aAAa;AAAA,EAC7B,WAAW,aAAE,OAAO;AAAA,EACpB,SAAS;AACX,CAAC;AAIM,IAAM,QAAQ,aAAE,OAAO;AAAA,EAC5B,WAAW,aAAE,OAAO;AAAA,EACpB,OAAO,aAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGM,IAAM,SAAS,aAAE,OAAO;AAAA,EAC7B,gBAAgB,MAAM,SAAS;AACjC,CAAC;;;ACtID,IAAAA,cAAkB;AAGlB,IAAM,iBAAiB,cAAE,KAAK,CAAC,oBAAoB,YAAY,UAAU,CAAC;AAGnE,IAAM,qBAAqB,cAAE,OAAO;AAAA,EACzC,gBAAgB;AAAA,EAChB,UAAU,cAAE,QAAQ;AAAA,EACpB,YAAY,cAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAM,qBAAqB,SAAS;AAAA,EACpC,QAAQ,OAAO,SAAS;AAC1B,CAAC;AAIM,IAAM,cAAc,cAAE,OAAO;AAAA;AAAA,EAElC,cAAc,cAAE,IAAI;AAAA,EACpB,gBAAgB;AAClB,CAAC;;;ACpBD,IAAAC,cAAkB;AAElB,IAAM,wBAAwB,cAAE,OAAO;AAAA,EACrC,MAAM,cAAE,QAAQ,MAAM;AAAA,EACtB,UAAU,cAAE,OAAO;AAAA,EACnB,QAAQ,cAAE,OAAO;AACnB,CAAC;AAED,IAAM,wBAAwB,cAAE,OAAO;AAAA,EACrC,MAAM,cAAE,QAAQ,MAAM;AAAA,EACtB,QAAQ,cAAE,OAAO;AACnB,CAAC;AAEM,IAAM,oBAAoB,cAAE,mBAAmB,QAAQ;AAAA,EAC5D;AAAA,EACA;AACF,CAAC;AAIM,IAAM,4BAA4B,cAAE,OAAO;AAAA,EAChD,QAAQ,cAAE,QAAQ,uBAAuB;AAAA,EACzC,YAAY,cAAE,OAAO,EAAE,IAAI;AAC7B,CAAC;AAIM,IAAM,sBAAsB,cAAE,OAAO;AAAA,EAC1C,QAAQ,cAAE,QAAQ,gBAAgB;AAAA,EAClC,UAAU,cAAE,QAAQ;AACtB,CAAC;AAID,IAAM,kCAAkC,cAAE,OAAO;AAAA,EAC/C,QAAQ,cAAE,QAAQ,sBAAsB;AAAA,EACxC,cAAc,cAAE,OAAO;AAAA,IACrB,UAAU,cAAE,OAAO;AAAA,EACrB,CAAC;AACH,CAAC;AAMD,IAAM,oCAAoC,cAAE,OAAO;AAAA,EACjD,QAAQ,cAAE,QAAQ,gCAAgC;AAAA,EAClD,cAAc,cAAE,OAAO;AAAA,IACrB,UAAU,cAAE,OAAO;AAAA,EACrB,CAAC;AAAA,EACD,aAAa,cAAE,OAAO,EAAE,IAAI;AAC9B,CAAC;AAMD,IAAM,mCAAmC,cAAE,OAAO;AAAA,EAChD,QAAQ,cAAE,QAAQ,uBAAuB;AAC3C,CAAC;AAMM,IAAM,wBAAwB,cAAE,mBAAmB,UAAU;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,eAAe,cAAE,OAAO;AAAA,EACnC,MAAM,cAAE,QAAQ,aAAa;AAAA,EAC7B,QAAQ,cAAE,OAAO;AACnB,CAAC;AAIM,IAAM,iBAAiB,cAAE,mBAAmB,UAAU;AAAA,EAC3D,cAAE,OAAO;AAAA,IACP,QAAQ,cAAE,QAAQ,OAAO;AAAA,IACzB,OAAO,cAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACD,cAAE,OAAO;AAAA,IACP,QAAQ,cAAE,QAAQ,SAAS;AAAA,IAC3B,MAAM,cAAE,OAAO;AAAA,IACf,QAAQ,cAAE,OAAO;AAAA,IACjB,cAAc,cAAE,OAAO;AAAA,MACrB,IAAI,cAAE,OAAO;AAAA,IACf,CAAC;AAAA,EACH,CAAC;AAAA,EACD,cAAE,OAAO;AAAA,IACP,QAAQ,cAAE,QAAQ,mBAAmB;AAAA,IACrC,MAAM,cAAE,OAAO;AAAA,IACf,UAAU,cAAE,OAAO;AAAA,EACrB,CAAC;AACH,CAAC;;;ACpGD,IAAAC,cAAkB;AAEX,IAAM,kCAAkC,cAAE,OAAO;AAAA,EACtD,WAAW,cAAE,OAAO;AACtB,CAAC;AAMM,IAAM,uBAAuB,cAAE,OAAO;AAAA,EAC3C,mBAAmB,cAAE,OAAO,EAAE,SAAS;AACzC,CAAC;;;ACZD,IAAAC,cAAkB;AAEX,IAAM,cAAc,cAAE,OAAO;AAAA,EAClC,OAAO,cAAE,OAAO;AAClB,CAAC;;;ACJD,IAAAC,cAAkB;AAEX,IAAM,cAAc,cAAE,OAAO;AAAA,EAClC,MAAM,cAAE,OAAO,KAAK;AAAA,EACpB,IAAI,cAAE,OAAO,KAAK;AACpB,CAAC;AAGM,IAAM,cAAc,cAAE,OAAO;AAAA,EAClC,OAAO,cAAE,OAAO;AAClB,CAAC;AAGD,IAAM,SAAS,cAAE,KAAK,CAAC,UAAU,QAAQ,KAAK,CAAC;AAE/C,IAAM,eAAe,cAAE;AAAA,EACrB,CAAC,QAAS,QAAQ,SAAS,OAAO;AAAA,EAClC,cAAE,QAAQ;AACZ;AAEO,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,MAAM,cAAE,OAAO,KAAK;AAAA,EACpB,IAAI,cAAE,OAAO,KAAK;AAAA;AAAA,EAElB,QAAQ,OAAO,SAAS;AAAA,EACxB,UAAU,cAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAIhC,CAAC;AAIM,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,MAAM,cAAE,OAAO;AAAA,EACf,IAAI,cAAE,OAAO;AAAA,EACb,QAAQ,OAAO,SAAS;AAAA,EACxB,MAAM,cACH,OAAO;AAAA,IACN,OAAO,cAAE,OAAO;AAAA,IAChB,aAAa,cAAE,OAAO;AAAA,IACtB,WAAW,cAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB,CAAC,EACA,MAAM;AACX,CAAC;AAIM,IAAM,0BAA0B,cAAE,OAAO;AAAA,EAC9C,YAAY,cAAE,OAAO;AACvB,CAAC;AAIM,IAAM,kBAAkB,cAAE,OAAO;AAAA,EACtC,MAAM,cAAE,OAAO;AAAA,EACf,MAAM,cAAE,OAAO;AAAA,EACf,UAAU,cAAE,QAAQ;AACtB,CAAC;AAIM,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,WAAW,cAAE,QAAQ;AAAA,EACrB,SAAS,cAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAO,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAAS,cAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAM,gBAAgB,SAAS;AACjC,CAAC;AAIM,IAAM,6BAA6B,cAAE,OAAO;AAAA,EACjD,gBAAgB,cAAE,OAAO;AAAA,EACzB,aAAa,cAAE,OAAO;AAAA,EACtB,gBAAgB,cAAE,OAAO,cAAE,IAAI,CAAC,EAAE,SAAS;AAC7C,CAAC;AAMM,IAAM,8BAA8B,cAAE,mBAAmB,WAAW;AAAA,EACzE,cAAE,OAAO;AAAA,IACP,SAAS,cAAE,QAAQ,IAAI;AAAA,EACzB,CAAC;AAAA,EACD,cAAE,OAAO;AAAA,IACP,SAAS,cAAE,QAAQ,KAAK;AAAA,IACxB,OAAO,cAAE,OAAO;AAAA,EAClB,CAAC;AACH,CAAC;;;ACjGD,IAAAC,cAAkB;AAElB,IAAM,yBAAyB,cAAE,OAAO;AAAA,EACtC,QAAQ,cAAE,OAAO;AAAA,EACjB,QAAQ,cAAE,MAAM,cAAE,OAAO,CAAC;AAAA,EAC1B,aAAa,cAAE,MAAM,cAAE,OAAO,CAAC;AACjC,CAAC;AAEM,IAAM,sBAAsB;AAI5B,IAAM,6BAA6B,cAAE,OAAO;AAAA,EACjD,QAAQ,cAAE,OAAO;AAAA,EACjB,QAAQ,cAAE,MAAM,cAAE,OAAO,CAAC;AAAA,EAC1B,aAAa,cAAE,MAAM,cAAE,OAAO,CAAC;AACjC,CAAC;;;AChBD,IAAAC,cAAkB;AAEX,IAAM,oCAAoC,cAAE,OAAO;AAAA,EACxD,UAAU,cAAE,OAAO;AAAA,EACnB,UAAU,cAAE,OAAO;AAAA,EACnB,WAAW,cAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,eAAe,cAAE,OAAO;AAC1B,CAAC;;;ACgDM,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,QAA6B;AAA7B;AAAA,EAA8B;AAAA,EAE3D,MAAM,QAAgC;AACpC,WAAO,MAAM,KAAK,MAAM,oBAAoB,WAAW;AAAA,EACzD;AAAA,EAEA,MAAM,YAAY,OAA6C;AAC7D,WAAO,MAAM,KAAK,MAAM,gBAAgB,KAAK,IAAI,WAAW;AAAA,EAC9D;AAAA,EAEA,MAAM,MAAM,OAAe,QAA6C;AACtE,UAAM,SAAS,qBAAqB,MAAM;AAC1C,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK,UAAU,iCAAQ,UAAU;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,OACA,QAC8B;AAC9B,UAAM,SAAS,qBAAqB,MAAM;AAC1C,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK,iBAAiB,iCAAQ,UAAU;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,OAAe,MAA6C;AACxE,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,OAAe,MAA+C;AAC3E,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,oBACJ,OACA,MACiC;AACjC,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBACJ,OACwC;AACxC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,4BACJ,WACA,QACoC;AACpC,WAAO,MAAM,KAAK;AAAA,MAChB,oBAAoB,SAAS;AAAA,MAC7B;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,OAAkD;AACrE,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,OAA+C;AACpE,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,oBACJ,OACA,MACgC;AAChC,WAAO,MAAM,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MACJ,MACA,QACA,aAC0B;AAC1B,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,OAAO,GAAG,GAAG,IAAI,IAAI;AAAA,MACxD,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG,2CAAa;AAAA,QAChB,eAAe,UAAU,KAAK,OAAO,MAAM;AAAA,MAC7C;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,YAAM,cAAc,YAAY,MAAMA,KAAI;AAC1C,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,SAAS,OAAO,MAAM,IAAI;AAChC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,qBACd,KAc6B;AAC7B,MAAI,CAAC;AAAK,WAAO;AAEjB,QAAM,eAAe,IAAI,gBAAgB;AAEzC,SAAO,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5C,QAAI,UAAU;AAAW;AACzB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,YAAM,SAAS,MAAM,IAAI,CAAC,MAAM;AAC9B,YAAI,aAAa;AAAM,iBAAO,EAAE,YAAY;AAC5C,eAAO;AAAA,MACT,CAAC;AAED,mBAAa,OAAO,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,IAC3C,OAAO;AACL,YAAM,IAAI,iBAAiB,OAAO,MAAM,YAAY,IAAI;AACxD,mBAAa,OAAO,KAAK,EAAE,SAAS,CAAC;AAAA,IACvC;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AC3QO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAAC;AAAA,EACA,qBAAAC;AACF,GAA8C;AAC5C,QAAM,iBACJ,MAAMD,sBAAqB,SAASC;AACtC,QAAM,aAAa,iBAAiB;AACpC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC3BA,IAAM,qBAAqB,OAAO,QAAQ,IAAI,yBAAyB,CAAC;AACxE,IAAM,sBAAsB,OAAO,QAAQ,IAAI,2BAA2B,CAAC;AAEpE,IAAM,WAAW;AAAA,EACtB,OAAO,kBAAkB;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,YAAY,kBAAkB;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,YAAY,kBAAkB;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,aAAa,kBAAkB;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,aAAa,kBAAkB;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,YAAY,kBAAkB;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,YAAY,kBAAkB;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAIO,IAAM,iBAA8B;","names":["import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","json","centsPerVCpuSecond","centsPerGbRamSecond"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3145,6 +3145,20 @@ declare const Plans: z.ZodObject<{
|
|
|
3145
3145
|
};
|
|
3146
3146
|
}>;
|
|
3147
3147
|
type Plans = z.infer<typeof Plans>;
|
|
3148
|
+
/** The pricing per step of the add-on, e.g. $10 for 50 units */
|
|
3149
|
+
declare const AddOnPricing: z.ZodObject<{
|
|
3150
|
+
/** The step size - must purchase in multiples of this amount */
|
|
3151
|
+
stepSize: z.ZodNumber;
|
|
3152
|
+
/** Price per step in cents */
|
|
3153
|
+
centsPerStep: z.ZodNumber;
|
|
3154
|
+
}, "strip", z.ZodTypeAny, {
|
|
3155
|
+
stepSize: number;
|
|
3156
|
+
centsPerStep: number;
|
|
3157
|
+
}, {
|
|
3158
|
+
stepSize: number;
|
|
3159
|
+
centsPerStep: number;
|
|
3160
|
+
}>;
|
|
3161
|
+
type AddOnPricing = z.infer<typeof AddOnPricing>;
|
|
3148
3162
|
declare const PlansResult: z.ZodObject<{
|
|
3149
3163
|
plans: z.ZodObject<{
|
|
3150
3164
|
free: z.ZodObject<{
|
|
@@ -4589,6 +4603,30 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4589
4603
|
}>;
|
|
4590
4604
|
defaultMachine: string;
|
|
4591
4605
|
}>;
|
|
4606
|
+
addOnPricing: z.ZodObject<{
|
|
4607
|
+
concurrency: z.ZodObject<{
|
|
4608
|
+
/** The step size - must purchase in multiples of this amount */
|
|
4609
|
+
stepSize: z.ZodNumber;
|
|
4610
|
+
/** Price per step in cents */
|
|
4611
|
+
centsPerStep: z.ZodNumber;
|
|
4612
|
+
}, "strip", z.ZodTypeAny, {
|
|
4613
|
+
stepSize: number;
|
|
4614
|
+
centsPerStep: number;
|
|
4615
|
+
}, {
|
|
4616
|
+
stepSize: number;
|
|
4617
|
+
centsPerStep: number;
|
|
4618
|
+
}>;
|
|
4619
|
+
}, "strip", z.ZodTypeAny, {
|
|
4620
|
+
concurrency: {
|
|
4621
|
+
stepSize: number;
|
|
4622
|
+
centsPerStep: number;
|
|
4623
|
+
};
|
|
4624
|
+
}, {
|
|
4625
|
+
concurrency: {
|
|
4626
|
+
stepSize: number;
|
|
4627
|
+
centsPerStep: number;
|
|
4628
|
+
};
|
|
4629
|
+
}>;
|
|
4592
4630
|
}, "strip", z.ZodTypeAny, {
|
|
4593
4631
|
plans: {
|
|
4594
4632
|
free: {
|
|
@@ -4783,6 +4821,12 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4783
4821
|
}>;
|
|
4784
4822
|
defaultMachine: string;
|
|
4785
4823
|
};
|
|
4824
|
+
addOnPricing: {
|
|
4825
|
+
concurrency: {
|
|
4826
|
+
stepSize: number;
|
|
4827
|
+
centsPerStep: number;
|
|
4828
|
+
};
|
|
4829
|
+
};
|
|
4786
4830
|
}, {
|
|
4787
4831
|
plans: {
|
|
4788
4832
|
free: {
|
|
@@ -4977,8 +5021,45 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4977
5021
|
}>;
|
|
4978
5022
|
defaultMachine: string;
|
|
4979
5023
|
};
|
|
5024
|
+
addOnPricing: {
|
|
5025
|
+
concurrency: {
|
|
5026
|
+
stepSize: number;
|
|
5027
|
+
centsPerStep: number;
|
|
5028
|
+
};
|
|
5029
|
+
};
|
|
4980
5030
|
}>;
|
|
4981
5031
|
type PlansResult = z.infer<typeof PlansResult>;
|
|
5032
|
+
declare const AddOnDefinition: z.ZodObject<{
|
|
5033
|
+
code: z.ZodLiteral<"concurrency">;
|
|
5034
|
+
priceCode: z.ZodString;
|
|
5035
|
+
pricing: z.ZodObject<{
|
|
5036
|
+
/** The step size - must purchase in multiples of this amount */
|
|
5037
|
+
stepSize: z.ZodNumber;
|
|
5038
|
+
/** Price per step in cents */
|
|
5039
|
+
centsPerStep: z.ZodNumber;
|
|
5040
|
+
}, "strip", z.ZodTypeAny, {
|
|
5041
|
+
stepSize: number;
|
|
5042
|
+
centsPerStep: number;
|
|
5043
|
+
}, {
|
|
5044
|
+
stepSize: number;
|
|
5045
|
+
centsPerStep: number;
|
|
5046
|
+
}>;
|
|
5047
|
+
}, "strip", z.ZodTypeAny, {
|
|
5048
|
+
code: "concurrency";
|
|
5049
|
+
priceCode: string;
|
|
5050
|
+
pricing: {
|
|
5051
|
+
stepSize: number;
|
|
5052
|
+
centsPerStep: number;
|
|
5053
|
+
};
|
|
5054
|
+
}, {
|
|
5055
|
+
code: "concurrency";
|
|
5056
|
+
priceCode: string;
|
|
5057
|
+
pricing: {
|
|
5058
|
+
stepSize: number;
|
|
5059
|
+
centsPerStep: number;
|
|
5060
|
+
};
|
|
5061
|
+
}>;
|
|
5062
|
+
type AddOnDefinition = z.infer<typeof AddOnDefinition>;
|
|
4982
5063
|
declare const AddOn: z.ZodObject<{
|
|
4983
5064
|
purchased: z.ZodNumber;
|
|
4984
5065
|
quota: z.ZodOptional<z.ZodNumber>;
|
|
@@ -7611,6 +7692,65 @@ declare const SubscribeResultSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObj
|
|
|
7611
7692
|
action: "canceled_subscription";
|
|
7612
7693
|
}>]>;
|
|
7613
7694
|
type SubscribeResult = z.infer<typeof SubscribeResultSchema>;
|
|
7695
|
+
declare const SetAddOnBody: z.ZodObject<{
|
|
7696
|
+
type: z.ZodLiteral<"concurrency">;
|
|
7697
|
+
amount: z.ZodNumber;
|
|
7698
|
+
}, "strip", z.ZodTypeAny, {
|
|
7699
|
+
type: "concurrency";
|
|
7700
|
+
amount: number;
|
|
7701
|
+
}, {
|
|
7702
|
+
type: "concurrency";
|
|
7703
|
+
amount: number;
|
|
7704
|
+
}>;
|
|
7705
|
+
type SetAddOnBody = z.infer<typeof SetAddOnBody>;
|
|
7706
|
+
declare const SetAddOnResult: z.ZodDiscriminatedUnion<"result", [z.ZodObject<{
|
|
7707
|
+
result: z.ZodLiteral<"error">;
|
|
7708
|
+
error: z.ZodString;
|
|
7709
|
+
}, "strip", z.ZodTypeAny, {
|
|
7710
|
+
result: "error";
|
|
7711
|
+
error: string;
|
|
7712
|
+
}, {
|
|
7713
|
+
result: "error";
|
|
7714
|
+
error: string;
|
|
7715
|
+
}>, z.ZodObject<{
|
|
7716
|
+
result: z.ZodLiteral<"success">;
|
|
7717
|
+
type: z.ZodString;
|
|
7718
|
+
amount: z.ZodNumber;
|
|
7719
|
+
subscription: z.ZodObject<{
|
|
7720
|
+
id: z.ZodString;
|
|
7721
|
+
}, "strip", z.ZodTypeAny, {
|
|
7722
|
+
id: string;
|
|
7723
|
+
}, {
|
|
7724
|
+
id: string;
|
|
7725
|
+
}>;
|
|
7726
|
+
}, "strip", z.ZodTypeAny, {
|
|
7727
|
+
type: string;
|
|
7728
|
+
subscription: {
|
|
7729
|
+
id: string;
|
|
7730
|
+
};
|
|
7731
|
+
amount: number;
|
|
7732
|
+
result: "success";
|
|
7733
|
+
}, {
|
|
7734
|
+
type: string;
|
|
7735
|
+
subscription: {
|
|
7736
|
+
id: string;
|
|
7737
|
+
};
|
|
7738
|
+
amount: number;
|
|
7739
|
+
result: "success";
|
|
7740
|
+
}>, z.ZodObject<{
|
|
7741
|
+
result: z.ZodLiteral<"max_quota_reached">;
|
|
7742
|
+
type: z.ZodString;
|
|
7743
|
+
maxQuota: z.ZodNumber;
|
|
7744
|
+
}, "strip", z.ZodTypeAny, {
|
|
7745
|
+
type: string;
|
|
7746
|
+
result: "max_quota_reached";
|
|
7747
|
+
maxQuota: number;
|
|
7748
|
+
}, {
|
|
7749
|
+
type: string;
|
|
7750
|
+
result: "max_quota_reached";
|
|
7751
|
+
maxQuota: number;
|
|
7752
|
+
}>]>;
|
|
7753
|
+
type SetAddOnResult = z.infer<typeof SetAddOnResult>;
|
|
7614
7754
|
|
|
7615
7755
|
declare const CustomerPortalRequestBodySchema: z.ZodObject<{
|
|
7616
7756
|
returnUrl: z.ZodString;
|
|
@@ -7874,6 +8014,7 @@ type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;
|
|
|
7874
8014
|
type UsageEntitlementResponse = Result<typeof ReportUsageResult>;
|
|
7875
8015
|
type BillingAlertsResponse = Result<typeof BillingAlertsResult>;
|
|
7876
8016
|
type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;
|
|
8017
|
+
type SetAddOnResponse = Result<typeof SetAddOnResult>;
|
|
7877
8018
|
declare class BillingClient {
|
|
7878
8019
|
private readonly config;
|
|
7879
8020
|
constructor(config: BillingClientConfig);
|
|
@@ -7882,6 +8023,7 @@ declare class BillingClient {
|
|
|
7882
8023
|
usage(orgId: string, params: UsageParams): Promise<UsageResponse>;
|
|
7883
8024
|
usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse>;
|
|
7884
8025
|
setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse>;
|
|
8026
|
+
setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse>;
|
|
7885
8027
|
createPortalSession(orgId: string, body: CustomerPortalRequestBody): Promise<CustomerPortalResponse>;
|
|
7886
8028
|
/**
|
|
7887
8029
|
*
|
|
@@ -7973,4 +8115,4 @@ declare const machines: {
|
|
|
7973
8115
|
type MachineCode = keyof typeof machines;
|
|
7974
8116
|
declare const defaultMachine: MachineCode;
|
|
7975
8117
|
|
|
7976
|
-
export { AddOn, AddOns, type BillingAlertsResponse, BillingAlertsResult, BillingClient, type CanceledSubscriptionResult, type CreateSubscriptionFlowStart, CurrentPlan, type CurrentPlanResponse, type CustomerPortal, type CustomerPortalRequestBody, CustomerPortalRequestBodySchema, type CustomerPortalResponse, CustomerPortalSchema, EnterprisePlanDefinition, EnvironmentBasedLimit, type Error, ErrorSchema, ExceedableLimit, type FreeConnectRequired, FreeConnectRequiredSchema, type FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, type MachineCode, MachineDefinition, type MachineDefinitionInput, PaidPlanDefinition, type PlanDefinition, PlanDefinitionSchema, Plans, type PlansResponse, PlansResult, type RegistryCredentialsResponse, RegistryCredentialsResponseSchema, type RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, type SetPlanBody, SetPlanBodySchema, type SetPlanResponse, type SubscribeResult, SubscribeResultSchema, SubscriptionResult, UpdateBillingAlertsRequest, type UpdatedSubscriptionResult, type UsageEntitlementResponse, type UsageInvocationReportResponse, UsageParams, type UsageResponse, UsageResult, UsageSeriesParams, type UsageSeriesResponse, UsageSeriesResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
|
|
8118
|
+
export { AddOn, AddOnDefinition, AddOnPricing, AddOns, type BillingAlertsResponse, BillingAlertsResult, BillingClient, type CanceledSubscriptionResult, type CreateSubscriptionFlowStart, CurrentPlan, type CurrentPlanResponse, type CustomerPortal, type CustomerPortalRequestBody, CustomerPortalRequestBodySchema, type CustomerPortalResponse, CustomerPortalSchema, EnterprisePlanDefinition, EnvironmentBasedLimit, type Error, ErrorSchema, ExceedableLimit, type FreeConnectRequired, FreeConnectRequiredSchema, type FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, type MachineCode, MachineDefinition, type MachineDefinitionInput, PaidPlanDefinition, type PlanDefinition, PlanDefinitionSchema, Plans, type PlansResponse, PlansResult, type RegistryCredentialsResponse, RegistryCredentialsResponseSchema, type RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, SetAddOnBody, type SetAddOnResponse, SetAddOnResult, type SetPlanBody, SetPlanBodySchema, type SetPlanResponse, type SubscribeResult, SubscribeResultSchema, SubscriptionResult, UpdateBillingAlertsRequest, type UpdatedSubscriptionResult, type UsageEntitlementResponse, type UsageInvocationReportResponse, UsageParams, type UsageResponse, UsageResult, UsageSeriesParams, type UsageSeriesResponse, UsageSeriesResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
|
package/dist/index.d.ts
CHANGED
|
@@ -3145,6 +3145,20 @@ declare const Plans: z.ZodObject<{
|
|
|
3145
3145
|
};
|
|
3146
3146
|
}>;
|
|
3147
3147
|
type Plans = z.infer<typeof Plans>;
|
|
3148
|
+
/** The pricing per step of the add-on, e.g. $10 for 50 units */
|
|
3149
|
+
declare const AddOnPricing: z.ZodObject<{
|
|
3150
|
+
/** The step size - must purchase in multiples of this amount */
|
|
3151
|
+
stepSize: z.ZodNumber;
|
|
3152
|
+
/** Price per step in cents */
|
|
3153
|
+
centsPerStep: z.ZodNumber;
|
|
3154
|
+
}, "strip", z.ZodTypeAny, {
|
|
3155
|
+
stepSize: number;
|
|
3156
|
+
centsPerStep: number;
|
|
3157
|
+
}, {
|
|
3158
|
+
stepSize: number;
|
|
3159
|
+
centsPerStep: number;
|
|
3160
|
+
}>;
|
|
3161
|
+
type AddOnPricing = z.infer<typeof AddOnPricing>;
|
|
3148
3162
|
declare const PlansResult: z.ZodObject<{
|
|
3149
3163
|
plans: z.ZodObject<{
|
|
3150
3164
|
free: z.ZodObject<{
|
|
@@ -4589,6 +4603,30 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4589
4603
|
}>;
|
|
4590
4604
|
defaultMachine: string;
|
|
4591
4605
|
}>;
|
|
4606
|
+
addOnPricing: z.ZodObject<{
|
|
4607
|
+
concurrency: z.ZodObject<{
|
|
4608
|
+
/** The step size - must purchase in multiples of this amount */
|
|
4609
|
+
stepSize: z.ZodNumber;
|
|
4610
|
+
/** Price per step in cents */
|
|
4611
|
+
centsPerStep: z.ZodNumber;
|
|
4612
|
+
}, "strip", z.ZodTypeAny, {
|
|
4613
|
+
stepSize: number;
|
|
4614
|
+
centsPerStep: number;
|
|
4615
|
+
}, {
|
|
4616
|
+
stepSize: number;
|
|
4617
|
+
centsPerStep: number;
|
|
4618
|
+
}>;
|
|
4619
|
+
}, "strip", z.ZodTypeAny, {
|
|
4620
|
+
concurrency: {
|
|
4621
|
+
stepSize: number;
|
|
4622
|
+
centsPerStep: number;
|
|
4623
|
+
};
|
|
4624
|
+
}, {
|
|
4625
|
+
concurrency: {
|
|
4626
|
+
stepSize: number;
|
|
4627
|
+
centsPerStep: number;
|
|
4628
|
+
};
|
|
4629
|
+
}>;
|
|
4592
4630
|
}, "strip", z.ZodTypeAny, {
|
|
4593
4631
|
plans: {
|
|
4594
4632
|
free: {
|
|
@@ -4783,6 +4821,12 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4783
4821
|
}>;
|
|
4784
4822
|
defaultMachine: string;
|
|
4785
4823
|
};
|
|
4824
|
+
addOnPricing: {
|
|
4825
|
+
concurrency: {
|
|
4826
|
+
stepSize: number;
|
|
4827
|
+
centsPerStep: number;
|
|
4828
|
+
};
|
|
4829
|
+
};
|
|
4786
4830
|
}, {
|
|
4787
4831
|
plans: {
|
|
4788
4832
|
free: {
|
|
@@ -4977,8 +5021,45 @@ declare const PlansResult: z.ZodObject<{
|
|
|
4977
5021
|
}>;
|
|
4978
5022
|
defaultMachine: string;
|
|
4979
5023
|
};
|
|
5024
|
+
addOnPricing: {
|
|
5025
|
+
concurrency: {
|
|
5026
|
+
stepSize: number;
|
|
5027
|
+
centsPerStep: number;
|
|
5028
|
+
};
|
|
5029
|
+
};
|
|
4980
5030
|
}>;
|
|
4981
5031
|
type PlansResult = z.infer<typeof PlansResult>;
|
|
5032
|
+
declare const AddOnDefinition: z.ZodObject<{
|
|
5033
|
+
code: z.ZodLiteral<"concurrency">;
|
|
5034
|
+
priceCode: z.ZodString;
|
|
5035
|
+
pricing: z.ZodObject<{
|
|
5036
|
+
/** The step size - must purchase in multiples of this amount */
|
|
5037
|
+
stepSize: z.ZodNumber;
|
|
5038
|
+
/** Price per step in cents */
|
|
5039
|
+
centsPerStep: z.ZodNumber;
|
|
5040
|
+
}, "strip", z.ZodTypeAny, {
|
|
5041
|
+
stepSize: number;
|
|
5042
|
+
centsPerStep: number;
|
|
5043
|
+
}, {
|
|
5044
|
+
stepSize: number;
|
|
5045
|
+
centsPerStep: number;
|
|
5046
|
+
}>;
|
|
5047
|
+
}, "strip", z.ZodTypeAny, {
|
|
5048
|
+
code: "concurrency";
|
|
5049
|
+
priceCode: string;
|
|
5050
|
+
pricing: {
|
|
5051
|
+
stepSize: number;
|
|
5052
|
+
centsPerStep: number;
|
|
5053
|
+
};
|
|
5054
|
+
}, {
|
|
5055
|
+
code: "concurrency";
|
|
5056
|
+
priceCode: string;
|
|
5057
|
+
pricing: {
|
|
5058
|
+
stepSize: number;
|
|
5059
|
+
centsPerStep: number;
|
|
5060
|
+
};
|
|
5061
|
+
}>;
|
|
5062
|
+
type AddOnDefinition = z.infer<typeof AddOnDefinition>;
|
|
4982
5063
|
declare const AddOn: z.ZodObject<{
|
|
4983
5064
|
purchased: z.ZodNumber;
|
|
4984
5065
|
quota: z.ZodOptional<z.ZodNumber>;
|
|
@@ -7611,6 +7692,65 @@ declare const SubscribeResultSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObj
|
|
|
7611
7692
|
action: "canceled_subscription";
|
|
7612
7693
|
}>]>;
|
|
7613
7694
|
type SubscribeResult = z.infer<typeof SubscribeResultSchema>;
|
|
7695
|
+
declare const SetAddOnBody: z.ZodObject<{
|
|
7696
|
+
type: z.ZodLiteral<"concurrency">;
|
|
7697
|
+
amount: z.ZodNumber;
|
|
7698
|
+
}, "strip", z.ZodTypeAny, {
|
|
7699
|
+
type: "concurrency";
|
|
7700
|
+
amount: number;
|
|
7701
|
+
}, {
|
|
7702
|
+
type: "concurrency";
|
|
7703
|
+
amount: number;
|
|
7704
|
+
}>;
|
|
7705
|
+
type SetAddOnBody = z.infer<typeof SetAddOnBody>;
|
|
7706
|
+
declare const SetAddOnResult: z.ZodDiscriminatedUnion<"result", [z.ZodObject<{
|
|
7707
|
+
result: z.ZodLiteral<"error">;
|
|
7708
|
+
error: z.ZodString;
|
|
7709
|
+
}, "strip", z.ZodTypeAny, {
|
|
7710
|
+
result: "error";
|
|
7711
|
+
error: string;
|
|
7712
|
+
}, {
|
|
7713
|
+
result: "error";
|
|
7714
|
+
error: string;
|
|
7715
|
+
}>, z.ZodObject<{
|
|
7716
|
+
result: z.ZodLiteral<"success">;
|
|
7717
|
+
type: z.ZodString;
|
|
7718
|
+
amount: z.ZodNumber;
|
|
7719
|
+
subscription: z.ZodObject<{
|
|
7720
|
+
id: z.ZodString;
|
|
7721
|
+
}, "strip", z.ZodTypeAny, {
|
|
7722
|
+
id: string;
|
|
7723
|
+
}, {
|
|
7724
|
+
id: string;
|
|
7725
|
+
}>;
|
|
7726
|
+
}, "strip", z.ZodTypeAny, {
|
|
7727
|
+
type: string;
|
|
7728
|
+
subscription: {
|
|
7729
|
+
id: string;
|
|
7730
|
+
};
|
|
7731
|
+
amount: number;
|
|
7732
|
+
result: "success";
|
|
7733
|
+
}, {
|
|
7734
|
+
type: string;
|
|
7735
|
+
subscription: {
|
|
7736
|
+
id: string;
|
|
7737
|
+
};
|
|
7738
|
+
amount: number;
|
|
7739
|
+
result: "success";
|
|
7740
|
+
}>, z.ZodObject<{
|
|
7741
|
+
result: z.ZodLiteral<"max_quota_reached">;
|
|
7742
|
+
type: z.ZodString;
|
|
7743
|
+
maxQuota: z.ZodNumber;
|
|
7744
|
+
}, "strip", z.ZodTypeAny, {
|
|
7745
|
+
type: string;
|
|
7746
|
+
result: "max_quota_reached";
|
|
7747
|
+
maxQuota: number;
|
|
7748
|
+
}, {
|
|
7749
|
+
type: string;
|
|
7750
|
+
result: "max_quota_reached";
|
|
7751
|
+
maxQuota: number;
|
|
7752
|
+
}>]>;
|
|
7753
|
+
type SetAddOnResult = z.infer<typeof SetAddOnResult>;
|
|
7614
7754
|
|
|
7615
7755
|
declare const CustomerPortalRequestBodySchema: z.ZodObject<{
|
|
7616
7756
|
returnUrl: z.ZodString;
|
|
@@ -7874,6 +8014,7 @@ type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;
|
|
|
7874
8014
|
type UsageEntitlementResponse = Result<typeof ReportUsageResult>;
|
|
7875
8015
|
type BillingAlertsResponse = Result<typeof BillingAlertsResult>;
|
|
7876
8016
|
type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;
|
|
8017
|
+
type SetAddOnResponse = Result<typeof SetAddOnResult>;
|
|
7877
8018
|
declare class BillingClient {
|
|
7878
8019
|
private readonly config;
|
|
7879
8020
|
constructor(config: BillingClientConfig);
|
|
@@ -7882,6 +8023,7 @@ declare class BillingClient {
|
|
|
7882
8023
|
usage(orgId: string, params: UsageParams): Promise<UsageResponse>;
|
|
7883
8024
|
usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse>;
|
|
7884
8025
|
setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse>;
|
|
8026
|
+
setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse>;
|
|
7885
8027
|
createPortalSession(orgId: string, body: CustomerPortalRequestBody): Promise<CustomerPortalResponse>;
|
|
7886
8028
|
/**
|
|
7887
8029
|
*
|
|
@@ -7973,4 +8115,4 @@ declare const machines: {
|
|
|
7973
8115
|
type MachineCode = keyof typeof machines;
|
|
7974
8116
|
declare const defaultMachine: MachineCode;
|
|
7975
8117
|
|
|
7976
|
-
export { AddOn, AddOns, type BillingAlertsResponse, BillingAlertsResult, BillingClient, type CanceledSubscriptionResult, type CreateSubscriptionFlowStart, CurrentPlan, type CurrentPlanResponse, type CustomerPortal, type CustomerPortalRequestBody, CustomerPortalRequestBodySchema, type CustomerPortalResponse, CustomerPortalSchema, EnterprisePlanDefinition, EnvironmentBasedLimit, type Error, ErrorSchema, ExceedableLimit, type FreeConnectRequired, FreeConnectRequiredSchema, type FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, type MachineCode, MachineDefinition, type MachineDefinitionInput, PaidPlanDefinition, type PlanDefinition, PlanDefinitionSchema, Plans, type PlansResponse, PlansResult, type RegistryCredentialsResponse, RegistryCredentialsResponseSchema, type RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, type SetPlanBody, SetPlanBodySchema, type SetPlanResponse, type SubscribeResult, SubscribeResultSchema, SubscriptionResult, UpdateBillingAlertsRequest, type UpdatedSubscriptionResult, type UsageEntitlementResponse, type UsageInvocationReportResponse, UsageParams, type UsageResponse, UsageResult, UsageSeriesParams, type UsageSeriesResponse, UsageSeriesResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
|
|
8118
|
+
export { AddOn, AddOnDefinition, AddOnPricing, AddOns, type BillingAlertsResponse, BillingAlertsResult, BillingClient, type CanceledSubscriptionResult, type CreateSubscriptionFlowStart, CurrentPlan, type CurrentPlanResponse, type CustomerPortal, type CustomerPortalRequestBody, CustomerPortalRequestBodySchema, type CustomerPortalResponse, CustomerPortalSchema, EnterprisePlanDefinition, EnvironmentBasedLimit, type Error, ErrorSchema, ExceedableLimit, type FreeConnectRequired, FreeConnectRequiredSchema, type FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, type MachineCode, MachineDefinition, type MachineDefinitionInput, PaidPlanDefinition, type PlanDefinition, PlanDefinitionSchema, Plans, type PlansResponse, PlansResult, type RegistryCredentialsResponse, RegistryCredentialsResponseSchema, type RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, SetAddOnBody, type SetAddOnResponse, SetAddOnResult, type SetPlanBody, SetPlanBodySchema, type SetPlanResponse, type SubscribeResult, SubscribeResultSchema, SubscriptionResult, UpdateBillingAlertsRequest, type UpdatedSubscriptionResult, type UsageEntitlementResponse, type UsageInvocationReportResponse, UsageParams, type UsageResponse, UsageResult, UsageSeriesParams, type UsageSeriesResponse, UsageSeriesResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
|
package/dist/index.js
CHANGED
|
@@ -69,14 +69,29 @@ var Plans = z.object({
|
|
|
69
69
|
pro: PaidPlanDefinition,
|
|
70
70
|
enterprise: EnterprisePlanDefinition
|
|
71
71
|
});
|
|
72
|
+
var AddOnPricing = z.object({
|
|
73
|
+
/** The step size - must purchase in multiples of this amount */
|
|
74
|
+
stepSize: z.number(),
|
|
75
|
+
/** Price per step in cents */
|
|
76
|
+
centsPerStep: z.number()
|
|
77
|
+
});
|
|
72
78
|
var PlansResult = z.object({
|
|
73
79
|
plans: Plans,
|
|
74
80
|
usagePricing: z.object({
|
|
75
81
|
centsPerRunInvocation: z.number(),
|
|
76
82
|
machines: z.record(z.string(), MachineDefinition),
|
|
77
83
|
defaultMachine: z.string()
|
|
84
|
+
}),
|
|
85
|
+
addOnPricing: z.object({
|
|
86
|
+
concurrency: AddOnPricing
|
|
78
87
|
})
|
|
79
88
|
});
|
|
89
|
+
var AddOnDefinition = z.object({
|
|
90
|
+
// Change to a union later
|
|
91
|
+
code: z.literal("concurrency"),
|
|
92
|
+
priceCode: z.string(),
|
|
93
|
+
pricing: AddOnPricing
|
|
94
|
+
});
|
|
80
95
|
var AddOn = z.object({
|
|
81
96
|
purchased: z.number(),
|
|
82
97
|
quota: z.number().optional()
|
|
@@ -147,6 +162,29 @@ var SubscribeResultSchema = z3.discriminatedUnion("action", [
|
|
|
147
162
|
UpdatedSubscriptionResultSchema,
|
|
148
163
|
CanceledSubscriptionResultSchema
|
|
149
164
|
]);
|
|
165
|
+
var SetAddOnBody = z3.object({
|
|
166
|
+
type: z3.literal("concurrency"),
|
|
167
|
+
amount: z3.number()
|
|
168
|
+
});
|
|
169
|
+
var SetAddOnResult = z3.discriminatedUnion("result", [
|
|
170
|
+
z3.object({
|
|
171
|
+
result: z3.literal("error"),
|
|
172
|
+
error: z3.string()
|
|
173
|
+
}),
|
|
174
|
+
z3.object({
|
|
175
|
+
result: z3.literal("success"),
|
|
176
|
+
type: z3.string(),
|
|
177
|
+
amount: z3.number(),
|
|
178
|
+
subscription: z3.object({
|
|
179
|
+
id: z3.string()
|
|
180
|
+
})
|
|
181
|
+
}),
|
|
182
|
+
z3.object({
|
|
183
|
+
result: z3.literal("max_quota_reached"),
|
|
184
|
+
type: z3.string(),
|
|
185
|
+
maxQuota: z3.number()
|
|
186
|
+
})
|
|
187
|
+
]);
|
|
150
188
|
|
|
151
189
|
// src/v3/schemas/portal.ts
|
|
152
190
|
import { z as z4 } from "zod";
|
|
@@ -295,6 +333,19 @@ var BillingClient = class {
|
|
|
295
333
|
}
|
|
296
334
|
);
|
|
297
335
|
}
|
|
336
|
+
async setAddOn(orgId, body) {
|
|
337
|
+
return await this.fetch(
|
|
338
|
+
`/api/v1/orgs/${orgId}/v3/subscription/addon`,
|
|
339
|
+
SetAddOnResult,
|
|
340
|
+
{
|
|
341
|
+
method: "POST",
|
|
342
|
+
headers: {
|
|
343
|
+
"Content-Type": "application/json"
|
|
344
|
+
},
|
|
345
|
+
body: JSON.stringify(body)
|
|
346
|
+
}
|
|
347
|
+
);
|
|
348
|
+
}
|
|
298
349
|
async createPortalSession(orgId, body) {
|
|
299
350
|
return await this.fetch(
|
|
300
351
|
`/api/v1/orgs/${orgId}/v3/subscription/portal`,
|
|
@@ -506,6 +557,7 @@ var machines = {
|
|
|
506
557
|
var defaultMachine = "small-1x";
|
|
507
558
|
export {
|
|
508
559
|
AddOn,
|
|
560
|
+
AddOnDefinition,
|
|
509
561
|
AddOns,
|
|
510
562
|
BillingAlertsResult,
|
|
511
563
|
BillingClient,
|
|
@@ -524,6 +576,8 @@ export {
|
|
|
524
576
|
ReportInvocationUsageResult,
|
|
525
577
|
ReportUsagePlan,
|
|
526
578
|
ReportUsageResult,
|
|
579
|
+
SetAddOnBody,
|
|
580
|
+
SetAddOnResult,
|
|
527
581
|
SetPlanBodySchema,
|
|
528
582
|
SubscribeResultSchema,
|
|
529
583
|
SubscriptionResult,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\n\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<\n typeof UpdatedSubscriptionResultSchema\n>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<\n typeof CreateSubscriptionFlowStartSchema\n>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<\n typeof CanceledSubscriptionResultSchema\n>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<\n typeof CustomerPortalRequestBodySchema\n>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\nexport const ErrorSchema = z.object({\n error: z.string(),\n});\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\nconst BooleanParam = z.preprocess(\n (val) => (val === \"true\" ? true : false),\n z.boolean()\n);\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string(),\n costInCents: z.number(),\n additionalData: z.record(z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<\n typeof ReportInvocationUsageEvent\n>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<\n typeof UpdateBillingAlertsRequest\n>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<\n typeof RegistryCredentialsResponseSchema\n>;\n","import { ZodType, z } from \"zod\";\nimport {\n BillingAlertsResult,\n CurrentPlan,\n CustomerPortalRequestBody,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageEvent,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SetPlanBody,\n SubscribeResultSchema,\n UpdateBillingAlertsRequest,\n UsageParams,\n UsageResult,\n UsageSeriesParams,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<\n typeof ReportInvocationUsageResult\n>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type RegistryCredentialsResult = Result<\n typeof RegistryCredentialsResponseSchema\n>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage?${search?.toString()}`,\n UsageResult\n );\n }\n\n async usageSeries(\n orgId: string,\n params: UsageSeriesParams\n ): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription`,\n SubscribeResultSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/portal`,\n CustomerPortalSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(\n `/api/v1/usage/ingest/invocation`,\n ReportInvocationUsageResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n }\n );\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/entitlement`,\n ReportUsageResult\n );\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult\n );\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n const json = await response.json();\n const parsedError = ErrorSchema.parse(json);\n return {\n success: false,\n error: parsedError.error,\n };\n }\n\n const json = await response.json();\n const parsed = schema.parse(json);\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | Date\n | Date[]\n | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond =\n cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","json","centsPerVCpuSecond","centsPerGbRamSecond"]}
|
|
1
|
+
{"version":3,"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\n\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n // Change to a union later\n code: z.literal(\"concurrency\"),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<\n typeof UpdatedSubscriptionResultSchema\n>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<\n typeof CreateSubscriptionFlowStartSchema\n>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<\n typeof CanceledSubscriptionResultSchema\n>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.literal(\"concurrency\"),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<\n typeof CustomerPortalRequestBodySchema\n>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\nexport const ErrorSchema = z.object({\n error: z.string(),\n});\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\nconst BooleanParam = z.preprocess(\n (val) => (val === \"true\" ? true : false),\n z.boolean()\n);\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string(),\n costInCents: z.number(),\n additionalData: z.record(z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<\n typeof ReportInvocationUsageEvent\n>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<\n typeof UpdateBillingAlertsRequest\n>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<\n typeof RegistryCredentialsResponseSchema\n>;\n","import { ZodType, z } from \"zod\";\nimport {\n BillingAlertsResult,\n CurrentPlan,\n CustomerPortalRequestBody,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageEvent,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SetPlanBody,\n SubscribeResultSchema,\n UpdateBillingAlertsRequest,\n UsageParams,\n UsageResult,\n UsageSeriesParams,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n SetAddOnBody,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<\n typeof ReportInvocationUsageResult\n>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type RegistryCredentialsResult = Result<\n typeof RegistryCredentialsResponseSchema\n>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage?${search?.toString()}`,\n UsageResult\n );\n }\n\n async usageSeries(\n orgId: string,\n params: UsageSeriesParams\n ): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription`,\n SubscribeResultSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/addon`,\n SetAddOnResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/portal`,\n CustomerPortalSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(\n `/api/v1/usage/ingest/invocation`,\n ReportInvocationUsageResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n }\n );\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/entitlement`,\n ReportUsageResult\n );\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult\n );\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/billing-alerts`,\n BillingAlertsResult,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n const json = await response.json();\n const parsedError = ErrorSchema.parse(json);\n return {\n success: false,\n error: parsedError.error,\n };\n }\n\n const json = await response.json();\n const parsed = schema.parse(json);\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | Date\n | Date[]\n | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond =\n cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","json","centsPerVCpuSecond","centsPerGbRamSecond"]}
|
package/package.json
CHANGED