@voyantjs/markets-react 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/client.d.ts +14 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +58 -0
  4. package/dist/hooks/index.d.ts +8 -0
  5. package/dist/hooks/index.d.ts.map +1 -0
  6. package/dist/hooks/index.js +7 -0
  7. package/dist/hooks/use-market-currencies.d.ts +20 -0
  8. package/dist/hooks/use-market-currencies.d.ts.map +1 -0
  9. package/dist/hooks/use-market-currencies.js +12 -0
  10. package/dist/hooks/use-market-currency-mutation.d.ts +36 -0
  11. package/dist/hooks/use-market-currency-mutation.d.ts.map +1 -0
  12. package/dist/hooks/use-market-currency-mutation.js +40 -0
  13. package/dist/hooks/use-market-locale-mutation.d.ts +32 -0
  14. package/dist/hooks/use-market-locale-mutation.d.ts.map +1 -0
  15. package/dist/hooks/use-market-locale-mutation.js +40 -0
  16. package/dist/hooks/use-market-locales.d.ts +18 -0
  17. package/dist/hooks/use-market-locales.d.ts.map +1 -0
  18. package/dist/hooks/use-market-locales.js +12 -0
  19. package/dist/hooks/use-market-mutation.d.ts +50 -0
  20. package/dist/hooks/use-market-mutation.d.ts.map +1 -0
  21. package/dist/hooks/use-market-mutation.js +42 -0
  22. package/dist/hooks/use-market.d.ts +17 -0
  23. package/dist/hooks/use-market.d.ts.map +1 -0
  24. package/dist/hooks/use-market.js +12 -0
  25. package/dist/hooks/use-markets.d.ts +23 -0
  26. package/dist/hooks/use-markets.d.ts.map +1 -0
  27. package/dist/hooks/use-markets.js +12 -0
  28. package/dist/index.d.ts +7 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +6 -0
  31. package/dist/provider.d.ts +2 -0
  32. package/dist/provider.d.ts.map +1 -0
  33. package/dist/provider.js +1 -0
  34. package/dist/query-keys.d.ts +34 -0
  35. package/dist/query-keys.d.ts.map +1 -0
  36. package/dist/query-keys.js +12 -0
  37. package/dist/query-options.d.ts +337 -0
  38. package/dist/query-options.d.ts.map +1 -0
  39. package/dist/query-options.js +71 -0
  40. package/dist/schemas.d.ts +143 -0
  41. package/dist/schemas.d.ts.map +1 -0
  42. package/dist/schemas.js +32 -0
  43. package/package.json +79 -0
@@ -0,0 +1,14 @@
1
+ import type { z } from "zod";
2
+ export type VoyantFetcher = (url: string, init?: RequestInit) => Promise<Response>;
3
+ export declare const defaultFetcher: VoyantFetcher;
4
+ export declare class VoyantApiError extends Error {
5
+ readonly status: number;
6
+ readonly body: unknown;
7
+ constructor(message: string, status: number, body: unknown);
8
+ }
9
+ export interface FetchWithValidationOptions {
10
+ baseUrl: string;
11
+ fetcher: VoyantFetcher;
12
+ }
13
+ export declare function fetchWithValidation<TOut>(path: string, schema: z.ZodType<TOut>, options: FetchWithValidationOptions, init?: RequestInit): Promise<TOut>;
14
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAElF,eAAO,MAAM,cAAc,EAAE,aACoB,CAAA;AAEjD,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;gBAEV,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAM3D;AAaD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,EAAE,0BAA0B,EACnC,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
package/dist/client.js ADDED
@@ -0,0 +1,58 @@
1
+ export const defaultFetcher = (url, init) => fetch(url, { credentials: "include", ...init });
2
+ export class VoyantApiError extends Error {
3
+ status;
4
+ body;
5
+ constructor(message, status, body) {
6
+ super(message);
7
+ this.name = "VoyantApiError";
8
+ this.status = status;
9
+ this.body = body;
10
+ }
11
+ }
12
+ function extractErrorMessage(status, statusText, body) {
13
+ if (typeof body === "object" && body !== null && "error" in body) {
14
+ const err = body.error;
15
+ if (typeof err === "string")
16
+ return err;
17
+ if (typeof err === "object" && err !== null && "message" in err) {
18
+ return String(err.message);
19
+ }
20
+ }
21
+ return `Voyant API error: ${status} ${statusText}`;
22
+ }
23
+ export async function fetchWithValidation(path, schema, options, init) {
24
+ const url = joinUrl(options.baseUrl, path);
25
+ const headers = new Headers(init?.headers);
26
+ if (init?.body !== undefined && !headers.has("Content-Type")) {
27
+ headers.set("Content-Type", "application/json");
28
+ }
29
+ const response = await options.fetcher(url, { ...init, headers });
30
+ if (!response.ok) {
31
+ const body = await safeJson(response);
32
+ throw new VoyantApiError(extractErrorMessage(response.status, response.statusText, body), response.status, body);
33
+ }
34
+ if (response.status === 204)
35
+ return schema.parse(undefined);
36
+ const body = await safeJson(response);
37
+ const parsed = schema.safeParse(body);
38
+ if (!parsed.success) {
39
+ throw new VoyantApiError(`Voyant API response failed validation: ${parsed.error.message}`, response.status, body);
40
+ }
41
+ return parsed.data;
42
+ }
43
+ async function safeJson(response) {
44
+ const text = await response.text();
45
+ if (!text)
46
+ return undefined;
47
+ try {
48
+ return JSON.parse(text);
49
+ }
50
+ catch {
51
+ return text;
52
+ }
53
+ }
54
+ function joinUrl(baseUrl, path) {
55
+ const trimmedBase = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
56
+ const trimmedPath = path.startsWith("/") ? path : `/${path}`;
57
+ return `${trimmedBase}${trimmedPath}`;
58
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./use-market.js";
2
+ export * from "./use-market-currencies.js";
3
+ export * from "./use-market-currency-mutation.js";
4
+ export * from "./use-market-locale-mutation.js";
5
+ export * from "./use-market-locales.js";
6
+ export * from "./use-market-mutation.js";
7
+ export * from "./use-markets.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from "./use-market.js";
2
+ export * from "./use-market-currencies.js";
3
+ export * from "./use-market-currency-mutation.js";
4
+ export * from "./use-market-locale-mutation.js";
5
+ export * from "./use-market-locales.js";
6
+ export * from "./use-market-mutation.js";
7
+ export * from "./use-markets.js";
@@ -0,0 +1,20 @@
1
+ import type { MarketCurrenciesListFilters } from "../query-keys.js";
2
+ export interface UseMarketCurrenciesOptions extends MarketCurrenciesListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useMarketCurrencies(options: UseMarketCurrenciesOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ currencyCode: string;
8
+ isDefault: boolean;
9
+ isSettlement: boolean;
10
+ isReporting: boolean;
11
+ sortOrder: number;
12
+ active: boolean;
13
+ id: string;
14
+ marketId: string;
15
+ }[];
16
+ total: number;
17
+ limit: number;
18
+ offset: number;
19
+ }, Error>;
20
+ //# sourceMappingURL=use-market-currencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market-currencies.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market-currencies.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAGnE,MAAM,WAAW,0BAA2B,SAAQ,2BAA2B;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;;;;;;;;;;;;;;UAQtE"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantMarketsContext } from "../provider.js";
4
+ import { getMarketCurrenciesQueryOptions } from "../query-options.js";
5
+ export function useMarketCurrencies(options) {
6
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
7
+ const { enabled = true, ...filters } = options;
8
+ return useQuery({
9
+ ...getMarketCurrenciesQueryOptions({ baseUrl, fetcher }, filters),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,36 @@
1
+ import type { insertMarketCurrencySchema, updateMarketCurrencySchema } from "@voyantjs/markets";
2
+ import type { z } from "zod";
3
+ export type CreateMarketCurrencyInput = z.input<typeof insertMarketCurrencySchema>;
4
+ export type UpdateMarketCurrencyInput = z.input<typeof updateMarketCurrencySchema>;
5
+ export declare function useMarketCurrencyMutation(): {
6
+ create: import("@tanstack/react-query").UseMutationResult<{
7
+ currencyCode: string;
8
+ isDefault: boolean;
9
+ isSettlement: boolean;
10
+ isReporting: boolean;
11
+ sortOrder: number;
12
+ active: boolean;
13
+ id: string;
14
+ marketId: string;
15
+ }, Error, {
16
+ marketId: string;
17
+ input: CreateMarketCurrencyInput;
18
+ }, unknown>;
19
+ update: import("@tanstack/react-query").UseMutationResult<{
20
+ currencyCode: string;
21
+ isDefault: boolean;
22
+ isSettlement: boolean;
23
+ isReporting: boolean;
24
+ sortOrder: number;
25
+ active: boolean;
26
+ id: string;
27
+ marketId: string;
28
+ }, Error, {
29
+ id: string;
30
+ input: UpdateMarketCurrencyInput;
31
+ }, unknown>;
32
+ remove: import("@tanstack/react-query").UseMutationResult<{
33
+ success: boolean;
34
+ }, Error, string, unknown>;
35
+ };
36
+ //# sourceMappingURL=use-market-currency-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market-currency-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market-currency-mutation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAO5B,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAClF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAElF,wBAAgB,yBAAyB;;;;;;;;;;;kBASzB,MAAM;eACT,yBAAyB;;;;;;;;;;;;YAiBM,MAAM;eAAS,yBAAyB;;;;;EAgCnF"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantMarketsContext } from "../provider.js";
5
+ import { marketsQueryKeys } from "../query-keys.js";
6
+ import { marketCurrencySingleResponse, successEnvelope } from "../schemas.js";
7
+ export function useMarketCurrencyMutation() {
8
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
9
+ const queryClient = useQueryClient();
10
+ const create = useMutation({
11
+ mutationFn: async ({ marketId, input, }) => {
12
+ const { data } = await fetchWithValidation(`/v1/markets/markets/${marketId}/currencies`, marketCurrencySingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
13
+ return data;
14
+ },
15
+ onSuccess: (data) => {
16
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketCurrencies() });
17
+ queryClient.setQueryData(marketsQueryKeys.marketCurrency(data.id), data);
18
+ },
19
+ });
20
+ const update = useMutation({
21
+ mutationFn: async ({ id, input }) => {
22
+ const { data } = await fetchWithValidation(`/v1/markets/market-currencies/${id}`, marketCurrencySingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
23
+ return data;
24
+ },
25
+ onSuccess: (data) => {
26
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketCurrencies() });
27
+ queryClient.setQueryData(marketsQueryKeys.marketCurrency(data.id), data);
28
+ },
29
+ });
30
+ const remove = useMutation({
31
+ mutationFn: async (id) => fetchWithValidation(`/v1/markets/market-currencies/${id}`, successEnvelope, { baseUrl, fetcher }, {
32
+ method: "DELETE",
33
+ }),
34
+ onSuccess: (_data, id) => {
35
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketCurrencies() });
36
+ queryClient.removeQueries({ queryKey: marketsQueryKeys.marketCurrency(id) });
37
+ },
38
+ });
39
+ return { create, update, remove };
40
+ }
@@ -0,0 +1,32 @@
1
+ import type { insertMarketLocaleSchema, updateMarketLocaleSchema } from "@voyantjs/markets";
2
+ import type { z } from "zod";
3
+ export type CreateMarketLocaleInput = z.input<typeof insertMarketLocaleSchema>;
4
+ export type UpdateMarketLocaleInput = z.input<typeof updateMarketLocaleSchema>;
5
+ export declare function useMarketLocaleMutation(): {
6
+ create: import("@tanstack/react-query").UseMutationResult<{
7
+ languageTag: string;
8
+ isDefault: boolean;
9
+ sortOrder: number;
10
+ active: boolean;
11
+ id: string;
12
+ marketId: string;
13
+ }, Error, {
14
+ marketId: string;
15
+ input: CreateMarketLocaleInput;
16
+ }, unknown>;
17
+ update: import("@tanstack/react-query").UseMutationResult<{
18
+ languageTag: string;
19
+ isDefault: boolean;
20
+ sortOrder: number;
21
+ active: boolean;
22
+ id: string;
23
+ marketId: string;
24
+ }, Error, {
25
+ id: string;
26
+ input: UpdateMarketLocaleInput;
27
+ }, unknown>;
28
+ remove: import("@tanstack/react-query").UseMutationResult<{
29
+ success: boolean;
30
+ }, Error, string, unknown>;
31
+ };
32
+ //# sourceMappingURL=use-market-locale-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market-locale-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market-locale-mutation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAO5B,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE9E,wBAAgB,uBAAuB;;;;;;;;;kBASvB,MAAM;eACT,uBAAuB;;;;;;;;;;YAiBQ,MAAM;eAAS,uBAAuB;;;;;EAgCjF"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantMarketsContext } from "../provider.js";
5
+ import { marketsQueryKeys } from "../query-keys.js";
6
+ import { marketLocaleSingleResponse, successEnvelope } from "../schemas.js";
7
+ export function useMarketLocaleMutation() {
8
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
9
+ const queryClient = useQueryClient();
10
+ const create = useMutation({
11
+ mutationFn: async ({ marketId, input, }) => {
12
+ const { data } = await fetchWithValidation(`/v1/markets/markets/${marketId}/locales`, marketLocaleSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
13
+ return data;
14
+ },
15
+ onSuccess: (data) => {
16
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketLocales() });
17
+ queryClient.setQueryData(marketsQueryKeys.marketLocale(data.id), data);
18
+ },
19
+ });
20
+ const update = useMutation({
21
+ mutationFn: async ({ id, input }) => {
22
+ const { data } = await fetchWithValidation(`/v1/markets/market-locales/${id}`, marketLocaleSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
23
+ return data;
24
+ },
25
+ onSuccess: (data) => {
26
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketLocales() });
27
+ queryClient.setQueryData(marketsQueryKeys.marketLocale(data.id), data);
28
+ },
29
+ });
30
+ const remove = useMutation({
31
+ mutationFn: async (id) => fetchWithValidation(`/v1/markets/market-locales/${id}`, successEnvelope, { baseUrl, fetcher }, {
32
+ method: "DELETE",
33
+ }),
34
+ onSuccess: (_data, id) => {
35
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketLocales() });
36
+ queryClient.removeQueries({ queryKey: marketsQueryKeys.marketLocale(id) });
37
+ },
38
+ });
39
+ return { create, update, remove };
40
+ }
@@ -0,0 +1,18 @@
1
+ import type { MarketLocalesListFilters } from "../query-keys.js";
2
+ export interface UseMarketLocalesOptions extends MarketLocalesListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useMarketLocales(options: UseMarketLocalesOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ languageTag: string;
8
+ isDefault: boolean;
9
+ sortOrder: number;
10
+ active: boolean;
11
+ id: string;
12
+ marketId: string;
13
+ }[];
14
+ total: number;
15
+ limit: number;
16
+ offset: number;
17
+ }, Error>;
18
+ //# sourceMappingURL=use-market-locales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market-locales.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market-locales.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAGhE,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB;;;;;;;;;;;;UAQhE"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantMarketsContext } from "../provider.js";
4
+ import { getMarketLocalesQueryOptions } from "../query-options.js";
5
+ export function useMarketLocales(options) {
6
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
7
+ const { enabled = true, ...filters } = options;
8
+ return useQuery({
9
+ ...getMarketLocalesQueryOptions({ baseUrl, fetcher }, filters),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,50 @@
1
+ import type { insertMarketSchema, updateMarketSchema } from "@voyantjs/markets";
2
+ import type { z } from "zod";
3
+ export type CreateMarketInput = z.input<typeof insertMarketSchema>;
4
+ export type UpdateMarketInput = z.input<typeof updateMarketSchema>;
5
+ export declare function useMarketMutation(): {
6
+ create: import("@tanstack/react-query").UseMutationResult<{
7
+ code: string;
8
+ name: string;
9
+ status: "active" | "inactive" | "archived";
10
+ defaultLanguageTag: string;
11
+ defaultCurrency: string;
12
+ id: string;
13
+ regionCode: string | null;
14
+ countryCode: string | null;
15
+ timezone: string | null;
16
+ taxContext: string | null;
17
+ metadata?: Record<string, unknown> | null | undefined;
18
+ }, Error, {
19
+ code: string;
20
+ name: string;
21
+ defaultLanguageTag: string;
22
+ defaultCurrency: string;
23
+ status?: "active" | "inactive" | "archived" | undefined;
24
+ regionCode?: string | null | undefined;
25
+ countryCode?: string | null | undefined;
26
+ timezone?: string | null | undefined;
27
+ taxContext?: string | null | undefined;
28
+ metadata?: Record<string, unknown> | null | undefined;
29
+ }, unknown>;
30
+ update: import("@tanstack/react-query").UseMutationResult<{
31
+ code: string;
32
+ name: string;
33
+ status: "active" | "inactive" | "archived";
34
+ defaultLanguageTag: string;
35
+ defaultCurrency: string;
36
+ id: string;
37
+ regionCode: string | null;
38
+ countryCode: string | null;
39
+ timezone: string | null;
40
+ taxContext: string | null;
41
+ metadata?: Record<string, unknown> | null | undefined;
42
+ }, Error, {
43
+ id: string;
44
+ input: UpdateMarketInput;
45
+ }, unknown>;
46
+ remove: import("@tanstack/react-query").UseMutationResult<{
47
+ success: boolean;
48
+ }, Error, string, unknown>;
49
+ };
50
+ //# sourceMappingURL=use-market-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market-mutation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAO5B,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAElE,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqBW,MAAM;eAAS,iBAAiB;;;;;EAkC3E"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantMarketsContext } from "../provider.js";
5
+ import { marketsQueryKeys } from "../query-keys.js";
6
+ import { marketSingleResponse, successEnvelope } from "../schemas.js";
7
+ export function useMarketMutation() {
8
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
9
+ const queryClient = useQueryClient();
10
+ const create = useMutation({
11
+ mutationFn: async (input) => {
12
+ const { data } = await fetchWithValidation("/v1/markets/markets", marketSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
13
+ return data;
14
+ },
15
+ onSuccess: (data) => {
16
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.markets() });
17
+ queryClient.setQueryData(marketsQueryKeys.market(data.id), data);
18
+ },
19
+ });
20
+ const update = useMutation({
21
+ mutationFn: async ({ id, input }) => {
22
+ const { data } = await fetchWithValidation(`/v1/markets/markets/${id}`, marketSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
23
+ return data;
24
+ },
25
+ onSuccess: (data) => {
26
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.markets() });
27
+ queryClient.setQueryData(marketsQueryKeys.market(data.id), data);
28
+ },
29
+ });
30
+ const remove = useMutation({
31
+ mutationFn: async (id) => fetchWithValidation(`/v1/markets/markets/${id}`, successEnvelope, { baseUrl, fetcher }, {
32
+ method: "DELETE",
33
+ }),
34
+ onSuccess: (_data, id) => {
35
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.markets() });
36
+ queryClient.removeQueries({ queryKey: marketsQueryKeys.market(id) });
37
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketLocales() });
38
+ void queryClient.invalidateQueries({ queryKey: marketsQueryKeys.marketCurrencies() });
39
+ },
40
+ });
41
+ return { create, update, remove };
42
+ }
@@ -0,0 +1,17 @@
1
+ export interface UseMarketOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useMarket(id: string | null | undefined, options?: UseMarketOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ code: string;
6
+ name: string;
7
+ status: "active" | "inactive" | "archived";
8
+ defaultLanguageTag: string;
9
+ defaultCurrency: string;
10
+ id: string;
11
+ regionCode: string | null;
12
+ countryCode: string | null;
13
+ timezone: string | null;
14
+ taxContext: string | null;
15
+ metadata?: Record<string, unknown> | null | undefined;
16
+ }, Error>;
17
+ //# sourceMappingURL=use-market.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-market.d.ts","sourceRoot":"","sources":["../../src/hooks/use-market.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,GAAE,gBAAqB;;;;;;;;;;;;UAQtF"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantMarketsContext } from "../provider.js";
4
+ import { getMarketQueryOptions } from "../query-options.js";
5
+ export function useMarket(id, options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getMarketQueryOptions({ baseUrl, fetcher }, id ?? "__missing__"),
10
+ enabled: enabled && Boolean(id),
11
+ });
12
+ }
@@ -0,0 +1,23 @@
1
+ import type { MarketsListFilters } from "../query-keys.js";
2
+ export interface UseMarketsOptions extends MarketsListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useMarkets(options?: UseMarketsOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ code: string;
8
+ name: string;
9
+ status: "active" | "inactive" | "archived";
10
+ defaultLanguageTag: string;
11
+ defaultCurrency: string;
12
+ id: string;
13
+ regionCode: string | null;
14
+ countryCode: string | null;
15
+ timezone: string | null;
16
+ taxContext: string | null;
17
+ metadata?: Record<string, unknown> | null | undefined;
18
+ }[];
19
+ total: number;
20
+ limit: number;
21
+ offset: number;
22
+ }, Error>;
23
+ //# sourceMappingURL=use-markets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-markets.d.ts","sourceRoot":"","sources":["../../src/hooks/use-markets.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB;;;;;;;;;;;;;;;;;UAQzD"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantMarketsContext } from "../provider.js";
4
+ import { getMarketsQueryOptions } from "../query-options.js";
5
+ export function useMarkets(options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantMarketsContext();
7
+ const { enabled = true, ...filters } = options;
8
+ return useQuery({
9
+ ...getMarketsQueryOptions({ baseUrl, fetcher }, filters),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,7 @@
1
+ export { defaultFetcher, fetchWithValidation, VoyantApiError, type VoyantFetcher, } from "./client.js";
2
+ export * from "./hooks/index.js";
3
+ export { useVoyantMarketsContext, type VoyantMarketsContextValue, VoyantMarketsProvider, type VoyantMarketsProviderProps, } from "./provider.js";
4
+ export { type MarketCurrenciesListFilters, type MarketLocalesListFilters, type MarketsListFilters, marketsQueryKeys, } from "./query-keys.js";
5
+ export { getMarketCurrenciesQueryOptions, getMarketCurrencyQueryOptions, getMarketLocaleQueryOptions, getMarketLocalesQueryOptions, getMarketQueryOptions, getMarketsQueryOptions, } from "./query-options.js";
6
+ export * from "./schemas.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,aAAa,CAAA;AACpB,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,cAAc,cAAc,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { defaultFetcher, fetchWithValidation, VoyantApiError, } from "./client.js";
2
+ export * from "./hooks/index.js";
3
+ export { useVoyantMarketsContext, VoyantMarketsProvider, } from "./provider.js";
4
+ export { marketsQueryKeys, } from "./query-keys.js";
5
+ export { getMarketCurrenciesQueryOptions, getMarketCurrencyQueryOptions, getMarketLocaleQueryOptions, getMarketLocalesQueryOptions, getMarketQueryOptions, getMarketsQueryOptions, } from "./query-options.js";
6
+ export * from "./schemas.js";
@@ -0,0 +1,2 @@
1
+ export { useVoyantReactContext as useVoyantMarketsContext, type VoyantReactContextValue as VoyantMarketsContextValue, VoyantReactProvider as VoyantMarketsProvider, type VoyantReactProviderProps as VoyantMarketsProviderProps, } from "@voyantjs/react";
2
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,IAAI,uBAAuB,EAChD,KAAK,uBAAuB,IAAI,yBAAyB,EACzD,mBAAmB,IAAI,qBAAqB,EAC5C,KAAK,wBAAwB,IAAI,0BAA0B,GAC5D,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1 @@
1
+ export { useVoyantReactContext as useVoyantMarketsContext, VoyantReactProvider as VoyantMarketsProvider, } from "@voyantjs/react";
@@ -0,0 +1,34 @@
1
+ export interface MarketsListFilters {
2
+ status?: string | undefined;
3
+ countryCode?: string | undefined;
4
+ search?: string | undefined;
5
+ limit?: number | undefined;
6
+ offset?: number | undefined;
7
+ }
8
+ export interface MarketLocalesListFilters {
9
+ marketId?: string | undefined;
10
+ languageTag?: string | undefined;
11
+ active?: boolean | undefined;
12
+ limit?: number | undefined;
13
+ offset?: number | undefined;
14
+ }
15
+ export interface MarketCurrenciesListFilters {
16
+ marketId?: string | undefined;
17
+ currencyCode?: string | undefined;
18
+ active?: boolean | undefined;
19
+ limit?: number | undefined;
20
+ offset?: number | undefined;
21
+ }
22
+ export declare const marketsQueryKeys: {
23
+ all: readonly ["markets"];
24
+ markets: () => readonly ["markets", "markets"];
25
+ marketsList: (filters: MarketsListFilters) => readonly ["markets", "markets", MarketsListFilters];
26
+ market: (id: string) => readonly ["markets", "markets", string];
27
+ marketLocales: () => readonly ["markets", "market-locales"];
28
+ marketLocalesList: (filters: MarketLocalesListFilters) => readonly ["markets", "market-locales", MarketLocalesListFilters];
29
+ marketLocale: (id: string) => readonly ["markets", "market-locales", string];
30
+ marketCurrencies: () => readonly ["markets", "market-currencies"];
31
+ marketCurrenciesList: (filters: MarketCurrenciesListFilters) => readonly ["markets", "market-currencies", MarketCurrenciesListFilters];
32
+ marketCurrency: (id: string) => readonly ["markets", "market-currencies", string];
33
+ };
34
+ //# sourceMappingURL=query-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-keys.d.ts","sourceRoot":"","sources":["../src/query-keys.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED,eAAO,MAAM,gBAAgB;;;2BAGJ,kBAAkB;iBAC5B,MAAM;;iCAEU,wBAAwB;uBAElC,MAAM;;oCAEO,2BAA2B;yBAEtC,MAAM;CAC5B,CAAA"}
@@ -0,0 +1,12 @@
1
+ export const marketsQueryKeys = {
2
+ all: ["markets"],
3
+ markets: () => [...marketsQueryKeys.all, "markets"],
4
+ marketsList: (filters) => [...marketsQueryKeys.markets(), filters],
5
+ market: (id) => [...marketsQueryKeys.markets(), id],
6
+ marketLocales: () => [...marketsQueryKeys.all, "market-locales"],
7
+ marketLocalesList: (filters) => [...marketsQueryKeys.marketLocales(), filters],
8
+ marketLocale: (id) => [...marketsQueryKeys.marketLocales(), id],
9
+ marketCurrencies: () => [...marketsQueryKeys.all, "market-currencies"],
10
+ marketCurrenciesList: (filters) => [...marketsQueryKeys.marketCurrencies(), filters],
11
+ marketCurrency: (id) => [...marketsQueryKeys.marketCurrencies(), id],
12
+ };