@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.
Files changed (302) hide show
  1. package/README.md +5772 -118
  2. package/dist/auth/index.d.ts +7 -1
  3. package/dist/auth/index.js +8 -1
  4. package/dist/catalog/assets.d.ts +120 -8
  5. package/dist/catalog/assets.js +98 -12
  6. package/dist/catalog/collections.d.ts +279 -14
  7. package/dist/catalog/collections.js +246 -15
  8. package/dist/catalog/documents.d.ts +142 -0
  9. package/dist/catalog/documents.js +114 -0
  10. package/dist/catalog/index.d.ts +54 -6
  11. package/dist/catalog/index.js +10 -1
  12. package/dist/catalog/metadata.d.ts +244 -0
  13. package/dist/catalog/metadata.js +220 -0
  14. package/dist/catalog/products.d.ts +159 -19
  15. package/dist/catalog/products.js +88 -13
  16. package/dist/catalog/properties.d.ts +140 -14
  17. package/dist/catalog/properties.js +65 -1
  18. package/dist/catalog/recommendations.d.ts +288 -0
  19. package/dist/catalog/recommendations.js +237 -0
  20. package/dist/catalog/reviews.d.ts +381 -0
  21. package/dist/catalog/reviews.js +325 -0
  22. package/dist/catalog/types.d.ts +17 -1
  23. package/dist/catalog/types.js +10 -0
  24. package/dist/catalog/variant-find.d.ts +136 -0
  25. package/dist/catalog/variant-find.js +239 -0
  26. package/dist/catalog/variants.d.ts +293 -26
  27. package/dist/catalog/variants.js +164 -7
  28. package/dist/catalog/visibility.d.ts +38 -7
  29. package/dist/catalog/visibility.js +19 -1
  30. package/dist/client.d.ts +121 -9
  31. package/dist/client.js +53 -14
  32. package/dist/content/assets.d.ts +285 -0
  33. package/dist/content/assets.js +181 -0
  34. package/dist/content/forms.d.ts +332 -1
  35. package/dist/content/forms.js +140 -4
  36. package/dist/content/items.d.ts +292 -0
  37. package/dist/content/items.js +170 -0
  38. package/dist/content/menus.d.ts +254 -0
  39. package/dist/content/menus.js +70 -0
  40. package/dist/content/strings.d.ts +137 -0
  41. package/dist/content/strings.js +82 -0
  42. package/dist/content/types.d.ts +282 -0
  43. package/dist/content/types.js +100 -0
  44. package/dist/customers/age-verification.d.ts +66 -0
  45. package/dist/customers/age-verification.js +79 -0
  46. package/dist/customers/credit.d.ts +263 -0
  47. package/dist/customers/credit.js +244 -0
  48. package/dist/customers/delivery-preferences.d.ts +120 -0
  49. package/dist/customers/delivery-preferences.js +97 -0
  50. package/dist/customers/delivery-terms.d.ts +44 -0
  51. package/dist/customers/delivery-terms.js +32 -0
  52. package/dist/customers/groups.d.ts +207 -0
  53. package/dist/customers/groups.js +438 -0
  54. package/dist/customers/index.d.ts +462 -37
  55. package/dist/customers/index.js +317 -40
  56. package/dist/customers/invitation-status.d.ts +57 -0
  57. package/dist/customers/invitation-status.js +21 -0
  58. package/dist/customers/notes.d.ts +67 -0
  59. package/dist/customers/notes.js +51 -0
  60. package/dist/customers/notification-recipients.d.ts +97 -0
  61. package/dist/customers/notification-recipients.js +84 -0
  62. package/dist/customers/saved-lists.d.ts +42 -0
  63. package/dist/customers/saved-lists.js +61 -0
  64. package/dist/customers/vat.d.ts +83 -0
  65. package/dist/customers/vat.js +46 -0
  66. package/dist/customers/wire.d.ts +20 -0
  67. package/dist/customers/wire.js +35 -0
  68. package/dist/documents/ar.d.ts +307 -0
  69. package/dist/documents/ar.js +254 -0
  70. package/dist/documents/emails.d.ts +150 -0
  71. package/dist/documents/emails.js +220 -0
  72. package/dist/documents/index.d.ts +744 -21
  73. package/dist/documents/index.js +438 -24
  74. package/dist/documents/pdf.d.ts +2 -0
  75. package/dist/documents/pdf.js +11 -0
  76. package/dist/fulfillments/create.d.ts +167 -0
  77. package/dist/fulfillments/create.js +216 -0
  78. package/dist/fulfillments/index.d.ts +163 -11
  79. package/dist/fulfillments/index.js +135 -6
  80. package/dist/fulfillments/payment-policy.d.ts +64 -0
  81. package/dist/fulfillments/payment-policy.js +140 -0
  82. package/dist/fulfillments/warehouse.d.ts +724 -0
  83. package/dist/fulfillments/warehouse.js +914 -0
  84. package/dist/geo/index.d.ts +119 -0
  85. package/dist/geo/index.js +107 -0
  86. package/dist/index.d.ts +147 -39
  87. package/dist/index.js +51 -12
  88. package/dist/integrations/afas-actions.d.ts +234 -0
  89. package/dist/integrations/afas-actions.js +310 -0
  90. package/dist/integrations/afas-types.d.ts +483 -0
  91. package/dist/integrations/afas-types.js +5 -0
  92. package/dist/integrations/afas.d.ts +234 -0
  93. package/dist/integrations/afas.js +290 -0
  94. package/dist/integrations/connections.d.ts +103 -0
  95. package/dist/integrations/connections.js +55 -0
  96. package/dist/integrations/esp.d.ts +313 -0
  97. package/dist/integrations/esp.js +169 -0
  98. package/dist/integrations/exact-online-types.d.ts +965 -0
  99. package/dist/integrations/exact-online-types.js +6 -0
  100. package/dist/integrations/exact-online.d.ts +784 -0
  101. package/dist/integrations/exact-online.js +1089 -0
  102. package/dist/integrations/index.d.ts +44 -3
  103. package/dist/integrations/index.js +23 -3
  104. package/dist/integrations/pipeline-discoveries.d.ts +65 -0
  105. package/dist/integrations/pipeline-discoveries.js +65 -0
  106. package/dist/integrations/pipeline-keys.d.ts +13 -0
  107. package/dist/integrations/pipeline-keys.js +22 -0
  108. package/dist/integrations/pipeline-runs.d.ts +119 -0
  109. package/dist/integrations/pipeline-runs.js +87 -0
  110. package/dist/integrations/pipelines.d.ts +87 -15
  111. package/dist/integrations/pipelines.js +41 -22
  112. package/dist/integrations/price-import.d.ts +223 -0
  113. package/dist/integrations/price-import.js +124 -0
  114. package/dist/integrations/types.d.ts +367 -3
  115. package/dist/integrations/types.js +4 -3
  116. package/dist/locations/index.d.ts +66 -0
  117. package/dist/locations/index.js +31 -0
  118. package/dist/meta/index.d.ts +172 -0
  119. package/dist/metafields/index.d.ts +8 -1
  120. package/dist/metafields/index.js +10 -0
  121. package/dist/orders/cancel-with-money.d.ts +237 -0
  122. package/dist/orders/cancel-with-money.js +155 -0
  123. package/dist/orders/commit-edit.d.ts +23 -1
  124. package/dist/orders/commit-edit.js +19 -2
  125. package/dist/orders/deposit-policy.d.ts +3 -1
  126. package/dist/orders/drafts.d.ts +800 -0
  127. package/dist/orders/drafts.js +771 -0
  128. package/dist/orders/fields.d.ts +245 -0
  129. package/dist/orders/fields.js +188 -0
  130. package/dist/orders/get.d.ts +29 -19
  131. package/dist/orders/get.js +17 -8
  132. package/dist/orders/index.d.ts +66 -15
  133. package/dist/orders/index.js +25 -2
  134. package/dist/orders/lifecycle.d.ts +128 -0
  135. package/dist/orders/lifecycle.js +158 -0
  136. package/dist/orders/line-price-preview.d.ts +7 -2
  137. package/dist/orders/list.d.ts +243 -0
  138. package/dist/orders/list.js +487 -0
  139. package/dist/orders/manual-discounts.d.ts +13 -5
  140. package/dist/orders/manual-pricing.d.ts +5 -0
  141. package/dist/orders/money-view.d.ts +149 -0
  142. package/dist/orders/money-view.js +99 -0
  143. package/dist/orders/order-entry.d.ts +20 -7
  144. package/dist/orders/plan-edit.d.ts +34 -2
  145. package/dist/orders/plan-edit.js +112 -11
  146. package/dist/orders/settings.d.ts +201 -0
  147. package/dist/orders/settings.js +325 -0
  148. package/dist/orders/status.d.ts +159 -13
  149. package/dist/orders/status.js +21 -0
  150. package/dist/orders/surcharges.d.ts +20 -1
  151. package/dist/orders/surcharges.js +37 -11
  152. package/dist/payments/account-credit.d.ts +46 -0
  153. package/dist/payments/account-credit.js +42 -0
  154. package/dist/payments/ar.d.ts +292 -0
  155. package/dist/payments/ar.js +223 -0
  156. package/dist/payments/connected-account.d.ts +47 -0
  157. package/dist/payments/connected-account.js +61 -0
  158. package/dist/payments/credit-noted-fields.d.ts +19 -0
  159. package/dist/payments/credit-noted-fields.js +69 -0
  160. package/dist/payments/customer-consent.d.ts +30 -0
  161. package/dist/payments/customer-consent.js +49 -0
  162. package/dist/payments/index.d.ts +340 -19
  163. package/dist/payments/index.js +151 -1
  164. package/dist/payments/methods.d.ts +303 -8
  165. package/dist/payments/methods.js +337 -7
  166. package/dist/payments/mollie-methods.d.ts +159 -0
  167. package/dist/payments/mollie-methods.js +141 -0
  168. package/dist/payments/payment-links.d.ts +180 -0
  169. package/dist/payments/payment-links.js +97 -0
  170. package/dist/payments/provider-keys.d.ts +150 -0
  171. package/dist/payments/provider-keys.js +118 -0
  172. package/dist/payments/providers.d.ts +86 -11
  173. package/dist/payments/providers.js +29 -0
  174. package/dist/payments/requests.d.ts +147 -0
  175. package/dist/payments/requests.js +93 -0
  176. package/dist/payments/store-credit-fields.d.ts +15 -0
  177. package/dist/payments/store-credit-fields.js +51 -0
  178. package/dist/pickups/index.d.ts +106 -0
  179. package/dist/pickups/index.js +108 -0
  180. package/dist/platform/channels.d.ts +132 -0
  181. package/dist/platform/channels.js +128 -0
  182. package/dist/platform/email-gateways.d.ts +165 -0
  183. package/dist/platform/email-gateways.js +78 -0
  184. package/dist/platform/geo.d.ts +123 -0
  185. package/dist/platform/geo.js +144 -0
  186. package/dist/platform/tax.d.ts +162 -0
  187. package/dist/platform/tax.js +169 -0
  188. package/dist/pos/anomalies.d.ts +158 -0
  189. package/dist/pos/anomalies.js +64 -0
  190. package/dist/pos/assisted-selling.d.ts +79 -0
  191. package/dist/pos/assisted-selling.js +38 -0
  192. package/dist/pos/exchanges.d.ts +108 -0
  193. package/dist/pos/exchanges.js +22 -0
  194. package/dist/pos/gift-cards.d.ts +135 -0
  195. package/dist/pos/gift-cards.js +47 -0
  196. package/dist/pos/index.d.ts +2370 -58
  197. package/dist/pos/index.js +854 -7
  198. package/dist/pos/no-receipt.d.ts +94 -0
  199. package/dist/pos/no-receipt.js +25 -0
  200. package/dist/pos/offline-sales.d.ts +228 -0
  201. package/dist/pos/offline-sales.js +170 -0
  202. package/dist/pos/pay-by-link.d.ts +143 -0
  203. package/dist/pos/pay-by-link.js +57 -0
  204. package/dist/pos/quick-keys.d.ts +103 -0
  205. package/dist/pos/quick-keys.js +45 -0
  206. package/dist/pos/reports.d.ts +360 -0
  207. package/dist/pos/reports.js +62 -0
  208. package/dist/pos/returns.d.ts +244 -0
  209. package/dist/pos/returns.js +83 -0
  210. package/dist/pricing/bulk-coupons.d.ts +139 -0
  211. package/dist/pricing/bulk-coupons.js +112 -0
  212. package/dist/pricing/index.d.ts +174 -4
  213. package/dist/pricing/index.js +174 -1
  214. package/dist/pricing/price-lists.d.ts +606 -0
  215. package/dist/pricing/price-lists.js +600 -0
  216. package/dist/purchasing/alerts.d.ts +104 -0
  217. package/dist/purchasing/alerts.js +88 -0
  218. package/dist/purchasing/backorders.d.ts +61 -0
  219. package/dist/purchasing/backorders.js +92 -0
  220. package/dist/purchasing/cost.d.ts +110 -0
  221. package/dist/purchasing/cost.js +86 -0
  222. package/dist/purchasing/index.d.ts +54 -0
  223. package/dist/purchasing/index.js +24 -0
  224. package/dist/purchasing/links.d.ts +263 -0
  225. package/dist/purchasing/links.js +192 -0
  226. package/dist/purchasing/purchase-orders.d.ts +551 -0
  227. package/dist/purchasing/purchase-orders.js +491 -0
  228. package/dist/purchasing/receipts.d.ts +396 -0
  229. package/dist/purchasing/receipts.js +287 -0
  230. package/dist/purchasing/replenishment.d.ts +281 -0
  231. package/dist/purchasing/replenishment.js +240 -0
  232. package/dist/purchasing/returns.d.ts +273 -0
  233. package/dist/purchasing/returns.js +229 -0
  234. package/dist/purchasing/settings.d.ts +152 -0
  235. package/dist/purchasing/settings.js +181 -0
  236. package/dist/purchasing/suppliers.d.ts +476 -0
  237. package/dist/purchasing/suppliers.js +438 -0
  238. package/dist/quotes/index.d.ts +518 -0
  239. package/dist/quotes/index.js +439 -0
  240. package/dist/reports/index.d.ts +71 -8
  241. package/dist/reports/index.js +74 -11
  242. package/dist/returns/index.d.ts +675 -21
  243. package/dist/returns/index.js +756 -11
  244. package/dist/search/index.d.ts +76 -1
  245. package/dist/search/index.js +63 -0
  246. package/dist/seo/config.d.ts +128 -0
  247. package/dist/seo/config.js +95 -0
  248. package/dist/seo/redirects.d.ts +125 -0
  249. package/dist/seo/redirects.js +60 -1
  250. package/dist/seo/settings.d.ts +147 -0
  251. package/dist/seo/settings.js +209 -0
  252. package/dist/shipping/definitions.d.ts +29 -0
  253. package/dist/shipping/definitions.js +47 -0
  254. package/dist/shipping/fulfillment-profiles.d.ts +174 -0
  255. package/dist/shipping/fulfillment-profiles.js +104 -0
  256. package/dist/shipping/hendriks.d.ts +97 -0
  257. package/dist/shipping/hendriks.js +50 -0
  258. package/dist/shipping/index.d.ts +54 -0
  259. package/dist/shipping/index.js +27 -0
  260. package/dist/shipping/methods.d.ts +205 -0
  261. package/dist/shipping/methods.js +240 -0
  262. package/dist/shipping/myparcel.d.ts +668 -0
  263. package/dist/shipping/myparcel.js +466 -0
  264. package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
  265. package/dist/shipping/parcel-rule.d.ts +6 -5
  266. package/dist/shipping/parcel-rule.js +21 -23
  267. package/dist/shipping/rate-tables.d.ts +324 -0
  268. package/dist/shipping/rate-tables.js +390 -0
  269. package/dist/shipping/ship-to-countries.d.ts +75 -0
  270. package/dist/shipping/ship-to-countries.js +47 -0
  271. package/dist/stock/by-location.d.ts +86 -0
  272. package/dist/stock/by-location.js +94 -0
  273. package/dist/stock/index.d.ts +18 -4
  274. package/dist/stock/index.js +7 -0
  275. package/dist/stock/locations.d.ts +144 -0
  276. package/dist/stock/locations.js +168 -0
  277. package/dist/stock/settings.d.ts +106 -0
  278. package/dist/stock/settings.js +103 -0
  279. package/dist/stock/transfers.d.ts +386 -52
  280. package/dist/stock/transfers.js +222 -17
  281. package/dist/stored-value/index.d.ts +312 -11
  282. package/dist/stored-value/index.js +223 -4
  283. package/dist/subscriptions/index.d.ts +682 -0
  284. package/dist/subscriptions/index.js +815 -0
  285. package/dist/tax/display-policy.d.ts +105 -0
  286. package/dist/tax/display-policy.js +84 -0
  287. package/dist/tax/index.d.ts +79 -1
  288. package/dist/tax/index.js +52 -0
  289. package/dist/tenant/email-style.d.ts +102 -0
  290. package/dist/tenant/email-style.js +72 -0
  291. package/dist/tenant/email-templates.d.ts +287 -0
  292. package/dist/tenant/email-templates.js +271 -0
  293. package/dist/tenant/notifications.d.ts +23 -17
  294. package/dist/tenant/settings-sources.d.ts +1 -1
  295. package/dist/tenant/time-zone.d.ts +17 -0
  296. package/dist/tenant/time-zone.js +11 -0
  297. package/dist/types.d.ts +50 -3
  298. package/dist/users/index.d.ts +3 -0
  299. package/dist/users/index.js +2 -0
  300. package/dist/users/warehouses.d.ts +50 -0
  301. package/dist/users/warehouses.js +51 -0
  302. package/package.json +2 -2
@@ -0,0 +1,240 @@
1
+ import { ValidationError } from '@sixtyninecommerce/core';
2
+ import { assertDeleted, fieldOf, vendureListPage, } from '../catalog/types.js';
3
+ /** A store has a handful; one page holds them. */
4
+ const DEFAULT_PAGE_SIZE = 100;
5
+ /**
6
+ * Vendure's list queries add no ORDER BY of their own, and `skip/take` over an unordered query
7
+ * can repeat or skip rows between two requests: id is the one unique key a sort can name.
8
+ */
9
+ const BY_ID = { id: 'ASC' };
10
+ const OPERATION_FIELDS = /* GraphQL */ `
11
+ code
12
+ args {
13
+ name
14
+ value
15
+ }
16
+ `;
17
+ const SUMMARY_FIELDS = /* GraphQL */ `
18
+ id
19
+ createdAt
20
+ updatedAt
21
+ code
22
+ name
23
+ fulfillmentHandlerCode
24
+ calculator { ${OPERATION_FIELDS} }
25
+ customFields {
26
+ enabled
27
+ enabledInStorefront
28
+ }
29
+ `;
30
+ /** One selection for the single read and both writes, so all three answer the same method. */
31
+ const METHOD_FIELDS = /* GraphQL */ `
32
+ id
33
+ createdAt
34
+ updatedAt
35
+ code
36
+ name
37
+ description
38
+ fulfillmentHandlerCode
39
+ calculator { ${OPERATION_FIELDS} }
40
+ checker { ${OPERATION_FIELDS} }
41
+ translations {
42
+ id
43
+ languageCode
44
+ name
45
+ description
46
+ }
47
+ customFields {
48
+ enabled
49
+ enabledInStorefront
50
+ exactManaged
51
+ extraParcelPrice
52
+ }
53
+ `;
54
+ export const SHIPPING_METHODS_QUERY = /* GraphQL */ `
55
+ query StoreShippingMethods($options: ShippingMethodListOptions) {
56
+ shippingMethods(options: $options) {
57
+ items { ${SUMMARY_FIELDS} }
58
+ totalItems
59
+ }
60
+ }
61
+ `;
62
+ export const SHIPPING_METHOD_QUERY = /* GraphQL */ `
63
+ query StoreShippingMethod($id: ID!) {
64
+ shippingMethod(id: $id) { ${METHOD_FIELDS} }
65
+ }
66
+ `;
67
+ export const CREATE_SHIPPING_METHOD_MUTATION = /* GraphQL */ `
68
+ mutation CreateStoreShippingMethod($input: CreateShippingMethodInput!) {
69
+ createShippingMethod(input: $input) { ${METHOD_FIELDS} }
70
+ }
71
+ `;
72
+ export const UPDATE_SHIPPING_METHOD_MUTATION = /* GraphQL */ `
73
+ mutation UpdateStoreShippingMethod($input: UpdateShippingMethodInput!) {
74
+ updateShippingMethod(input: $input) { ${METHOD_FIELDS} }
75
+ }
76
+ `;
77
+ export const DELETE_SHIPPING_METHOD_MUTATION = /* GraphQL */ `
78
+ mutation DeleteStoreShippingMethod($id: ID!) {
79
+ deleteShippingMethod(id: $id) {
80
+ result
81
+ message
82
+ }
83
+ }
84
+ `;
85
+ const invalidInput = (message) => new ValidationError({
86
+ code: 'INVALID_SHIPPING_METHOD_INPUT',
87
+ message,
88
+ status: 400,
89
+ service: 'vendure',
90
+ });
91
+ const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
92
+ /** A handler-like operation as the engine takes it, checked here so a wrong shape never leaves. */
93
+ function operationInput(value, what) {
94
+ if (!isObject(value) || typeof value.code !== 'string' || value.code === '') {
95
+ throw invalidInput(`${what} needs a code.`);
96
+ }
97
+ const args = value.arguments;
98
+ if (!Array.isArray(args) ||
99
+ !args.every((arg) => isObject(arg) && typeof arg.name === 'string' && typeof arg.value === 'string')) {
100
+ throw invalidInput(`${what}.arguments must be a list of { name, value } strings (a list or a boolean JSON-encoded).`);
101
+ }
102
+ return {
103
+ code: value.code,
104
+ arguments: args.map((arg) => ({ name: String(arg.name), value: String(arg.value) })),
105
+ };
106
+ }
107
+ function translationsInput(value) {
108
+ if (!Array.isArray(value) ||
109
+ !value.every((row) => isObject(row) &&
110
+ typeof row.languageCode === 'string' &&
111
+ row.languageCode !== '' &&
112
+ typeof row.name === 'string' &&
113
+ (row.description === undefined || typeof row.description === 'string'))) {
114
+ throw invalidInput('translations must be a list of { languageCode, name, description? } with strings.');
115
+ }
116
+ return value.map((row) => ({
117
+ languageCode: String(row.languageCode),
118
+ name: String(row.name),
119
+ description: typeof row.description === 'string' ? row.description : '',
120
+ }));
121
+ }
122
+ /**
123
+ * The fields both writes share, in the engine's shape: the three store switches under
124
+ * `customFields`. The range of `extraParcelPrice` is the engine's to judge.
125
+ */
126
+ function sharedInput(input) {
127
+ const out = {};
128
+ if (input.code !== undefined) {
129
+ if (typeof input.code !== 'string' || input.code === '') {
130
+ throw invalidInput('code must be a non-empty string.');
131
+ }
132
+ out.code = input.code;
133
+ }
134
+ if (input.fulfillmentHandler !== undefined) {
135
+ if (typeof input.fulfillmentHandler !== 'string' || input.fulfillmentHandler === '') {
136
+ throw invalidInput('fulfillmentHandler must be a fulfillment handler code.');
137
+ }
138
+ out.fulfillmentHandler = input.fulfillmentHandler;
139
+ }
140
+ if (input.checker === null) {
141
+ throw invalidInput('Every shipping method has a checker: send default-shipping-eligibility-checker for "everyone".');
142
+ }
143
+ if (input.checker !== undefined)
144
+ out.checker = operationInput(input.checker, 'checker');
145
+ if (input.calculator !== undefined) {
146
+ out.calculator = operationInput(input.calculator, 'calculator');
147
+ }
148
+ if (input.translations !== undefined)
149
+ out.translations = translationsInput(input.translations);
150
+ const customFields = {};
151
+ for (const flag of ['enabled', 'enabledInStorefront']) {
152
+ const value = input[flag];
153
+ if (value === undefined)
154
+ continue;
155
+ if (typeof value !== 'boolean')
156
+ throw invalidInput(`${flag} must be true or false.`);
157
+ customFields[flag] = value;
158
+ }
159
+ const extra = input.extraParcelPrice;
160
+ if (extra !== undefined) {
161
+ if (extra !== null && (typeof extra !== 'number' || !Number.isSafeInteger(extra))) {
162
+ throw invalidInput('extraParcelPrice must be a whole number of minor units, or null.');
163
+ }
164
+ customFields.extraParcelPrice = extra;
165
+ }
166
+ if (Object.keys(customFields).length > 0)
167
+ out.customFields = customFields;
168
+ return out;
169
+ }
170
+ const toSummary = (method) => ({
171
+ id: method.id,
172
+ code: method.code,
173
+ name: method.name,
174
+ fulfillmentHandlerCode: method.fulfillmentHandlerCode,
175
+ calculator: method.calculator,
176
+ // A switch the engine did not answer (a method stored before it existed) reads as ON: the
177
+ // checkout's own rule (`shipping-method-enabled.ts` in the shipping-calculator plugin) is the same fail-open one.
178
+ enabled: method.customFields?.enabled !== false,
179
+ enabledInStorefront: method.customFields?.enabledInStorefront !== false,
180
+ createdAt: method.createdAt,
181
+ updatedAt: method.updatedAt,
182
+ });
183
+ const toMethod = (method) => {
184
+ const extra = method.customFields?.extraParcelPrice;
185
+ return {
186
+ ...toSummary(method),
187
+ description: method.description,
188
+ checker: method.checker,
189
+ translations: method.translations,
190
+ exactManaged: method.customFields?.exactManaged === true,
191
+ extraParcelPrice: typeof extra === 'number' ? extra : null,
192
+ };
193
+ };
194
+ const requireId = (id) => {
195
+ if (typeof id !== 'string' || id === '')
196
+ throw invalidInput('id must be a shipping method id.');
197
+ return id;
198
+ };
199
+ export function createShippingMethodsModule(transport) {
200
+ return {
201
+ list(options) {
202
+ return vendureListPage(transport, SHIPPING_METHODS_QUERY, 'shippingMethods', (skip, take) => ({ options: { skip, take, sort: BY_ID } }), { ...options, limit: options?.limit ?? DEFAULT_PAGE_SIZE }, toSummary);
203
+ },
204
+ async get(id, options) {
205
+ const method = await fieldOf(transport, SHIPPING_METHOD_QUERY, 'shippingMethod', { id: requireId(id) }, options);
206
+ return method ? toMethod(method) : null;
207
+ },
208
+ async create(input, options) {
209
+ if (!isObject(input))
210
+ throw invalidInput('A new shipping method must be an object.');
211
+ if (input.code === undefined)
212
+ throw invalidInput('A shipping method needs a code.');
213
+ if (input.fulfillmentHandler === undefined) {
214
+ throw invalidInput('A shipping method needs a fulfillment handler.');
215
+ }
216
+ if (input.checker === undefined)
217
+ throw invalidInput('A shipping method needs a checker.');
218
+ if (input.calculator === undefined) {
219
+ throw invalidInput('A shipping method needs a calculator.');
220
+ }
221
+ if (input.translations === undefined) {
222
+ throw invalidInput('A shipping method needs its name in at least one language.');
223
+ }
224
+ return toMethod(await fieldOf(transport, CREATE_SHIPPING_METHOD_MUTATION, 'createShippingMethod', { input: sharedInput(input) }, options));
225
+ },
226
+ async update(id, patch, options) {
227
+ const methodId = requireId(id);
228
+ if (!isObject(patch))
229
+ throw invalidInput('The change to a shipping method must be an object.');
230
+ const input = sharedInput(patch);
231
+ // The engine's input REQUIRES a translations list; an empty one changes no name.
232
+ return toMethod(await fieldOf(transport, UPDATE_SHIPPING_METHOD_MUTATION, 'updateShippingMethod', { input: { id: methodId, translations: [], ...input } }, options));
233
+ },
234
+ async delete(id, options) {
235
+ assertDeleted('SHIPPING_METHOD_NOT_DELETED', [
236
+ await fieldOf(transport, DELETE_SHIPPING_METHOD_MUTATION, 'deleteShippingMethod', { id: requireId(id) }, options),
237
+ ]);
238
+ },
239
+ };
240
+ }