@develemit/commerce-admin 0.3.0 → 0.6.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.
- package/README.md +13 -2
- package/dist/client/admin-client.d.ts +7 -1
- package/dist/client/errors.d.ts +9 -0
- package/dist/client/index.js +1 -1
- package/dist/client/transport.d.ts +3 -1
- package/dist/client-CSjuKdIE.js +178 -0
- package/dist/client-CSjuKdIE.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1245 -639
- package/dist/index.js.map +1 -1
- package/dist/lib/admin-labels.d.ts +26 -0
- package/dist/lib/discount-form.d.ts +28 -0
- package/dist/lib/discount-labels.d.ts +56 -0
- package/dist/lib/discount-status.d.ts +5 -0
- package/dist/lib/image-labels.d.ts +3 -0
- package/dist/lib/merge-labels.d.ts +19 -0
- package/dist/lib/provider.d.ts +7 -35
- package/dist/lib/use-discount-pages.d.ts +26 -0
- package/dist/lib/use-order-pages.d.ts +2 -0
- package/dist/lib/use-paged-list.d.ts +15 -0
- package/dist/styles.css +13 -0
- package/dist/views/discounts/admin-discount-editor.d.ts +6 -0
- package/dist/views/discounts/admin-discount-list.d.ts +1 -0
- package/dist/views/discounts/discount-fields.d.ts +10 -0
- package/dist/views/discounts/discount-value.d.ts +4 -0
- package/dist/views/products/image-alt-editor.d.ts +9 -0
- package/dist/views/products/image-tile.d.ts +2 -1
- package/package.json +2 -2
- package/dist/client-n_IYb4iK.js +0 -146
- package/dist/client-n_IYb4iK.js.map +0 -1
- package/dist/views/orders/test-helpers.d.ts +0 -3
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OrderLabels } from './order-labels';
|
|
2
|
+
import { ShippingLabels } from './shipping-labels';
|
|
3
|
+
import { DiscountLabels } from './discount-labels';
|
|
4
|
+
import { ProductLabels } from './product-labels';
|
|
5
|
+
export type AdminErrorKey = 'unauthorized' | 'notFound' | 'invalidInput' | 'invalidOrderState' | 'insufficientStock' | 'refundExceedsBalance' | 'refundGateway' | 'refundOutcomeUnknown' | 'discountCodeTaken' | 'discountInUse' | 'imageInvalid' | 'imageTooLarge' | 'generic';
|
|
6
|
+
export interface AdminLabels {
|
|
7
|
+
loading: string;
|
|
8
|
+
empty: string;
|
|
9
|
+
save: string;
|
|
10
|
+
cancel: string;
|
|
11
|
+
confirm: string;
|
|
12
|
+
dismiss: string;
|
|
13
|
+
navLabel: string;
|
|
14
|
+
nav: {
|
|
15
|
+
products: string;
|
|
16
|
+
orders: string;
|
|
17
|
+
shippingRates: string;
|
|
18
|
+
};
|
|
19
|
+
statuses: Record<string, string>;
|
|
20
|
+
errors: Record<AdminErrorKey, string>;
|
|
21
|
+
products: ProductLabels;
|
|
22
|
+
orders: OrderLabels;
|
|
23
|
+
shipping: ShippingLabels;
|
|
24
|
+
discounts: DiscountLabels;
|
|
25
|
+
}
|
|
26
|
+
export declare const defaultAdminLabels: AdminLabels;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Discount, DiscountInput, DiscountPatch, DiscountType } from '@develemit/commerce-contracts';
|
|
2
|
+
import { DiscountLabels } from './discount-labels';
|
|
3
|
+
export interface DiscountForm {
|
|
4
|
+
code: string;
|
|
5
|
+
type: DiscountType;
|
|
6
|
+
percentOff: string;
|
|
7
|
+
amountOff: string;
|
|
8
|
+
minSubtotal: string;
|
|
9
|
+
startsAt: string;
|
|
10
|
+
endsAt: string;
|
|
11
|
+
maxRedemptions: string;
|
|
12
|
+
}
|
|
13
|
+
export type DiscountFieldName = keyof DiscountForm;
|
|
14
|
+
export type DiscountFieldErrors = Partial<Record<DiscountFieldName, string>>;
|
|
15
|
+
export declare const emptyDiscountForm: DiscountForm;
|
|
16
|
+
export declare function isoToLocalInput(iso: string | null | undefined): string;
|
|
17
|
+
export declare function formFromDiscount(discount: Discount): DiscountForm;
|
|
18
|
+
export declare function isDiscountUsed(discount: Discount | undefined): boolean;
|
|
19
|
+
export type DiscountValidation = {
|
|
20
|
+
ok: true;
|
|
21
|
+
input: DiscountInput;
|
|
22
|
+
} | {
|
|
23
|
+
ok: false;
|
|
24
|
+
errors: DiscountFieldErrors;
|
|
25
|
+
};
|
|
26
|
+
export declare function validateDiscountForm(form: DiscountForm, labels: DiscountLabels, currency: string, usedCount?: number): DiscountValidation;
|
|
27
|
+
export declare function buildDiscountPatch(original: Discount, input: DiscountInput, locked: boolean): DiscountPatch;
|
|
28
|
+
export declare function mapDiscountIssues(issues: unknown[], message: string): DiscountFieldErrors;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type DiscountTab = 'active' | 'scheduled' | 'expired' | 'inactive';
|
|
2
|
+
export interface DiscountLabels {
|
|
3
|
+
title: string;
|
|
4
|
+
newDiscount: string;
|
|
5
|
+
searchLabel: string;
|
|
6
|
+
searchPlaceholder: string;
|
|
7
|
+
tabs: Record<DiscountTab, string>;
|
|
8
|
+
empty: Record<DiscountTab, string>;
|
|
9
|
+
noMatches: string;
|
|
10
|
+
loadMore: string;
|
|
11
|
+
columns: {
|
|
12
|
+
code: string;
|
|
13
|
+
value: string;
|
|
14
|
+
status: string;
|
|
15
|
+
usage: string;
|
|
16
|
+
};
|
|
17
|
+
usage: string;
|
|
18
|
+
usageUnlimited: string;
|
|
19
|
+
createTitle: string;
|
|
20
|
+
editTitle: string;
|
|
21
|
+
saved: string;
|
|
22
|
+
fields: {
|
|
23
|
+
code: string;
|
|
24
|
+
type: string;
|
|
25
|
+
percentOff: string;
|
|
26
|
+
amountOff: string;
|
|
27
|
+
minSubtotal: string;
|
|
28
|
+
startsAt: string;
|
|
29
|
+
endsAt: string;
|
|
30
|
+
maxRedemptions: string;
|
|
31
|
+
};
|
|
32
|
+
types: {
|
|
33
|
+
percent: string;
|
|
34
|
+
fixed: string;
|
|
35
|
+
};
|
|
36
|
+
optionalHelp: string;
|
|
37
|
+
lockedHelp: string;
|
|
38
|
+
deactivate: string;
|
|
39
|
+
deactivateTitle: string;
|
|
40
|
+
deactivateBody: string;
|
|
41
|
+
reactivate: string;
|
|
42
|
+
validation: {
|
|
43
|
+
code: string;
|
|
44
|
+
percentOff: string;
|
|
45
|
+
amountOff: string;
|
|
46
|
+
minSubtotal: string;
|
|
47
|
+
maxRedemptions: string;
|
|
48
|
+
maxRedemptionsBelowUsage: string;
|
|
49
|
+
endsBeforeStart: string;
|
|
50
|
+
date: string;
|
|
51
|
+
codeTaken: string;
|
|
52
|
+
invalid: string;
|
|
53
|
+
};
|
|
54
|
+
orderRow: string;
|
|
55
|
+
}
|
|
56
|
+
export declare const defaultDiscountLabels: DiscountLabels;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Discount, DiscountStatus } from '@develemit/commerce-contracts';
|
|
2
|
+
type StatusFields = Pick<Discount, 'active' | 'startsAt' | 'endsAt'>;
|
|
3
|
+
export declare function displayDiscountStatus(discount: StatusFields, now?: Date): DiscountStatus;
|
|
4
|
+
export declare function fillTemplate(template: string, values: Record<string, string | number>): string;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AdminLabels } from './admin-labels';
|
|
2
|
+
import { OrderLabels } from './order-labels';
|
|
3
|
+
import { ShippingLabels } from './shipping-labels';
|
|
4
|
+
import { DiscountLabels } from './discount-labels';
|
|
5
|
+
import { ProductLabels } from './product-labels';
|
|
6
|
+
type DeepPartial<T> = {
|
|
7
|
+
[K in keyof T]?: T[K] extends object ? Partial<T[K]> : T[K];
|
|
8
|
+
};
|
|
9
|
+
export type AdminLabelOverrides = Partial<Omit<AdminLabels, 'nav' | 'statuses' | 'errors' | 'products' | 'orders' | 'shipping' | 'discounts'> & {
|
|
10
|
+
nav: Partial<AdminLabels['nav']>;
|
|
11
|
+
statuses: Partial<AdminLabels['statuses']>;
|
|
12
|
+
errors: Partial<AdminLabels['errors']>;
|
|
13
|
+
products: DeepPartial<ProductLabels>;
|
|
14
|
+
orders: DeepPartial<OrderLabels>;
|
|
15
|
+
shipping: Partial<ShippingLabels>;
|
|
16
|
+
discounts: DeepPartial<DiscountLabels>;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function mergeAdminLabels(labels: AdminLabelOverrides | undefined): AdminLabels;
|
|
19
|
+
export {};
|
package/dist/lib/provider.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AdminClient } from '../client';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
3
|
+
import { AdminLabels } from './admin-labels';
|
|
4
|
+
import { AdminLabelOverrides } from './merge-labels';
|
|
5
|
+
export type { AdminErrorKey, AdminLabels } from './admin-labels';
|
|
6
6
|
export interface LinkProps {
|
|
7
7
|
href: string;
|
|
8
8
|
children: ReactNode;
|
|
@@ -15,26 +15,6 @@ export interface AdminImageProps {
|
|
|
15
15
|
className?: string;
|
|
16
16
|
priority?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export type AdminErrorKey = 'unauthorized' | 'notFound' | 'invalidInput' | 'invalidOrderState' | 'insufficientStock' | 'refundExceedsBalance' | 'refundGateway' | 'refundOutcomeUnknown' | 'imageInvalid' | 'imageTooLarge' | 'generic';
|
|
19
|
-
export interface AdminLabels {
|
|
20
|
-
loading: string;
|
|
21
|
-
empty: string;
|
|
22
|
-
save: string;
|
|
23
|
-
cancel: string;
|
|
24
|
-
confirm: string;
|
|
25
|
-
dismiss: string;
|
|
26
|
-
navLabel: string;
|
|
27
|
-
nav: {
|
|
28
|
-
products: string;
|
|
29
|
-
orders: string;
|
|
30
|
-
shippingRates: string;
|
|
31
|
-
};
|
|
32
|
-
statuses: Record<string, string>;
|
|
33
|
-
errors: Record<AdminErrorKey, string>;
|
|
34
|
-
products: ProductLabels;
|
|
35
|
-
orders: OrderLabels;
|
|
36
|
-
shipping: ShippingLabels;
|
|
37
|
-
}
|
|
38
18
|
export interface AdminConfig {
|
|
39
19
|
renderLink: (props: LinkProps) => ReactNode;
|
|
40
20
|
renderImage: (props: AdminImageProps) => ReactNode;
|
|
@@ -47,27 +27,19 @@ export interface AdminConfig {
|
|
|
47
27
|
orders: string;
|
|
48
28
|
order: (id: string) => string;
|
|
49
29
|
shippingRates: string;
|
|
30
|
+
discounts: string;
|
|
31
|
+
discount: (id: string) => string;
|
|
32
|
+
newDiscount: string;
|
|
50
33
|
storefrontProduct?: (slug: string) => string;
|
|
51
34
|
};
|
|
52
35
|
client: AdminClient | null;
|
|
53
36
|
labels: AdminLabels;
|
|
54
37
|
}
|
|
55
|
-
type DeepPartial<T> = {
|
|
56
|
-
[K in keyof T]?: T[K] extends object ? Partial<T[K]> : T[K];
|
|
57
|
-
};
|
|
58
38
|
export interface AdminProviderProps extends Partial<Omit<AdminConfig, 'hrefs' | 'labels'>> {
|
|
59
39
|
hrefs?: Partial<AdminConfig['hrefs']>;
|
|
60
|
-
labels?:
|
|
61
|
-
nav: Partial<AdminLabels['nav']>;
|
|
62
|
-
statuses: Partial<AdminLabels['statuses']>;
|
|
63
|
-
errors: Partial<AdminLabels['errors']>;
|
|
64
|
-
products: DeepPartial<ProductLabels>;
|
|
65
|
-
orders: DeepPartial<OrderLabels>;
|
|
66
|
-
shipping: Partial<ShippingLabels>;
|
|
67
|
-
}>;
|
|
40
|
+
labels?: AdminLabelOverrides;
|
|
68
41
|
children: ReactNode;
|
|
69
42
|
}
|
|
70
43
|
export declare function AdminProvider({ children, hrefs, labels, ...overrides }: AdminProviderProps): import('react').JSX.Element;
|
|
71
44
|
export declare function useAdmin(): AdminConfig;
|
|
72
45
|
export declare function useAdminClient(): AdminClient;
|
|
73
|
-
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AdminDiscountQuery } from '../client/admin-client';
|
|
2
|
+
export declare function useDiscountPages(query: Omit<AdminDiscountQuery, 'cursor'>): {
|
|
3
|
+
items: {
|
|
4
|
+
redeemedCount: number;
|
|
5
|
+
reservedCount: number;
|
|
6
|
+
createdAt: string;
|
|
7
|
+
active: boolean;
|
|
8
|
+
type: "percent" | "fixed";
|
|
9
|
+
id: string;
|
|
10
|
+
code: string;
|
|
11
|
+
minSubtotalCents?: number | null | undefined;
|
|
12
|
+
startsAt?: string | null | undefined;
|
|
13
|
+
endsAt?: string | null | undefined;
|
|
14
|
+
maxRedemptions?: number | null | undefined;
|
|
15
|
+
percentOff?: number | null | undefined;
|
|
16
|
+
amountOffCents?: number | null | undefined;
|
|
17
|
+
currency?: string | null | undefined;
|
|
18
|
+
}[];
|
|
19
|
+
loaded: boolean;
|
|
20
|
+
loading: boolean;
|
|
21
|
+
error: unknown;
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
loadingMore: boolean;
|
|
24
|
+
reload: () => void;
|
|
25
|
+
loadMore: () => void;
|
|
26
|
+
};
|
|
@@ -9,9 +9,11 @@ export declare function useOrderPages(query: Omit<AdminOrderQuery, 'cursor'>): {
|
|
|
9
9
|
itemCount: number;
|
|
10
10
|
createdAt: string;
|
|
11
11
|
}[];
|
|
12
|
+
loaded: boolean;
|
|
12
13
|
loading: boolean;
|
|
13
14
|
error: unknown;
|
|
14
15
|
hasMore: boolean;
|
|
15
16
|
loadingMore: boolean;
|
|
17
|
+
reload: () => void;
|
|
16
18
|
loadMore: () => void;
|
|
17
19
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface CursorPage<Item> {
|
|
2
|
+
items: Item[];
|
|
3
|
+
nextCursor: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function usePagedList<Item, Page extends CursorPage<Item>>(key: readonly unknown[], fetchPage: (cursor?: string) => Promise<Page>): {
|
|
6
|
+
items: Item[];
|
|
7
|
+
loaded: boolean;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
error: unknown;
|
|
10
|
+
hasMore: boolean;
|
|
11
|
+
loadingMore: boolean;
|
|
12
|
+
reload: () => void;
|
|
13
|
+
loadMore: () => void;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
package/dist/styles.css
CHANGED
|
@@ -70,6 +70,14 @@
|
|
|
70
70
|
.sfa-badge--needs-attention {
|
|
71
71
|
border-color: var(--sf-color-danger, #b00020);
|
|
72
72
|
}
|
|
73
|
+
.sfa-badge--refund-pending {
|
|
74
|
+
border-color: var(--sf-color-warning, #b26a00);
|
|
75
|
+
color: var(--sf-color-warning, #b26a00);
|
|
76
|
+
}
|
|
77
|
+
.sfa-badge--refund-succeeded {
|
|
78
|
+
border-color: var(--sf-color-success, #1b7a3d);
|
|
79
|
+
color: var(--sf-color-success, #1b7a3d);
|
|
80
|
+
}
|
|
73
81
|
.sfa-table {
|
|
74
82
|
width: 100%;
|
|
75
83
|
border-collapse: collapse;
|
|
@@ -313,6 +321,11 @@
|
|
|
313
321
|
flex-direction: column;
|
|
314
322
|
gap: calc(var(--sf-space-unit, 0.25rem) * 2);
|
|
315
323
|
}
|
|
324
|
+
.sfa-image-tile__alt {
|
|
325
|
+
display: flex;
|
|
326
|
+
flex-direction: column;
|
|
327
|
+
gap: calc(var(--sf-space-unit, 0.25rem) * 2);
|
|
328
|
+
}
|
|
316
329
|
.sfa-spinner {
|
|
317
330
|
font-size: 0.875rem;
|
|
318
331
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Discount } from '@develemit/commerce-contracts';
|
|
2
|
+
export interface AdminDiscountEditorProps {
|
|
3
|
+
discountId?: string;
|
|
4
|
+
onSaved?: (discount: Discount) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function AdminDiscountEditor({ discountId, onSaved, }: AdminDiscountEditorProps): import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function AdminDiscountList(): import('react').JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DiscountFieldErrors, DiscountForm } from '../../lib/discount-form';
|
|
2
|
+
import { DiscountLabels } from '../../lib/discount-labels';
|
|
3
|
+
export interface DiscountFieldsProps {
|
|
4
|
+
form: DiscountForm;
|
|
5
|
+
errors: DiscountFieldErrors;
|
|
6
|
+
labels: DiscountLabels;
|
|
7
|
+
usedCount: number;
|
|
8
|
+
onChange: <K extends keyof DiscountForm>(field: K, value: DiscountForm[K]) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function DiscountFields({ form, errors, labels, usedCount, onChange, }: DiscountFieldsProps): import('react').JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ImageLabels } from '../../lib/image-labels';
|
|
2
|
+
export interface ImageAltEditorProps {
|
|
3
|
+
imageId: string;
|
|
4
|
+
alt: string;
|
|
5
|
+
name: string;
|
|
6
|
+
labels: ImageLabels;
|
|
7
|
+
onSave: (alt: string) => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare function ImageAltEditor({ imageId, alt, name, labels, onSave, }: ImageAltEditorProps): import('react').JSX.Element;
|
|
@@ -10,5 +10,6 @@ export interface ImageTileProps {
|
|
|
10
10
|
labels: ImageLabels;
|
|
11
11
|
onMove: (direction: MoveDirection) => void;
|
|
12
12
|
onRemove: () => void;
|
|
13
|
+
onSaveAlt: (alt: string) => Promise<void>;
|
|
13
14
|
}
|
|
14
|
-
export declare function ImageTile({ image, index, total, busy, labels, onMove, onRemove, }: ImageTileProps): import('react').JSX.Element;
|
|
15
|
+
export declare function ImageTile({ image, index, total, busy, labels, onMove, onRemove, onSaveAlt, }: ImageTileProps): import('react').JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@develemit/commerce-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@develemit/commerce-contracts": "0.
|
|
42
|
+
"@develemit/commerce-contracts": "0.6.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@testing-library/user-event": "^14.6.8"
|
package/dist/client-n_IYb4iK.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { adminOrderDetailSchema as e, adminOrderPageSchema as t, adminProductPageSchema as n, adminProductSchema as r, shippingRateSchema as i } from "@develemit/commerce-contracts";
|
|
2
|
-
// src/client/errors.ts
|
|
3
|
-
var a = class extends Error {
|
|
4
|
-
status;
|
|
5
|
-
url;
|
|
6
|
-
code;
|
|
7
|
-
idempotencyKey;
|
|
8
|
-
constructor(e, t, n, r) {
|
|
9
|
-
super(r ?? `Admin API request failed (${e}${n ? ` ${n}` : ""}): ${t}`), this.status = e, this.url = t, this.code = n, this.name = "AdminApiError";
|
|
10
|
-
}
|
|
11
|
-
}, o = class extends a {
|
|
12
|
-
constructor(e) {
|
|
13
|
-
super(401, e, "UNAUTHORIZED", `Not authorized: ${e}`), this.name = "AdminUnauthorizedError";
|
|
14
|
-
}
|
|
15
|
-
}, s = class extends a {
|
|
16
|
-
constructor(e, t, n) {
|
|
17
|
-
super(404, e, t, n ?? `Not found: ${e}`), this.name = "AdminNotFoundError";
|
|
18
|
-
}
|
|
19
|
-
}, c = class extends a {
|
|
20
|
-
issues;
|
|
21
|
-
constructor(e, t) {
|
|
22
|
-
super(400, e, "INVALID_INPUT", `Invalid input: ${e}`), this.issues = t, this.name = "AdminInvalidInputError";
|
|
23
|
-
}
|
|
24
|
-
}, l = class extends a {
|
|
25
|
-
orderStatus;
|
|
26
|
-
constructor(e, t, n) {
|
|
27
|
-
super(409, e, "INVALID_ORDER_STATE", n), this.orderStatus = t, this.name = "InvalidOrderStateError";
|
|
28
|
-
}
|
|
29
|
-
}, u = class extends a {
|
|
30
|
-
productIds;
|
|
31
|
-
constructor(e, t, n) {
|
|
32
|
-
super(409, e, "INSUFFICIENT_STOCK", n), this.productIds = t, this.name = "InsufficientStockError";
|
|
33
|
-
}
|
|
34
|
-
}, d = class extends a {
|
|
35
|
-
balanceCents;
|
|
36
|
-
constructor(e, t, n) {
|
|
37
|
-
super(400, e, "REFUND_EXCEEDS_BALANCE", n), this.balanceCents = t, this.name = "RefundExceedsBalanceError";
|
|
38
|
-
}
|
|
39
|
-
}, f = class extends a {
|
|
40
|
-
constructor(e, t) {
|
|
41
|
-
super(502, e, "REFUND_GATEWAY_ERROR", t), this.name = "RefundGatewayError";
|
|
42
|
-
}
|
|
43
|
-
}, p = class extends a {
|
|
44
|
-
constructor(e, t) {
|
|
45
|
-
super(502, e, "REFUND_OUTCOME_UNKNOWN", t), this.name = "RefundOutcomeUnknownError";
|
|
46
|
-
}
|
|
47
|
-
}, m = class extends a {
|
|
48
|
-
constructor(e, t, n) {
|
|
49
|
-
super(400, e, t, n), this.name = "InvalidImageError";
|
|
50
|
-
}
|
|
51
|
-
}, h = class extends a {
|
|
52
|
-
constructor(e) {
|
|
53
|
-
super(413, e, "IMAGE_TOO_LARGE", `Image is too large: ${e}`), this.name = "ImageTooLargeError";
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
// src/client/map-error.ts
|
|
57
|
-
async function g(e) {
|
|
58
|
-
try {
|
|
59
|
-
let t = await e.json();
|
|
60
|
-
return t && typeof t == "object" ? t : {};
|
|
61
|
-
} catch {
|
|
62
|
-
return {};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async function _(e, t) {
|
|
66
|
-
let n = await g(t), { error: r, message: i } = n;
|
|
67
|
-
return t.status === 401 ? new o(e) : t.status === 404 ? new s(e, r, i) : t.status === 413 ? new h(e) : r === "INVALID_INPUT" ? new c(e, n.issues ?? []) : r === "INVALID_ORDER_STATE" ? new l(e, n.status ?? "", i) : r === "INSUFFICIENT_STOCK" ? new u(e, n.productIds ?? [], i) : r === "REFUND_EXCEEDS_BALANCE" ? new d(e, n.balanceCents, i) : r === "REFUND_GATEWAY_ERROR" ? new f(e, i) : r === "REFUND_OUTCOME_UNKNOWN" ? new p(e, i) : r === "INVALID_IMAGE" || r === "INVALID_IMAGE_ORDER" ? new m(e, r, i) : new a(t.status, e, r, i);
|
|
68
|
-
}
|
|
69
|
-
// src/client/transport.ts
|
|
70
|
-
function v({ baseUrl: e, fetch: t = (...e) => globalThis.fetch(...e), headers: n }) {
|
|
71
|
-
let r = e.replace(/\/+$/, "");
|
|
72
|
-
return { async request(e, i, { method: a = "GET", body: o, form: s, headers: c } = {}) {
|
|
73
|
-
let l = `${r}${e}`, u = new Headers(n ? await n() : void 0);
|
|
74
|
-
u.set("accept", "application/json"), o !== void 0 && u.set("content-type", "application/json");
|
|
75
|
-
for (let [e, t] of Object.entries(c ?? {})) u.set(e, t);
|
|
76
|
-
let d = await t(l, {
|
|
77
|
-
method: a,
|
|
78
|
-
headers: u,
|
|
79
|
-
body: s ?? (o === void 0 ? void 0 : JSON.stringify(o))
|
|
80
|
-
});
|
|
81
|
-
if (!d.ok) throw await _(l, d);
|
|
82
|
-
return i.parse(await d.json());
|
|
83
|
-
} };
|
|
84
|
-
}
|
|
85
|
-
// src/client/admin-client.ts
|
|
86
|
-
var y = encodeURIComponent;
|
|
87
|
-
function b(e) {
|
|
88
|
-
let t = new URLSearchParams();
|
|
89
|
-
for (let [n, r] of Object.entries(e)) r !== void 0 && t.set(n, String(r));
|
|
90
|
-
let n = t.toString();
|
|
91
|
-
return n ? `?${n}` : "";
|
|
92
|
-
}
|
|
93
|
-
function x(a) {
|
|
94
|
-
let { request: o } = v(a), s = r, c = i.array();
|
|
95
|
-
return {
|
|
96
|
-
listProducts: (e = {}) => o(`/admin/products${b(e)}`, n),
|
|
97
|
-
getProduct: (e) => o(`/admin/products/${y(e)}`, s),
|
|
98
|
-
createProduct: (e) => o("/admin/products", s, {
|
|
99
|
-
method: "POST",
|
|
100
|
-
body: e
|
|
101
|
-
}),
|
|
102
|
-
updateProduct: (e, t) => o(`/admin/products/${y(e)}`, s, {
|
|
103
|
-
method: "PATCH",
|
|
104
|
-
body: t
|
|
105
|
-
}),
|
|
106
|
-
uploadProductImage(e, t, n) {
|
|
107
|
-
let r = new FormData();
|
|
108
|
-
return n !== void 0 && r.append("alt", n), r.append("file", t), o(`/admin/products/${y(e)}/images`, s, {
|
|
109
|
-
method: "POST",
|
|
110
|
-
form: r
|
|
111
|
-
});
|
|
112
|
-
},
|
|
113
|
-
reorderProductImages: (e, t) => o(`/admin/products/${y(e)}/images/order`, s, {
|
|
114
|
-
method: "PATCH",
|
|
115
|
-
body: { imageIds: t }
|
|
116
|
-
}),
|
|
117
|
-
deleteProductImage: (e, t) => o(`/admin/products/${y(e)}/images/${y(t)}`, s, { method: "DELETE" }),
|
|
118
|
-
listShippingRates: () => o("/admin/shipping-rates", c),
|
|
119
|
-
replaceShippingRates: (e) => o("/admin/shipping-rates", c, {
|
|
120
|
-
method: "PUT",
|
|
121
|
-
body: e
|
|
122
|
-
}),
|
|
123
|
-
listOrders: (e = {}) => o(`/admin/orders${b(e)}`, t),
|
|
124
|
-
getOrder: (t) => o(`/admin/orders/${y(t)}`, e),
|
|
125
|
-
shipOrder: (t, n = {}) => o(`/admin/orders/${y(t)}/ship`, e, {
|
|
126
|
-
method: "POST",
|
|
127
|
-
body: n
|
|
128
|
-
}),
|
|
129
|
-
resolveOrder: (t) => o(`/admin/orders/${y(t)}/resolve`, e, { method: "POST" }),
|
|
130
|
-
async refundOrder(t, n = { restock: !1 }, r = {}) {
|
|
131
|
-
let i = r.idempotencyKey ?? crypto.randomUUID();
|
|
132
|
-
try {
|
|
133
|
-
return await o(`/admin/orders/${y(t)}/refunds`, e, {
|
|
134
|
-
method: "POST",
|
|
135
|
-
body: n,
|
|
136
|
-
headers: { "idempotency-key": i }
|
|
137
|
-
});
|
|
138
|
-
} catch (e) {
|
|
139
|
-
throw e instanceof Error && (e.idempotencyKey = i), e;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
export { o as a, m as c, f as d, p as f, s as i, l, a as n, h as o, c as r, u as s, x as t, d as u };
|
|
145
|
-
|
|
146
|
-
//# sourceMappingURL=client-n_IYb4iK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-n_IYb4iK.js","names":["AdminApiError","message","status","code","url","AdminUnauthorizedError","AdminNotFoundError","AdminInvalidInputError","issues","InvalidOrderStateError","orderStatus","InsufficientStockError","productIds","RefundExceedsBalanceError","balanceCents","RefundGatewayError","RefundOutcomeUnknownError","InvalidImageError","ImageTooLargeError","readBody","body","res","mapError","createTransport","fetchImpl","args","getHeaders","root","baseUrl","path","merged","name","value","headers","form","schema","enc","queryString","params","key","query","qs","createAdminClient","options","product","adminProductSchema","rates","shippingRateSchema","request","adminProductPageSchema","id","input","patch","alt","file","imageId","adminOrderPageSchema","adminOrderDetailSchema","refund","err"],"sources":["../src/client/errors.ts","../src/client/map-error.ts","../src/client/transport.ts","../src/client/admin-client.ts"],"sourcesContent":["export class AdminApiError extends Error {\n idempotencyKey?: string;\n\n constructor(\n readonly status: number,\n readonly url: string,\n readonly code?: string,\n message?: string,\n ) {\n super(\n message ??\n `Admin API request failed (${status}${code ? ` ${code}` : ''}): ${url}`,\n );\n this.name = 'AdminApiError';\n }\n}\n\nexport class AdminUnauthorizedError extends AdminApiError {\n constructor(url: string) {\n super(401, url, 'UNAUTHORIZED', `Not authorized: ${url}`);\n this.name = 'AdminUnauthorizedError';\n }\n}\n\nexport class AdminNotFoundError extends AdminApiError {\n constructor(url: string, code?: string, message?: string) {\n super(404, url, code, message ?? `Not found: ${url}`);\n this.name = 'AdminNotFoundError';\n }\n}\n\nexport class AdminInvalidInputError extends AdminApiError {\n constructor(\n url: string,\n readonly issues: unknown[],\n ) {\n super(400, url, 'INVALID_INPUT', `Invalid input: ${url}`);\n this.name = 'AdminInvalidInputError';\n }\n}\n\nexport class InvalidOrderStateError extends AdminApiError {\n constructor(\n url: string,\n readonly orderStatus: string,\n message?: string,\n ) {\n super(409, url, 'INVALID_ORDER_STATE', message);\n this.name = 'InvalidOrderStateError';\n }\n}\n\nexport class InsufficientStockError extends AdminApiError {\n constructor(\n url: string,\n readonly productIds: string[],\n message?: string,\n ) {\n super(409, url, 'INSUFFICIENT_STOCK', message);\n this.name = 'InsufficientStockError';\n }\n}\n\nexport class RefundExceedsBalanceError extends AdminApiError {\n constructor(\n url: string,\n readonly balanceCents: number | undefined,\n message?: string,\n ) {\n super(400, url, 'REFUND_EXCEEDS_BALANCE', message);\n this.name = 'RefundExceedsBalanceError';\n }\n}\n\nexport class RefundGatewayError extends AdminApiError {\n constructor(url: string, message?: string) {\n super(502, url, 'REFUND_GATEWAY_ERROR', message);\n this.name = 'RefundGatewayError';\n }\n}\n\nexport class RefundOutcomeUnknownError extends AdminApiError {\n constructor(url: string, message?: string) {\n super(502, url, 'REFUND_OUTCOME_UNKNOWN', message);\n this.name = 'RefundOutcomeUnknownError';\n }\n}\n\nexport class InvalidImageError extends AdminApiError {\n constructor(url: string, code: string, message?: string) {\n super(400, url, code, message);\n this.name = 'InvalidImageError';\n }\n}\n\nexport class ImageTooLargeError extends AdminApiError {\n constructor(url: string) {\n super(413, url, 'IMAGE_TOO_LARGE', `Image is too large: ${url}`);\n this.name = 'ImageTooLargeError';\n }\n}\n","import {\n AdminApiError,\n AdminInvalidInputError,\n AdminNotFoundError,\n AdminUnauthorizedError,\n ImageTooLargeError,\n InsufficientStockError,\n InvalidImageError,\n InvalidOrderStateError,\n RefundExceedsBalanceError,\n RefundGatewayError,\n RefundOutcomeUnknownError,\n} from './errors';\n\ninterface ErrorBody {\n error?: string;\n message?: string;\n issues?: unknown[];\n status?: string;\n productIds?: string[];\n balanceCents?: number;\n}\n\nasync function readBody(res: Response): Promise<ErrorBody> {\n try {\n const body: unknown = await res.json();\n return body && typeof body === 'object' ? (body as ErrorBody) : {};\n } catch {\n return {};\n }\n}\n\nexport async function mapError(\n url: string,\n res: Response,\n): Promise<AdminApiError> {\n const body = await readBody(res);\n const { error: code, message } = body;\n if (res.status === 401) return new AdminUnauthorizedError(url);\n if (res.status === 404) return new AdminNotFoundError(url, code, message);\n if (res.status === 413) return new ImageTooLargeError(url);\n if (code === 'INVALID_INPUT') {\n return new AdminInvalidInputError(url, body.issues ?? []);\n }\n if (code === 'INVALID_ORDER_STATE') {\n return new InvalidOrderStateError(url, body.status ?? '', message);\n }\n if (code === 'INSUFFICIENT_STOCK') {\n return new InsufficientStockError(url, body.productIds ?? [], message);\n }\n if (code === 'REFUND_EXCEEDS_BALANCE') {\n return new RefundExceedsBalanceError(url, body.balanceCents, message);\n }\n if (code === 'REFUND_GATEWAY_ERROR')\n return new RefundGatewayError(url, message);\n if (code === 'REFUND_OUTCOME_UNKNOWN') {\n return new RefundOutcomeUnknownError(url, message);\n }\n if (code === 'INVALID_IMAGE' || code === 'INVALID_IMAGE_ORDER') {\n return new InvalidImageError(url, code, message);\n }\n return new AdminApiError(res.status, url, code, message);\n}\n","import { mapError } from './map-error';\n\nexport interface AdminClientOptions {\n baseUrl: string;\n fetch?: typeof fetch;\n headers?: () => HeadersInit | Promise<HeadersInit>;\n}\n\ntype Schema<T> = { parse(data: unknown): T };\n\nexport interface RequestOptions {\n method?: string;\n body?: unknown;\n form?: FormData;\n headers?: Record<string, string>;\n}\n\nexport interface Transport {\n request<T>(\n path: string,\n schema: Schema<T>,\n options?: RequestOptions,\n ): Promise<T>;\n}\n\nexport function createTransport({\n baseUrl,\n fetch: fetchImpl = (...args) => globalThis.fetch(...args),\n headers: getHeaders,\n}: AdminClientOptions): Transport {\n const root = baseUrl.replace(/\\/+$/, '');\n\n return {\n async request(path, schema, { method = 'GET', body, form, headers } = {}) {\n const url = `${root}${path}`;\n const merged = new Headers(getHeaders ? await getHeaders() : undefined);\n merged.set('accept', 'application/json');\n if (body !== undefined) merged.set('content-type', 'application/json');\n for (const [name, value] of Object.entries(headers ?? {})) {\n merged.set(name, value);\n }\n const res = await fetchImpl(url, {\n method,\n headers: merged,\n body: form ?? (body === undefined ? undefined : JSON.stringify(body)),\n });\n if (!res.ok) throw await mapError(url, res);\n return schema.parse(await res.json());\n },\n };\n}\n","import {\n adminOrderDetailSchema,\n adminOrderPageSchema,\n adminProductPageSchema,\n adminProductSchema,\n shippingRateSchema,\n type AdminOrderDetail,\n type AdminOrderListQuery,\n type AdminOrderPage,\n type AdminProduct,\n type AdminProductListQuery,\n type AdminProductPage,\n type AdminProductInput,\n type AdminProductPatch,\n type RefundOrderInput,\n type ShippingRate,\n type ShippingRateInput,\n type ShipOrderInput,\n} from '@develemit/commerce-contracts';\nimport { createTransport, type AdminClientOptions } from './transport';\n\nexport type AdminOrderQuery = Partial<\n Pick<AdminOrderListQuery, 'status' | 'q' | 'hasPendingRefund' | 'cursor'>\n> & { limit?: number };\n\nexport type AdminProductQuery = Pick<\n AdminProductListQuery,\n 'status' | 'stock' | 'q' | 'cursor' | 'limit'\n>;\n\nexport interface RefundOptions {\n idempotencyKey?: string;\n}\n\nexport interface AdminClient {\n listProducts(query?: AdminProductQuery): Promise<AdminProductPage>;\n getProduct(id: string): Promise<AdminProduct>;\n createProduct(input: AdminProductInput): Promise<AdminProduct>;\n updateProduct(id: string, patch: AdminProductPatch): Promise<AdminProduct>;\n uploadProductImage(\n id: string,\n file: Blob,\n alt?: string,\n ): Promise<AdminProduct>;\n reorderProductImages(id: string, imageIds: string[]): Promise<AdminProduct>;\n deleteProductImage(id: string, imageId: string): Promise<AdminProduct>;\n listShippingRates(): Promise<ShippingRate[]>;\n replaceShippingRates(rates: ShippingRateInput[]): Promise<ShippingRate[]>;\n listOrders(query?: AdminOrderQuery): Promise<AdminOrderPage>;\n getOrder(id: string): Promise<AdminOrderDetail>;\n shipOrder(id: string, input?: ShipOrderInput): Promise<AdminOrderDetail>;\n resolveOrder(id: string): Promise<AdminOrderDetail>;\n /**\n * Retrying the same intent must reuse the same key. When none is passed one\n * is generated, and it is set on any thrown error as `idempotencyKey` so the\n * caller can pass it back on retry.\n */\n refundOrder(\n id: string,\n input?: RefundOrderInput,\n options?: RefundOptions,\n ): Promise<AdminOrderDetail>;\n}\n\nconst enc = encodeURIComponent;\n\nfunction queryString(query: object): string {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) params.set(key, String(value));\n }\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n}\n\nexport function createAdminClient(options: AdminClientOptions): AdminClient {\n const { request } = createTransport(options);\n const product = adminProductSchema;\n const rates = shippingRateSchema.array();\n\n return {\n listProducts: (query = {}) =>\n request(`/admin/products${queryString(query)}`, adminProductPageSchema),\n getProduct: (id) => request(`/admin/products/${enc(id)}`, product),\n createProduct: (input) =>\n request('/admin/products', product, { method: 'POST', body: input }),\n updateProduct: (id, patch) =>\n request(`/admin/products/${enc(id)}`, product, {\n method: 'PATCH',\n body: patch,\n }),\n uploadProductImage(id, file, alt) {\n const form = new FormData();\n if (alt !== undefined) form.append('alt', alt);\n form.append('file', file);\n return request(`/admin/products/${enc(id)}/images`, product, {\n method: 'POST',\n form,\n });\n },\n reorderProductImages: (id, imageIds) =>\n request(`/admin/products/${enc(id)}/images/order`, product, {\n method: 'PATCH',\n body: { imageIds },\n }),\n deleteProductImage: (id, imageId) =>\n request(`/admin/products/${enc(id)}/images/${enc(imageId)}`, product, {\n method: 'DELETE',\n }),\n listShippingRates: () => request('/admin/shipping-rates', rates),\n replaceShippingRates: (input) =>\n request('/admin/shipping-rates', rates, { method: 'PUT', body: input }),\n listOrders: (query = {}) =>\n request(`/admin/orders${queryString(query)}`, adminOrderPageSchema),\n getOrder: (id) =>\n request(`/admin/orders/${enc(id)}`, adminOrderDetailSchema),\n shipOrder: (id, input = {}) =>\n request(`/admin/orders/${enc(id)}/ship`, adminOrderDetailSchema, {\n method: 'POST',\n body: input,\n }),\n resolveOrder: (id) =>\n request(`/admin/orders/${enc(id)}/resolve`, adminOrderDetailSchema, {\n method: 'POST',\n }),\n async refundOrder(id, input = { restock: false }, refund = {}) {\n const key = refund.idempotencyKey ?? crypto.randomUUID();\n try {\n return await request(\n `/admin/orders/${enc(id)}/refunds`,\n adminOrderDetailSchema,\n {\n method: 'POST',\n body: input,\n headers: { 'idempotency-key': key },\n },\n );\n } catch (err) {\n if (err instanceof Error) {\n (err as Error & { idempotencyKey?: string }).idempotencyKey = key;\n }\n throw err;\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { AdminOrderDetail, AdminOrderListItem } from '@develemit/commerce-contracts';
|
|
2
|
-
export declare function orderItem(overrides?: Partial<AdminOrderListItem>): AdminOrderListItem;
|
|
3
|
-
export declare function orderDetail(overrides?: Partial<AdminOrderDetail>): AdminOrderDetail;
|