@sixtyninecommerce/admin 0.10.0 → 0.12.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 +5772 -118
- package/dist/auth/index.d.ts +7 -1
- package/dist/auth/index.js +8 -1
- package/dist/catalog/assets.d.ts +120 -8
- package/dist/catalog/assets.js +98 -12
- package/dist/catalog/collections.d.ts +279 -14
- package/dist/catalog/collections.js +246 -15
- package/dist/catalog/documents.d.ts +142 -0
- package/dist/catalog/documents.js +114 -0
- package/dist/catalog/index.d.ts +54 -6
- package/dist/catalog/index.js +10 -1
- package/dist/catalog/metadata.d.ts +244 -0
- package/dist/catalog/metadata.js +220 -0
- package/dist/catalog/products.d.ts +159 -19
- package/dist/catalog/products.js +88 -13
- package/dist/catalog/properties.d.ts +140 -14
- package/dist/catalog/properties.js +65 -1
- package/dist/catalog/recommendations.d.ts +288 -0
- package/dist/catalog/recommendations.js +237 -0
- package/dist/catalog/reviews.d.ts +381 -0
- package/dist/catalog/reviews.js +325 -0
- package/dist/catalog/types.d.ts +17 -1
- package/dist/catalog/types.js +10 -0
- package/dist/catalog/variant-find.d.ts +136 -0
- package/dist/catalog/variant-find.js +239 -0
- package/dist/catalog/variants.d.ts +293 -26
- package/dist/catalog/variants.js +164 -7
- package/dist/catalog/visibility.d.ts +38 -7
- package/dist/catalog/visibility.js +19 -1
- package/dist/client.d.ts +121 -9
- package/dist/client.js +53 -14
- package/dist/content/assets.d.ts +285 -0
- package/dist/content/assets.js +181 -0
- package/dist/content/forms.d.ts +332 -1
- package/dist/content/forms.js +140 -4
- package/dist/content/items.d.ts +292 -0
- package/dist/content/items.js +170 -0
- package/dist/content/menus.d.ts +254 -0
- package/dist/content/menus.js +70 -0
- package/dist/content/strings.d.ts +137 -0
- package/dist/content/strings.js +82 -0
- package/dist/content/types.d.ts +282 -0
- package/dist/content/types.js +100 -0
- package/dist/customers/age-verification.d.ts +66 -0
- package/dist/customers/age-verification.js +79 -0
- package/dist/customers/credit.d.ts +263 -0
- package/dist/customers/credit.js +244 -0
- package/dist/customers/delivery-preferences.d.ts +120 -0
- package/dist/customers/delivery-preferences.js +97 -0
- package/dist/customers/delivery-terms.d.ts +44 -0
- package/dist/customers/delivery-terms.js +32 -0
- package/dist/customers/groups.d.ts +207 -0
- package/dist/customers/groups.js +438 -0
- package/dist/customers/index.d.ts +462 -37
- package/dist/customers/index.js +317 -40
- package/dist/customers/invitation-status.d.ts +57 -0
- package/dist/customers/invitation-status.js +21 -0
- package/dist/customers/notes.d.ts +67 -0
- package/dist/customers/notes.js +51 -0
- package/dist/customers/notification-recipients.d.ts +97 -0
- package/dist/customers/notification-recipients.js +84 -0
- package/dist/customers/saved-lists.d.ts +42 -0
- package/dist/customers/saved-lists.js +61 -0
- package/dist/customers/vat.d.ts +83 -0
- package/dist/customers/vat.js +46 -0
- package/dist/customers/wire.d.ts +20 -0
- package/dist/customers/wire.js +35 -0
- package/dist/documents/ar.d.ts +307 -0
- package/dist/documents/ar.js +254 -0
- package/dist/documents/emails.d.ts +150 -0
- package/dist/documents/emails.js +220 -0
- package/dist/documents/index.d.ts +744 -21
- package/dist/documents/index.js +438 -24
- package/dist/documents/pdf.d.ts +2 -0
- package/dist/documents/pdf.js +11 -0
- package/dist/fulfillments/create.d.ts +167 -0
- package/dist/fulfillments/create.js +216 -0
- package/dist/fulfillments/index.d.ts +163 -11
- package/dist/fulfillments/index.js +135 -6
- package/dist/fulfillments/payment-policy.d.ts +64 -0
- package/dist/fulfillments/payment-policy.js +140 -0
- package/dist/fulfillments/warehouse.d.ts +724 -0
- package/dist/fulfillments/warehouse.js +914 -0
- package/dist/geo/index.d.ts +119 -0
- package/dist/geo/index.js +107 -0
- package/dist/index.d.ts +147 -39
- package/dist/index.js +51 -12
- package/dist/integrations/afas-actions.d.ts +234 -0
- package/dist/integrations/afas-actions.js +310 -0
- package/dist/integrations/afas-types.d.ts +483 -0
- package/dist/integrations/afas-types.js +5 -0
- package/dist/integrations/afas.d.ts +234 -0
- package/dist/integrations/afas.js +290 -0
- package/dist/integrations/connections.d.ts +103 -0
- package/dist/integrations/connections.js +55 -0
- package/dist/integrations/esp.d.ts +313 -0
- package/dist/integrations/esp.js +169 -0
- package/dist/integrations/exact-online-types.d.ts +965 -0
- package/dist/integrations/exact-online-types.js +6 -0
- package/dist/integrations/exact-online.d.ts +784 -0
- package/dist/integrations/exact-online.js +1089 -0
- package/dist/integrations/index.d.ts +44 -3
- package/dist/integrations/index.js +23 -3
- package/dist/integrations/pipeline-discoveries.d.ts +65 -0
- package/dist/integrations/pipeline-discoveries.js +65 -0
- package/dist/integrations/pipeline-keys.d.ts +13 -0
- package/dist/integrations/pipeline-keys.js +22 -0
- package/dist/integrations/pipeline-runs.d.ts +119 -0
- package/dist/integrations/pipeline-runs.js +87 -0
- package/dist/integrations/pipelines.d.ts +87 -15
- package/dist/integrations/pipelines.js +41 -22
- package/dist/integrations/price-import.d.ts +223 -0
- package/dist/integrations/price-import.js +124 -0
- package/dist/integrations/types.d.ts +367 -3
- package/dist/integrations/types.js +4 -3
- package/dist/locations/index.d.ts +66 -0
- package/dist/locations/index.js +31 -0
- package/dist/meta/index.d.ts +172 -0
- package/dist/metafields/index.d.ts +8 -1
- package/dist/metafields/index.js +10 -0
- package/dist/orders/cancel-with-money.d.ts +237 -0
- package/dist/orders/cancel-with-money.js +155 -0
- package/dist/orders/commit-edit.d.ts +23 -1
- package/dist/orders/commit-edit.js +19 -2
- package/dist/orders/deposit-policy.d.ts +3 -1
- package/dist/orders/drafts.d.ts +800 -0
- package/dist/orders/drafts.js +771 -0
- package/dist/orders/fields.d.ts +245 -0
- package/dist/orders/fields.js +188 -0
- package/dist/orders/get.d.ts +29 -19
- package/dist/orders/get.js +17 -8
- package/dist/orders/index.d.ts +66 -15
- package/dist/orders/index.js +25 -2
- package/dist/orders/lifecycle.d.ts +128 -0
- package/dist/orders/lifecycle.js +158 -0
- package/dist/orders/line-price-preview.d.ts +7 -2
- package/dist/orders/list.d.ts +243 -0
- package/dist/orders/list.js +487 -0
- package/dist/orders/manual-discounts.d.ts +13 -5
- package/dist/orders/manual-pricing.d.ts +5 -0
- package/dist/orders/money-view.d.ts +149 -0
- package/dist/orders/money-view.js +99 -0
- package/dist/orders/order-entry.d.ts +20 -7
- package/dist/orders/plan-edit.d.ts +34 -2
- package/dist/orders/plan-edit.js +112 -11
- package/dist/orders/settings.d.ts +201 -0
- package/dist/orders/settings.js +325 -0
- package/dist/orders/status.d.ts +159 -13
- package/dist/orders/status.js +21 -0
- package/dist/orders/surcharges.d.ts +20 -1
- package/dist/orders/surcharges.js +37 -11
- package/dist/payments/account-credit.d.ts +46 -0
- package/dist/payments/account-credit.js +42 -0
- package/dist/payments/ar.d.ts +292 -0
- package/dist/payments/ar.js +223 -0
- package/dist/payments/connected-account.d.ts +47 -0
- package/dist/payments/connected-account.js +61 -0
- package/dist/payments/credit-noted-fields.d.ts +19 -0
- package/dist/payments/credit-noted-fields.js +69 -0
- package/dist/payments/customer-consent.d.ts +30 -0
- package/dist/payments/customer-consent.js +49 -0
- package/dist/payments/index.d.ts +340 -19
- package/dist/payments/index.js +151 -1
- package/dist/payments/methods.d.ts +303 -8
- package/dist/payments/methods.js +337 -7
- package/dist/payments/mollie-methods.d.ts +159 -0
- package/dist/payments/mollie-methods.js +141 -0
- package/dist/payments/payment-links.d.ts +180 -0
- package/dist/payments/payment-links.js +97 -0
- package/dist/payments/provider-keys.d.ts +150 -0
- package/dist/payments/provider-keys.js +118 -0
- package/dist/payments/providers.d.ts +86 -11
- package/dist/payments/providers.js +29 -0
- package/dist/payments/requests.d.ts +147 -0
- package/dist/payments/requests.js +93 -0
- package/dist/payments/store-credit-fields.d.ts +15 -0
- package/dist/payments/store-credit-fields.js +51 -0
- package/dist/pickups/index.d.ts +106 -0
- package/dist/pickups/index.js +108 -0
- package/dist/platform/channels.d.ts +132 -0
- package/dist/platform/channels.js +128 -0
- package/dist/platform/email-gateways.d.ts +165 -0
- package/dist/platform/email-gateways.js +78 -0
- package/dist/platform/geo.d.ts +123 -0
- package/dist/platform/geo.js +144 -0
- package/dist/platform/tax.d.ts +162 -0
- package/dist/platform/tax.js +169 -0
- package/dist/pos/anomalies.d.ts +158 -0
- package/dist/pos/anomalies.js +64 -0
- package/dist/pos/assisted-selling.d.ts +79 -0
- package/dist/pos/assisted-selling.js +38 -0
- package/dist/pos/exchanges.d.ts +108 -0
- package/dist/pos/exchanges.js +22 -0
- package/dist/pos/gift-cards.d.ts +135 -0
- package/dist/pos/gift-cards.js +47 -0
- package/dist/pos/index.d.ts +2370 -58
- package/dist/pos/index.js +854 -7
- package/dist/pos/no-receipt.d.ts +94 -0
- package/dist/pos/no-receipt.js +25 -0
- package/dist/pos/offline-sales.d.ts +228 -0
- package/dist/pos/offline-sales.js +170 -0
- package/dist/pos/pay-by-link.d.ts +143 -0
- package/dist/pos/pay-by-link.js +57 -0
- package/dist/pos/quick-keys.d.ts +103 -0
- package/dist/pos/quick-keys.js +45 -0
- package/dist/pos/reports.d.ts +360 -0
- package/dist/pos/reports.js +62 -0
- package/dist/pos/returns.d.ts +244 -0
- package/dist/pos/returns.js +83 -0
- package/dist/pricing/bulk-coupons.d.ts +139 -0
- package/dist/pricing/bulk-coupons.js +112 -0
- package/dist/pricing/index.d.ts +174 -4
- package/dist/pricing/index.js +174 -1
- package/dist/pricing/price-lists.d.ts +606 -0
- package/dist/pricing/price-lists.js +600 -0
- package/dist/purchasing/alerts.d.ts +104 -0
- package/dist/purchasing/alerts.js +88 -0
- package/dist/purchasing/backorders.d.ts +61 -0
- package/dist/purchasing/backorders.js +92 -0
- package/dist/purchasing/cost.d.ts +110 -0
- package/dist/purchasing/cost.js +86 -0
- package/dist/purchasing/index.d.ts +54 -0
- package/dist/purchasing/index.js +24 -0
- package/dist/purchasing/links.d.ts +263 -0
- package/dist/purchasing/links.js +192 -0
- package/dist/purchasing/purchase-orders.d.ts +551 -0
- package/dist/purchasing/purchase-orders.js +491 -0
- package/dist/purchasing/receipts.d.ts +396 -0
- package/dist/purchasing/receipts.js +287 -0
- package/dist/purchasing/replenishment.d.ts +281 -0
- package/dist/purchasing/replenishment.js +240 -0
- package/dist/purchasing/returns.d.ts +273 -0
- package/dist/purchasing/returns.js +229 -0
- package/dist/purchasing/settings.d.ts +152 -0
- package/dist/purchasing/settings.js +181 -0
- package/dist/purchasing/suppliers.d.ts +476 -0
- package/dist/purchasing/suppliers.js +438 -0
- package/dist/quotes/index.d.ts +518 -0
- package/dist/quotes/index.js +439 -0
- package/dist/reports/index.d.ts +71 -8
- package/dist/reports/index.js +74 -11
- package/dist/returns/index.d.ts +675 -21
- package/dist/returns/index.js +756 -11
- package/dist/search/index.d.ts +76 -1
- package/dist/search/index.js +63 -0
- package/dist/seo/config.d.ts +128 -0
- package/dist/seo/config.js +95 -0
- package/dist/seo/redirects.d.ts +125 -0
- package/dist/seo/redirects.js +60 -1
- package/dist/seo/settings.d.ts +147 -0
- package/dist/seo/settings.js +209 -0
- package/dist/shipping/definitions.d.ts +29 -0
- package/dist/shipping/definitions.js +47 -0
- package/dist/shipping/fulfillment-profiles.d.ts +174 -0
- package/dist/shipping/fulfillment-profiles.js +104 -0
- package/dist/shipping/hendriks.d.ts +97 -0
- package/dist/shipping/hendriks.js +50 -0
- package/dist/shipping/index.d.ts +54 -0
- package/dist/shipping/index.js +27 -0
- package/dist/shipping/methods.d.ts +205 -0
- package/dist/shipping/methods.js +240 -0
- package/dist/shipping/myparcel.d.ts +668 -0
- package/dist/shipping/myparcel.js +466 -0
- package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
- package/dist/shipping/parcel-rule.d.ts +6 -5
- package/dist/shipping/parcel-rule.js +21 -23
- package/dist/shipping/rate-tables.d.ts +324 -0
- package/dist/shipping/rate-tables.js +390 -0
- package/dist/shipping/ship-to-countries.d.ts +75 -0
- package/dist/shipping/ship-to-countries.js +47 -0
- package/dist/stock/by-location.d.ts +86 -0
- package/dist/stock/by-location.js +94 -0
- package/dist/stock/index.d.ts +18 -4
- package/dist/stock/index.js +7 -0
- package/dist/stock/locations.d.ts +144 -0
- package/dist/stock/locations.js +168 -0
- package/dist/stock/settings.d.ts +106 -0
- package/dist/stock/settings.js +103 -0
- package/dist/stock/transfers.d.ts +386 -52
- package/dist/stock/transfers.js +222 -17
- package/dist/stored-value/index.d.ts +312 -11
- package/dist/stored-value/index.js +223 -4
- package/dist/subscriptions/index.d.ts +682 -0
- package/dist/subscriptions/index.js +815 -0
- package/dist/tax/display-policy.d.ts +105 -0
- package/dist/tax/display-policy.js +84 -0
- package/dist/tax/index.d.ts +79 -1
- package/dist/tax/index.js +52 -0
- package/dist/tenant/email-style.d.ts +102 -0
- package/dist/tenant/email-style.js +72 -0
- package/dist/tenant/email-templates.d.ts +287 -0
- package/dist/tenant/email-templates.js +271 -0
- package/dist/tenant/notifications.d.ts +23 -17
- package/dist/tenant/settings-sources.d.ts +1 -1
- package/dist/tenant/time-zone.d.ts +17 -0
- package/dist/tenant/time-zone.js +11 -0
- package/dist/types.d.ts +50 -3
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.js +2 -0
- package/dist/users/warehouses.d.ts +50 -0
- package/dist/users/warehouses.js +51 -0
- package/package.json +2 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const STORE_TIME_ZONE_QUERY = /* GraphQL */ `
|
|
2
|
+
query StoreTimeZone {
|
|
3
|
+
storeTimeZone
|
|
4
|
+
}
|
|
5
|
+
`;
|
|
6
|
+
export function createTenantTimeZoneReader(transport) {
|
|
7
|
+
return async (call) => {
|
|
8
|
+
const data = await transport.graphql({ api: 'admin', query: STORE_TIME_ZONE_QUERY }, call);
|
|
9
|
+
return data.storeTimeZone;
|
|
10
|
+
};
|
|
11
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,15 +5,22 @@ export interface Call {
|
|
|
5
5
|
* Sent as `Idempotency-Key` on a REST write. On a GraphQL one it is sent as
|
|
6
6
|
* an ARGUMENT — the Admin API has no header for it — and only the mutations
|
|
7
7
|
* that declare one act on it. Today those are the money mutations
|
|
8
|
-
* `payments.record`, `orders.park`, `orders.settle` and all three
|
|
8
|
+
* `payments.record`, `orders.park`, `orders.settle`, `orders.cancelWithMoney` and all three
|
|
9
9
|
* `orders.surcharges.*`, plus `payments.providers.completeOnboarding`,
|
|
10
10
|
* `payments.providers.terminals.provision`, `stock.adjust`,
|
|
11
11
|
* `hooks.assignments.assign`, `customers.upsertByExternalRef`,
|
|
12
12
|
* `customers.groups.replaceMembers`, `pricing.coupons.apply` / `remove`,
|
|
13
|
-
* `orders.setLinePrices` / `setOneTimeDiscounts`,
|
|
13
|
+
* `orders.setLinePrices` / `setOneTimeDiscounts`, `orders.correctFulfillmentQuantities`,
|
|
14
14
|
* `pos.sale.applyCouponCode` / `removeCouponCode`, `storedValue.issue` / `adjust` /
|
|
15
15
|
* `redeem`, `apps.releaseFieldGroup`, `catalog.products.bulk` and `orders.bulk` (both mint
|
|
16
|
-
* one when omitted),
|
|
16
|
+
* one when omitted), `catalog.products.save`, `orders.drafts.saveAddresses`,
|
|
17
|
+
* `orders.drafts.place` and `orders.drafts.cloneFrom` (both mint one when omitted),
|
|
18
|
+
* `fulfillments.create` and `fulfillments.warehouse.append` (both mint one when omitted),
|
|
19
|
+
* `quotes.convertToOrder` (mints one when omitted), `documents.issuePartialCreditNote` (mints
|
|
20
|
+
* one when omitted), and the
|
|
21
|
+
* accounts-receivable money doors `payments.ar.recordPayment` / `recordPrepaidDrawdown` /
|
|
22
|
+
* `directDebit.collectNow` and `documents.ar.issueCreditNote` / `generateInvoice` /
|
|
23
|
+
* `generateStatement`, and `returns.settle`. Repeating one under the same key
|
|
17
24
|
* returns the first call's result instead of moving the money again; a
|
|
18
25
|
* DIFFERENT request under the same key is refused with a `ConflictError`
|
|
19
26
|
* (409) coded `IDEMPOTENCY_CONFLICT`, and a repeat that arrives while the
|
|
@@ -54,6 +61,46 @@ export interface ListOptions extends Call {
|
|
|
54
61
|
after?: string;
|
|
55
62
|
limit?: number;
|
|
56
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* One argument a configurable operation takes, as the engine publishes its definition: a
|
|
66
|
+
* payment handler's `apiKey`, an eligibility checker's `customerGroupIds`.
|
|
67
|
+
*/
|
|
68
|
+
export interface ConfigArgDefinition {
|
|
69
|
+
name: string;
|
|
70
|
+
/** The value's type as the engine names it: `string`, `int`, `float`, `boolean`, `datetime`, `ID`. */
|
|
71
|
+
type: string;
|
|
72
|
+
/** A list is sent as one JSON-encoded string, like every argument value. */
|
|
73
|
+
list: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* NOT the enforced rule, in either direction. The engine publishes `true` for every argument
|
|
76
|
+
* whose declaration merely omits the flag, including ones nothing enforces, and can publish
|
|
77
|
+
* `false` for one a write then refuses. Never gate a form or a request on it: send what you
|
|
78
|
+
* have and read the engine's refusal.
|
|
79
|
+
*/
|
|
80
|
+
required: boolean;
|
|
81
|
+
/** The declared default as JSON, or `null` when the argument has none. */
|
|
82
|
+
defaultValue: unknown;
|
|
83
|
+
/** In the language of the request; `null` when the declaration gives none. */
|
|
84
|
+
label: string | null;
|
|
85
|
+
/** In the language of the request; `null` when the declaration gives none. */
|
|
86
|
+
description: string | null;
|
|
87
|
+
/**
|
|
88
|
+
* How a form should render the argument, as declared: `{ component: 'password-form-input' }`
|
|
89
|
+
* marks a credential, `options` a fixed choice. `null` when nothing is declared.
|
|
90
|
+
*/
|
|
91
|
+
ui: Record<string, unknown> | null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A configurable operation the engine has registered (a payment handler, an eligibility
|
|
95
|
+
* checker, a shipping calculator, a promotion action): the `code` a stored operation names, and
|
|
96
|
+
* the arguments it takes.
|
|
97
|
+
*/
|
|
98
|
+
export interface ConfigurableOperationDefinition {
|
|
99
|
+
code: string;
|
|
100
|
+
/** What the operation does, in the language of the request. */
|
|
101
|
+
description: string;
|
|
102
|
+
args: ConfigArgDefinition[];
|
|
103
|
+
}
|
|
57
104
|
/** One channel the signed-in principal holds a role on. */
|
|
58
105
|
export interface MeChannel {
|
|
59
106
|
id: string;
|
package/dist/users/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
2
|
import type { Call } from '../types.js';
|
|
3
|
+
import { type UserWarehousesModule } from './warehouses.js';
|
|
3
4
|
/**
|
|
4
5
|
* What `users.ensure` did. A newer engine may name an outcome this SDK does not know yet; it is
|
|
5
6
|
* passed through, lower-cased, rather than dropped.
|
|
@@ -98,6 +99,8 @@ export interface UsersModule {
|
|
|
98
99
|
* Someone outside the active store answers `ENTITY_NOT_FOUND`.
|
|
99
100
|
*/
|
|
100
101
|
update(input: UpdateUserInput, call?: Call): Promise<StaffUser>;
|
|
102
|
+
/** Which of the store's warehouses a staff member works in. See {@link UserWarehousesModule}. */
|
|
103
|
+
warehouses: UserWarehousesModule;
|
|
101
104
|
}
|
|
102
105
|
export declare const ENSURE_ADMINISTRATOR_MUTATION = "\n mutation EnsureAdministrator($input: EnsureAdministratorInput!) {\n ensureAdministrator(input: $input) {\n outcome\n invitationSent\n administrator { \n id\n firstName\n lastName\n emailAddress\n user {\n roles {\n id\n code\n }\n }\n }\n }\n }\n";
|
|
103
106
|
export declare const UPDATE_ADMINISTRATOR_MUTATION = "\n mutation UpdateStaffUser($input: UpdateAdministratorInput!) {\n updateAdministrator(input: $input) { \n id\n firstName\n lastName\n emailAddress\n user {\n roles {\n id\n code\n }\n }\n }\n }\n";
|
package/dist/users/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createUserWarehousesModule } from './warehouses.js';
|
|
1
2
|
const STAFF_USER_FIELDS = /* GraphQL */ `
|
|
2
3
|
id
|
|
3
4
|
firstName
|
|
@@ -76,5 +77,6 @@ export function createUsersModule(transport) {
|
|
|
76
77
|
}, call);
|
|
77
78
|
return staffUserOf(data.updateAdministrator);
|
|
78
79
|
},
|
|
80
|
+
warehouses: createUserWarehousesModule(transport),
|
|
79
81
|
};
|
|
80
82
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import type { Call } from '../types.js';
|
|
3
|
+
/** A warehouse (stock location) a staff member is assigned to, by name. */
|
|
4
|
+
export interface AssignedWarehouse {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* `admin.users.warehouses`: which of the store's warehouses a staff member works in (spec §12.3,
|
|
10
|
+
* Settings → Team → a user → Warehouses). A user on the Warehouse role sees and ships only from
|
|
11
|
+
* the warehouses assigned here, and from none without any; a user who manages orders sees every
|
|
12
|
+
* warehouse whatever is assigned.
|
|
13
|
+
*
|
|
14
|
+
* Needs the store's `warehouse` entitlement: without it every method is refused
|
|
15
|
+
* `WAREHOUSE_NOT_ENABLED` (`BusinessRuleError`). Needs `ManageWarehouseAssignments` or
|
|
16
|
+
* `UpdateAdministrator` (either one, so no `@permission` tag: the tag can only say "all of
|
|
17
|
+
* these").
|
|
18
|
+
*
|
|
19
|
+
* Per store: the assignments of the store the client is on, never another store's. A staff member
|
|
20
|
+
* who holds no role in this store, a deleted one and a malformed id are refused alike, as a
|
|
21
|
+
* `ValidationError` naming the user.
|
|
22
|
+
*
|
|
23
|
+
* A credential restricted with `locationIds` (an API token or app) manages only those
|
|
24
|
+
* locations: `get` lists only the assigned warehouses among them, and `set` keeps the person's
|
|
25
|
+
* assignments at the store's other warehouses as they are.
|
|
26
|
+
*/
|
|
27
|
+
export interface UserWarehousesModule {
|
|
28
|
+
/**
|
|
29
|
+
* The warehouses the staff member is assigned to in this store, by name.
|
|
30
|
+
*
|
|
31
|
+
* @effect read
|
|
32
|
+
*/
|
|
33
|
+
get(administratorId: string, options?: Call): Promise<AssignedWarehouse[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Assign exactly these warehouses (an empty list: none), replacing the person's assignments in
|
|
36
|
+
* this store, and answer them. Repeating the call changes nothing.
|
|
37
|
+
*
|
|
38
|
+
* Refused before anything is written:
|
|
39
|
+
* - a warehouse that is not one of this store's (deleted, another store's, a malformed id) as a
|
|
40
|
+
* `ValidationError` naming it; for a credential restricted with `locationIds`, any id outside
|
|
41
|
+
* its locations is `LOCATION_OUT_OF_SCOPE` (`BusinessRuleError`) instead;
|
|
42
|
+
* - more than 200 warehouses (`ValidationError`).
|
|
43
|
+
*
|
|
44
|
+
* @effect write
|
|
45
|
+
*/
|
|
46
|
+
set(administratorId: string, stockLocationIds: readonly string[], options?: Call): Promise<AssignedWarehouse[]>;
|
|
47
|
+
}
|
|
48
|
+
export declare const ADMINISTRATOR_WAREHOUSES_QUERY = "\n query AdministratorWarehouses($administratorId: ID!) {\n administratorWarehouses(administratorId: $administratorId) {\n id\n name\n }\n }\n";
|
|
49
|
+
export declare const SET_ADMINISTRATOR_WAREHOUSES_MUTATION = "\n mutation SetAdministratorWarehouses($administratorId: ID!, $stockLocationIds: [ID!]!) {\n setAdministratorWarehouses(administratorId: $administratorId, stockLocationIds: $stockLocationIds) {\n id\n name\n }\n }\n";
|
|
50
|
+
export declare function createUserWarehousesModule(transport: Transport): UserWarehousesModule;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ValidationError } from '@sixtyninecommerce/core';
|
|
2
|
+
import { fieldOf } from '../catalog/types.js';
|
|
3
|
+
export const ADMINISTRATOR_WAREHOUSES_QUERY = /* GraphQL */ `
|
|
4
|
+
query AdministratorWarehouses($administratorId: ID!) {
|
|
5
|
+
administratorWarehouses(administratorId: $administratorId) {
|
|
6
|
+
id
|
|
7
|
+
name
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
`;
|
|
11
|
+
export const SET_ADMINISTRATOR_WAREHOUSES_MUTATION = /* GraphQL */ `
|
|
12
|
+
mutation SetAdministratorWarehouses($administratorId: ID!, $stockLocationIds: [ID!]!) {
|
|
13
|
+
setAdministratorWarehouses(administratorId: $administratorId, stockLocationIds: $stockLocationIds) {
|
|
14
|
+
id
|
|
15
|
+
name
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
const invalidInput = (message) => new ValidationError({
|
|
20
|
+
code: 'USER_WAREHOUSES_INPUT_INVALID',
|
|
21
|
+
message,
|
|
22
|
+
status: 400,
|
|
23
|
+
service: 'vendure',
|
|
24
|
+
});
|
|
25
|
+
function assertAdministratorId(administratorId) {
|
|
26
|
+
if (typeof administratorId !== 'string' || administratorId.trim() === '') {
|
|
27
|
+
throw invalidInput('administratorId must be a staff member id.');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const toWarehouse = (wire) => ({
|
|
31
|
+
id: wire.id,
|
|
32
|
+
name: wire.name,
|
|
33
|
+
});
|
|
34
|
+
export function createUserWarehousesModule(transport) {
|
|
35
|
+
return {
|
|
36
|
+
async get(administratorId, options) {
|
|
37
|
+
assertAdministratorId(administratorId);
|
|
38
|
+
const rows = await fieldOf(transport, ADMINISTRATOR_WAREHOUSES_QUERY, 'administratorWarehouses', { administratorId }, options);
|
|
39
|
+
return rows.map(toWarehouse);
|
|
40
|
+
},
|
|
41
|
+
async set(administratorId, stockLocationIds, options) {
|
|
42
|
+
assertAdministratorId(administratorId);
|
|
43
|
+
if (!Array.isArray(stockLocationIds) ||
|
|
44
|
+
!stockLocationIds.every((id) => typeof id === 'string' && id.trim() !== '')) {
|
|
45
|
+
throw invalidInput('stockLocationIds must be a list of stock location ids.');
|
|
46
|
+
}
|
|
47
|
+
const rows = await fieldOf(transport, SET_ADMINISTRATOR_WAREHOUSES_MUTATION, 'setAdministratorWarehouses', { administratorId, stockLocationIds: [...stockLocationIds] }, options);
|
|
48
|
+
return rows.map(toWarehouse);
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixtyninecommerce/admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Back-office SDK for sixtynine-commerce: every capability of the platform as a method",
|
|
5
5
|
"homepage": "https://github.com/SIXTYNINE-digital/sixtynine-commerce-engine/tree/main/packages/admin-client#readme",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@sixtyninecommerce/core": "^0.
|
|
36
|
+
"@sixtyninecommerce/core": "^0.7.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "22.19.7",
|