shoal-web-sdk 0.0.109 → 0.0.111

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.
@@ -1,6 +1,6 @@
1
1
  import { type InfiniteData, type UseMutationOptions } from '@tanstack/react-query';
2
2
  import { type Options } from '../sdk.gen';
3
- import type { CreateEnvironmentData, CreateEnvironmentError, CreateEnvironmentResponse, CreateProjectData, CreateProjectError, CreateProjectResponse, CreateSetupIntentData, CreateSetupIntentError, CreateSetupIntentResponse, CreateSpaceData, CreateSpaceError, CreateSpaceInviteData, CreateSpaceInviteError, CreateSpaceInviteResponse, CreateSpaceResponse, CreateUsernameData, CreateUsernameError, DeleteAccountIdentityData, DeleteAccountIdentityError, DeleteAccountIdentityResponse, DeployVersionData, DeployVersionError, FetchGraphM2mData, FetchKindeOrganisationBillingAgreementsData, GetBillingPlanData, GetBillingUsageData, GetConnectedAppUrlData, GetEnvironmentOverviewData, GetGraphOverviewData, GetProjectOverviewData, GetServiceHealthData, GetSpaceInvitesData, GetSpaceOrgCodeData, GetSpaceOverviewData, GetUserIdentitiesData, GetUserInvitesData, GetUserProfileData, JoinSpaceData, JoinSpaceError, LeaveSpaceData, LeaveSpaceError, ListInstallationBranchesData, ListInstallationRepositoriesData, ListPaymentMethodsData, ListSpaceMemberRolesData, ListSpaceMembersData, ListUserInstallationsData, ListUserSpacesData, RejectSpaceInviteData, RejectSpaceInviteError, RejectSpaceInviteResponse, RemovePaymentMethodData, RemovePaymentMethodError, RemovePaymentMethodResponse, RequestAccountPasswordResetData, RequestAccountPasswordResetError, RequestSignedUploadUrlData, RevokeSpaceInviteData, RevokeSpaceInviteError, RevokeSpaceInviteResponse, SetDefaultPaymentMethodData, SetDefaultPaymentMethodError, SetDefaultPaymentMethodResponse, UpdateBillingPlanData, UpdateBillingPlanError, UpdateConnectedAppTokenData, UpdateConnectedAppTokenError, UpdateGraphStateData, UpdateGraphStateError, UpdateUsernameData, UpdateUsernameError, UpdateUserProfileData, UpdateUserProfileError } from '../types.gen';
3
+ import type { CreateEnvironmentData, CreateEnvironmentError, CreateEnvironmentResponse, CreateProjectData, CreateProjectError, CreateProjectResponse, CreateSetupIntentData, CreateSetupIntentError, CreateSetupIntentResponse, CreateSpaceData, CreateSpaceError, CreateSpaceInviteData, CreateSpaceInviteError, CreateSpaceInviteResponse, CreateSpaceResponse, CreateUsernameData, CreateUsernameError, DeleteAccountIdentityData, DeleteAccountIdentityError, DeleteAccountIdentityResponse, DeployVersionData, DeployVersionError, FetchBillingPricesData, FetchGraphM2mData, FetchKindeOrganisationBillingAgreementsData, GetBillingPlanData, GetBillingUsageData, GetConnectedAppUrlData, GetEnvironmentOverviewData, GetGraphOverviewData, GetProjectOverviewData, GetServiceHealthData, GetSpaceInvitesData, GetSpaceOrgCodeData, GetSpaceOverviewData, GetUserIdentitiesData, GetUserInvitesData, GetUserProfileData, JoinSpaceData, JoinSpaceError, LeaveSpaceData, LeaveSpaceError, ListInstallationBranchesData, ListInstallationRepositoriesData, ListPaymentMethodsData, ListSpaceMemberRolesData, ListSpaceMembersData, ListUserInstallationsData, ListUserSpacesData, RecordCloudUsageData, RecordCloudUsageError, RejectSpaceInviteData, RejectSpaceInviteError, RejectSpaceInviteResponse, RemovePaymentMethodData, RemovePaymentMethodError, RemovePaymentMethodResponse, RequestAccountPasswordResetData, RequestAccountPasswordResetError, RequestSignedUploadUrlData, RevokeSpaceInviteData, RevokeSpaceInviteError, RevokeSpaceInviteResponse, SetDefaultPaymentMethodData, SetDefaultPaymentMethodError, SetDefaultPaymentMethodResponse, UpdateBillingPlanData, UpdateBillingPlanError, UpdateConnectedAppTokenData, UpdateConnectedAppTokenError, UpdateGraphStateData, UpdateGraphStateError, UpdateUsernameData, UpdateUsernameError, UpdateUserProfileData, UpdateUserProfileError } from '../types.gen';
4
4
  export type QueryKey<TOptions extends Options> = [
5
5
  Pick<TOptions, 'baseUrl' | 'body' | 'headers' | 'path' | 'query'> & {
6
6
  _id: string;
@@ -800,6 +800,10 @@ export declare const requestSignedUploadUrlOptions: (options: Options<RequestSig
800
800
  [dataTagErrorSymbol]: Error;
801
801
  };
802
802
  };
803
+ /**
804
+ * Record a cloud usage event for a space (M2M only).
805
+ */
806
+ export declare const recordCloudUsageMutation: (options?: Partial<Options<RecordCloudUsageData>>) => UseMutationOptions<unknown, RecordCloudUsageError, Options<RecordCloudUsageData>>;
803
807
  export declare const getBillingPlanQueryKey: (options: Options<GetBillingPlanData>) => [Pick<Options<GetBillingPlanData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
804
808
  _id: string;
805
809
  _infinite?: boolean;
@@ -900,3 +904,31 @@ export declare const getBillingUsageOptions: (options: Options<GetBillingUsageDa
900
904
  [dataTagErrorSymbol]: Error;
901
905
  };
902
906
  };
907
+ export declare const fetchBillingPricesQueryKey: (options: Options<FetchBillingPricesData>) => [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
908
+ _id: string;
909
+ _infinite?: boolean;
910
+ tags?: ReadonlyArray<string>;
911
+ }];
912
+ /**
913
+ * Fetch live unit prices for all paid plans from Stripe.
914
+ */
915
+ export declare const fetchBillingPricesOptions: (options: Options<FetchBillingPricesData>) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("../types.gen").PlanPriceResponse[], Error, import("../types.gen").PlanPriceResponse[], [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
916
+ _id: string;
917
+ _infinite?: boolean;
918
+ tags?: ReadonlyArray<string>;
919
+ }]>, "queryFn"> & {
920
+ queryFn?: import("@tanstack/react-query").QueryFunction<import("../types.gen").PlanPriceResponse[], [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
921
+ _id: string;
922
+ _infinite?: boolean;
923
+ tags?: ReadonlyArray<string>;
924
+ }], never> | undefined;
925
+ } & {
926
+ queryKey: [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
927
+ _id: string;
928
+ _infinite?: boolean;
929
+ tags?: ReadonlyArray<string>;
930
+ }] & {
931
+ [dataTagSymbol]: import("../types.gen").PlanPriceResponse[];
932
+ [dataTagErrorSymbol]: Error;
933
+ };
934
+ };
@@ -1,7 +1,7 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
  import { infiniteQueryOptions, queryOptions } from '@tanstack/react-query';
3
3
  import { client } from '../client.gen';
4
- import { createEnvironment, createProject, createSetupIntent, createSpace, createSpaceInvite, createUsername, deleteAccountIdentity, deployVersion, fetchGraphM2M, fetchKindeOrganisationBillingAgreements, getBillingPlan, getBillingUsage, getConnectedAppUrl, getEnvironmentOverview, getGraphOverview, getProjectOverview, getServiceHealth, getSpaceInvites, getSpaceOrgCode, getSpaceOverview, getUserIdentities, getUserInvites, getUserProfile, joinSpace, leaveSpace, listInstallationBranches, listInstallationRepositories, listPaymentMethods, listSpaceMemberRoles, listSpaceMembers, listUserInstallations, listUserSpaces, rejectSpaceInvite, removePaymentMethod, requestAccountPasswordReset, requestSignedUploadUrl, revokeSpaceInvite, setDefaultPaymentMethod, updateBillingPlan, updateConnectedAppToken, updateGraphState, updateUsername, updateUserProfile } from '../sdk.gen';
4
+ import { createEnvironment, createProject, createSetupIntent, createSpace, createSpaceInvite, createUsername, deleteAccountIdentity, deployVersion, fetchBillingPrices, fetchGraphM2M, fetchKindeOrganisationBillingAgreements, getBillingPlan, getBillingUsage, getConnectedAppUrl, getEnvironmentOverview, getGraphOverview, getProjectOverview, getServiceHealth, getSpaceInvites, getSpaceOrgCode, getSpaceOverview, getUserIdentities, getUserInvites, getUserProfile, joinSpace, leaveSpace, listInstallationBranches, listInstallationRepositories, listPaymentMethods, listSpaceMemberRoles, listSpaceMembers, listUserInstallations, listUserSpaces, recordCloudUsage, rejectSpaceInvite, removePaymentMethod, requestAccountPasswordReset, requestSignedUploadUrl, revokeSpaceInvite, setDefaultPaymentMethod, updateBillingPlan, updateConnectedAppToken, updateGraphState, updateUsername, updateUserProfile } from '../sdk.gen';
5
5
  const createQueryKey = (id, options, infinite, tags) => {
6
6
  const params = { _id: id, baseUrl: options?.baseUrl || (options?.client ?? client).getConfig().baseUrl };
7
7
  if (infinite) {
@@ -861,6 +861,22 @@ export const requestSignedUploadUrlOptions = (options) => {
861
861
  queryKey: requestSignedUploadUrlQueryKey(options)
862
862
  });
863
863
  };
864
+ /**
865
+ * Record a cloud usage event for a space (M2M only).
866
+ */
867
+ export const recordCloudUsageMutation = (options) => {
868
+ const mutationOptions = {
869
+ mutationFn: async (fnOptions) => {
870
+ const { data } = await recordCloudUsage({
871
+ ...options,
872
+ ...fnOptions,
873
+ throwOnError: true
874
+ });
875
+ return data;
876
+ }
877
+ };
878
+ return mutationOptions;
879
+ };
864
880
  export const getBillingPlanQueryKey = (options) => createQueryKey('getBillingPlan', options);
865
881
  /**
866
882
  * Get the current billing plan for a space.
@@ -979,3 +995,21 @@ export const getBillingUsageOptions = (options) => {
979
995
  queryKey: getBillingUsageQueryKey(options)
980
996
  });
981
997
  };
998
+ export const fetchBillingPricesQueryKey = (options) => createQueryKey('fetchBillingPrices', options);
999
+ /**
1000
+ * Fetch live unit prices for all paid plans from Stripe.
1001
+ */
1002
+ export const fetchBillingPricesOptions = (options) => {
1003
+ return queryOptions({
1004
+ queryFn: async ({ queryKey, signal }) => {
1005
+ const { data } = await fetchBillingPrices({
1006
+ ...options,
1007
+ ...queryKey[0],
1008
+ signal,
1009
+ throwOnError: true
1010
+ });
1011
+ return data;
1012
+ },
1013
+ queryKey: fetchBillingPricesQueryKey(options)
1014
+ });
1015
+ };
@@ -1,5 +1,5 @@
1
1
  import type { Client, Options as Options2, TDataShape } from './client';
2
- import type { CreateEnvironmentData, CreateEnvironmentErrors, CreateEnvironmentResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSetupIntentData, CreateSetupIntentErrors, CreateSetupIntentResponses, CreateSpaceData, CreateSpaceErrors, CreateSpaceInviteData, CreateSpaceInviteErrors, CreateSpaceInviteResponses, CreateSpaceResponses, CreateUsernameData, CreateUsernameErrors, CreateUsernameResponses, DeleteAccountIdentityData, DeleteAccountIdentityErrors, DeleteAccountIdentityResponses, DeployVersionData, DeployVersionErrors, DeployVersionResponses, FetchGraphM2mData, FetchGraphM2mErrors, FetchGraphM2mResponses, FetchKindeOrganisationBillingAgreementsData, FetchKindeOrganisationBillingAgreementsErrors, FetchKindeOrganisationBillingAgreementsResponses, GetBillingPlanData, GetBillingPlanErrors, GetBillingPlanResponses, GetBillingUsageData, GetBillingUsageErrors, GetBillingUsageResponses, GetConnectedAppUrlData, GetConnectedAppUrlErrors, GetConnectedAppUrlResponses, GetEnvironmentOverviewData, GetEnvironmentOverviewErrors, GetEnvironmentOverviewResponses, GetGraphOverviewData, GetGraphOverviewErrors, GetGraphOverviewResponses, GetProjectOverviewData, GetProjectOverviewErrors, GetProjectOverviewResponses, GetServiceHealthData, GetServiceHealthResponses, GetSpaceInvitesData, GetSpaceInvitesErrors, GetSpaceInvitesResponses, GetSpaceOrgCodeData, GetSpaceOrgCodeErrors, GetSpaceOrgCodeResponses, GetSpaceOverviewData, GetSpaceOverviewErrors, GetSpaceOverviewResponses, GetUserIdentitiesData, GetUserIdentitiesErrors, GetUserIdentitiesResponses, GetUserInvitesData, GetUserInvitesErrors, GetUserInvitesResponses, GetUserProfileData, GetUserProfileErrors, GetUserProfileResponses, JoinSpaceData, JoinSpaceErrors, JoinSpaceResponses, LeaveSpaceData, LeaveSpaceErrors, LeaveSpaceResponses, ListInstallationBranchesData, ListInstallationBranchesErrors, ListInstallationBranchesResponses, ListInstallationRepositoriesData, ListInstallationRepositoriesErrors, ListInstallationRepositoriesResponses, ListPaymentMethodsData, ListPaymentMethodsErrors, ListPaymentMethodsResponses, ListSpaceMemberRolesData, ListSpaceMemberRolesErrors, ListSpaceMemberRolesResponses, ListSpaceMembersData, ListSpaceMembersErrors, ListSpaceMembersResponses, ListUserInstallationsData, ListUserInstallationsErrors, ListUserInstallationsResponses, ListUserSpacesData, ListUserSpacesErrors, ListUserSpacesResponses, RejectSpaceInviteData, RejectSpaceInviteErrors, RejectSpaceInviteResponses, RemovePaymentMethodData, RemovePaymentMethodErrors, RemovePaymentMethodResponses, RequestAccountPasswordResetData, RequestAccountPasswordResetErrors, RequestAccountPasswordResetResponses, RequestSignedUploadUrlData, RequestSignedUploadUrlErrors, RequestSignedUploadUrlResponses, RevokeSpaceInviteData, RevokeSpaceInviteErrors, RevokeSpaceInviteResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodErrors, SetDefaultPaymentMethodResponses, UpdateBillingPlanData, UpdateBillingPlanErrors, UpdateBillingPlanResponses, UpdateConnectedAppTokenData, UpdateConnectedAppTokenErrors, UpdateConnectedAppTokenResponses, UpdateGraphStateData, UpdateGraphStateErrors, UpdateGraphStateResponses, UpdateUsernameData, UpdateUsernameErrors, UpdateUsernameResponses, UpdateUserProfileData, UpdateUserProfileErrors, UpdateUserProfileResponses } from './types.gen';
2
+ import type { CreateEnvironmentData, CreateEnvironmentErrors, CreateEnvironmentResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSetupIntentData, CreateSetupIntentErrors, CreateSetupIntentResponses, CreateSpaceData, CreateSpaceErrors, CreateSpaceInviteData, CreateSpaceInviteErrors, CreateSpaceInviteResponses, CreateSpaceResponses, CreateUsernameData, CreateUsernameErrors, CreateUsernameResponses, DeleteAccountIdentityData, DeleteAccountIdentityErrors, DeleteAccountIdentityResponses, DeployVersionData, DeployVersionErrors, DeployVersionResponses, FetchBillingPricesData, FetchBillingPricesErrors, FetchBillingPricesResponses, FetchGraphM2mData, FetchGraphM2mErrors, FetchGraphM2mResponses, FetchKindeOrganisationBillingAgreementsData, FetchKindeOrganisationBillingAgreementsErrors, FetchKindeOrganisationBillingAgreementsResponses, GetBillingPlanData, GetBillingPlanErrors, GetBillingPlanResponses, GetBillingUsageData, GetBillingUsageErrors, GetBillingUsageResponses, GetConnectedAppUrlData, GetConnectedAppUrlErrors, GetConnectedAppUrlResponses, GetEnvironmentOverviewData, GetEnvironmentOverviewErrors, GetEnvironmentOverviewResponses, GetGraphOverviewData, GetGraphOverviewErrors, GetGraphOverviewResponses, GetProjectOverviewData, GetProjectOverviewErrors, GetProjectOverviewResponses, GetServiceHealthData, GetServiceHealthResponses, GetSpaceInvitesData, GetSpaceInvitesErrors, GetSpaceInvitesResponses, GetSpaceOrgCodeData, GetSpaceOrgCodeErrors, GetSpaceOrgCodeResponses, GetSpaceOverviewData, GetSpaceOverviewErrors, GetSpaceOverviewResponses, GetUserIdentitiesData, GetUserIdentitiesErrors, GetUserIdentitiesResponses, GetUserInvitesData, GetUserInvitesErrors, GetUserInvitesResponses, GetUserProfileData, GetUserProfileErrors, GetUserProfileResponses, JoinSpaceData, JoinSpaceErrors, JoinSpaceResponses, LeaveSpaceData, LeaveSpaceErrors, LeaveSpaceResponses, ListInstallationBranchesData, ListInstallationBranchesErrors, ListInstallationBranchesResponses, ListInstallationRepositoriesData, ListInstallationRepositoriesErrors, ListInstallationRepositoriesResponses, ListPaymentMethodsData, ListPaymentMethodsErrors, ListPaymentMethodsResponses, ListSpaceMemberRolesData, ListSpaceMemberRolesErrors, ListSpaceMemberRolesResponses, ListSpaceMembersData, ListSpaceMembersErrors, ListSpaceMembersResponses, ListUserInstallationsData, ListUserInstallationsErrors, ListUserInstallationsResponses, ListUserSpacesData, ListUserSpacesErrors, ListUserSpacesResponses, RecordCloudUsageData, RecordCloudUsageErrors, RecordCloudUsageResponses, RejectSpaceInviteData, RejectSpaceInviteErrors, RejectSpaceInviteResponses, RemovePaymentMethodData, RemovePaymentMethodErrors, RemovePaymentMethodResponses, RequestAccountPasswordResetData, RequestAccountPasswordResetErrors, RequestAccountPasswordResetResponses, RequestSignedUploadUrlData, RequestSignedUploadUrlErrors, RequestSignedUploadUrlResponses, RevokeSpaceInviteData, RevokeSpaceInviteErrors, RevokeSpaceInviteResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodErrors, SetDefaultPaymentMethodResponses, UpdateBillingPlanData, UpdateBillingPlanErrors, UpdateBillingPlanResponses, UpdateConnectedAppTokenData, UpdateConnectedAppTokenErrors, UpdateConnectedAppTokenResponses, UpdateGraphStateData, UpdateGraphStateErrors, UpdateGraphStateResponses, UpdateUsernameData, UpdateUsernameErrors, UpdateUsernameResponses, UpdateUserProfileData, UpdateUserProfileErrors, UpdateUserProfileResponses } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -157,6 +157,10 @@ export declare const deployVersion: <ThrowOnError extends boolean = false>(optio
157
157
  * Request a signed upload URL to upload source code zip files.
158
158
  */
159
159
  export declare const requestSignedUploadUrl: <ThrowOnError extends boolean = false>(options: Options<RequestSignedUploadUrlData, ThrowOnError>) => import("./client").RequestResult<RequestSignedUploadUrlResponses, RequestSignedUploadUrlErrors, ThrowOnError, "fields">;
160
+ /**
161
+ * Record a cloud usage event for a space (M2M only).
162
+ */
163
+ export declare const recordCloudUsage: <ThrowOnError extends boolean = false>(options: Options<RecordCloudUsageData, ThrowOnError>) => import("./client").RequestResult<RecordCloudUsageResponses, RecordCloudUsageErrors, ThrowOnError, "fields">;
160
164
  /**
161
165
  * Get the current billing plan for a space.
162
166
  */
@@ -185,3 +189,7 @@ export declare const setDefaultPaymentMethod: <ThrowOnError extends boolean = fa
185
189
  * Get metered cloud usage for the current billing period.
186
190
  */
187
191
  export declare const getBillingUsage: <ThrowOnError extends boolean = false>(options: Options<GetBillingUsageData, ThrowOnError>) => import("./client").RequestResult<GetBillingUsageResponses, GetBillingUsageErrors, ThrowOnError, "fields">;
192
+ /**
193
+ * Fetch live unit prices for all paid plans from Stripe.
194
+ */
195
+ export declare const fetchBillingPrices: <ThrowOnError extends boolean = false>(options: Options<FetchBillingPricesData, ThrowOnError>) => import("./client").RequestResult<FetchBillingPricesResponses, FetchBillingPricesErrors, ThrowOnError, "fields">;
@@ -572,6 +572,25 @@ export const requestSignedUploadUrl = (options) => {
572
572
  ...options
573
573
  });
574
574
  };
575
+ /**
576
+ * Record a cloud usage event for a space (M2M only).
577
+ */
578
+ export const recordCloudUsage = (options) => {
579
+ return (options.client ?? client).post({
580
+ security: [
581
+ {
582
+ scheme: 'bearer',
583
+ type: 'http'
584
+ }
585
+ ],
586
+ url: '/m2m/billing/usage/record',
587
+ ...options,
588
+ headers: {
589
+ 'Content-Type': 'application/json',
590
+ ...options.headers
591
+ }
592
+ });
593
+ };
575
594
  /**
576
595
  * Get the current billing plan for a space.
577
596
  */
@@ -681,3 +700,18 @@ export const getBillingUsage = (options) => {
681
700
  ...options
682
701
  });
683
702
  };
703
+ /**
704
+ * Fetch live unit prices for all paid plans from Stripe.
705
+ */
706
+ export const fetchBillingPrices = (options) => {
707
+ return (options.client ?? client).get({
708
+ security: [
709
+ {
710
+ scheme: 'bearer',
711
+ type: 'http'
712
+ }
713
+ ],
714
+ url: '/auth/{spaceHandle}/billing/prices',
715
+ ...options
716
+ });
717
+ };
@@ -1,6 +1,7 @@
1
1
  export type ClientOptions = {
2
2
  baseUrl: 'http://localhost:8080/core-service' | 'https://api-dev.shoalstack.com/core-service' | (string & {});
3
3
  };
4
+ export type BillingPlanLookupKey = 'free-monthly' | 'hobby-monthly' | 'hobby-annual' | 'pro-monthly' | 'pro-annual';
4
5
  export type HealthResponse = {
5
6
  status: string;
6
7
  };
@@ -47,7 +48,7 @@ export type CreateInvite = {
47
48
  export type CreateSpace = {
48
49
  name: string;
49
50
  handle: string;
50
- billingPlanCode: 'free-monthly' | 'hobby-monthly' | 'hobby-annual' | 'pro-monthly' | 'pro-annual';
51
+ billingPlanCode: unknown;
51
52
  };
52
53
  export type CreateEnvironment = {
53
54
  name: string;
@@ -359,7 +360,10 @@ export type BillingPlan = {
359
360
  entitlements: Array<string>;
360
361
  };
361
362
  export type UpdatePlanRequest = {
362
- priceId: string;
363
+ /**
364
+ * Stripe price lookup key (e.g. "hobby-monthly"). Empty string = Free tier.
365
+ */
366
+ lookup_key: string;
363
367
  };
364
368
  export type PaymentMethod = {
365
369
  id: string;
@@ -375,6 +379,38 @@ export type SetupIntentResponse = {
375
379
  export type BillingUsage = {
376
380
  totalUnits: number;
377
381
  };
382
+ export type RecordUsageRequest = {
383
+ /**
384
+ * The Kinde organisation code for the space.
385
+ */
386
+ orgCode: string;
387
+ /**
388
+ * Usage quantity to record.
389
+ */
390
+ quantity: number;
391
+ /**
392
+ * Unix timestamp (seconds) at which the usage occurred. Defaults to now if omitted.
393
+ */
394
+ timestamp?: number;
395
+ };
396
+ export type PlanPriceResponse = {
397
+ /**
398
+ * Plan code (e.g. "hobby-monthly", "pro-annual").
399
+ */
400
+ code: string;
401
+ /**
402
+ * Price per seat in the smallest currency unit (e.g. cents).
403
+ */
404
+ unit_amount_cents: number;
405
+ /**
406
+ * ISO 4217 currency code (e.g. "usd").
407
+ */
408
+ currency: string;
409
+ /**
410
+ * Billing interval ("month" or "year").
411
+ */
412
+ interval: string;
413
+ };
378
414
  /**
379
415
  * Expiry query.
380
416
  */
@@ -1891,6 +1927,37 @@ export type RequestSignedUploadUrlResponses = {
1891
1927
  200: SignedUrlUploadResponse;
1892
1928
  };
1893
1929
  export type RequestSignedUploadUrlResponse = RequestSignedUploadUrlResponses[keyof RequestSignedUploadUrlResponses];
1930
+ export type RecordCloudUsageData = {
1931
+ body: RecordUsageRequest;
1932
+ path?: never;
1933
+ query?: never;
1934
+ url: '/m2m/billing/usage/record';
1935
+ };
1936
+ export type RecordCloudUsageErrors = {
1937
+ /**
1938
+ * Bad request.
1939
+ */
1940
+ 400: ErrorResponse;
1941
+ /**
1942
+ * Unauthorised.
1943
+ */
1944
+ 401: ErrorResponse;
1945
+ /**
1946
+ * Invalid credentials.
1947
+ */
1948
+ 403: ErrorResponse;
1949
+ /**
1950
+ * Unexpected error.
1951
+ */
1952
+ 500: ErrorResponse;
1953
+ };
1954
+ export type RecordCloudUsageError = RecordCloudUsageErrors[keyof RecordCloudUsageErrors];
1955
+ export type RecordCloudUsageResponses = {
1956
+ /**
1957
+ * Usage recorded successfully.
1958
+ */
1959
+ 202: unknown;
1960
+ };
1894
1961
  export type GetBillingPlanData = {
1895
1962
  body?: never;
1896
1963
  path: {
@@ -2133,3 +2200,36 @@ export type GetBillingUsageResponses = {
2133
2200
  200: BillingUsage;
2134
2201
  };
2135
2202
  export type GetBillingUsageResponse = GetBillingUsageResponses[keyof GetBillingUsageResponses];
2203
+ export type FetchBillingPricesData = {
2204
+ body?: never;
2205
+ path: {
2206
+ /**
2207
+ * The space handle. This must be globally unique.
2208
+ */
2209
+ spaceHandle: string;
2210
+ };
2211
+ query?: never;
2212
+ url: '/auth/{spaceHandle}/billing/prices';
2213
+ };
2214
+ export type FetchBillingPricesErrors = {
2215
+ /**
2216
+ * Unauthorised user.
2217
+ */
2218
+ 401: ErrorResponse;
2219
+ /**
2220
+ * Invalid credentials.
2221
+ */
2222
+ 403: ErrorResponse;
2223
+ /**
2224
+ * Unexpected error.
2225
+ */
2226
+ 500: ErrorResponse;
2227
+ };
2228
+ export type FetchBillingPricesError = FetchBillingPricesErrors[keyof FetchBillingPricesErrors];
2229
+ export type FetchBillingPricesResponses = {
2230
+ /**
2231
+ * A list of plan prices.
2232
+ */
2233
+ 200: Array<PlanPriceResponse>;
2234
+ };
2235
+ export type FetchBillingPricesResponse = FetchBillingPricesResponses[keyof FetchBillingPricesResponses];
@@ -1,4 +1,11 @@
1
1
  import { z } from 'zod';
2
+ export declare const zBillingPlanLookupKey: z.ZodEnum<{
3
+ "free-monthly": "free-monthly";
4
+ "hobby-monthly": "hobby-monthly";
5
+ "hobby-annual": "hobby-annual";
6
+ "pro-monthly": "pro-monthly";
7
+ "pro-annual": "pro-annual";
8
+ }>;
2
9
  export declare const zHealthResponse: z.ZodObject<{
3
10
  status: z.ZodString;
4
11
  }, z.core.$strip>;
@@ -70,13 +77,7 @@ export declare const zCreateInvite: z.ZodObject<{
70
77
  export declare const zCreateSpace: z.ZodObject<{
71
78
  name: z.ZodString;
72
79
  handle: z.ZodString;
73
- billingPlanCode: z.ZodEnum<{
74
- "free-monthly": "free-monthly";
75
- "hobby-monthly": "hobby-monthly";
76
- "hobby-annual": "hobby-annual";
77
- "pro-monthly": "pro-monthly";
78
- "pro-annual": "pro-annual";
79
- }>;
80
+ billingPlanCode: z.ZodUnknown;
80
81
  }, z.core.$strip>;
81
82
  export declare const zCreateEnvironment: z.ZodObject<{
82
83
  name: z.ZodString;
@@ -1037,7 +1038,7 @@ export declare const zBillingPlan: z.ZodObject<{
1037
1038
  entitlements: z.ZodArray<z.ZodString>;
1038
1039
  }, z.core.$strip>;
1039
1040
  export declare const zUpdatePlanRequest: z.ZodObject<{
1040
- priceId: z.ZodString;
1041
+ lookup_key: z.ZodString;
1041
1042
  }, z.core.$strip>;
1042
1043
  export declare const zPaymentMethod: z.ZodObject<{
1043
1044
  id: z.ZodString;
@@ -1053,6 +1054,17 @@ export declare const zSetupIntentResponse: z.ZodObject<{
1053
1054
  export declare const zBillingUsage: z.ZodObject<{
1054
1055
  totalUnits: z.ZodCoercedBigInt<unknown>;
1055
1056
  }, z.core.$strip>;
1057
+ export declare const zRecordUsageRequest: z.ZodObject<{
1058
+ orgCode: z.ZodString;
1059
+ quantity: z.ZodCoercedBigInt<unknown>;
1060
+ timestamp: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
1061
+ }, z.core.$strip>;
1062
+ export declare const zPlanPriceResponse: z.ZodObject<{
1063
+ code: z.ZodString;
1064
+ unit_amount_cents: z.ZodCoercedBigInt<unknown>;
1065
+ currency: z.ZodString;
1066
+ interval: z.ZodString;
1067
+ }, z.core.$strip>;
1056
1068
  /**
1057
1069
  * Expiry query.
1058
1070
  */
@@ -1521,13 +1533,7 @@ export declare const zCreateSpaceData: z.ZodObject<{
1521
1533
  body: z.ZodObject<{
1522
1534
  name: z.ZodString;
1523
1535
  handle: z.ZodString;
1524
- billingPlanCode: z.ZodEnum<{
1525
- "free-monthly": "free-monthly";
1526
- "hobby-monthly": "hobby-monthly";
1527
- "hobby-annual": "hobby-annual";
1528
- "pro-monthly": "pro-monthly";
1529
- "pro-annual": "pro-annual";
1530
- }>;
1536
+ billingPlanCode: z.ZodUnknown;
1531
1537
  }, z.core.$strip>;
1532
1538
  path: z.ZodOptional<z.ZodNever>;
1533
1539
  query: z.ZodOptional<z.ZodNever>;
@@ -2218,6 +2224,15 @@ export declare const zRequestSignedUploadUrlResponse: z.ZodObject<{
2218
2224
  signedUrl: z.ZodString;
2219
2225
  expiration: z.ZodISODateTime;
2220
2226
  }, z.core.$strip>;
2227
+ export declare const zRecordCloudUsageData: z.ZodObject<{
2228
+ body: z.ZodObject<{
2229
+ orgCode: z.ZodString;
2230
+ quantity: z.ZodCoercedBigInt<unknown>;
2231
+ timestamp: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
2232
+ }, z.core.$strip>;
2233
+ path: z.ZodOptional<z.ZodNever>;
2234
+ query: z.ZodOptional<z.ZodNever>;
2235
+ }, z.core.$strip>;
2221
2236
  export declare const zGetBillingPlanData: z.ZodObject<{
2222
2237
  body: z.ZodOptional<z.ZodNever>;
2223
2238
  path: z.ZodObject<{
@@ -2249,7 +2264,7 @@ export declare const zGetBillingPlanResponse: z.ZodObject<{
2249
2264
  }, z.core.$strip>;
2250
2265
  export declare const zUpdateBillingPlanData: z.ZodObject<{
2251
2266
  body: z.ZodObject<{
2252
- priceId: z.ZodString;
2267
+ lookup_key: z.ZodString;
2253
2268
  }, z.core.$strip>;
2254
2269
  path: z.ZodObject<{
2255
2270
  spaceHandle: z.ZodString;
@@ -2324,3 +2339,19 @@ export declare const zGetBillingUsageData: z.ZodObject<{
2324
2339
  export declare const zGetBillingUsageResponse: z.ZodObject<{
2325
2340
  totalUnits: z.ZodCoercedBigInt<unknown>;
2326
2341
  }, z.core.$strip>;
2342
+ export declare const zFetchBillingPricesData: z.ZodObject<{
2343
+ body: z.ZodOptional<z.ZodNever>;
2344
+ path: z.ZodObject<{
2345
+ spaceHandle: z.ZodString;
2346
+ }, z.core.$strip>;
2347
+ query: z.ZodOptional<z.ZodNever>;
2348
+ }, z.core.$strip>;
2349
+ /**
2350
+ * A list of plan prices.
2351
+ */
2352
+ export declare const zFetchBillingPricesResponse: z.ZodArray<z.ZodObject<{
2353
+ code: z.ZodString;
2354
+ unit_amount_cents: z.ZodCoercedBigInt<unknown>;
2355
+ currency: z.ZodString;
2356
+ interval: z.ZodString;
2357
+ }, z.core.$strip>>;
@@ -1,5 +1,12 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
  import { z } from 'zod';
3
+ export const zBillingPlanLookupKey = z.enum([
4
+ 'free-monthly',
5
+ 'hobby-monthly',
6
+ 'hobby-annual',
7
+ 'pro-monthly',
8
+ 'pro-annual'
9
+ ]);
3
10
  export const zHealthResponse = z.object({
4
11
  status: z.string()
5
12
  });
@@ -49,13 +56,7 @@ export const zCreateInvite = z.object({
49
56
  export const zCreateSpace = z.object({
50
57
  name: z.string(),
51
58
  handle: z.string(),
52
- billingPlanCode: z.enum([
53
- 'free-monthly',
54
- 'hobby-monthly',
55
- 'hobby-annual',
56
- 'pro-monthly',
57
- 'pro-annual'
58
- ])
59
+ billingPlanCode: z.unknown()
59
60
  });
60
61
  export const zCreateEnvironment = z.object({
61
62
  name: z.string(),
@@ -456,7 +457,7 @@ export const zBillingPlan = z.object({
456
457
  entitlements: z.array(z.string())
457
458
  });
458
459
  export const zUpdatePlanRequest = z.object({
459
- priceId: z.string()
460
+ lookup_key: z.string()
460
461
  });
461
462
  export const zPaymentMethod = z.object({
462
463
  id: z.string(),
@@ -472,6 +473,17 @@ export const zSetupIntentResponse = z.object({
472
473
  export const zBillingUsage = z.object({
473
474
  totalUnits: z.coerce.bigint()
474
475
  });
476
+ export const zRecordUsageRequest = z.object({
477
+ orgCode: z.string(),
478
+ quantity: z.coerce.bigint(),
479
+ timestamp: z.optional(z.coerce.bigint())
480
+ });
481
+ export const zPlanPriceResponse = z.object({
482
+ code: z.string(),
483
+ unit_amount_cents: z.coerce.bigint(),
484
+ currency: z.string(),
485
+ interval: z.string()
486
+ });
475
487
  /**
476
488
  * Expiry query.
477
489
  */
@@ -932,6 +944,11 @@ export const zRequestSignedUploadUrlData = z.object({
932
944
  * A successfully generated signed url.
933
945
  */
934
946
  export const zRequestSignedUploadUrlResponse = zSignedUrlUploadResponse;
947
+ export const zRecordCloudUsageData = z.object({
948
+ body: zRecordUsageRequest,
949
+ path: z.optional(z.never()),
950
+ query: z.optional(z.never())
951
+ });
935
952
  export const zGetBillingPlanData = z.object({
936
953
  body: z.optional(z.never()),
937
954
  path: z.object({
@@ -1007,3 +1024,14 @@ export const zGetBillingUsageData = z.object({
1007
1024
  * Current billing period usage.
1008
1025
  */
1009
1026
  export const zGetBillingUsageResponse = zBillingUsage;
1027
+ export const zFetchBillingPricesData = z.object({
1028
+ body: z.optional(z.never()),
1029
+ path: z.object({
1030
+ spaceHandle: z.string()
1031
+ }),
1032
+ query: z.optional(z.never())
1033
+ });
1034
+ /**
1035
+ * A list of plan prices.
1036
+ */
1037
+ export const zFetchBillingPricesResponse = z.array(zPlanPriceResponse);
@@ -1,6 +1,6 @@
1
1
  import { useMutation } from "@tanstack/react-query";
2
2
  import { GetSuccessResponse } from "../util";
3
- import { GetServiceHealthData, FetchGraphM2mData, RequestAccountPasswordResetData, RequestAccountPasswordResetResponses, UpdateUsernameData, UpdateUsernameResponses, CreateUsernameData, CreateUsernameResponses, GetUserProfileData, UpdateUserProfileData, UpdateUserProfileResponses, GetUserIdentitiesData, DeleteAccountIdentityData, DeleteAccountIdentityResponses, GetConnectedAppUrlData, UpdateConnectedAppTokenData, UpdateConnectedAppTokenResponses, ListInstallationRepositoriesData, ListInstallationBranchesData, ListUserInstallationsData, ListUserSpacesData, CreateSpaceData, CreateSpaceResponses, GetUserInvitesData, JoinSpaceData, JoinSpaceResponses, RejectSpaceInviteData, RejectSpaceInviteResponses, GetSpaceOverviewData, GetSpaceOrgCodeData, FetchKindeOrganisationBillingAgreementsData, GetSpaceInvitesData, CreateSpaceInviteData, CreateSpaceInviteResponses, RevokeSpaceInviteData, RevokeSpaceInviteResponses, ListSpaceMembersData, ListSpaceMemberRolesData, LeaveSpaceData, LeaveSpaceResponses, CreateProjectData, CreateProjectResponses, GetProjectOverviewData, CreateEnvironmentData, CreateEnvironmentResponses, GetEnvironmentOverviewData, GetGraphOverviewData, UpdateGraphStateData, UpdateGraphStateResponses, DeployVersionData, DeployVersionResponses, RequestSignedUploadUrlData, GetBillingPlanData, UpdateBillingPlanData, UpdateBillingPlanResponses, CreateSetupIntentData, CreateSetupIntentResponses, ListPaymentMethodsData, RemovePaymentMethodData, RemovePaymentMethodResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodResponses, GetBillingUsageData } from "../../sdk/types.gen";
3
+ import { GetServiceHealthData, FetchGraphM2mData, RequestAccountPasswordResetData, RequestAccountPasswordResetResponses, UpdateUsernameData, UpdateUsernameResponses, CreateUsernameData, CreateUsernameResponses, GetUserProfileData, UpdateUserProfileData, UpdateUserProfileResponses, GetUserIdentitiesData, DeleteAccountIdentityData, DeleteAccountIdentityResponses, GetConnectedAppUrlData, UpdateConnectedAppTokenData, UpdateConnectedAppTokenResponses, ListInstallationRepositoriesData, ListInstallationBranchesData, ListUserInstallationsData, ListUserSpacesData, CreateSpaceData, CreateSpaceResponses, GetUserInvitesData, JoinSpaceData, JoinSpaceResponses, RejectSpaceInviteData, RejectSpaceInviteResponses, GetSpaceOverviewData, GetSpaceOrgCodeData, FetchKindeOrganisationBillingAgreementsData, GetSpaceInvitesData, CreateSpaceInviteData, CreateSpaceInviteResponses, RevokeSpaceInviteData, RevokeSpaceInviteResponses, ListSpaceMembersData, ListSpaceMemberRolesData, LeaveSpaceData, LeaveSpaceResponses, CreateProjectData, CreateProjectResponses, GetProjectOverviewData, CreateEnvironmentData, CreateEnvironmentResponses, GetEnvironmentOverviewData, GetGraphOverviewData, UpdateGraphStateData, UpdateGraphStateResponses, DeployVersionData, DeployVersionResponses, RequestSignedUploadUrlData, RecordCloudUsageData, RecordCloudUsageResponses, GetBillingPlanData, UpdateBillingPlanData, UpdateBillingPlanResponses, CreateSetupIntentData, CreateSetupIntentResponses, ListPaymentMethodsData, RemovePaymentMethodData, RemovePaymentMethodResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodResponses, GetBillingUsageData, FetchBillingPricesData } from "../../sdk/types.gen";
4
4
  export declare const useGetServiceHealth: (options?: Omit<GetServiceHealthData, "url"> & {
5
5
  enabled?: boolean;
6
6
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").HealthResponse | undefined, Error>;
@@ -141,6 +141,11 @@ export declare const useDeployVersion: (config?: {
141
141
  export declare const useRequestSignedUploadUrl: (options: Omit<RequestSignedUploadUrlData, "url"> & {
142
142
  enabled?: boolean;
143
143
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").SignedUrlUploadResponse | undefined, Error>;
144
+ export declare const useRecordCloudUsage: (config?: {
145
+ onSuccess?: (data: GetSuccessResponse<RecordCloudUsageResponses>) => void;
146
+ onError?: Parameters<typeof useMutation>["0"]["onError"];
147
+ retry?: boolean;
148
+ }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, Omit<RecordCloudUsageData, "url">, unknown>;
144
149
  export declare const useGetBillingPlan: (options: Omit<GetBillingPlanData, "url"> & {
145
150
  enabled?: boolean;
146
151
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").BillingPlan | undefined, Error>;
@@ -170,3 +175,6 @@ export declare const useSetDefaultPaymentMethod: (config?: {
170
175
  export declare const useGetBillingUsage: (options: Omit<GetBillingUsageData, "url"> & {
171
176
  enabled?: boolean;
172
177
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").BillingUsage | undefined, Error>;
178
+ export declare const useFetchBillingPrices: (options: Omit<FetchBillingPricesData, "url"> & {
179
+ enabled?: boolean;
180
+ }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").PlanPriceResponse[] | undefined, Error>;
@@ -2,7 +2,7 @@
2
2
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
3
  import { isPromise } from "../util";
4
4
  import { useToken } from "../../provider/token-provider";
5
- import { getServiceHealth, fetchGraphM2M, requestAccountPasswordReset, updateUsername, createUsername, getUserProfile, updateUserProfile, getUserIdentities, deleteAccountIdentity, getConnectedAppUrl, updateConnectedAppToken, listInstallationRepositories, listInstallationBranches, listUserInstallations, listUserSpaces, createSpace, getUserInvites, joinSpace, rejectSpaceInvite, getSpaceOverview, getSpaceOrgCode, fetchKindeOrganisationBillingAgreements, getSpaceInvites, createSpaceInvite, revokeSpaceInvite, listSpaceMembers, listSpaceMemberRoles, leaveSpace, createProject, getProjectOverview, createEnvironment, getEnvironmentOverview, getGraphOverview, updateGraphState, deployVersion, requestSignedUploadUrl, getBillingPlan, updateBillingPlan, createSetupIntent, listPaymentMethods, removePaymentMethod, setDefaultPaymentMethod, getBillingUsage } from "../../sdk/sdk.gen";
5
+ import { getServiceHealth, fetchGraphM2M, requestAccountPasswordReset, updateUsername, createUsername, getUserProfile, updateUserProfile, getUserIdentities, deleteAccountIdentity, getConnectedAppUrl, updateConnectedAppToken, listInstallationRepositories, listInstallationBranches, listUserInstallations, listUserSpaces, createSpace, getUserInvites, joinSpace, rejectSpaceInvite, getSpaceOverview, getSpaceOrgCode, fetchKindeOrganisationBillingAgreements, getSpaceInvites, createSpaceInvite, revokeSpaceInvite, listSpaceMembers, listSpaceMemberRoles, leaveSpace, createProject, getProjectOverview, createEnvironment, getEnvironmentOverview, getGraphOverview, updateGraphState, deployVersion, requestSignedUploadUrl, recordCloudUsage, getBillingPlan, updateBillingPlan, createSetupIntent, listPaymentMethods, removePaymentMethod, setDefaultPaymentMethod, getBillingUsage, fetchBillingPrices } from "../../sdk/sdk.gen";
6
6
  export const useGetServiceHealth = (options) => {
7
7
  const token = useToken();
8
8
  let { enabled, ...rest } = options || { enabled: true };
@@ -727,6 +727,25 @@ export const useRequestSignedUploadUrl = (options) => {
727
727
  staleTime: 600000
728
728
  });
729
729
  };
730
+ export const useRecordCloudUsage = (config) => {
731
+ const token = useToken();
732
+ const queryClient = useQueryClient();
733
+ const opts = { throwOnError: true, url: "/m2m/billing/usage/record" };
734
+ const funcer = async (options) => {
735
+ const auth = isPromise(token) ? (await token) || "" : token || "";
736
+ const res = await recordCloudUsage({ ...opts, ...options, auth });
737
+ return res?.data;
738
+ };
739
+ return useMutation({
740
+ mutationFn: funcer,
741
+ onSuccess: (res, options, c, ctx) => {
742
+ queryClient.invalidateQueries({ queryKey: ["m2m", "billing", "usage", "record"] });
743
+ config?.onSuccess && config.onSuccess(res);
744
+ },
745
+ onError: config?.onError,
746
+ retry: config?.retry
747
+ });
748
+ };
730
749
  export const useGetBillingPlan = (options) => {
731
750
  const token = useToken();
732
751
  let { enabled, ...rest } = options || { enabled: true };
@@ -866,3 +885,24 @@ export const useGetBillingUsage = (options) => {
866
885
  staleTime: 600000
867
886
  });
868
887
  };
888
+ export const useFetchBillingPrices = (options) => {
889
+ const token = useToken();
890
+ let { enabled, ...rest } = options || { enabled: true };
891
+ const opts = { throwOnError: true, url: "/auth/{spaceHandle}/billing/prices" };
892
+ const funcer = async () => {
893
+ const auth = isPromise(token) ? (await token) || "" : token || "";
894
+ if (isPromise(token) && !token)
895
+ return;
896
+ const res = await fetchBillingPrices({ ...opts, ...rest, auth });
897
+ return res.data;
898
+ };
899
+ if (!token)
900
+ enabled = false;
901
+ return useQuery({
902
+ queryKey: [options?.path?.spaceHandle, "billing", "prices", options.query ?? {}],
903
+ queryFn: funcer,
904
+ enabled,
905
+ retry: false,
906
+ staleTime: 600000
907
+ });
908
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shoal-web-sdk",
3
- "version": "0.0.109",
3
+ "version": "0.0.111",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "build-hooks": "npx tsx tanstack-codegen/generator.ts",