@edgebound/bigcommerce 0.1.2 → 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.
- package/dist/addresses.d.mts +27 -0
- package/dist/addresses.d.ts +27 -0
- package/dist/addresses.js +69 -0
- package/dist/addresses.js.map +1 -0
- package/dist/addresses.mjs +9 -0
- package/dist/addresses.mjs.map +1 -0
- package/dist/{bigcommerce.fetcher-D1TyK4y4.d.mts → bigcommerce.fetcher-Ujztbs8P.d.mts} +2 -2
- package/dist/{bigcommerce.fetcher-D1TyK4y4.d.ts → bigcommerce.fetcher-Ujztbs8P.d.ts} +2 -2
- package/dist/{chunk-RPASSHB6.mjs → chunk-2VMEIQCL.mjs} +81 -27
- package/dist/chunk-2VMEIQCL.mjs.map +1 -0
- package/dist/chunk-BWLQCNNX.mjs +30 -0
- package/dist/chunk-BWLQCNNX.mjs.map +1 -0
- package/dist/companies.d.mts +230 -1
- package/dist/companies.d.ts +230 -1
- package/dist/companies.js +723 -0
- package/dist/companies.js.map +1 -1
- package/dist/companies.mjs +367 -0
- package/dist/companies.mjs.map +1 -1
- package/dist/customers.d.mts +95 -2
- package/dist/customers.d.ts +95 -2
- package/dist/customers.js +245 -63
- package/dist/customers.js.map +1 -1
- package/dist/customers.mjs +172 -46
- package/dist/customers.mjs.map +1 -1
- package/dist/index.d.mts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +82 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -3
- package/dist/orders.d.mts +1323 -2
- package/dist/orders.d.ts +1323 -2
- package/dist/orders.js +283 -181
- package/dist/orders.js.map +1 -1
- package/dist/orders.mjs +193 -166
- package/dist/orders.mjs.map +1 -1
- package/dist/payments.d.mts +28 -0
- package/dist/payments.d.ts +28 -0
- package/dist/payments.js +365 -0
- package/dist/payments.js.map +1 -0
- package/dist/payments.mjs +43 -0
- package/dist/payments.mjs.map +1 -0
- package/dist/priceLists.d.mts +81 -0
- package/dist/priceLists.d.ts +81 -0
- package/dist/priceLists.js +458 -0
- package/dist/priceLists.js.map +1 -0
- package/dist/priceLists.mjs +118 -0
- package/dist/priceLists.mjs.map +1 -0
- package/dist/products.d.mts +29 -7
- package/dist/products.d.ts +29 -7
- package/dist/products.js +114 -60
- package/dist/products.js.map +1 -1
- package/dist/products.mjs +26 -25
- package/dist/products.mjs.map +1 -1
- package/dist/salesStaff.d.mts +64 -0
- package/dist/salesStaff.d.ts +64 -0
- package/dist/salesStaff.js +419 -0
- package/dist/salesStaff.js.map +1 -0
- package/dist/salesStaff.mjs +82 -0
- package/dist/salesStaff.mjs.map +1 -0
- package/package.json +38 -15
- package/dist/chunk-RPASSHB6.mjs.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import {
|
|
2
|
+
validateInput
|
|
3
|
+
} from "./chunk-CERZFSUE.mjs";
|
|
4
|
+
import {
|
|
5
|
+
BigCommerceFetcher,
|
|
6
|
+
DEFAULTS
|
|
7
|
+
} from "./chunk-2VMEIQCL.mjs";
|
|
8
|
+
|
|
9
|
+
// src/bigcommerce-entities/price-lists/create-price-list.ts
|
|
10
|
+
import { Effect } from "effect";
|
|
11
|
+
|
|
12
|
+
// src/bigcommerce-entities/price-lists/schemas/create-price-lists.schema.ts
|
|
13
|
+
import * as z from "zod";
|
|
14
|
+
var CreatePriceListSchema = z.object({
|
|
15
|
+
name: z.string(),
|
|
16
|
+
active: z.boolean()
|
|
17
|
+
});
|
|
18
|
+
var CreatePriceListResponseSchema = z.object({
|
|
19
|
+
data: z.object({
|
|
20
|
+
id: z.int()
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// src/bigcommerce-entities/price-lists/create-price-list.ts
|
|
25
|
+
var createPriceList = (data) => Effect.gen(function* () {
|
|
26
|
+
const fetcher = yield* BigCommerceFetcher;
|
|
27
|
+
const validatedData = yield* validateInput(CreatePriceListSchema, data);
|
|
28
|
+
return yield* Effect.retry(
|
|
29
|
+
fetcher.fetch({
|
|
30
|
+
body: validatedData,
|
|
31
|
+
isB2B: false,
|
|
32
|
+
method: "POST",
|
|
33
|
+
path: "pricelists",
|
|
34
|
+
resultSchema: CreatePriceListResponseSchema,
|
|
35
|
+
version: "v3"
|
|
36
|
+
}),
|
|
37
|
+
DEFAULTS.retry.policy
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// src/bigcommerce-entities/price-lists/get-price-lists.ts
|
|
42
|
+
import { Effect as Effect2 } from "effect";
|
|
43
|
+
import qs from "qs";
|
|
44
|
+
|
|
45
|
+
// src/bigcommerce-entities/price-lists/schemas/get-prices-lists.schema.ts
|
|
46
|
+
import * as z2 from "zod";
|
|
47
|
+
var PriceListSchema = z2.object({
|
|
48
|
+
id: z2.int(),
|
|
49
|
+
name: z2.string(),
|
|
50
|
+
date_created: z2.string(),
|
|
51
|
+
date_modified: z2.string(),
|
|
52
|
+
active: z2.boolean()
|
|
53
|
+
});
|
|
54
|
+
var GetPriceListsResponseSchema = z2.object({
|
|
55
|
+
data: PriceListSchema.array(),
|
|
56
|
+
meta: z2.object({
|
|
57
|
+
pagination: z2.object({
|
|
58
|
+
total: z2.int(),
|
|
59
|
+
count: z2.int(),
|
|
60
|
+
per_page: z2.int(),
|
|
61
|
+
current_page: z2.int(),
|
|
62
|
+
total_pages: z2.int()
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
var GetPriceListsCriteriaSchema = z2.object({
|
|
67
|
+
page: z2.int().optional(),
|
|
68
|
+
limit: z2.int().optional(),
|
|
69
|
+
"id:in": z2.int().array().transform((value) => value.join(",")).optional()
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// src/bigcommerce-entities/price-lists/get-price-lists.ts
|
|
73
|
+
var findPriceLists = (criteria) => Effect2.gen(function* () {
|
|
74
|
+
const fetcher = yield* BigCommerceFetcher;
|
|
75
|
+
const validatedCriteria = yield* validateInput(GetPriceListsCriteriaSchema, criteria ?? {});
|
|
76
|
+
return yield* Effect2.retry(
|
|
77
|
+
fetcher.fetch({
|
|
78
|
+
isB2B: false,
|
|
79
|
+
method: "GET",
|
|
80
|
+
query: qs.stringify(validatedCriteria),
|
|
81
|
+
path: "pricelists",
|
|
82
|
+
resultSchema: GetPriceListsResponseSchema,
|
|
83
|
+
version: "v3"
|
|
84
|
+
}),
|
|
85
|
+
DEFAULTS.retry.policy
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
var getAllPriceListsBy = (criteria) => Effect2.gen(function* () {
|
|
89
|
+
let hasMore = true;
|
|
90
|
+
let page = 1;
|
|
91
|
+
const limit = DEFAULTS.priceLists.getAllBatchSize;
|
|
92
|
+
const data = [];
|
|
93
|
+
while (hasMore) {
|
|
94
|
+
const response = yield* findPriceLists({
|
|
95
|
+
...criteria,
|
|
96
|
+
limit,
|
|
97
|
+
page
|
|
98
|
+
});
|
|
99
|
+
if (response.data.length) {
|
|
100
|
+
page += 1;
|
|
101
|
+
data.push(...response.data);
|
|
102
|
+
} else {
|
|
103
|
+
hasMore = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return data;
|
|
107
|
+
});
|
|
108
|
+
export {
|
|
109
|
+
CreatePriceListResponseSchema,
|
|
110
|
+
CreatePriceListSchema,
|
|
111
|
+
GetPriceListsCriteriaSchema,
|
|
112
|
+
GetPriceListsResponseSchema,
|
|
113
|
+
PriceListSchema,
|
|
114
|
+
createPriceList,
|
|
115
|
+
findPriceLists,
|
|
116
|
+
getAllPriceListsBy
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=priceLists.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bigcommerce-entities/price-lists/create-price-list.ts","../src/bigcommerce-entities/price-lists/schemas/create-price-lists.schema.ts","../src/bigcommerce-entities/price-lists/get-price-lists.ts","../src/bigcommerce-entities/price-lists/schemas/get-prices-lists.schema.ts"],"sourcesContent":["import { Effect } from 'effect';\nimport {\n CreatePriceListResponseSchema,\n CreatePriceListSchema,\n} from './schemas/create-price-lists.schema';\n\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nexport const createPriceList = (data: z.input<typeof CreatePriceListSchema>) =>\n Effect.gen(function* () {\n const fetcher = yield* BigCommerceFetcher;\n const validatedData = yield* validateInput(CreatePriceListSchema, data);\n return yield* Effect.retry(\n fetcher.fetch({\n body: validatedData,\n isB2B: false,\n method: 'POST',\n path: 'pricelists',\n resultSchema: CreatePriceListResponseSchema,\n version: 'v3',\n }),\n DEFAULTS.retry.policy,\n );\n });\n","import * as z from 'zod';\nexport const CreatePriceListSchema = z.object({\n name: z.string(),\n active: z.boolean(),\n});\nexport const CreatePriceListResponseSchema = z.object({\n data: z.object({\n id: z.int(),\n }),\n});\n","import { Effect } from 'effect';\nimport qs from 'qs';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n GetPriceListsCriteriaSchema,\n GetPriceListsResponseSchema,\n} from './schemas/get-prices-lists.schema';\nexport const findPriceLists = (criteria?: z.input<typeof GetPriceListsCriteriaSchema>) =>\n Effect.gen(function* () {\n const fetcher = yield* BigCommerceFetcher;\n const validatedCriteria = yield* validateInput(GetPriceListsCriteriaSchema, criteria ?? {});\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: false,\n method: 'GET',\n query: qs.stringify(validatedCriteria),\n path: 'pricelists',\n resultSchema: GetPriceListsResponseSchema,\n version: 'v3',\n }),\n DEFAULTS.retry.policy,\n );\n });\n\nexport const getAllPriceListsBy = (\n criteria?: Omit<z.input<typeof GetPriceListsCriteriaSchema>, 'limit' | 'page'>,\n) =>\n Effect.gen(function* () {\n let hasMore = true;\n let page = 1;\n const limit = DEFAULTS.priceLists.getAllBatchSize;\n const data: z.infer<typeof GetPriceListsResponseSchema>['data'] = [];\n while (hasMore) {\n const response = yield* findPriceLists({\n ...criteria,\n limit,\n page,\n });\n if (response.data.length) {\n page += 1;\n data.push(...response.data);\n } else {\n hasMore = false;\n }\n }\n return data;\n });\n","import * as z from 'zod';\nexport const PriceListSchema = z.object({\n id: z.int(),\n name: z.string(),\n date_created: z.string(),\n date_modified: z.string(),\n active: z.boolean(),\n});\n\nexport const GetPriceListsResponseSchema = z.object({\n data: PriceListSchema.array(),\n meta: z.object({\n pagination: z.object({\n total: z.int(),\n count: z.int(),\n per_page: z.int(),\n current_page: z.int(),\n total_pages: z.int(),\n }),\n }),\n});\n\nexport const GetPriceListsCriteriaSchema = z.object({\n page: z.int().optional(),\n limit: z.int().optional(),\n 'id:in': z\n .int()\n .array()\n .transform((value) => value.join(','))\n .optional(),\n});\n"],"mappings":";;;;;;;;;AAAA,SAAS,cAAc;;;ACAvB,YAAY,OAAO;AACZ,IAAM,wBAA0B,SAAO;AAAA,EAC5C,MAAQ,SAAO;AAAA,EACf,QAAU,UAAQ;AACpB,CAAC;AACM,IAAM,gCAAkC,SAAO;AAAA,EACpD,MAAQ,SAAO;AAAA,IACb,IAAM,MAAI;AAAA,EACZ,CAAC;AACH,CAAC;;;ADCM,IAAM,kBAAkB,CAAC,SAC9B,OAAO,IAAI,aAAa;AACtB,QAAM,UAAU,OAAO;AACvB,QAAM,gBAAgB,OAAO,cAAc,uBAAuB,IAAI;AACtE,SAAO,OAAO,OAAO;AAAA,IACnB,QAAQ,MAAM;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA,IACX,CAAC;AAAA,IACD,SAAS,MAAM;AAAA,EACjB;AACF,CAAC;;;AEzBH,SAAS,UAAAA,eAAc;AACvB,OAAO,QAAQ;;;ACDf,YAAYC,QAAO;AACZ,IAAM,kBAAoB,UAAO;AAAA,EACtC,IAAM,OAAI;AAAA,EACV,MAAQ,UAAO;AAAA,EACf,cAAgB,UAAO;AAAA,EACvB,eAAiB,UAAO;AAAA,EACxB,QAAU,WAAQ;AACpB,CAAC;AAEM,IAAM,8BAAgC,UAAO;AAAA,EAClD,MAAM,gBAAgB,MAAM;AAAA,EAC5B,MAAQ,UAAO;AAAA,IACb,YAAc,UAAO;AAAA,MACnB,OAAS,OAAI;AAAA,MACb,OAAS,OAAI;AAAA,MACb,UAAY,OAAI;AAAA,MAChB,cAAgB,OAAI;AAAA,MACpB,aAAe,OAAI;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AACH,CAAC;AAEM,IAAM,8BAAgC,UAAO;AAAA,EAClD,MAAQ,OAAI,EAAE,SAAS;AAAA,EACvB,OAAS,OAAI,EAAE,SAAS;AAAA,EACxB,SACG,OAAI,EACJ,MAAM,EACN,UAAU,CAAC,UAAU,MAAM,KAAK,GAAG,CAAC,EACpC,SAAS;AACd,CAAC;;;ADpBM,IAAM,iBAAiB,CAAC,aAC7BC,QAAO,IAAI,aAAa;AACtB,QAAM,UAAU,OAAO;AACvB,QAAM,oBAAoB,OAAO,cAAc,6BAA6B,YAAY,CAAC,CAAC;AAC1F,SAAO,OAAOA,QAAO;AAAA,IACnB,QAAQ,MAAM;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,GAAG,UAAU,iBAAiB;AAAA,MACrC,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA,IACX,CAAC;AAAA,IACD,SAAS,MAAM;AAAA,EACjB;AACF,CAAC;AAEI,IAAM,qBAAqB,CAChC,aAEAA,QAAO,IAAI,aAAa;AACtB,MAAI,UAAU;AACd,MAAI,OAAO;AACX,QAAM,QAAQ,SAAS,WAAW;AAClC,QAAM,OAA4D,CAAC;AACnE,SAAO,SAAS;AACd,UAAM,WAAW,OAAO,eAAe;AAAA,MACrC,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,SAAS,KAAK,QAAQ;AACxB,cAAQ;AACR,WAAK,KAAK,GAAG,SAAS,IAAI;AAAA,IAC5B,OAAO;AACL,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT,CAAC;","names":["Effect","z","Effect"]}
|
package/dist/products.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { I as InputValidationError } from './validation.error-CHLpPYC_.mjs';
|
|
2
|
-
import { S as SomeBigCommerceError, B as BigCommerceFetcher } from './bigcommerce.fetcher-
|
|
3
|
+
import { S as SomeBigCommerceError, B as BigCommerceFetcher } from './bigcommerce.fetcher-Ujztbs8P.mjs';
|
|
3
4
|
import { Effect } from 'effect';
|
|
4
|
-
import * as z from 'zod';
|
|
5
5
|
import * as effect_Effect from 'effect/Effect';
|
|
6
6
|
import 'effect/Cause';
|
|
7
7
|
import 'effect/Types';
|
|
@@ -15,16 +15,38 @@ declare const SetProductInventoryItemSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
15
15
|
sku: z.ZodString;
|
|
16
16
|
quantity: z.ZodInt;
|
|
17
17
|
}, z.core.$strip>]>;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
declare const SetProductInventorySchema: z.ZodObject<{
|
|
19
|
+
reason: z.ZodString;
|
|
20
|
+
items: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
21
|
+
location_id: z.ZodInt;
|
|
22
|
+
product_id: z.ZodInt;
|
|
23
|
+
quantity: z.ZodInt;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
location_id: z.ZodInt;
|
|
26
|
+
sku: z.ZodString;
|
|
27
|
+
quantity: z.ZodInt;
|
|
28
|
+
}, z.core.$strip>]>>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
declare const SetInventoryResponseSchema: z.ZodObject<{
|
|
31
|
+
transaction_id: z.ZodString;
|
|
32
|
+
}, z.core.$strip>;
|
|
22
33
|
|
|
23
34
|
declare const UpdateProductVisibilitySchema: z.ZodObject<{
|
|
24
35
|
id: z.ZodNumber;
|
|
25
36
|
is_visible: z.ZodBoolean;
|
|
26
37
|
}, z.core.$strip>;
|
|
38
|
+
declare const UpdateProductSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
39
|
+
id: z.ZodNumber;
|
|
40
|
+
is_visible: z.ZodBoolean;
|
|
41
|
+
}, z.core.$strip>]>;
|
|
42
|
+
declare const UpdateProductResponseSchema: z.ZodAny;
|
|
43
|
+
|
|
44
|
+
declare const setProductsInventory: (reason: string, items: z.input<typeof SetProductInventoryItemSchema>[]) => Effect.Effect<{
|
|
45
|
+
transaction_id: string;
|
|
46
|
+
}[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
27
47
|
|
|
28
48
|
declare const setProductVisibility: (dtos: z.input<typeof UpdateProductVisibilitySchema>[]) => effect_Effect.Effect<any[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
29
49
|
|
|
30
|
-
|
|
50
|
+
declare const updateProducts: (dtos: z.input<typeof UpdateProductSchema>[]) => Effect.Effect<any[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
51
|
+
|
|
52
|
+
export { SetInventoryResponseSchema, SetProductInventoryItemSchema, SetProductInventorySchema, UpdateProductResponseSchema, UpdateProductSchema, UpdateProductVisibilitySchema, setProductVisibility, setProductsInventory, updateProducts };
|
package/dist/products.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { I as InputValidationError } from './validation.error-CHLpPYC_.js';
|
|
2
|
-
import { S as SomeBigCommerceError, B as BigCommerceFetcher } from './bigcommerce.fetcher-
|
|
3
|
+
import { S as SomeBigCommerceError, B as BigCommerceFetcher } from './bigcommerce.fetcher-Ujztbs8P.js';
|
|
3
4
|
import { Effect } from 'effect';
|
|
4
|
-
import * as z from 'zod';
|
|
5
5
|
import * as effect_Effect from 'effect/Effect';
|
|
6
6
|
import 'effect/Cause';
|
|
7
7
|
import 'effect/Types';
|
|
@@ -15,16 +15,38 @@ declare const SetProductInventoryItemSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
15
15
|
sku: z.ZodString;
|
|
16
16
|
quantity: z.ZodInt;
|
|
17
17
|
}, z.core.$strip>]>;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
declare const SetProductInventorySchema: z.ZodObject<{
|
|
19
|
+
reason: z.ZodString;
|
|
20
|
+
items: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
21
|
+
location_id: z.ZodInt;
|
|
22
|
+
product_id: z.ZodInt;
|
|
23
|
+
quantity: z.ZodInt;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
location_id: z.ZodInt;
|
|
26
|
+
sku: z.ZodString;
|
|
27
|
+
quantity: z.ZodInt;
|
|
28
|
+
}, z.core.$strip>]>>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
declare const SetInventoryResponseSchema: z.ZodObject<{
|
|
31
|
+
transaction_id: z.ZodString;
|
|
32
|
+
}, z.core.$strip>;
|
|
22
33
|
|
|
23
34
|
declare const UpdateProductVisibilitySchema: z.ZodObject<{
|
|
24
35
|
id: z.ZodNumber;
|
|
25
36
|
is_visible: z.ZodBoolean;
|
|
26
37
|
}, z.core.$strip>;
|
|
38
|
+
declare const UpdateProductSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
39
|
+
id: z.ZodNumber;
|
|
40
|
+
is_visible: z.ZodBoolean;
|
|
41
|
+
}, z.core.$strip>]>;
|
|
42
|
+
declare const UpdateProductResponseSchema: z.ZodAny;
|
|
43
|
+
|
|
44
|
+
declare const setProductsInventory: (reason: string, items: z.input<typeof SetProductInventoryItemSchema>[]) => Effect.Effect<{
|
|
45
|
+
transaction_id: string;
|
|
46
|
+
}[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
27
47
|
|
|
28
48
|
declare const setProductVisibility: (dtos: z.input<typeof UpdateProductVisibilitySchema>[]) => effect_Effect.Effect<any[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
29
49
|
|
|
30
|
-
|
|
50
|
+
declare const updateProducts: (dtos: z.input<typeof UpdateProductSchema>[]) => Effect.Effect<any[], SomeBigCommerceError | InputValidationError, BigCommerceFetcher>;
|
|
51
|
+
|
|
52
|
+
export { SetInventoryResponseSchema, SetProductInventoryItemSchema, SetProductInventorySchema, UpdateProductResponseSchema, UpdateProductSchema, UpdateProductVisibilitySchema, setProductVisibility, setProductsInventory, updateProducts };
|
package/dist/products.js
CHANGED
|
@@ -30,30 +30,106 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/bigcommerce-entities/products/index.ts
|
|
31
31
|
var products_exports = {};
|
|
32
32
|
__export(products_exports, {
|
|
33
|
+
SetInventoryResponseSchema: () => SetInventoryResponseSchema,
|
|
34
|
+
SetProductInventoryItemSchema: () => SetProductInventoryItemSchema,
|
|
35
|
+
SetProductInventorySchema: () => SetProductInventorySchema,
|
|
36
|
+
UpdateProductResponseSchema: () => UpdateProductResponseSchema,
|
|
37
|
+
UpdateProductSchema: () => UpdateProductSchema,
|
|
38
|
+
UpdateProductVisibilitySchema: () => UpdateProductVisibilitySchema,
|
|
33
39
|
setProductVisibility: () => setProductVisibility,
|
|
34
|
-
setProductsInventory: () => setProductsInventory
|
|
40
|
+
setProductsInventory: () => setProductsInventory,
|
|
41
|
+
updateProducts: () => updateProducts
|
|
35
42
|
});
|
|
36
43
|
module.exports = __toCommonJS(products_exports);
|
|
37
44
|
|
|
45
|
+
// src/bigcommerce-entities/products/schemas/set-inventory.schema.ts
|
|
46
|
+
var z = __toESM(require("zod"));
|
|
47
|
+
var SetProductInventoryItemSchema = z.union([
|
|
48
|
+
z.object({
|
|
49
|
+
location_id: z.int(),
|
|
50
|
+
product_id: z.int(),
|
|
51
|
+
quantity: z.int().min(0)
|
|
52
|
+
}),
|
|
53
|
+
z.object({
|
|
54
|
+
location_id: z.int(),
|
|
55
|
+
sku: z.string(),
|
|
56
|
+
quantity: z.int().min(0)
|
|
57
|
+
})
|
|
58
|
+
]);
|
|
59
|
+
var SetProductInventorySchema = z.object({
|
|
60
|
+
reason: z.string(),
|
|
61
|
+
items: z.array(SetProductInventoryItemSchema)
|
|
62
|
+
});
|
|
63
|
+
var SetInventoryResponseSchema = z.object({
|
|
64
|
+
transaction_id: z.string()
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// src/bigcommerce-entities/products/schemas/update-products.schema.ts
|
|
68
|
+
var z2 = __toESM(require("zod"));
|
|
69
|
+
var UpdateProductVisibilitySchema = z2.object({
|
|
70
|
+
id: z2.number(),
|
|
71
|
+
is_visible: z2.boolean()
|
|
72
|
+
});
|
|
73
|
+
var UpdateProductSchema = z2.union([UpdateProductVisibilitySchema]);
|
|
74
|
+
var UpdateProductResponseSchema = z2.any();
|
|
75
|
+
|
|
38
76
|
// src/bigcommerce-entities/products/set-inventory.ts
|
|
39
77
|
var import_effect8 = require("effect");
|
|
40
78
|
|
|
41
79
|
// src/constants.ts
|
|
42
80
|
var import_effect = require("effect");
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
81
|
+
var DEFAULTS = {
|
|
82
|
+
retry: {
|
|
83
|
+
policy: import_effect.Schedule.exponential(import_effect.Duration.millis(200), 2).pipe(
|
|
84
|
+
import_effect.Schedule.intersect(import_effect.Schedule.recurs(3))
|
|
85
|
+
)
|
|
86
|
+
},
|
|
87
|
+
timeout: {
|
|
88
|
+
ms: 3e4
|
|
89
|
+
},
|
|
90
|
+
bigcommerceUrls: {
|
|
91
|
+
b2b: "https://api-b2b.bigcommerce.com/api",
|
|
92
|
+
regular: "https://api.bigcommerce.com/stores"
|
|
93
|
+
},
|
|
94
|
+
customers: {
|
|
95
|
+
getBatchSize: 250
|
|
96
|
+
},
|
|
97
|
+
salesStaff: {
|
|
98
|
+
getBatchSize: 250
|
|
99
|
+
},
|
|
100
|
+
companies: {
|
|
101
|
+
salesStaffAssignments: {
|
|
102
|
+
assignBatchSize: 10,
|
|
103
|
+
concurrency: 2
|
|
104
|
+
},
|
|
105
|
+
extraFields: {
|
|
106
|
+
getBatchSize: 250
|
|
107
|
+
},
|
|
108
|
+
roles: {
|
|
109
|
+
getBatchSize: 250
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
products: {
|
|
113
|
+
updateBatchSize: 5,
|
|
114
|
+
updateConcurrency: 2,
|
|
115
|
+
inventory: {
|
|
116
|
+
updateBatchSize: 2e3,
|
|
117
|
+
updateConcurrency: 2
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
orders: {
|
|
121
|
+
getAllBatchSize: 250,
|
|
122
|
+
shippingAddresses: {
|
|
123
|
+
getAllBatchSize: 250
|
|
124
|
+
},
|
|
125
|
+
products: {
|
|
126
|
+
getAllBatchSize: 250
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
priceLists: {
|
|
130
|
+
getAllBatchSize: 250
|
|
131
|
+
}
|
|
47
132
|
};
|
|
48
|
-
var UPDATE_INVENTORY_BATCH_SIZE = 2e3;
|
|
49
|
-
var UPDATE_INVENTORY_CONCURRENCY = 2;
|
|
50
|
-
var DEFAULT_RETRY_TIMES = 2;
|
|
51
|
-
var DEFAULT_RETRY_WAIT = 200;
|
|
52
|
-
var DEFAULT_RETRY_SCHEDULE = import_effect.Schedule.exponential(import_effect.Duration.millis(DEFAULT_RETRY_WAIT));
|
|
53
|
-
var RETRY_POLICY_WITH_BACKOFF = import_effect.Schedule.exponential(
|
|
54
|
-
import_effect.Duration.millis(DEFAULT_RETRY_WAIT),
|
|
55
|
-
2
|
|
56
|
-
).pipe(import_effect.Schedule.intersect(import_effect.Schedule.recurs(DEFAULT_RETRY_TIMES)));
|
|
57
133
|
|
|
58
134
|
// src/core/bigcommerce.error.ts
|
|
59
135
|
var import_effect2 = require("effect");
|
|
@@ -111,7 +187,7 @@ var getBigCommerceTimeout = () => {
|
|
|
111
187
|
return import_effect4.Config.nested(import_effect4.Config.number("TIMEOUT"), "BIGCOMMERCE").pipe(
|
|
112
188
|
import_effect4.Effect.mapError(() => new NoBigCommerceConfigError({ key: "TIMEOUT" })),
|
|
113
189
|
// Default to 30 seconds if not configured
|
|
114
|
-
import_effect4.Effect.orElse(() => import_effect4.Effect.succeed(
|
|
190
|
+
import_effect4.Effect.orElse(() => import_effect4.Effect.succeed(DEFAULTS.timeout.ms))
|
|
115
191
|
);
|
|
116
192
|
};
|
|
117
193
|
var BigCommerceConfigLive = import_effect4.Layer.effect(
|
|
@@ -138,7 +214,7 @@ var BigCommerceConfigTest = import_effect4.Layer.succeed(BigCommerceConfig, {
|
|
|
138
214
|
getClientId: import_effect4.Effect.succeed("test"),
|
|
139
215
|
getClientSecret: import_effect4.Effect.succeed("test"),
|
|
140
216
|
getStoreHash: import_effect4.Effect.succeed("test"),
|
|
141
|
-
getTimeout: import_effect4.Effect.succeed(
|
|
217
|
+
getTimeout: import_effect4.Effect.succeed(DEFAULTS.timeout.ms)
|
|
142
218
|
});
|
|
143
219
|
|
|
144
220
|
// src/core/bigcommerce.fetcher.live.ts
|
|
@@ -210,8 +286,12 @@ var applyParams = (url, params) => {
|
|
|
210
286
|
if (!params) {
|
|
211
287
|
return base;
|
|
212
288
|
}
|
|
213
|
-
|
|
214
|
-
base.
|
|
289
|
+
if (typeof params === "string") {
|
|
290
|
+
base.search = params;
|
|
291
|
+
} else {
|
|
292
|
+
for (const [key, value] of Object.entries(params)) {
|
|
293
|
+
base.searchParams.append(key, `${value}`);
|
|
294
|
+
}
|
|
215
295
|
}
|
|
216
296
|
return base;
|
|
217
297
|
};
|
|
@@ -221,9 +301,9 @@ var getBase = ({
|
|
|
221
301
|
version
|
|
222
302
|
}) => {
|
|
223
303
|
if (isB2B) {
|
|
224
|
-
return `${
|
|
304
|
+
return `${DEFAULTS.bigcommerceUrls.b2b}/${version}/io/${path}`;
|
|
225
305
|
}
|
|
226
|
-
return `${
|
|
306
|
+
return `${DEFAULTS.bigcommerceUrls.regular}/[storeHash]/${version}/${path}`;
|
|
227
307
|
};
|
|
228
308
|
function processSuccessResponse(response, schema) {
|
|
229
309
|
return import_effect5.Effect.tryPromise({
|
|
@@ -300,34 +380,12 @@ var validateInput = (schema, data) => {
|
|
|
300
380
|
});
|
|
301
381
|
};
|
|
302
382
|
|
|
303
|
-
// src/bigcommerce-entities/products/schemas/set-inventory.schema.ts
|
|
304
|
-
var z = __toESM(require("zod"));
|
|
305
|
-
var SetProductInventoryItemSchema = z.union([
|
|
306
|
-
z.object({
|
|
307
|
-
location_id: z.int(),
|
|
308
|
-
product_id: z.int(),
|
|
309
|
-
quantity: z.int().min(0)
|
|
310
|
-
}),
|
|
311
|
-
z.object({
|
|
312
|
-
location_id: z.int(),
|
|
313
|
-
sku: z.string(),
|
|
314
|
-
quantity: z.int().min(0)
|
|
315
|
-
})
|
|
316
|
-
]);
|
|
317
|
-
var SetProductInventorySchema = z.object({
|
|
318
|
-
reason: z.string(),
|
|
319
|
-
items: z.array(SetProductInventoryItemSchema)
|
|
320
|
-
});
|
|
321
|
-
var SetInventoryResponseSchema = z.object({
|
|
322
|
-
transaction_id: z.string()
|
|
323
|
-
});
|
|
324
|
-
|
|
325
383
|
// src/bigcommerce-entities/products/set-inventory.ts
|
|
326
384
|
var setProductsInventory = (reason, items) => {
|
|
327
385
|
return import_effect8.Stream.fromIterable(items).pipe(
|
|
328
|
-
import_effect8.Stream.grouped(
|
|
386
|
+
import_effect8.Stream.grouped(DEFAULTS.products.inventory.updateBatchSize),
|
|
329
387
|
import_effect8.Stream.mapEffect((chunk) => updateProductInventory(reason, chunk), {
|
|
330
|
-
concurrency:
|
|
388
|
+
concurrency: DEFAULTS.products.inventory.updateConcurrency
|
|
331
389
|
}),
|
|
332
390
|
import_effect8.Stream.runCollect,
|
|
333
391
|
import_effect8.Effect.map(import_effect8.Chunk.toArray)
|
|
@@ -349,7 +407,7 @@ var updateProductInventory = (reason, items) => {
|
|
|
349
407
|
body: validatedBody,
|
|
350
408
|
resultSchema: SetInventoryResponseSchema
|
|
351
409
|
}),
|
|
352
|
-
|
|
410
|
+
DEFAULTS.retry.policy
|
|
353
411
|
);
|
|
354
412
|
});
|
|
355
413
|
};
|
|
@@ -357,23 +415,12 @@ var updateProductInventory = (reason, items) => {
|
|
|
357
415
|
// src/bigcommerce-entities/products/update-products.ts
|
|
358
416
|
var import_effect9 = require("effect");
|
|
359
417
|
var z3 = __toESM(require("zod"));
|
|
360
|
-
|
|
361
|
-
// src/bigcommerce-entities/products/schemas/update-products.schema.ts
|
|
362
|
-
var z2 = __toESM(require("zod"));
|
|
363
|
-
var UpdateProductVisibilitySchema = z2.object({
|
|
364
|
-
id: z2.number(),
|
|
365
|
-
is_visible: z2.boolean()
|
|
366
|
-
});
|
|
367
|
-
var UpdateProductSchema = z2.union([UpdateProductVisibilitySchema]);
|
|
368
|
-
var UpdateProductResponseSchema = z2.any();
|
|
369
|
-
|
|
370
|
-
// src/bigcommerce-entities/products/update-products.ts
|
|
371
418
|
var UpdateProductArraySchema = z3.array(UpdateProductSchema);
|
|
372
419
|
var updateProducts = (dtos) => {
|
|
373
420
|
return import_effect9.Stream.fromIterable(dtos).pipe(
|
|
374
|
-
import_effect9.Stream.grouped(
|
|
421
|
+
import_effect9.Stream.grouped(DEFAULTS.products.updateBatchSize),
|
|
375
422
|
import_effect9.Stream.mapEffect((chunk) => updateProductBatch(chunk), {
|
|
376
|
-
concurrency:
|
|
423
|
+
concurrency: DEFAULTS.products.updateConcurrency
|
|
377
424
|
}),
|
|
378
425
|
import_effect9.Stream.runCollect,
|
|
379
426
|
import_effect9.Effect.map(import_effect9.Chunk.toArray)
|
|
@@ -392,7 +439,7 @@ var updateProductBatch = (items) => {
|
|
|
392
439
|
body: validatedBody,
|
|
393
440
|
resultSchema: UpdateProductResponseSchema
|
|
394
441
|
}),
|
|
395
|
-
|
|
442
|
+
DEFAULTS.retry.policy
|
|
396
443
|
);
|
|
397
444
|
});
|
|
398
445
|
};
|
|
@@ -403,7 +450,14 @@ var setProductVisibility = (dtos) => {
|
|
|
403
450
|
};
|
|
404
451
|
// Annotate the CommonJS export names for ESM import in node:
|
|
405
452
|
0 && (module.exports = {
|
|
453
|
+
SetInventoryResponseSchema,
|
|
454
|
+
SetProductInventoryItemSchema,
|
|
455
|
+
SetProductInventorySchema,
|
|
456
|
+
UpdateProductResponseSchema,
|
|
457
|
+
UpdateProductSchema,
|
|
458
|
+
UpdateProductVisibilitySchema,
|
|
406
459
|
setProductVisibility,
|
|
407
|
-
setProductsInventory
|
|
460
|
+
setProductsInventory,
|
|
461
|
+
updateProducts
|
|
408
462
|
});
|
|
409
463
|
//# sourceMappingURL=products.js.map
|
package/dist/products.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bigcommerce-entities/products/index.ts","../src/bigcommerce-entities/products/set-inventory.ts","../src/constants.ts","../src/core/bigcommerce.error.ts","../src/core/bigcommerce.fetcher.ts","../src/core/bigcommerce.fetcher.live.ts","../src/core/config.ts","../src/validation/index.ts","../src/validation/validation.error.ts","../src/bigcommerce-entities/products/schemas/set-inventory.schema.ts","../src/bigcommerce-entities/products/update-products.ts","../src/bigcommerce-entities/products/schemas/update-products.schema.ts","../src/bigcommerce-entities/products/set-visibility.ts"],"sourcesContent":["export * from './schemas';\nexport * from './set-inventory';\nexport * from './set-visibility';\n","import { Chunk, Effect, Stream } from 'effect';\nimport * as z from 'zod';\nimport {\n RETRY_POLICY_WITH_BACKOFF,\n UPDATE_INVENTORY_BATCH_SIZE,\n UPDATE_INVENTORY_CONCURRENCY,\n} from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n SetInventoryResponseSchema,\n SetProductInventorySchema,\n type SetProductInventoryItemSchema,\n} from './schemas/set-inventory.schema';\n\nexport const setProductsInventory = (\n reason: string,\n items: z.input<typeof SetProductInventoryItemSchema>[],\n) => {\n return Stream.fromIterable(items).pipe(\n Stream.grouped(UPDATE_INVENTORY_BATCH_SIZE),\n Stream.mapEffect((chunk) => updateProductInventory(reason, chunk), {\n concurrency: UPDATE_INVENTORY_CONCURRENCY,\n }),\n Stream.runCollect,\n Effect.map(Chunk.toArray),\n );\n};\n\nconst updateProductInventory = (\n reason: string,\n items: Chunk.Chunk<z.input<typeof SetProductInventoryItemSchema>>,\n) => {\n return Effect.gen(function* () {\n const validatedBody = yield* validateInput(SetProductInventorySchema, {\n reason,\n items: Chunk.toArray(items),\n });\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: false,\n method: 'PUT',\n path: 'inventory/adjustments/absolute',\n version: 'v3',\n body: validatedBody,\n resultSchema: SetInventoryResponseSchema,\n }),\n RETRY_POLICY_WITH_BACKOFF,\n );\n });\n};\n","import { Duration, Schedule } from 'effect';\n\nexport const DEFAULT_TIMEOUT_MS = 30000;\nexport const API_BASE_URLS = {\n B2B: 'https://api-b2b.bigcommerce.com/api',\n REGULAR: 'https://api.bigcommerce.com/stores',\n} as const;\nexport const GET_ORDER_BATCH_SIZE = 250;\nexport const UPDATE_PRODUCT_BATCH_SIZE = 5;\nexport const UPDATE_INVENTORY_BATCH_SIZE = 2000;\nexport const UPDATE_INVENTORY_CONCURRENCY = 2;\nexport const DEFAULT_RETRY_TIMES = 2;\nexport const DEFAULT_RETRY_WAIT = 200;\nexport const DEFAULT_RETRY_SCHEDULE = Schedule.exponential(Duration.millis(DEFAULT_RETRY_WAIT));\nexport const RETRY_POLICY_WITH_BACKOFF = Schedule.exponential(\n Duration.millis(DEFAULT_RETRY_WAIT),\n 2,\n).pipe(Schedule.intersect(Schedule.recurs(DEFAULT_RETRY_TIMES)));\nexport const GET_CUSTOMERS_BATCH_SIZE = 100;\n","import { Data } from 'effect';\nimport * as z from 'zod';\nexport class BigCommerceUnprocessableEntityError extends Data.TaggedError(\n 'BigCommerceUnprocessableEntityError',\n)<{\n readonly errorDetails: unknown;\n}> {}\n\nexport class BigCommerceUnauthorizedError extends Data.TaggedError(\n 'BigCommerceUnauthorizedError',\n) {}\n\nexport class BigCommerceForbiddenError extends Data.TaggedError('BigCommerceForbiddenError') {}\n\nexport class BigCommerceNotFoundError extends Data.TaggedError('BigCommerceNotFoundError') {}\n\nexport class BigCommerceConflictError extends Data.TaggedError('BigCommerceConflictError')<{\n readonly details: unknown;\n}> {}\n\nexport class BigCommerceConnectionError extends Data.TaggedError('BigCommerceConnectionError')<{\n readonly message: string;\n readonly type: 'timeout' | 'internalError' | 'unknown';\n}> {}\n\nexport class BigCommerceUnknownError extends Data.TaggedError('BigCommerceUnknownError')<{\n cause: unknown;\n}> {}\n\nexport class BigCommerceInvalidResponseError extends Data.TaggedError(\n 'BigCommerceInvalidResponseError',\n)<{\n cause: unknown;\n}> {}\n\nexport class BigCommerceInvalidRequestError extends Data.TaggedError(\n 'BigCommerceInvalidRequestError',\n)<{\n readonly errorDetails: unknown;\n}> {}\n\nexport class BigCommerceParseResponseError extends Data.TaggedError(\n 'BigCommerceParseResponseError',\n)<{\n readonly error: z.ZodError;\n}> {}\n\nexport type SomeBigCommerceError =\n | BigCommerceUnprocessableEntityError\n | BigCommerceUnauthorizedError\n | BigCommerceForbiddenError\n | BigCommerceNotFoundError\n | BigCommerceConflictError\n | BigCommerceConnectionError\n | BigCommerceUnknownError\n | BigCommerceInvalidResponseError\n | BigCommerceInvalidRequestError\n | BigCommerceParseResponseError;\n","import { Context, Effect } from 'effect';\nimport * as z from 'zod';\nimport { type SomeBigCommerceError } from './bigcommerce.error';\nexport type BigCommerceFetchMethods = 'GET' | 'POST' | 'PUT' | 'DELETE';\nexport interface BigCommerceFetchParams<\n // Always send json for now, maybe later send a Blob\n Body extends Record<string, unknown> | Array<Record<string, unknown>>,\n Query extends Record<string, string>,\n Result extends z.ZodType,\n> {\n readonly body?: Body;\n readonly query?: Query;\n readonly method: BigCommerceFetchMethods;\n readonly path: string;\n readonly headers?: Record<string, string>;\n readonly isB2B: boolean;\n readonly version: 'v3' | 'v2';\n readonly resultSchema: Result;\n}\n\nexport class BigCommerceFetcher extends Context.Tag('BigCommerceFetcher')<\n BigCommerceFetcher,\n {\n readonly fetch: <\n Body extends Record<string, unknown> | Array<Record<string, unknown>>,\n Query extends Record<string, string>,\n Result extends z.ZodType,\n >(\n params: BigCommerceFetchParams<Body, Query, Result>,\n ) => Effect.Effect<z.output<Result>, SomeBigCommerceError>;\n }\n>() {}\n","import { Effect, Layer, Match } from 'effect';\nimport * as z from 'zod';\nimport { API_BASE_URLS } from '../constants';\nimport {\n BigCommerceConflictError,\n BigCommerceConnectionError,\n BigCommerceForbiddenError,\n BigCommerceInvalidRequestError,\n BigCommerceInvalidResponseError,\n BigCommerceNotFoundError,\n BigCommerceParseResponseError,\n BigCommerceUnauthorizedError,\n BigCommerceUnknownError,\n BigCommerceUnprocessableEntityError,\n type SomeBigCommerceError,\n} from './bigcommerce.error';\nimport { BigCommerceFetcher } from './bigcommerce.fetcher';\nimport { BigCommerceConfig, type NoBigCommerceConfigError } from './config';\n\nconst BigCommerceStatusCodes = {\n UNAUTHORIZED: 401,\n CONFLICT: 409,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n INVALID_REQUEST: 400,\n} as const;\n\nexport const BigCommerceFetcherLive: Layer.Layer<\n BigCommerceFetcher,\n NoBigCommerceConfigError,\n BigCommerceConfig\n> = Layer.effect(\n BigCommerceFetcher,\n Effect.gen(function* () {\n const config = yield* BigCommerceConfig;\n const storeHash = yield* config.getStoreHash;\n const accessToken = yield* config.getAccessToken;\n const timeout = yield* config.getTimeout;\n\n return {\n fetch: (params) => {\n const base = getBase(params);\n const headers: Record<string, string> = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'x-auth-token': accessToken,\n };\n\n if (params.isB2B) {\n headers['x-store-hash'] = storeHash;\n }\n const url = applyParams(base.replace('[storeHash]', storeHash), params.query);\n\n return Effect.tryPromise({\n try: () =>\n fetch(url, {\n headers,\n signal: AbortSignal.timeout(timeout),\n method: params.method,\n ...(params.body && { body: JSON.stringify(params.body) }),\n }),\n catch: (error) => {\n if (error instanceof Error && error.name === 'TimeoutError') {\n return new BigCommerceConnectionError({\n message: `Request timeout after ${timeout}ms`,\n type: 'timeout',\n });\n }\n if (error instanceof Error && error.name === 'AbortError') {\n return new BigCommerceConnectionError({\n message: `Request timeout after ${timeout}ms`,\n type: 'timeout',\n });\n }\n return new BigCommerceUnknownError({ cause: error });\n },\n }).pipe(\n Effect.tapError((error) =>\n Effect.logError('Failed to fetch from BigCommerce API', error.cause),\n ),\n Effect.flatMap((response) => transformResponse(response, params.resultSchema)),\n );\n },\n };\n }),\n);\nconst applyParams = (url: string, params?: Record<string, string | number>): URL => {\n const base = new URL(url);\n if (!params) {\n return base;\n }\n for (const [key, value] of Object.entries(params)) {\n base.searchParams.append(key, `${value}`);\n }\n return base;\n};\n\nconst getBase = ({\n isB2B,\n path,\n version,\n}: {\n isB2B: boolean;\n path: string;\n version: 'v3' | 'v2';\n}): string => {\n if (isB2B) {\n return `${API_BASE_URLS.B2B}/${version}/io/${path}`;\n }\n return `${API_BASE_URLS.REGULAR}/[storeHash]/${version}/${path}`;\n};\nfunction processSuccessResponse<Schema extends z.ZodTypeAny>(response: Response, schema: Schema) {\n return Effect.tryPromise({\n try: () => response.json(),\n catch: (error) => new BigCommerceInvalidResponseError({ cause: error }),\n }).pipe(\n Effect.tapError((error) =>\n Effect.logError('Error parsing response from BigCommerce API', error.cause),\n ),\n Effect.tryMap({\n try: (json) => schema.parse(json),\n catch: (error) => new BigCommerceParseResponseError({ error: error as z.ZodError }),\n }),\n );\n}\nconst processErrorResponse = (response: Response) => {\n const code = response.status;\n return Effect.tryPromise({\n try: () => response.json(),\n catch: (error) => new BigCommerceInvalidResponseError({ cause: error }),\n }).pipe(\n Effect.tapError((error) => Effect.logError('Error parsing error response', error.cause)),\n Effect.flatMap((errorDetails) =>\n Effect.fail(\n Match.value(code).pipe(\n Match.when(\n BigCommerceStatusCodes.INVALID_REQUEST,\n () => new BigCommerceInvalidRequestError({ errorDetails }),\n ),\n Match.when(BigCommerceStatusCodes.UNAUTHORIZED, () => new BigCommerceUnauthorizedError()),\n Match.when(BigCommerceStatusCodes.FORBIDDEN, () => new BigCommerceForbiddenError()),\n Match.when(BigCommerceStatusCodes.NOT_FOUND, () => new BigCommerceNotFoundError()),\n Match.when(\n BigCommerceStatusCodes.CONFLICT,\n () => new BigCommerceConflictError({ details: errorDetails }),\n ),\n Match.when(\n BigCommerceStatusCodes.UNPROCESSABLE_ENTITY,\n () => new BigCommerceUnprocessableEntityError({ errorDetails }),\n ),\n Match.when(\n (code) => code >= 500,\n () =>\n new BigCommerceConnectionError({\n message: `Server error: ${code}`,\n type:\n code === BigCommerceStatusCodes.INTERNAL_SERVER_ERROR\n ? 'internalError'\n : code === BigCommerceStatusCodes.BAD_GATEWAY ||\n code === BigCommerceStatusCodes.GATEWAY_TIMEOUT\n ? 'timeout'\n : 'internalError',\n }),\n ),\n Match.orElse(() => new BigCommerceUnknownError({ cause: errorDetails })),\n ),\n ),\n ),\n );\n};\n\nconst transformResponse = <Schema extends z.ZodTypeAny>(\n response: Response,\n schema: Schema,\n): Effect.Effect<z.output<Schema>, SomeBigCommerceError> => {\n if (response.ok) {\n return processSuccessResponse(response, schema);\n }\n return processErrorResponse(response);\n};\n\n// type PendingErrors = Exclude<\n// SomeBigCommerceError,\n// Effect.Effect.Error<ReturnType<typeof processErrorResponse>> | BigCommerceParseResponseError\n// >;\n","import { Config, Context, Data, Effect, Layer } from 'effect';\nimport { DEFAULT_TIMEOUT_MS } from '../constants';\n\n// Define a custom error type using Data.TaggedError\nexport class NoBigCommerceConfigError extends Data.TaggedError('NoBigCommerceConfigError')<{\n readonly key: string;\n}> {}\n\nexport class BigCommerceConfig extends Context.Tag('BigCommerceConfig')<\n BigCommerceConfig,\n {\n readonly getStoreHash: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getClientId: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getClientSecret: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getAccessToken: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getTimeout: Effect.Effect<number, NoBigCommerceConfigError>;\n }\n>() {}\n\nconst getBigCommerceConfig = (key: string) => {\n return Config.nested(Config.string(key), 'BIGCOMMERCE').pipe(\n Effect.mapError(() => new NoBigCommerceConfigError({ key })),\n );\n};\n\nconst getBigCommerceTimeout = () => {\n return Config.nested(Config.number('TIMEOUT'), 'BIGCOMMERCE').pipe(\n Effect.mapError(() => new NoBigCommerceConfigError({ key: 'TIMEOUT' })),\n // Default to 30 seconds if not configured\n Effect.orElse(() => Effect.succeed(DEFAULT_TIMEOUT_MS)),\n );\n};\n\nexport const BigCommerceConfigLive = Layer.effect(\n BigCommerceConfig,\n Effect.gen(function* () {\n const [storeHash, clientId, clientSecret, accessToken, timeout] = yield* Effect.all([\n getBigCommerceConfig('STORE_HASH'),\n getBigCommerceConfig('CLIENT_ID'),\n getBigCommerceConfig('CLIENT_SECRET'),\n getBigCommerceConfig('ACCESS_TOKEN'),\n getBigCommerceTimeout(),\n ]);\n\n return {\n getStoreHash: Effect.succeed(storeHash),\n getClientId: Effect.succeed(clientId),\n getClientSecret: Effect.succeed(clientSecret),\n getAccessToken: Effect.succeed(accessToken),\n getTimeout: Effect.succeed(timeout),\n };\n }),\n);\n\nexport const BigCommerceConfigTest = Layer.succeed(BigCommerceConfig, {\n getAccessToken: Effect.succeed('test'),\n getClientId: Effect.succeed('test'),\n getClientSecret: Effect.succeed('test'),\n getStoreHash: Effect.succeed('test'),\n getTimeout: Effect.succeed(DEFAULT_TIMEOUT_MS),\n});\n","import { Effect } from 'effect';\nimport * as z from 'zod';\nimport { InputValidationError } from './validation.error';\nexport const validateInput = <Schema extends z.ZodType>(schema: Schema, data: z.input<Schema>) => {\n return Effect.try({\n try: () => schema.parse(data),\n catch: (error) => new InputValidationError({ input: data, error: error as z.ZodError }),\n });\n};\n","import { Data } from 'effect';\nimport * as z from 'zod';\nexport class InputValidationError extends Data.TaggedError('InputValidationError')<{\n input: unknown;\n error: z.ZodError;\n}> {}\n","import * as z from 'zod';\nexport const SetProductInventoryItemSchema = z.union([\n z.object({\n location_id: z.int(),\n product_id: z.int(),\n quantity: z.int().min(0),\n }),\n z.object({\n location_id: z.int(),\n sku: z.string(),\n quantity: z.int().min(0),\n }),\n]);\nexport const SetProductInventorySchema = z.object({\n reason: z.string(),\n items: z.array(SetProductInventoryItemSchema),\n});\nexport const SetInventoryResponseSchema = z.object({\n transaction_id: z.string(),\n});\n","import { Chunk, Effect, Stream } from 'effect';\nimport * as z from 'zod';\nimport {\n RETRY_POLICY_WITH_BACKOFF,\n UPDATE_INVENTORY_BATCH_SIZE,\n UPDATE_INVENTORY_CONCURRENCY,\n} from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n UpdateProductResponseSchema,\n UpdateProductSchema,\n type UpdateProductInput,\n} from './schemas/update-products.schema';\nconst UpdateProductArraySchema = z.array(UpdateProductSchema);\nexport const updateProducts = (dtos: UpdateProductInput[]) => {\n return Stream.fromIterable(dtos).pipe(\n Stream.grouped(UPDATE_INVENTORY_BATCH_SIZE),\n Stream.mapEffect((chunk) => updateProductBatch(chunk), {\n concurrency: UPDATE_INVENTORY_CONCURRENCY,\n }),\n Stream.runCollect,\n Effect.map(Chunk.toArray),\n );\n};\n\nconst updateProductBatch = (items: Chunk.Chunk<UpdateProductInput>) => {\n return Effect.gen(function* () {\n const validatedBody = yield* validateInput(UpdateProductArraySchema, Chunk.toArray(items));\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: false,\n method: 'PUT',\n path: 'inventory/adjustments/absolute',\n version: 'v3',\n body: validatedBody,\n resultSchema: UpdateProductResponseSchema,\n }),\n RETRY_POLICY_WITH_BACKOFF,\n );\n });\n};\n","import * as z from 'zod';\nexport const UpdateProductVisibilitySchema = z.object({\n id: z.number(),\n is_visible: z.boolean(),\n});\n\nexport const UpdateProductSchema = z.union([UpdateProductVisibilitySchema]);\n\nexport const UpdateProductResponseSchema = z.any();\n","import * as z from 'zod';\nimport { UpdateProductVisibilitySchema } from './schemas/update-products.schema';\nimport { updateProducts } from './update-products';\nexport const setProductVisibility = (dtos: z.input<typeof UpdateProductVisibilitySchema>[]) => {\n return updateProducts(dtos);\n};\n"],"mappings":"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","names":["import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect","import_effect","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/bigcommerce-entities/products/index.ts","../src/bigcommerce-entities/products/schemas/set-inventory.schema.ts","../src/bigcommerce-entities/products/schemas/update-products.schema.ts","../src/bigcommerce-entities/products/set-inventory.ts","../src/constants.ts","../src/core/bigcommerce.error.ts","../src/core/bigcommerce.fetcher.ts","../src/core/bigcommerce.fetcher.live.ts","../src/core/config.ts","../src/validation/index.ts","../src/validation/validation.error.ts","../src/bigcommerce-entities/products/update-products.ts","../src/bigcommerce-entities/products/set-visibility.ts"],"sourcesContent":["export * from './schemas';\nexport * from './set-inventory';\nexport * from './set-visibility';\nexport * from './update-products';\n","import * as z from 'zod';\nexport const SetProductInventoryItemSchema = z.union([\n z.object({\n location_id: z.int(),\n product_id: z.int(),\n quantity: z.int().min(0),\n }),\n z.object({\n location_id: z.int(),\n sku: z.string(),\n quantity: z.int().min(0),\n }),\n]);\nexport const SetProductInventorySchema = z.object({\n reason: z.string(),\n items: z.array(SetProductInventoryItemSchema),\n});\nexport const SetInventoryResponseSchema = z.object({\n transaction_id: z.string(),\n});\n","import * as z from 'zod';\nexport const UpdateProductVisibilitySchema = z.object({\n id: z.number(),\n is_visible: z.boolean(),\n});\n\nexport const UpdateProductSchema = z.union([UpdateProductVisibilitySchema]);\n\nexport const UpdateProductResponseSchema = z.any();\n","import { Chunk, Effect, Stream } from 'effect';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n SetInventoryResponseSchema,\n SetProductInventorySchema,\n type SetProductInventoryItemSchema,\n} from './schemas/set-inventory.schema';\n\nexport const setProductsInventory = (\n reason: string,\n items: z.input<typeof SetProductInventoryItemSchema>[],\n) => {\n return Stream.fromIterable(items).pipe(\n Stream.grouped(DEFAULTS.products.inventory.updateBatchSize),\n Stream.mapEffect((chunk) => updateProductInventory(reason, chunk), {\n concurrency: DEFAULTS.products.inventory.updateConcurrency,\n }),\n Stream.runCollect,\n Effect.map(Chunk.toArray),\n );\n};\n\nconst updateProductInventory = (\n reason: string,\n items: Chunk.Chunk<z.input<typeof SetProductInventoryItemSchema>>,\n) => {\n return Effect.gen(function* () {\n const validatedBody = yield* validateInput(SetProductInventorySchema, {\n reason,\n items: Chunk.toArray(items),\n });\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: false,\n method: 'PUT',\n path: 'inventory/adjustments/absolute',\n version: 'v3',\n body: validatedBody,\n resultSchema: SetInventoryResponseSchema,\n }),\n DEFAULTS.retry.policy,\n );\n });\n};\n","import { Duration, Schedule } from 'effect';\n\nexport const DEFAULTS = {\n retry: {\n policy: Schedule.exponential(Duration.millis(200), 2).pipe(\n Schedule.intersect(Schedule.recurs(3)),\n ),\n },\n timeout: {\n ms: 30000,\n },\n bigcommerceUrls: {\n b2b: 'https://api-b2b.bigcommerce.com/api',\n regular: 'https://api.bigcommerce.com/stores',\n },\n customers: {\n getBatchSize: 250,\n },\n salesStaff: {\n getBatchSize: 250,\n },\n companies: {\n salesStaffAssignments: {\n assignBatchSize: 10,\n concurrency: 2,\n },\n extraFields: {\n getBatchSize: 250,\n },\n roles: {\n getBatchSize: 250,\n },\n },\n products: {\n updateBatchSize: 5,\n updateConcurrency: 2,\n inventory: {\n updateBatchSize: 2000,\n updateConcurrency: 2,\n },\n },\n orders: {\n getAllBatchSize: 250,\n shippingAddresses: {\n getAllBatchSize: 250,\n },\n products: {\n getAllBatchSize: 250,\n },\n },\n priceLists: {\n getAllBatchSize: 250,\n },\n} as const;\n","import { Data } from 'effect';\nimport * as z from 'zod';\nexport class BigCommerceUnprocessableEntityError extends Data.TaggedError(\n 'BigCommerceUnprocessableEntityError',\n)<{\n readonly errorDetails: unknown;\n}> {}\n\nexport class BigCommerceUnauthorizedError extends Data.TaggedError(\n 'BigCommerceUnauthorizedError',\n) {}\n\nexport class BigCommerceForbiddenError extends Data.TaggedError('BigCommerceForbiddenError') {}\n\nexport class BigCommerceNotFoundError extends Data.TaggedError('BigCommerceNotFoundError') {}\n\nexport class BigCommerceConflictError extends Data.TaggedError('BigCommerceConflictError')<{\n readonly details: unknown;\n}> {}\n\nexport class BigCommerceConnectionError extends Data.TaggedError('BigCommerceConnectionError')<{\n readonly message: string;\n readonly type: 'timeout' | 'internalError' | 'unknown';\n}> {}\n\nexport class BigCommerceUnknownError extends Data.TaggedError('BigCommerceUnknownError')<{\n cause: unknown;\n}> {}\n\nexport class BigCommerceInvalidResponseError extends Data.TaggedError(\n 'BigCommerceInvalidResponseError',\n)<{\n cause: unknown;\n}> {}\n\nexport class BigCommerceInvalidRequestError extends Data.TaggedError(\n 'BigCommerceInvalidRequestError',\n)<{\n readonly errorDetails: unknown;\n}> {}\n\nexport class BigCommerceParseResponseError extends Data.TaggedError(\n 'BigCommerceParseResponseError',\n)<{\n readonly error: z.ZodError;\n}> {}\n\nexport type SomeBigCommerceError =\n | BigCommerceUnprocessableEntityError\n | BigCommerceUnauthorizedError\n | BigCommerceForbiddenError\n | BigCommerceNotFoundError\n | BigCommerceConflictError\n | BigCommerceConnectionError\n | BigCommerceUnknownError\n | BigCommerceInvalidResponseError\n | BigCommerceInvalidRequestError\n | BigCommerceParseResponseError;\n","import { Context, Effect } from 'effect';\nimport * as z from 'zod';\nimport { type SomeBigCommerceError } from './bigcommerce.error';\nexport type BigCommerceFetchMethods = 'GET' | 'POST' | 'PUT' | 'DELETE';\nexport interface BigCommerceFetchParams<\n // Always send json for now, maybe later send a Blob\n Body extends Record<string, unknown> | Array<Record<string, unknown>>,\n Query extends Record<string, string> | string,\n Result extends z.ZodType,\n> {\n readonly body?: Body;\n readonly query?: Query;\n readonly method: BigCommerceFetchMethods;\n readonly path: string;\n readonly headers?: Record<string, string>;\n readonly isB2B: boolean;\n readonly version: 'v3' | 'v2';\n readonly resultSchema: Result;\n}\n\nexport class BigCommerceFetcher extends Context.Tag('BigCommerceFetcher')<\n BigCommerceFetcher,\n {\n readonly fetch: <\n Body extends Record<string, unknown> | Array<Record<string, unknown>>,\n Query extends Record<string, string> | string,\n Result extends z.ZodType,\n >(\n params: BigCommerceFetchParams<Body, Query, Result>,\n ) => Effect.Effect<z.output<Result>, SomeBigCommerceError>;\n }\n>() {}\n","import { Effect, Layer, Match } from 'effect';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../constants';\nimport {\n BigCommerceConflictError,\n BigCommerceConnectionError,\n BigCommerceForbiddenError,\n BigCommerceInvalidRequestError,\n BigCommerceInvalidResponseError,\n BigCommerceNotFoundError,\n BigCommerceParseResponseError,\n BigCommerceUnauthorizedError,\n BigCommerceUnknownError,\n BigCommerceUnprocessableEntityError,\n type SomeBigCommerceError,\n} from './bigcommerce.error';\nimport { BigCommerceFetcher } from './bigcommerce.fetcher';\nimport { BigCommerceConfig, type NoBigCommerceConfigError } from './config';\n\nconst BigCommerceStatusCodes = {\n UNAUTHORIZED: 401,\n CONFLICT: 409,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n INVALID_REQUEST: 400,\n} as const;\n\nexport const BigCommerceFetcherLive: Layer.Layer<\n BigCommerceFetcher,\n NoBigCommerceConfigError,\n BigCommerceConfig\n> = Layer.effect(\n BigCommerceFetcher,\n Effect.gen(function* () {\n const config = yield* BigCommerceConfig;\n const storeHash = yield* config.getStoreHash;\n const accessToken = yield* config.getAccessToken;\n const timeout = yield* config.getTimeout;\n\n return {\n fetch: (params) => {\n const base = getBase(params);\n const headers: Record<string, string> = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'x-auth-token': accessToken,\n };\n\n if (params.isB2B) {\n headers['x-store-hash'] = storeHash;\n }\n const url = applyParams(base.replace('[storeHash]', storeHash), params.query);\n\n return Effect.tryPromise({\n try: () =>\n fetch(url, {\n headers,\n signal: AbortSignal.timeout(timeout),\n method: params.method,\n ...(params.body && { body: JSON.stringify(params.body) }),\n }),\n catch: (error) => {\n if (error instanceof Error && error.name === 'TimeoutError') {\n return new BigCommerceConnectionError({\n message: `Request timeout after ${timeout}ms`,\n type: 'timeout',\n });\n }\n if (error instanceof Error && error.name === 'AbortError') {\n return new BigCommerceConnectionError({\n message: `Request timeout after ${timeout}ms`,\n type: 'timeout',\n });\n }\n return new BigCommerceUnknownError({ cause: error });\n },\n }).pipe(\n Effect.tapError((error) =>\n Effect.logError('Failed to fetch from BigCommerce API', error.cause),\n ),\n Effect.flatMap((response) => transformResponse(response, params.resultSchema)),\n );\n },\n };\n }),\n);\nconst applyParams = (url: string, params?: Record<string, string | number> | string): URL => {\n const base = new URL(url);\n if (!params) {\n return base;\n }\n if (typeof params === 'string') {\n base.search = params;\n } else {\n for (const [key, value] of Object.entries(params)) {\n base.searchParams.append(key, `${value}`);\n }\n }\n return base;\n};\n\nconst getBase = ({\n isB2B,\n path,\n version,\n}: {\n isB2B: boolean;\n path: string;\n version: 'v3' | 'v2';\n}): string => {\n if (isB2B) {\n return `${DEFAULTS.bigcommerceUrls.b2b}/${version}/io/${path}`;\n }\n return `${DEFAULTS.bigcommerceUrls.regular}/[storeHash]/${version}/${path}`;\n};\nfunction processSuccessResponse<Schema extends z.ZodTypeAny>(response: Response, schema: Schema) {\n return Effect.tryPromise({\n try: () => response.json(),\n catch: (error) => new BigCommerceInvalidResponseError({ cause: error }),\n }).pipe(\n Effect.tapError((error) =>\n Effect.logError('Error parsing response from BigCommerce API', error.cause),\n ),\n Effect.tryMap({\n try: (json) => schema.parse(json),\n catch: (error) => new BigCommerceParseResponseError({ error: error as z.ZodError }),\n }),\n );\n}\nconst processErrorResponse = (response: Response) => {\n const code = response.status;\n return Effect.tryPromise({\n try: () => response.json(),\n catch: (error) => new BigCommerceInvalidResponseError({ cause: error }),\n }).pipe(\n Effect.tapError((error) => Effect.logError('Error parsing error response', error.cause)),\n Effect.flatMap((errorDetails) =>\n Effect.fail(\n Match.value(code).pipe(\n Match.when(\n BigCommerceStatusCodes.INVALID_REQUEST,\n () => new BigCommerceInvalidRequestError({ errorDetails }),\n ),\n Match.when(BigCommerceStatusCodes.UNAUTHORIZED, () => new BigCommerceUnauthorizedError()),\n Match.when(BigCommerceStatusCodes.FORBIDDEN, () => new BigCommerceForbiddenError()),\n Match.when(BigCommerceStatusCodes.NOT_FOUND, () => new BigCommerceNotFoundError()),\n Match.when(\n BigCommerceStatusCodes.CONFLICT,\n () => new BigCommerceConflictError({ details: errorDetails }),\n ),\n Match.when(\n BigCommerceStatusCodes.UNPROCESSABLE_ENTITY,\n () => new BigCommerceUnprocessableEntityError({ errorDetails }),\n ),\n Match.when(\n (code) => code >= 500,\n () =>\n new BigCommerceConnectionError({\n message: `Server error: ${code}`,\n type:\n code === BigCommerceStatusCodes.INTERNAL_SERVER_ERROR\n ? 'internalError'\n : code === BigCommerceStatusCodes.BAD_GATEWAY ||\n code === BigCommerceStatusCodes.GATEWAY_TIMEOUT\n ? 'timeout'\n : 'internalError',\n }),\n ),\n Match.orElse(() => new BigCommerceUnknownError({ cause: errorDetails })),\n ),\n ),\n ),\n );\n};\n\nconst transformResponse = <Schema extends z.ZodTypeAny>(\n response: Response,\n schema: Schema,\n): Effect.Effect<z.output<Schema>, SomeBigCommerceError> => {\n if (response.ok) {\n return processSuccessResponse(response, schema);\n }\n return processErrorResponse(response);\n};\n\n// type PendingErrors = Exclude<\n// SomeBigCommerceError,\n// Effect.Effect.Error<ReturnType<typeof processErrorResponse>> | BigCommerceParseResponseError\n// >;\n","import { Config, Context, Data, Effect, Layer } from 'effect';\nimport { DEFAULTS } from '../constants';\n\n// Define a custom error type using Data.TaggedError\nexport class NoBigCommerceConfigError extends Data.TaggedError('NoBigCommerceConfigError')<{\n readonly key: string;\n}> {}\n\nexport class BigCommerceConfig extends Context.Tag('BigCommerceConfig')<\n BigCommerceConfig,\n {\n readonly getStoreHash: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getClientId: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getClientSecret: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getAccessToken: Effect.Effect<string, NoBigCommerceConfigError>;\n readonly getTimeout: Effect.Effect<number, NoBigCommerceConfigError>;\n }\n>() {}\n\nconst getBigCommerceConfig = (key: string) => {\n return Config.nested(Config.string(key), 'BIGCOMMERCE').pipe(\n Effect.mapError(() => new NoBigCommerceConfigError({ key })),\n );\n};\n\nconst getBigCommerceTimeout = () => {\n return Config.nested(Config.number('TIMEOUT'), 'BIGCOMMERCE').pipe(\n Effect.mapError(() => new NoBigCommerceConfigError({ key: 'TIMEOUT' })),\n // Default to 30 seconds if not configured\n Effect.orElse(() => Effect.succeed(DEFAULTS.timeout.ms)),\n );\n};\n\nexport const BigCommerceConfigLive = Layer.effect(\n BigCommerceConfig,\n Effect.gen(function* () {\n const [storeHash, clientId, clientSecret, accessToken, timeout] = yield* Effect.all([\n getBigCommerceConfig('STORE_HASH'),\n getBigCommerceConfig('CLIENT_ID'),\n getBigCommerceConfig('CLIENT_SECRET'),\n getBigCommerceConfig('ACCESS_TOKEN'),\n getBigCommerceTimeout(),\n ]);\n\n return {\n getStoreHash: Effect.succeed(storeHash),\n getClientId: Effect.succeed(clientId),\n getClientSecret: Effect.succeed(clientSecret),\n getAccessToken: Effect.succeed(accessToken),\n getTimeout: Effect.succeed(timeout),\n };\n }),\n);\n\nexport const BigCommerceConfigTest = Layer.succeed(BigCommerceConfig, {\n getAccessToken: Effect.succeed('test'),\n getClientId: Effect.succeed('test'),\n getClientSecret: Effect.succeed('test'),\n getStoreHash: Effect.succeed('test'),\n getTimeout: Effect.succeed(DEFAULTS.timeout.ms),\n});\n\nexport const validateBigCommerceConfig = () =>\n Effect.gen(function* () {\n const config = yield* BigCommerceConfig;\n const [storeHash, clientId, clientSecret, accessToken, timeout] = yield* Effect.all([\n config.getStoreHash,\n config.getClientId,\n config.getClientSecret,\n config.getAccessToken,\n config.getTimeout,\n ]);\n\n return {\n storeHash,\n clientId,\n clientSecret,\n accessToken,\n timeout,\n };\n });\n","import { Effect } from 'effect';\nimport * as z from 'zod';\nimport { InputValidationError } from './validation.error';\nexport const validateInput = <Schema extends z.ZodType>(schema: Schema, data: z.input<Schema>) => {\n return Effect.try({\n try: () => schema.parse(data),\n catch: (error) => new InputValidationError({ input: data, error: error as z.ZodError }),\n });\n};\n","import { Data } from 'effect';\nimport * as z from 'zod';\nexport class InputValidationError extends Data.TaggedError('InputValidationError')<{\n input: unknown;\n error: z.ZodError;\n}> {}\n","import { Chunk, Effect, Stream } from 'effect';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport { UpdateProductResponseSchema, UpdateProductSchema } from './schemas/update-products.schema';\nconst UpdateProductArraySchema = z.array(UpdateProductSchema);\nexport const updateProducts = (dtos: z.input<typeof UpdateProductSchema>[]) => {\n return Stream.fromIterable(dtos).pipe(\n Stream.grouped(DEFAULTS.products.updateBatchSize),\n Stream.mapEffect((chunk) => updateProductBatch(chunk), {\n concurrency: DEFAULTS.products.updateConcurrency,\n }),\n Stream.runCollect,\n Effect.map(Chunk.toArray),\n );\n};\n\nconst updateProductBatch = (items: Chunk.Chunk<z.input<typeof UpdateProductSchema>>) => {\n return Effect.gen(function* () {\n const validatedBody = yield* validateInput(UpdateProductArraySchema, Chunk.toArray(items));\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: false,\n method: 'PUT',\n path: 'inventory/adjustments/absolute',\n version: 'v3',\n body: validatedBody,\n resultSchema: UpdateProductResponseSchema,\n }),\n DEFAULTS.retry.policy,\n );\n });\n};\n","import * as z from 'zod';\nimport { UpdateProductVisibilitySchema } from './schemas/update-products.schema';\nimport { updateProducts } from './update-products';\nexport const setProductVisibility = (dtos: z.input<typeof UpdateProductVisibilitySchema>[]) => {\n return updateProducts(dtos);\n};\n"],"mappings":"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","names":["z","import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect","import_effect","z"]}
|