@spacefast/common 0.0.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/README.md +42 -0
- package/dist/brand.d.ts +15 -0
- package/dist/brand.js +24 -0
- package/dist/config/domains.d.ts +30 -0
- package/dist/config/domains.js +75 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +3 -0
- package/dist/contracts/abuse.d.ts +93 -0
- package/dist/contracts/abuse.js +50 -0
- package/dist/contracts/access.d.ts +409 -0
- package/dist/contracts/access.js +396 -0
- package/dist/contracts/account.d.ts +28 -0
- package/dist/contracts/account.js +54 -0
- package/dist/contracts/activity.d.ts +118 -0
- package/dist/contracts/activity.js +180 -0
- package/dist/contracts/analytics.d.ts +56 -0
- package/dist/contracts/analytics.js +91 -0
- package/dist/contracts/annotations.d.ts +327 -0
- package/dist/contracts/annotations.js +234 -0
- package/dist/contracts/api-keys.d.ts +517 -0
- package/dist/contracts/api-keys.js +235 -0
- package/dist/contracts/archives.d.ts +332 -0
- package/dist/contracts/archives.js +120 -0
- package/dist/contracts/auth.d.ts +86 -0
- package/dist/contracts/auth.js +82 -0
- package/dist/contracts/beta.d.ts +106 -0
- package/dist/contracts/beta.js +104 -0
- package/dist/contracts/billing.d.ts +328 -0
- package/dist/contracts/billing.js +203 -0
- package/dist/contracts/builds.d.ts +504 -0
- package/dist/contracts/builds.js +248 -0
- package/dist/contracts/channels.d.ts +49 -0
- package/dist/contracts/channels.js +51 -0
- package/dist/contracts/common.d.ts +238 -0
- package/dist/contracts/common.js +175 -0
- package/dist/contracts/deployments.d.ts +574 -0
- package/dist/contracts/deployments.js +97 -0
- package/dist/contracts/device-auth.d.ts +194 -0
- package/dist/contracts/device-auth.js +162 -0
- package/dist/contracts/domains.d.ts +6115 -0
- package/dist/contracts/domains.js +1435 -0
- package/dist/contracts/enums.d.ts +196 -0
- package/dist/contracts/enums.js +211 -0
- package/dist/contracts/error-code-meta.d.ts +1560 -0
- package/dist/contracts/error-code-meta.js +400 -0
- package/dist/contracts/error-codes.d.ts +13 -0
- package/dist/contracts/error-codes.js +416 -0
- package/dist/contracts/events.d.ts +398 -0
- package/dist/contracts/events.js +320 -0
- package/dist/contracts/fast-domain-search.d.ts +19 -0
- package/dist/contracts/fast-domain-search.js +22 -0
- package/dist/contracts/features.d.ts +240 -0
- package/dist/contracts/features.js +406 -0
- package/dist/contracts/git.d.ts +288 -0
- package/dist/contracts/git.js +116 -0
- package/dist/contracts/ids.d.ts +35 -0
- package/dist/contracts/ids.js +45 -0
- package/dist/contracts/intercom.d.ts +6 -0
- package/dist/contracts/intercom.js +5 -0
- package/dist/contracts/internal.d.ts +103 -0
- package/dist/contracts/internal.js +92 -0
- package/dist/contracts/mcp.d.ts +788 -0
- package/dist/contracts/mcp.js +161 -0
- package/dist/contracts/me.d.ts +81 -0
- package/dist/contracts/me.js +104 -0
- package/dist/contracts/oauth-resources.d.ts +30 -0
- package/dist/contracts/oauth-resources.js +61 -0
- package/dist/contracts/operations.d.ts +54 -0
- package/dist/contracts/operations.js +14 -0
- package/dist/contracts/plan-policy.d.ts +85 -0
- package/dist/contracts/plan-policy.js +75 -0
- package/dist/contracts/platform.d.ts +359 -0
- package/dist/contracts/platform.js +216 -0
- package/dist/contracts/push-new.d.ts +156 -0
- package/dist/contracts/push-new.js +52 -0
- package/dist/contracts/quotas.d.ts +16 -0
- package/dist/contracts/quotas.js +36 -0
- package/dist/contracts/repository-connections.d.ts +231 -0
- package/dist/contracts/repository-connections.js +106 -0
- package/dist/contracts/resources.d.ts +529 -0
- package/dist/contracts/resources.js +209 -0
- package/dist/contracts/routes.d.ts +45 -0
- package/dist/contracts/routes.js +31 -0
- package/dist/contracts/runtime-api.d.ts +449 -0
- package/dist/contracts/runtime-api.js +513 -0
- package/dist/contracts/sites.d.ts +393 -0
- package/dist/contracts/sites.js +121 -0
- package/dist/contracts/slugs.d.ts +31 -0
- package/dist/contracts/slugs.js +47 -0
- package/dist/contracts/space-config.d.ts +216 -0
- package/dist/contracts/space-config.js +237 -0
- package/dist/contracts/space-theme.d.ts +25 -0
- package/dist/contracts/space-theme.js +49 -0
- package/dist/contracts/spaces.d.ts +2760 -0
- package/dist/contracts/spaces.js +589 -0
- package/dist/contracts/superadmin-activity.d.ts +205 -0
- package/dist/contracts/superadmin-activity.js +107 -0
- package/dist/contracts/superadmin-emails.d.ts +212 -0
- package/dist/contracts/superadmin-emails.js +112 -0
- package/dist/contracts/superadmin-queues.d.ts +414 -0
- package/dist/contracts/superadmin-queues.js +202 -0
- package/dist/contracts/superadmin-runtime.d.ts +27 -0
- package/dist/contracts/superadmin-runtime.js +38 -0
- package/dist/contracts/superadmin-spaces.d.ts +429 -0
- package/dist/contracts/superadmin-spaces.js +82 -0
- package/dist/contracts/superadmin-tenants.d.ts +180 -0
- package/dist/contracts/superadmin-tenants.js +117 -0
- package/dist/contracts/superadmin.d.ts +654 -0
- package/dist/contracts/superadmin.js +309 -0
- package/dist/contracts/tags.d.ts +1140 -0
- package/dist/contracts/tags.js +1050 -0
- package/dist/contracts/teams.d.ts +233 -0
- package/dist/contracts/teams.js +174 -0
- package/dist/contracts/telemetry.d.ts +2 -0
- package/dist/contracts/telemetry.js +1 -0
- package/dist/contracts/transfers.d.ts +105 -0
- package/dist/contracts/transfers.js +48 -0
- package/dist/contracts/variables.d.ts +189 -0
- package/dist/contracts/variables.js +82 -0
- package/dist/contracts/webhooks.d.ts +159 -0
- package/dist/contracts/webhooks.js +59 -0
- package/dist/contracts/zero.d.ts +1538 -0
- package/dist/contracts/zero.js +755 -0
- package/dist/docs/agent-prose.d.ts +35 -0
- package/dist/docs/agent-prose.js +153 -0
- package/dist/docs/agent-setup.d.ts +6 -0
- package/dist/docs/agent-setup.js +164 -0
- package/dist/docs/agent-solutions.d.ts +110 -0
- package/dist/docs/agent-solutions.js +181 -0
- package/dist/docs/error-docs.d.ts +12 -0
- package/dist/docs/error-docs.js +1601 -0
- package/dist/docs/skill-distribution.d.ts +12 -0
- package/dist/docs/skill-distribution.js +18 -0
- package/dist/domain-exploration.d.ts +108 -0
- package/dist/domain-exploration.js +488 -0
- package/dist/domain-normalize.d.ts +1 -0
- package/dist/domain-normalize.js +14 -0
- package/dist/domain-zones.d.ts +1 -0
- package/dist/domain-zones.js +5272 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/utils/access-policy.d.ts +39 -0
- package/dist/utils/access-policy.js +232 -0
- package/dist/utils/api.d.ts +4 -0
- package/dist/utils/api.js +13 -0
- package/dist/utils/auth-redirect.d.ts +1 -0
- package/dist/utils/auth-redirect.js +48 -0
- package/dist/utils/auth.d.ts +5 -0
- package/dist/utils/auth.js +13 -0
- package/dist/utils/build-settings.d.ts +49 -0
- package/dist/utils/build-settings.js +366 -0
- package/dist/utils/claim-token.d.ts +1 -0
- package/dist/utils/claim-token.js +9 -0
- package/dist/utils/collections.d.ts +1 -0
- package/dist/utils/collections.js +5 -0
- package/dist/utils/concurrency.d.ts +1 -0
- package/dist/utils/concurrency.js +18 -0
- package/dist/utils/content-type.d.ts +10 -0
- package/dist/utils/content-type.js +145 -0
- package/dist/utils/error-display.d.ts +7 -0
- package/dist/utils/error-display.js +42 -0
- package/dist/utils/error.d.ts +1 -0
- package/dist/utils/error.js +3 -0
- package/dist/utils/generate-space-name.d.ts +14 -0
- package/dist/utils/generate-space-name.js +95 -0
- package/dist/utils/git-repository.d.ts +5 -0
- package/dist/utils/git-repository.js +99 -0
- package/dist/utils/guards.d.ts +1 -0
- package/dist/utils/guards.js +3 -0
- package/dist/utils/publish-detection.d.ts +10 -0
- package/dist/utils/publish-detection.js +118 -0
- package/dist/utils/publish-policy.d.ts +69 -0
- package/dist/utils/publish-policy.js +429 -0
- package/dist/utils/query-client.d.ts +7 -0
- package/dist/utils/query-client.js +21 -0
- package/dist/utils/query-keys.d.ts +75 -0
- package/dist/utils/query-keys.js +78 -0
- package/dist/utils/runtime-paths.d.ts +7 -0
- package/dist/utils/runtime-paths.js +28 -0
- package/dist/utils/runtime-upload.d.ts +19 -0
- package/dist/utils/runtime-upload.js +27 -0
- package/dist/utils/slug.d.ts +5 -0
- package/dist/utils/slug.js +13 -0
- package/dist/utils/space-config.d.ts +75 -0
- package/dist/utils/space-config.js +415 -0
- package/dist/utils/space-theme.d.ts +16 -0
- package/dist/utils/space-theme.js +89 -0
- package/dist/utils/static-runtime-policy.d.ts +17 -0
- package/dist/utils/static-runtime-policy.js +103 -0
- package/dist/utils/upload-session.d.ts +34 -0
- package/dist/utils/upload-session.js +69 -0
- package/dist/utils/urls.d.ts +2 -0
- package/dist/utils/urls.js +7 -0
- package/dist/utils/version-path.d.ts +6 -0
- package/dist/utils/version-path.js +51 -0
- package/dist/utils/wpcom-auth-redirects.d.ts +14 -0
- package/dist/utils/wpcom-auth-redirects.js +49 -0
- package/dist/utils/zero-realtime-signature.d.ts +12 -0
- package/dist/utils/zero-realtime-signature.js +45 -0
- package/dist/vocabulary.d.ts +230 -0
- package/dist/vocabulary.js +218 -0
- package/package.json +58 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const billingProviderValues: readonly ["stripe", "app_store", "google_play", "grant"];
|
|
3
|
+
export declare const billingProviderSchema: z.ZodEnum<{
|
|
4
|
+
grant: "grant";
|
|
5
|
+
stripe: "stripe";
|
|
6
|
+
app_store: "app_store";
|
|
7
|
+
google_play: "google_play";
|
|
8
|
+
}>;
|
|
9
|
+
export type BillingProvider = z.infer<typeof billingProviderSchema>;
|
|
10
|
+
export declare const billingIntervalValues: readonly ["monthly", "yearly"];
|
|
11
|
+
export declare const billingIntervalSchema: z.ZodEnum<{
|
|
12
|
+
monthly: "monthly";
|
|
13
|
+
yearly: "yearly";
|
|
14
|
+
}>;
|
|
15
|
+
export type BillingIntervalValue = z.infer<typeof billingIntervalSchema>;
|
|
16
|
+
export declare const appStoreEnvironmentValues: readonly ["Sandbox", "Production", "Xcode", "LocalTesting"];
|
|
17
|
+
export declare const googlePlaySubscriptionStateValues: readonly ["SUBSCRIPTION_STATE_UNSPECIFIED", "SUBSCRIPTION_STATE_PENDING", "SUBSCRIPTION_STATE_ACTIVE", "SUBSCRIPTION_STATE_PAUSED", "SUBSCRIPTION_STATE_IN_GRACE_PERIOD", "SUBSCRIPTION_STATE_ON_HOLD", "SUBSCRIPTION_STATE_CANCELED", "SUBSCRIPTION_STATE_EXPIRED", "SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED"];
|
|
18
|
+
export type GooglePlaySubscriptionState = (typeof googlePlaySubscriptionStateValues)[number];
|
|
19
|
+
export declare const googlePlayAcknowledgementStateValues: readonly ["ACKNOWLEDGEMENT_STATE_UNSPECIFIED", "ACKNOWLEDGEMENT_STATE_PENDING", "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED"];
|
|
20
|
+
export type GooglePlayAcknowledgementState = (typeof googlePlayAcknowledgementStateValues)[number];
|
|
21
|
+
export declare const billingTransactionKindValues: readonly ["purchase", "renewal", "refund", "adjustment"];
|
|
22
|
+
export declare const billingTransactionKindSchema: z.ZodEnum<{
|
|
23
|
+
purchase: "purchase";
|
|
24
|
+
renewal: "renewal";
|
|
25
|
+
refund: "refund";
|
|
26
|
+
adjustment: "adjustment";
|
|
27
|
+
}>;
|
|
28
|
+
export type BillingTransactionKind = z.infer<typeof billingTransactionKindSchema>;
|
|
29
|
+
/** What the money was for. */
|
|
30
|
+
export declare const billingTransactionScopeValues: readonly ["plan", "seats", "domain", "other"];
|
|
31
|
+
export declare const billingTransactionScopeSchema: z.ZodEnum<{
|
|
32
|
+
domain: "domain";
|
|
33
|
+
plan: "plan";
|
|
34
|
+
seats: "seats";
|
|
35
|
+
other: "other";
|
|
36
|
+
}>;
|
|
37
|
+
export type BillingTransactionScope = z.infer<typeof billingTransactionScopeSchema>;
|
|
38
|
+
export declare const billingAddonSourceValues: readonly ["grant", "stripe"];
|
|
39
|
+
export declare const billingAddonLimitKeyValues: readonly ["teamMembers", "subTeams", "storageBytes", "externalDomainGroups"];
|
|
40
|
+
export declare const billingAddonLimitKeySchema: z.ZodEnum<{
|
|
41
|
+
storageBytes: "storageBytes";
|
|
42
|
+
teamMembers: "teamMembers";
|
|
43
|
+
subTeams: "subTeams";
|
|
44
|
+
externalDomainGroups: "externalDomainGroups";
|
|
45
|
+
}>;
|
|
46
|
+
export type BillingAddonLimitKey = z.infer<typeof billingAddonLimitKeySchema>;
|
|
47
|
+
export declare const billingPlanSourceSchema: z.ZodObject<{
|
|
48
|
+
provider: z.ZodEnum<{
|
|
49
|
+
grant: "grant";
|
|
50
|
+
stripe: "stripe";
|
|
51
|
+
app_store: "app_store";
|
|
52
|
+
google_play: "google_play";
|
|
53
|
+
}>;
|
|
54
|
+
planCode: z.ZodEnum<{
|
|
55
|
+
free: "free";
|
|
56
|
+
personal: "personal";
|
|
57
|
+
work: "work";
|
|
58
|
+
enterprise: "enterprise";
|
|
59
|
+
internal: "internal";
|
|
60
|
+
}>;
|
|
61
|
+
active: z.ZodBoolean;
|
|
62
|
+
detail: z.ZodString;
|
|
63
|
+
expiresAt: z.ZodNullable<z.ZodString>;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
export type BillingPlanSource = z.infer<typeof billingPlanSourceSchema>;
|
|
66
|
+
export declare const billingStoreAccountResponseSchema: z.ZodObject<{
|
|
67
|
+
token: z.ZodString;
|
|
68
|
+
appStoreProducts: z.ZodArray<z.ZodString>;
|
|
69
|
+
googlePlayBasePlans: z.ZodArray<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type BillingStoreAccountResponse = z.infer<typeof billingStoreAccountResponseSchema>;
|
|
72
|
+
export declare const appStoreVerifyRequestSchema: z.ZodObject<{
|
|
73
|
+
transactionId: z.ZodString;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
export declare const googlePlayRecoverRequestSchema: z.ZodObject<{
|
|
76
|
+
purchaseToken: z.ZodString;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const storeSubscriptionResultSchema: z.ZodObject<{
|
|
79
|
+
provider: z.ZodEnum<{
|
|
80
|
+
grant: "grant";
|
|
81
|
+
stripe: "stripe";
|
|
82
|
+
app_store: "app_store";
|
|
83
|
+
google_play: "google_play";
|
|
84
|
+
}>;
|
|
85
|
+
reference: z.ZodString;
|
|
86
|
+
productId: z.ZodString;
|
|
87
|
+
planCode: z.ZodNullable<z.ZodString>;
|
|
88
|
+
isActive: z.ZodBoolean;
|
|
89
|
+
expiresAt: z.ZodNullable<z.ZodString>;
|
|
90
|
+
}, z.core.$strip>;
|
|
91
|
+
export type StoreSubscriptionResult = z.infer<typeof storeSubscriptionResultSchema>;
|
|
92
|
+
export declare const stripeCheckoutRequestSchema: z.ZodObject<{
|
|
93
|
+
planCode: z.ZodDefault<z.ZodEnum<{
|
|
94
|
+
free: "free";
|
|
95
|
+
personal: "personal";
|
|
96
|
+
work: "work";
|
|
97
|
+
enterprise: "enterprise";
|
|
98
|
+
internal: "internal";
|
|
99
|
+
}>>;
|
|
100
|
+
billingInterval: z.ZodDefault<z.ZodEnum<{
|
|
101
|
+
monthly: "monthly";
|
|
102
|
+
yearly: "yearly";
|
|
103
|
+
}>>;
|
|
104
|
+
successUrl: z.ZodString;
|
|
105
|
+
cancelUrl: z.ZodString;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
export type StripeCheckoutRequest = z.infer<typeof stripeCheckoutRequestSchema>;
|
|
108
|
+
export declare const stripePortalRequestSchema: z.ZodObject<{
|
|
109
|
+
returnUrl: z.ZodString;
|
|
110
|
+
}, z.core.$strip>;
|
|
111
|
+
export type StripePortalRequest = z.infer<typeof stripePortalRequestSchema>;
|
|
112
|
+
export declare const billingLinkResponseSchema: z.ZodObject<{
|
|
113
|
+
url: z.ZodString;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
export type BillingLinkResponse = z.infer<typeof billingLinkResponseSchema>;
|
|
116
|
+
export declare const stripeCancelSubscriptionRequestSchema: z.ZodDefault<z.ZodObject<{}, z.core.$strip>>;
|
|
117
|
+
export type StripeCancelSubscriptionRequest = z.infer<typeof stripeCancelSubscriptionRequestSchema>;
|
|
118
|
+
export declare const stripeChangePlanRequestSchema: z.ZodObject<{
|
|
119
|
+
planCode: z.ZodEnum<{
|
|
120
|
+
free: "free";
|
|
121
|
+
personal: "personal";
|
|
122
|
+
work: "work";
|
|
123
|
+
enterprise: "enterprise";
|
|
124
|
+
internal: "internal";
|
|
125
|
+
}> & z.ZodType<"personal" | "work" | "enterprise" | "internal", "free" | "personal" | "work" | "enterprise" | "internal", z.core.$ZodTypeInternals<"personal" | "work" | "enterprise" | "internal", "free" | "personal" | "work" | "enterprise" | "internal">>;
|
|
126
|
+
billingInterval: z.ZodDefault<z.ZodEnum<{
|
|
127
|
+
monthly: "monthly";
|
|
128
|
+
yearly: "yearly";
|
|
129
|
+
}>>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
export type StripeChangePlanRequest = z.infer<typeof stripeChangePlanRequestSchema>;
|
|
132
|
+
export declare const stripeSubscriptionActionResponseSchema: z.ZodObject<{
|
|
133
|
+
provider: z.ZodLiteral<"stripe">;
|
|
134
|
+
stripeSubscriptionId: z.ZodString;
|
|
135
|
+
status: z.ZodString;
|
|
136
|
+
cancelAtPeriodEnd: z.ZodNullable<z.ZodBoolean>;
|
|
137
|
+
}, z.core.$strip>;
|
|
138
|
+
export type StripeSubscriptionActionResponse = z.infer<typeof stripeSubscriptionActionResponseSchema>;
|
|
139
|
+
export declare const billingAddressSchema: z.ZodObject<{
|
|
140
|
+
line1: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
141
|
+
line2: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
142
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
143
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
144
|
+
postalCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
145
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
146
|
+
}, z.core.$strict>;
|
|
147
|
+
export declare const teamBillingSettingsSchema: z.ZodObject<{
|
|
148
|
+
id: z.ZodString;
|
|
149
|
+
teamId: z.ZodString;
|
|
150
|
+
billingEmail: z.ZodNullable<z.ZodString>;
|
|
151
|
+
legalName: z.ZodNullable<z.ZodString>;
|
|
152
|
+
phone: z.ZodNullable<z.ZodString>;
|
|
153
|
+
address: z.ZodNullable<z.ZodObject<{
|
|
154
|
+
line1: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
155
|
+
line2: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
156
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
157
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
158
|
+
postalCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
159
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
160
|
+
}, z.core.$strict>>;
|
|
161
|
+
taxIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
162
|
+
preferredLocales: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
163
|
+
poReference: z.ZodNullable<z.ZodString>;
|
|
164
|
+
invoiceFooter: z.ZodNullable<z.ZodString>;
|
|
165
|
+
customFields: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
166
|
+
stripeCustomerSyncStatus: z.ZodNullable<z.ZodEnum<{
|
|
167
|
+
pending: "pending";
|
|
168
|
+
failed: "failed";
|
|
169
|
+
synced: "synced";
|
|
170
|
+
}>>;
|
|
171
|
+
stripeCustomerSyncedAt: z.ZodNullable<z.ZodString>;
|
|
172
|
+
stripeCustomerSyncError: z.ZodNullable<z.ZodString>;
|
|
173
|
+
updatedAt: z.ZodString;
|
|
174
|
+
}, z.core.$strip>;
|
|
175
|
+
export declare const teamBillingSettingsResponseSchema: z.ZodObject<{
|
|
176
|
+
id: z.ZodString;
|
|
177
|
+
teamId: z.ZodString;
|
|
178
|
+
billingEmail: z.ZodNullable<z.ZodString>;
|
|
179
|
+
legalName: z.ZodNullable<z.ZodString>;
|
|
180
|
+
phone: z.ZodNullable<z.ZodString>;
|
|
181
|
+
address: z.ZodNullable<z.ZodObject<{
|
|
182
|
+
line1: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
183
|
+
line2: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
184
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
185
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
186
|
+
postalCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
187
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
188
|
+
}, z.core.$strict>>;
|
|
189
|
+
taxIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
190
|
+
preferredLocales: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
191
|
+
poReference: z.ZodNullable<z.ZodString>;
|
|
192
|
+
invoiceFooter: z.ZodNullable<z.ZodString>;
|
|
193
|
+
customFields: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
194
|
+
stripeCustomerSyncStatus: z.ZodNullable<z.ZodEnum<{
|
|
195
|
+
pending: "pending";
|
|
196
|
+
failed: "failed";
|
|
197
|
+
synced: "synced";
|
|
198
|
+
}>>;
|
|
199
|
+
stripeCustomerSyncedAt: z.ZodNullable<z.ZodString>;
|
|
200
|
+
stripeCustomerSyncError: z.ZodNullable<z.ZodString>;
|
|
201
|
+
updatedAt: z.ZodString;
|
|
202
|
+
}, z.core.$strip>;
|
|
203
|
+
export declare const teamBillingSettingsUpdateSchema: z.ZodObject<{
|
|
204
|
+
billingEmail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
205
|
+
legalName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
206
|
+
phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
207
|
+
address: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
208
|
+
line1: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
209
|
+
line2: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
210
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
211
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
212
|
+
postalCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
213
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
214
|
+
}, z.core.$strict>>>;
|
|
215
|
+
taxIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
216
|
+
preferredLocales: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
217
|
+
poReference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
218
|
+
invoiceFooter: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
219
|
+
customFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
220
|
+
}, z.core.$strict>;
|
|
221
|
+
export type TeamBillingSettingsResponse = z.infer<typeof teamBillingSettingsResponseSchema>;
|
|
222
|
+
export type TeamBillingSettingsUpdate = z.infer<typeof teamBillingSettingsUpdateSchema>;
|
|
223
|
+
export declare const billingCustomerRefSchema: z.ZodObject<{
|
|
224
|
+
id: z.ZodString;
|
|
225
|
+
provider: z.ZodLiteral<"stripe">;
|
|
226
|
+
accountKey: z.ZodString;
|
|
227
|
+
stripeCustomerId: z.ZodNullable<z.ZodString>;
|
|
228
|
+
diagnostics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
229
|
+
}, z.core.$strip>;
|
|
230
|
+
export declare const billingSubscriptionSummarySchema: z.ZodObject<{
|
|
231
|
+
id: z.ZodString;
|
|
232
|
+
provider: z.ZodLiteral<"stripe">;
|
|
233
|
+
planCode: z.ZodNullable<z.ZodEnum<{
|
|
234
|
+
free: "free";
|
|
235
|
+
personal: "personal";
|
|
236
|
+
work: "work";
|
|
237
|
+
enterprise: "enterprise";
|
|
238
|
+
internal: "internal";
|
|
239
|
+
}>>;
|
|
240
|
+
status: z.ZodString;
|
|
241
|
+
providerStatus: z.ZodNullable<z.ZodString>;
|
|
242
|
+
currentPeriodEnd: z.ZodNullable<z.ZodString>;
|
|
243
|
+
cancelAtPeriodEnd: z.ZodNullable<z.ZodBoolean>;
|
|
244
|
+
diagnostics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
245
|
+
}, z.core.$strip>;
|
|
246
|
+
export declare const billingResourceChargeSummarySchema: z.ZodObject<{
|
|
247
|
+
id: z.ZodString;
|
|
248
|
+
subjectType: z.ZodEnum<{
|
|
249
|
+
space: "space";
|
|
250
|
+
site: "site";
|
|
251
|
+
domain: "domain";
|
|
252
|
+
}>;
|
|
253
|
+
kind: z.ZodString;
|
|
254
|
+
status: z.ZodString;
|
|
255
|
+
graceUntil: z.ZodNullable<z.ZodString>;
|
|
256
|
+
}, z.core.$strip>;
|
|
257
|
+
export declare const TeamBillingResponseSchema: z.ZodObject<{
|
|
258
|
+
teamId: z.ZodString;
|
|
259
|
+
planCode: z.ZodEnum<{
|
|
260
|
+
free: "free";
|
|
261
|
+
personal: "personal";
|
|
262
|
+
work: "work";
|
|
263
|
+
enterprise: "enterprise";
|
|
264
|
+
internal: "internal";
|
|
265
|
+
}>;
|
|
266
|
+
billingCustomerRefs: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
267
|
+
id: z.ZodString;
|
|
268
|
+
provider: z.ZodLiteral<"stripe">;
|
|
269
|
+
accountKey: z.ZodString;
|
|
270
|
+
stripeCustomerId: z.ZodNullable<z.ZodString>;
|
|
271
|
+
diagnostics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
272
|
+
}, z.core.$strip>>>;
|
|
273
|
+
subscriptions: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
274
|
+
id: z.ZodString;
|
|
275
|
+
provider: z.ZodLiteral<"stripe">;
|
|
276
|
+
planCode: z.ZodNullable<z.ZodEnum<{
|
|
277
|
+
free: "free";
|
|
278
|
+
personal: "personal";
|
|
279
|
+
work: "work";
|
|
280
|
+
enterprise: "enterprise";
|
|
281
|
+
internal: "internal";
|
|
282
|
+
}>>;
|
|
283
|
+
status: z.ZodString;
|
|
284
|
+
providerStatus: z.ZodNullable<z.ZodString>;
|
|
285
|
+
currentPeriodEnd: z.ZodNullable<z.ZodString>;
|
|
286
|
+
cancelAtPeriodEnd: z.ZodNullable<z.ZodBoolean>;
|
|
287
|
+
diagnostics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
288
|
+
}, z.core.$strip>>>;
|
|
289
|
+
resourceCharges: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
290
|
+
id: z.ZodString;
|
|
291
|
+
subjectType: z.ZodEnum<{
|
|
292
|
+
space: "space";
|
|
293
|
+
site: "site";
|
|
294
|
+
domain: "domain";
|
|
295
|
+
}>;
|
|
296
|
+
kind: z.ZodString;
|
|
297
|
+
status: z.ZodString;
|
|
298
|
+
graceUntil: z.ZodNullable<z.ZodString>;
|
|
299
|
+
}, z.core.$strip>>>;
|
|
300
|
+
seatBilling: z.ZodObject<{
|
|
301
|
+
billableSeats: z.ZodNullable<z.ZodNumber>;
|
|
302
|
+
}, z.core.$strip>;
|
|
303
|
+
stripeCustomerId: z.ZodNullable<z.ZodString>;
|
|
304
|
+
subscription: z.ZodNullable<z.ZodObject<{
|
|
305
|
+
id: z.ZodString;
|
|
306
|
+
provider: z.ZodLiteral<"stripe">;
|
|
307
|
+
planCode: z.ZodNullable<z.ZodEnum<{
|
|
308
|
+
free: "free";
|
|
309
|
+
personal: "personal";
|
|
310
|
+
work: "work";
|
|
311
|
+
enterprise: "enterprise";
|
|
312
|
+
internal: "internal";
|
|
313
|
+
}>>;
|
|
314
|
+
status: z.ZodString;
|
|
315
|
+
providerStatus: z.ZodNullable<z.ZodString>;
|
|
316
|
+
currentPeriodEnd: z.ZodNullable<z.ZodString>;
|
|
317
|
+
cancelAtPeriodEnd: z.ZodNullable<z.ZodBoolean>;
|
|
318
|
+
diagnostics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
319
|
+
}, z.core.$strip>>;
|
|
320
|
+
usage: z.ZodObject<{
|
|
321
|
+
storageBytes: z.ZodNumber;
|
|
322
|
+
storageQuotaBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
323
|
+
storageOverageBytes: z.ZodNumber;
|
|
324
|
+
buildsDeploysThisMonth: z.ZodNumber;
|
|
325
|
+
buildsDeploysMonthly: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
326
|
+
}, z.core.$strip>;
|
|
327
|
+
}, z.core.$strip>;
|
|
328
|
+
export type TeamBillingResponse = z.infer<typeof TeamBillingResponseSchema>;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { planCodeSchema, planLimitValueSchema } from "./features.js";
|
|
3
|
+
// Billing providers a team plan can resolve from. `grant` is a
|
|
4
|
+
// superadmin-assigned subscription: no payment, no transactions, just an
|
|
5
|
+
// operator-issued entitlement row (optionally expiring).
|
|
6
|
+
export const billingProviderValues = ["stripe", "app_store", "google_play", "grant"];
|
|
7
|
+
export const billingProviderSchema = z.enum(billingProviderValues).describe("Billing provider.");
|
|
8
|
+
export const billingIntervalValues = ["monthly", "yearly"];
|
|
9
|
+
export const billingIntervalSchema = z.enum(billingIntervalValues);
|
|
10
|
+
export const appStoreEnvironmentValues = [
|
|
11
|
+
"Sandbox",
|
|
12
|
+
"Production",
|
|
13
|
+
"Xcode",
|
|
14
|
+
"LocalTesting",
|
|
15
|
+
];
|
|
16
|
+
// Google Play subscriptionsv2 states (subset we persist verbatim).
|
|
17
|
+
export const googlePlaySubscriptionStateValues = [
|
|
18
|
+
"SUBSCRIPTION_STATE_UNSPECIFIED",
|
|
19
|
+
"SUBSCRIPTION_STATE_PENDING",
|
|
20
|
+
"SUBSCRIPTION_STATE_ACTIVE",
|
|
21
|
+
"SUBSCRIPTION_STATE_PAUSED",
|
|
22
|
+
"SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
|
|
23
|
+
"SUBSCRIPTION_STATE_ON_HOLD",
|
|
24
|
+
"SUBSCRIPTION_STATE_CANCELED",
|
|
25
|
+
"SUBSCRIPTION_STATE_EXPIRED",
|
|
26
|
+
"SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED",
|
|
27
|
+
];
|
|
28
|
+
export const googlePlayAcknowledgementStateValues = [
|
|
29
|
+
"ACKNOWLEDGEMENT_STATE_UNSPECIFIED",
|
|
30
|
+
"ACKNOWLEDGEMENT_STATE_PENDING",
|
|
31
|
+
"ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
|
|
32
|
+
];
|
|
33
|
+
// Transaction ledger vocabulary. Every REAL payment event lands as one row —
|
|
34
|
+
// operator grants never do (no transactions by definition). Amounts are
|
|
35
|
+
// micros of the payment currency (1_000_000 micros = 1 unit) so Apple
|
|
36
|
+
// milliunits, Google units+nanos, and Stripe cents all normalize losslessly.
|
|
37
|
+
export const billingTransactionKindValues = [
|
|
38
|
+
"purchase",
|
|
39
|
+
"renewal",
|
|
40
|
+
"refund",
|
|
41
|
+
"adjustment",
|
|
42
|
+
];
|
|
43
|
+
export const billingTransactionKindSchema = z.enum(billingTransactionKindValues);
|
|
44
|
+
/** What the money was for. */
|
|
45
|
+
export const billingTransactionScopeValues = ["plan", "seats", "domain", "other"];
|
|
46
|
+
export const billingTransactionScopeSchema = z.enum(billingTransactionScopeValues);
|
|
47
|
+
// Add-on entitlements (extra seats, extra storage): additive limit bumps that
|
|
48
|
+
// ride the EntitlementGrant seam. `grant` source = operator-assigned, no
|
|
49
|
+
// payment; `stripe` source = paid add-on synced from a Stripe subscription item.
|
|
50
|
+
export const billingAddonSourceValues = ["grant", "stripe"];
|
|
51
|
+
export const billingAddonLimitKeyValues = [
|
|
52
|
+
"teamMembers",
|
|
53
|
+
"subTeams",
|
|
54
|
+
"storageBytes",
|
|
55
|
+
"externalDomainGroups",
|
|
56
|
+
];
|
|
57
|
+
export const billingAddonLimitKeySchema = z.enum(billingAddonLimitKeyValues);
|
|
58
|
+
// One active-plan source as surfaced to operators and the team billing page:
|
|
59
|
+
// where a plan claim comes from and whether it is currently effective.
|
|
60
|
+
export const billingPlanSourceSchema = z.object({
|
|
61
|
+
provider: billingProviderSchema,
|
|
62
|
+
planCode: planCodeSchema,
|
|
63
|
+
active: z.boolean(),
|
|
64
|
+
detail: z
|
|
65
|
+
.string()
|
|
66
|
+
.describe("Provider-specific reference: subscription/grant id, transaction id, or token."),
|
|
67
|
+
expiresAt: z.string().datetime().nullable(),
|
|
68
|
+
});
|
|
69
|
+
// Mobile-client store flows: the team's store account token is passed as
|
|
70
|
+
// Apple `appAccountToken` / Google `obfuscatedExternalAccountId` at purchase
|
|
71
|
+
// time so receipts bind back to the team server-side.
|
|
72
|
+
export const billingStoreAccountResponseSchema = z.object({
|
|
73
|
+
token: z.string().uuid(),
|
|
74
|
+
appStoreProducts: z.array(z.string()).describe("App Store product ids sold by this deployment."),
|
|
75
|
+
googlePlayBasePlans: z
|
|
76
|
+
.array(z.string())
|
|
77
|
+
.describe("Google Play base plan ids sold by this deployment."),
|
|
78
|
+
});
|
|
79
|
+
export const appStoreVerifyRequestSchema = z.object({
|
|
80
|
+
transactionId: z.string().trim().min(1),
|
|
81
|
+
});
|
|
82
|
+
export const googlePlayRecoverRequestSchema = z.object({
|
|
83
|
+
purchaseToken: z.string().trim().min(1),
|
|
84
|
+
});
|
|
85
|
+
export const storeSubscriptionResultSchema = z.object({
|
|
86
|
+
provider: billingProviderSchema,
|
|
87
|
+
reference: z.string().describe("Provider-side id: transaction id or purchase token."),
|
|
88
|
+
productId: z.string(),
|
|
89
|
+
planCode: z.string().nullable(),
|
|
90
|
+
isActive: z.boolean(),
|
|
91
|
+
expiresAt: z.string().datetime().nullable(),
|
|
92
|
+
});
|
|
93
|
+
export const stripeCheckoutRequestSchema = z.object({
|
|
94
|
+
planCode: planCodeSchema.default("work"),
|
|
95
|
+
billingInterval: billingIntervalSchema.default("monthly"),
|
|
96
|
+
successUrl: z.string().url(),
|
|
97
|
+
cancelUrl: z.string().url(),
|
|
98
|
+
});
|
|
99
|
+
export const stripePortalRequestSchema = z.object({
|
|
100
|
+
returnUrl: z.string().url(),
|
|
101
|
+
});
|
|
102
|
+
export const billingLinkResponseSchema = z.object({ url: z.string().url() });
|
|
103
|
+
export const stripeCancelSubscriptionRequestSchema = z.object({}).default({});
|
|
104
|
+
export const stripeChangePlanRequestSchema = z.object({
|
|
105
|
+
planCode: planCodeSchema.refine((value) => value !== "free", {
|
|
106
|
+
message: "Choose a paid plan.",
|
|
107
|
+
}),
|
|
108
|
+
billingInterval: billingIntervalSchema.default("monthly"),
|
|
109
|
+
});
|
|
110
|
+
export const stripeSubscriptionActionResponseSchema = z.object({
|
|
111
|
+
provider: z.literal("stripe"),
|
|
112
|
+
stripeSubscriptionId: z.string(),
|
|
113
|
+
status: z.string(),
|
|
114
|
+
cancelAtPeriodEnd: z.boolean().nullable(),
|
|
115
|
+
});
|
|
116
|
+
export const billingAddressSchema = z
|
|
117
|
+
.object({
|
|
118
|
+
line1: z.string().trim().max(255).nullable().optional(),
|
|
119
|
+
line2: z.string().trim().max(255).nullable().optional(),
|
|
120
|
+
city: z.string().trim().max(120).nullable().optional(),
|
|
121
|
+
state: z.string().trim().max(120).nullable().optional(),
|
|
122
|
+
postalCode: z.string().trim().max(32).nullable().optional(),
|
|
123
|
+
country: z.string().trim().length(2).nullable().optional(),
|
|
124
|
+
})
|
|
125
|
+
.strict();
|
|
126
|
+
export const teamBillingSettingsSchema = z.object({
|
|
127
|
+
id: z.string(),
|
|
128
|
+
teamId: z.string(),
|
|
129
|
+
billingEmail: z.string().email().nullable(),
|
|
130
|
+
legalName: z.string().nullable(),
|
|
131
|
+
phone: z.string().nullable(),
|
|
132
|
+
address: billingAddressSchema.nullable(),
|
|
133
|
+
taxIds: z.array(z.string()).default([]),
|
|
134
|
+
preferredLocales: z.array(z.string()).default([]),
|
|
135
|
+
poReference: z.string().nullable(),
|
|
136
|
+
invoiceFooter: z.string().nullable(),
|
|
137
|
+
customFields: z.record(z.string(), z.string()).default({}),
|
|
138
|
+
stripeCustomerSyncStatus: z.enum(["pending", "synced", "failed"]).nullable(),
|
|
139
|
+
stripeCustomerSyncedAt: z.string().datetime().nullable(),
|
|
140
|
+
stripeCustomerSyncError: z.string().nullable(),
|
|
141
|
+
updatedAt: z.string().datetime(),
|
|
142
|
+
});
|
|
143
|
+
export const teamBillingSettingsResponseSchema = teamBillingSettingsSchema;
|
|
144
|
+
export const teamBillingSettingsUpdateSchema = z
|
|
145
|
+
.object({
|
|
146
|
+
billingEmail: z.string().email().nullable().optional(),
|
|
147
|
+
legalName: z.string().trim().min(1).max(255).nullable().optional(),
|
|
148
|
+
phone: z.string().trim().max(64).nullable().optional(),
|
|
149
|
+
address: billingAddressSchema.nullable().optional(),
|
|
150
|
+
taxIds: z.array(z.string().trim().min(1).max(128)).max(20).optional(),
|
|
151
|
+
preferredLocales: z.array(z.string().trim().min(2).max(16)).max(10).optional(),
|
|
152
|
+
poReference: z.string().trim().max(255).nullable().optional(),
|
|
153
|
+
invoiceFooter: z.string().trim().max(500).nullable().optional(),
|
|
154
|
+
customFields: z.record(z.string().max(40), z.string().max(140)).optional(),
|
|
155
|
+
})
|
|
156
|
+
.strict();
|
|
157
|
+
export const billingCustomerRefSchema = z.object({
|
|
158
|
+
id: z.string(),
|
|
159
|
+
provider: z.literal("stripe"),
|
|
160
|
+
accountKey: z.string(),
|
|
161
|
+
stripeCustomerId: z.string().nullable(),
|
|
162
|
+
diagnostics: z.record(z.string(), z.unknown()).optional(),
|
|
163
|
+
});
|
|
164
|
+
export const billingSubscriptionSummarySchema = z.object({
|
|
165
|
+
id: z.string(),
|
|
166
|
+
provider: z.literal("stripe"),
|
|
167
|
+
planCode: planCodeSchema.nullable(),
|
|
168
|
+
status: z.string(),
|
|
169
|
+
providerStatus: z.string().nullable(),
|
|
170
|
+
currentPeriodEnd: z.string().datetime().nullable(),
|
|
171
|
+
cancelAtPeriodEnd: z.boolean().nullable(),
|
|
172
|
+
diagnostics: z.record(z.string(), z.unknown()).optional(),
|
|
173
|
+
});
|
|
174
|
+
export const billingResourceChargeSummarySchema = z.object({
|
|
175
|
+
id: z.string(),
|
|
176
|
+
subjectType: z.enum(["site", "space", "domain"]),
|
|
177
|
+
kind: z.string(),
|
|
178
|
+
status: z.string(),
|
|
179
|
+
graceUntil: z.string().datetime().nullable(),
|
|
180
|
+
});
|
|
181
|
+
export const TeamBillingResponseSchema = z.object({
|
|
182
|
+
teamId: z.string(),
|
|
183
|
+
planCode: planCodeSchema,
|
|
184
|
+
billingCustomerRefs: z.array(billingCustomerRefSchema).default([]),
|
|
185
|
+
subscriptions: z.array(billingSubscriptionSummarySchema).default([]),
|
|
186
|
+
resourceCharges: z.array(billingResourceChargeSummarySchema).default([]),
|
|
187
|
+
seatBilling: z.object({ billableSeats: z.number().int().nonnegative().nullable() }),
|
|
188
|
+
stripeCustomerId: z.string().nullable().describe("Deprecated compatibility field."),
|
|
189
|
+
subscription: billingSubscriptionSummarySchema
|
|
190
|
+
.nullable()
|
|
191
|
+
.describe("Deprecated compatibility field."),
|
|
192
|
+
usage: z.object({
|
|
193
|
+
storageBytes: z.number().int().nonnegative(),
|
|
194
|
+
storageQuotaBytes: planLimitValueSchema,
|
|
195
|
+
storageOverageBytes: z.number().int().nonnegative(),
|
|
196
|
+
buildsDeploysThisMonth: z
|
|
197
|
+
.number()
|
|
198
|
+
.int()
|
|
199
|
+
.nonnegative()
|
|
200
|
+
.describe("Publishes and builds pooled into one monthly meter."),
|
|
201
|
+
buildsDeploysMonthly: planLimitValueSchema.describe("Pooled monthly plan limit for publishes and builds."),
|
|
202
|
+
}),
|
|
203
|
+
});
|