@edgebound/bigcommerce 0.3.0 → 0.3.2
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/{chunk-PAXNZ36X.mjs → chunk-V2WZ3SDN.mjs} +10 -3
- package/dist/chunk-V2WZ3SDN.mjs.map +1 -0
- package/dist/companies.d.mts +115 -1
- package/dist/companies.d.ts +115 -1
- package/dist/companies.js +125 -13
- package/dist/companies.js.map +1 -1
- package/dist/companies.mjs +111 -12
- package/dist/companies.mjs.map +1 -1
- package/dist/customers.d.mts +79 -1
- package/dist/customers.d.ts +79 -1
- package/dist/customers.js +143 -45
- package/dist/customers.js.map +1 -1
- package/dist/customers.mjs +131 -44
- package/dist/customers.mjs.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/orders.d.mts +7 -1254
- package/dist/orders.d.ts +7 -1254
- package/dist/orders.js +14 -9
- package/dist/orders.js.map +1 -1
- package/dist/orders.mjs +6 -8
- package/dist/orders.mjs.map +1 -1
- package/dist/payments.js +9 -2
- package/dist/payments.js.map +1 -1
- package/dist/payments.mjs +1 -1
- package/dist/priceLists.js +9 -2
- package/dist/priceLists.js.map +1 -1
- package/dist/priceLists.mjs +1 -1
- package/dist/products.js +9 -2
- package/dist/products.js.map +1 -1
- package/dist/products.mjs +1 -1
- package/dist/salesStaff.js +9 -2
- package/dist/salesStaff.js.map +1 -1
- package/dist/salesStaff.mjs +1 -1
- package/dist/webhooks.d.mts +6 -4
- package/dist/webhooks.d.ts +6 -4
- package/dist/webhooks.js +5 -3
- package/dist/webhooks.js.map +1 -1
- package/dist/webhooks.mjs +5 -3
- package/dist/webhooks.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-PAXNZ36X.mjs.map +0 -1
package/dist/priceLists.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bigcommerce-entities/price-lists/index.ts","../src/bigcommerce-entities/price-lists/create-price-list.ts","../src/bigcommerce-entities/price-lists/schemas/create-price-lists.schema.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/price-lists/get-price-lists.ts","../src/bigcommerce-entities/price-lists/schemas/get-prices-lists.schema.ts"],"sourcesContent":["export * from './create-price-list';\nexport * from './get-price-lists';\nexport * from './schemas';\n","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 { 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';\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.ZodType>(\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 { Effect } from 'effect';\nimport { stringify } from 'node:querystring';\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: 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":"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","names":["import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect","import_effect","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/bigcommerce-entities/price-lists/index.ts","../src/bigcommerce-entities/price-lists/create-price-list.ts","../src/bigcommerce-entities/price-lists/schemas/create-price-lists.schema.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/price-lists/get-price-lists.ts","../src/bigcommerce-entities/price-lists/schemas/get-prices-lists.schema.ts"],"sourcesContent":["export * from './create-price-list';\nexport * from './get-price-lists';\nexport * from './schemas';\n","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 { 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';\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};\n\nasync function safeJson<T>(response: Response): Promise<T | null> {\n const text = await response.text();\n\n if (!text || text.trim() === '') {\n return null;\n }\n\n return JSON.parse(text) as T;\n}\n\nfunction processSuccessResponse<Schema extends z.ZodTypeAny>(response: Response, schema: Schema) {\n return Effect.tryPromise({\n try: () => safeJson(response),\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: () => safeJson(response),\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.ZodType>(\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 { Effect } from 'effect';\nimport { stringify } from 'node:querystring';\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: 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":"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","names":["import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect","import_effect","z"]}
|
package/dist/priceLists.mjs
CHANGED
package/dist/products.js
CHANGED
|
@@ -305,9 +305,16 @@ var getBase = ({
|
|
|
305
305
|
}
|
|
306
306
|
return `${DEFAULTS.bigcommerceUrls.regular}/[storeHash]/${version}/${path}`;
|
|
307
307
|
};
|
|
308
|
+
async function safeJson(response) {
|
|
309
|
+
const text = await response.text();
|
|
310
|
+
if (!text || text.trim() === "") {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
return JSON.parse(text);
|
|
314
|
+
}
|
|
308
315
|
function processSuccessResponse(response, schema) {
|
|
309
316
|
return import_effect5.Effect.tryPromise({
|
|
310
|
-
try: () => response
|
|
317
|
+
try: () => safeJson(response),
|
|
311
318
|
catch: (error) => new BigCommerceInvalidResponseError({ cause: error })
|
|
312
319
|
}).pipe(
|
|
313
320
|
import_effect5.Effect.tapError(
|
|
@@ -322,7 +329,7 @@ function processSuccessResponse(response, schema) {
|
|
|
322
329
|
var processErrorResponse = (response) => {
|
|
323
330
|
const code = response.status;
|
|
324
331
|
return import_effect5.Effect.tryPromise({
|
|
325
|
-
try: () => response
|
|
332
|
+
try: () => safeJson(response),
|
|
326
333
|
catch: (error) => new BigCommerceInvalidResponseError({ cause: error })
|
|
327
334
|
}).pipe(
|
|
328
335
|
import_effect5.Effect.tapError((error) => import_effect5.Effect.logError("Error parsing error response", error.cause)),
|
package/dist/products.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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';\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.ZodType>(\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"]}
|
|
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';\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};\n\nasync function safeJson<T>(response: Response): Promise<T | null> {\n const text = await response.text();\n\n if (!text || text.trim() === '') {\n return null;\n }\n\n return JSON.parse(text) as T;\n}\n\nfunction processSuccessResponse<Schema extends z.ZodTypeAny>(response: Response, schema: Schema) {\n return Effect.tryPromise({\n try: () => safeJson(response),\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: () => safeJson(response),\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.ZodType>(\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"]}
|
package/dist/products.mjs
CHANGED
package/dist/salesStaff.js
CHANGED
|
@@ -271,9 +271,16 @@ var getBase = ({
|
|
|
271
271
|
}
|
|
272
272
|
return `${DEFAULTS.bigcommerceUrls.regular}/[storeHash]/${version}/${path}`;
|
|
273
273
|
};
|
|
274
|
+
async function safeJson(response) {
|
|
275
|
+
const text = await response.text();
|
|
276
|
+
if (!text || text.trim() === "") {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
return JSON.parse(text);
|
|
280
|
+
}
|
|
274
281
|
function processSuccessResponse(response, schema) {
|
|
275
282
|
return import_effect5.Effect.tryPromise({
|
|
276
|
-
try: () => response
|
|
283
|
+
try: () => safeJson(response),
|
|
277
284
|
catch: (error) => new BigCommerceInvalidResponseError({ cause: error })
|
|
278
285
|
}).pipe(
|
|
279
286
|
import_effect5.Effect.tapError(
|
|
@@ -288,7 +295,7 @@ function processSuccessResponse(response, schema) {
|
|
|
288
295
|
var processErrorResponse = (response) => {
|
|
289
296
|
const code = response.status;
|
|
290
297
|
return import_effect5.Effect.tryPromise({
|
|
291
|
-
try: () => response
|
|
298
|
+
try: () => safeJson(response),
|
|
292
299
|
catch: (error) => new BigCommerceInvalidResponseError({ cause: error })
|
|
293
300
|
}).pipe(
|
|
294
301
|
import_effect5.Effect.tapError((error) => import_effect5.Effect.logError("Error parsing error response", error.cause)),
|
package/dist/salesStaff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bigcommerce-entities/sales-staff/index.ts","../src/bigcommerce-entities/sales-staff/get-sales-staff.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/sales-staff/schemas/get-sales-staff.schema.ts"],"sourcesContent":["export * from './get-sales-staff';\nexport * from './schemas';\n","import { Effect } from 'effect';\nimport { stringify } from 'node:querystring';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n GetSalesStaffCriteriaSchema,\n GetSalesStaffResponseSchema,\n} from './schemas/get-sales-staff.schema';\nexport const findSalesStaff = (criteria?: z.input<typeof GetSalesStaffCriteriaSchema>) =>\n Effect.gen(function* () {\n const validatedCriteria = yield* validateInput(GetSalesStaffCriteriaSchema, criteria ?? {});\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: true,\n method: 'GET',\n query: stringify(validatedCriteria),\n path: 'sales-staffs',\n resultSchema: GetSalesStaffResponseSchema,\n version: 'v3',\n }),\n DEFAULTS.retry.policy,\n );\n });\n\nexport const getAllSalesStaffBy = (\n criteria?: Omit<z.input<typeof GetSalesStaffCriteriaSchema>, 'limit' | 'offset'>,\n) =>\n Effect.gen(function* () {\n let hasMore = true;\n const limit = DEFAULTS.salesStaff.getBatchSize;\n let offset = 0;\n const data: z.infer<typeof GetSalesStaffResponseSchema>['data'] = [];\n while (hasMore) {\n const response = yield* findSalesStaff({\n limit,\n offset,\n ...criteria,\n });\n if (response.data.length) {\n offset += limit;\n data.push(...response.data);\n } else {\n hasMore = false;\n }\n }\n return data;\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';\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.ZodType>(\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 * as z from 'zod';\nimport { DEFAULTS } from '../../../constants';\nexport const SalesStaffSchema = z.object({\n companyCount: z.number(),\n email: z.string(),\n id: z.number(),\n roleName: z.string(),\n salesRepName: z.string(),\n});\nexport const GetSalesStaffResponseSchema = z.object({\n code: z.number(),\n data: SalesStaffSchema.array(),\n meta: z.object({\n message: z.string(),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n totalCount: z.number(),\n }),\n }),\n});\n\nexport const GetSalesStaffCriteriaSchema = z.object({\n limit: z.int().max(DEFAULTS.salesStaff.getBatchSize).optional(),\n offset: z.int().optional(),\n});\n"],"mappings":"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","names":["import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect"]}
|
|
1
|
+
{"version":3,"sources":["../src/bigcommerce-entities/sales-staff/index.ts","../src/bigcommerce-entities/sales-staff/get-sales-staff.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/sales-staff/schemas/get-sales-staff.schema.ts"],"sourcesContent":["export * from './get-sales-staff';\nexport * from './schemas';\n","import { Effect } from 'effect';\nimport { stringify } from 'node:querystring';\nimport * as z from 'zod';\nimport { DEFAULTS } from '../../constants';\nimport { BigCommerceFetcher } from '../../core';\nimport { validateInput } from '../../validation';\nimport {\n GetSalesStaffCriteriaSchema,\n GetSalesStaffResponseSchema,\n} from './schemas/get-sales-staff.schema';\nexport const findSalesStaff = (criteria?: z.input<typeof GetSalesStaffCriteriaSchema>) =>\n Effect.gen(function* () {\n const validatedCriteria = yield* validateInput(GetSalesStaffCriteriaSchema, criteria ?? {});\n const fetcher = yield* BigCommerceFetcher;\n return yield* Effect.retry(\n fetcher.fetch({\n isB2B: true,\n method: 'GET',\n query: stringify(validatedCriteria),\n path: 'sales-staffs',\n resultSchema: GetSalesStaffResponseSchema,\n version: 'v3',\n }),\n DEFAULTS.retry.policy,\n );\n });\n\nexport const getAllSalesStaffBy = (\n criteria?: Omit<z.input<typeof GetSalesStaffCriteriaSchema>, 'limit' | 'offset'>,\n) =>\n Effect.gen(function* () {\n let hasMore = true;\n const limit = DEFAULTS.salesStaff.getBatchSize;\n let offset = 0;\n const data: z.infer<typeof GetSalesStaffResponseSchema>['data'] = [];\n while (hasMore) {\n const response = yield* findSalesStaff({\n limit,\n offset,\n ...criteria,\n });\n if (response.data.length) {\n offset += limit;\n data.push(...response.data);\n } else {\n hasMore = false;\n }\n }\n return data;\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';\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};\n\nasync function safeJson<T>(response: Response): Promise<T | null> {\n const text = await response.text();\n\n if (!text || text.trim() === '') {\n return null;\n }\n\n return JSON.parse(text) as T;\n}\n\nfunction processSuccessResponse<Schema extends z.ZodTypeAny>(response: Response, schema: Schema) {\n return Effect.tryPromise({\n try: () => safeJson(response),\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: () => safeJson(response),\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.ZodType>(\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 * as z from 'zod';\nimport { DEFAULTS } from '../../../constants';\nexport const SalesStaffSchema = z.object({\n companyCount: z.number(),\n email: z.string(),\n id: z.number(),\n roleName: z.string(),\n salesRepName: z.string(),\n});\nexport const GetSalesStaffResponseSchema = z.object({\n code: z.number(),\n data: SalesStaffSchema.array(),\n meta: z.object({\n message: z.string(),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n totalCount: z.number(),\n }),\n }),\n});\n\nexport const GetSalesStaffCriteriaSchema = z.object({\n limit: z.int().max(DEFAULTS.salesStaff.getBatchSize).optional(),\n offset: z.int().optional(),\n});\n"],"mappings":"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","names":["import_effect","import_effect","import_effect","import_effect","import_effect","code","import_effect","import_effect"]}
|
package/dist/salesStaff.mjs
CHANGED
package/dist/webhooks.d.mts
CHANGED
|
@@ -46,16 +46,18 @@ declare const OrderStatusWebhookScopeSchema: z.ZodObject<{
|
|
|
46
46
|
data: z.ZodObject<{
|
|
47
47
|
type: z.ZodLiteral<"order">;
|
|
48
48
|
id: z.ZodInt;
|
|
49
|
-
status: {
|
|
49
|
+
status: z.ZodObject<{
|
|
50
50
|
previous_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
51
51
|
new_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
52
|
-
}
|
|
52
|
+
}, z.core.$strip>;
|
|
53
53
|
}, z.core.$strip>;
|
|
54
54
|
}, z.core.$strip>;
|
|
55
55
|
|
|
56
56
|
declare const BigCommerceWebhooksScopeSchema: z.ZodIntersection<z.ZodObject<{
|
|
57
57
|
hash: z.ZodString;
|
|
58
58
|
created_at: z.ZodNumber;
|
|
59
|
+
store_id: z.ZodString;
|
|
60
|
+
producer: z.ZodString;
|
|
59
61
|
}, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
60
62
|
scope: z.ZodEnum<{
|
|
61
63
|
"store/order/created": "store/order/created";
|
|
@@ -73,10 +75,10 @@ declare const BigCommerceWebhooksScopeSchema: z.ZodIntersection<z.ZodObject<{
|
|
|
73
75
|
data: z.ZodObject<{
|
|
74
76
|
type: z.ZodLiteral<"order">;
|
|
75
77
|
id: z.ZodInt;
|
|
76
|
-
status: {
|
|
78
|
+
status: z.ZodObject<{
|
|
77
79
|
previous_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
78
80
|
new_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
79
|
-
}
|
|
81
|
+
}, z.core.$strip>;
|
|
80
82
|
}, z.core.$strip>;
|
|
81
83
|
}, z.core.$strip>, z.ZodObject<{
|
|
82
84
|
scope: z.ZodEnum<{
|
package/dist/webhooks.d.ts
CHANGED
|
@@ -46,16 +46,18 @@ declare const OrderStatusWebhookScopeSchema: z.ZodObject<{
|
|
|
46
46
|
data: z.ZodObject<{
|
|
47
47
|
type: z.ZodLiteral<"order">;
|
|
48
48
|
id: z.ZodInt;
|
|
49
|
-
status: {
|
|
49
|
+
status: z.ZodObject<{
|
|
50
50
|
previous_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
51
51
|
new_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
52
|
-
}
|
|
52
|
+
}, z.core.$strip>;
|
|
53
53
|
}, z.core.$strip>;
|
|
54
54
|
}, z.core.$strip>;
|
|
55
55
|
|
|
56
56
|
declare const BigCommerceWebhooksScopeSchema: z.ZodIntersection<z.ZodObject<{
|
|
57
57
|
hash: z.ZodString;
|
|
58
58
|
created_at: z.ZodNumber;
|
|
59
|
+
store_id: z.ZodString;
|
|
60
|
+
producer: z.ZodString;
|
|
59
61
|
}, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
60
62
|
scope: z.ZodEnum<{
|
|
61
63
|
"store/order/created": "store/order/created";
|
|
@@ -73,10 +75,10 @@ declare const BigCommerceWebhooksScopeSchema: z.ZodIntersection<z.ZodObject<{
|
|
|
73
75
|
data: z.ZodObject<{
|
|
74
76
|
type: z.ZodLiteral<"order">;
|
|
75
77
|
id: z.ZodInt;
|
|
76
|
-
status: {
|
|
78
|
+
status: z.ZodObject<{
|
|
77
79
|
previous_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
78
80
|
new_status_id: z.ZodEnum<typeof OrderStatusEnum>;
|
|
79
|
-
}
|
|
81
|
+
}, z.core.$strip>;
|
|
80
82
|
}, z.core.$strip>;
|
|
81
83
|
}, z.core.$strip>, z.ZodObject<{
|
|
82
84
|
scope: z.ZodEnum<{
|
package/dist/webhooks.js
CHANGED
|
@@ -122,10 +122,10 @@ var OrderStatusWebhookScopeSchema = z3.object({
|
|
|
122
122
|
data: z3.object({
|
|
123
123
|
type: z3.literal("order"),
|
|
124
124
|
id: z3.int(),
|
|
125
|
-
status: {
|
|
125
|
+
status: z3.object({
|
|
126
126
|
previous_status_id: OrderStatusSchema,
|
|
127
127
|
new_status_id: OrderStatusSchema
|
|
128
|
-
}
|
|
128
|
+
})
|
|
129
129
|
})
|
|
130
130
|
});
|
|
131
131
|
|
|
@@ -140,7 +140,9 @@ var BigCommerceSomeOfSchema = z4.discriminatedUnion("scope", [
|
|
|
140
140
|
var BigCommerceWebhooksScopeSchema = z4.intersection(
|
|
141
141
|
z4.object({
|
|
142
142
|
hash: z4.string(),
|
|
143
|
-
created_at: z4.number()
|
|
143
|
+
created_at: z4.number(),
|
|
144
|
+
store_id: z4.string(),
|
|
145
|
+
producer: z4.string()
|
|
144
146
|
}),
|
|
145
147
|
BigCommerceSomeOfSchema
|
|
146
148
|
);
|
package/dist/webhooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bigcommerce-entities/webhooks/index.ts","../src/bigcommerce-entities/webhooks/schemas/customer.scope.schema.ts","../src/bigcommerce-entities/webhooks/schemas/order.scope.schema.ts","../src/bigcommerce-entities/orders/schemas/status.schema.ts","../src/bigcommerce-entities/webhooks/schemas/webhooks.schema.ts"],"sourcesContent":["export * from './schemas';\n","import * as z from 'zod';\nexport const CustomerAddressWebhookScopeSchema = z.object({\n scope: z.enum([\n 'store/customer/address/created',\n 'store/customer/address/updated',\n 'store/customer/address/deleted',\n ]),\n data: z.object({\n type: z.literal('customer'),\n id: z.int(),\n address: z.object({\n customer_id: z.int(),\n }),\n }),\n});\nexport const CustomerWebhookScopeSchema = z.object({\n scope: z.enum([\n 'store/customer/created',\n 'store/customer/updated',\n 'store/customer/deleted',\n 'store/customer/payment/instrument/default/updated',\n ]),\n data: z.object({\n type: z.literal('customer'),\n id: z.int(),\n }),\n});\n","import * as z from 'zod';\nimport { OrderStatusSchema } from '../../orders/schemas/status.schema';\nexport const OrderWebhookScopeSchema = z.object({\n scope: z.enum(['store/order/created', 'store/order/updated', 'store/order/archived']),\n data: z.object({\n type: z.literal('order'),\n id: z.int(),\n }),\n});\nexport const OrderStatusWebhookScopeSchema = z.object({\n scope: z.enum(['store/order/statusUpdated']),\n data: z.object({\n type: z.literal('order'),\n id: z.int(),\n status: {\n previous_status_id: OrderStatusSchema,\n new_status_id: OrderStatusSchema,\n },\n }),\n});\n","import * as z from 'zod';\nexport const OrderStatusNameEnumSchema = z.enum([\n 'Incomplete',\n 'Pending',\n 'Shipped',\n 'Partially Shipped',\n 'Refunded',\n 'Cancelled',\n 'Declined',\n 'Awaiting Payment',\n 'Awaiting Pickup',\n 'Awaiting Shipment',\n 'Completed',\n 'Awaiting Fulfillment',\n 'Manual Verification Required',\n 'Disputed',\n 'Partially Refunded',\n]);\nexport enum OrderStatusEnum {\n Incomplete = 0,\n Pending = 1,\n Shipped = 2,\n PartiallyShipped = 3,\n Refunded = 4,\n Cancelled = 5,\n Declined = 6,\n AwaitingPayment = 7,\n AwaitingPickup = 8,\n AwaitingShipment = 9,\n Completed = 10,\n AwaitingFulfillment = 11,\n ManualVerificationRequired = 12,\n Disputed = 13,\n PartiallyRefunded = 14,\n}\nexport const OrderStatusSchema = z.enum(OrderStatusEnum);\n","import * as z from 'zod';\nimport {\n CustomerAddressWebhookScopeSchema,\n CustomerWebhookScopeSchema,\n} from './customer.scope.schema';\nimport { OrderStatusWebhookScopeSchema, OrderWebhookScopeSchema } from './order.scope.schema';\n\nconst BigCommerceSomeOfSchema = z.discriminatedUnion('scope', [\n OrderWebhookScopeSchema,\n OrderStatusWebhookScopeSchema,\n CustomerWebhookScopeSchema,\n CustomerAddressWebhookScopeSchema,\n]);\n\nexport const BigCommerceWebhooksScopeSchema = z.intersection(\n z.object({\n hash: z.string(),\n created_at: z.number(),\n }),\n BigCommerceSomeOfSchema,\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,QAAmB;AACZ,IAAM,oCAAsC,SAAO;AAAA,EACxD,OAAS,OAAK;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,MAAQ,SAAO;AAAA,IACb,MAAQ,UAAQ,UAAU;AAAA,IAC1B,IAAM,MAAI;AAAA,IACV,SAAW,SAAO;AAAA,MAChB,aAAe,MAAI;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AACH,CAAC;AACM,IAAM,6BAA+B,SAAO;AAAA,EACjD,OAAS,OAAK;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,MAAQ,SAAO;AAAA,IACb,MAAQ,UAAQ,UAAU;AAAA,IAC1B,IAAM,MAAI;AAAA,EACZ,CAAC;AACH,CAAC;;;AC1BD,IAAAA,KAAmB;;;ACAnB,IAAAC,KAAmB;AACZ,IAAM,4BAA8B,QAAK;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACM,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,kCAAA,gBAAa,KAAb;AACA,EAAAA,kCAAA,aAAU,KAAV;AACA,EAAAA,kCAAA,aAAU,KAAV;AACA,EAAAA,kCAAA,sBAAmB,KAAnB;AACA,EAAAA,kCAAA,cAAW,KAAX;AACA,EAAAA,kCAAA,eAAY,KAAZ;AACA,EAAAA,kCAAA,cAAW,KAAX;AACA,EAAAA,kCAAA,qBAAkB,KAAlB;AACA,EAAAA,kCAAA,oBAAiB,KAAjB;AACA,EAAAA,kCAAA,sBAAmB,KAAnB;AACA,EAAAA,kCAAA,eAAY,MAAZ;AACA,EAAAA,kCAAA,yBAAsB,MAAtB;AACA,EAAAA,kCAAA,gCAA6B,MAA7B;AACA,EAAAA,kCAAA,cAAW,MAAX;AACA,EAAAA,kCAAA,uBAAoB,MAApB;AAfU,SAAAA;AAAA,GAAA;AAiBL,IAAM,oBAAsB,QAAK,eAAe;;;ADjChD,IAAM,0BAA4B,UAAO;AAAA,EAC9C,OAAS,QAAK,CAAC,uBAAuB,uBAAuB,sBAAsB,CAAC;AAAA,EACpF,MAAQ,UAAO;AAAA,IACb,MAAQ,WAAQ,OAAO;AAAA,IACvB,IAAM,OAAI;AAAA,EACZ,CAAC;AACH,CAAC;AACM,IAAM,gCAAkC,UAAO;AAAA,EACpD,OAAS,QAAK,CAAC,2BAA2B,CAAC;AAAA,EAC3C,MAAQ,UAAO;AAAA,IACb,MAAQ,WAAQ,OAAO;AAAA,IACvB,IAAM,OAAI;AAAA,IACV,
|
|
1
|
+
{"version":3,"sources":["../src/bigcommerce-entities/webhooks/index.ts","../src/bigcommerce-entities/webhooks/schemas/customer.scope.schema.ts","../src/bigcommerce-entities/webhooks/schemas/order.scope.schema.ts","../src/bigcommerce-entities/orders/schemas/status.schema.ts","../src/bigcommerce-entities/webhooks/schemas/webhooks.schema.ts"],"sourcesContent":["export * from './schemas';\n","import * as z from 'zod';\nexport const CustomerAddressWebhookScopeSchema = z.object({\n scope: z.enum([\n 'store/customer/address/created',\n 'store/customer/address/updated',\n 'store/customer/address/deleted',\n ]),\n data: z.object({\n type: z.literal('customer'),\n id: z.int(),\n address: z.object({\n customer_id: z.int(),\n }),\n }),\n});\nexport const CustomerWebhookScopeSchema = z.object({\n scope: z.enum([\n 'store/customer/created',\n 'store/customer/updated',\n 'store/customer/deleted',\n 'store/customer/payment/instrument/default/updated',\n ]),\n data: z.object({\n type: z.literal('customer'),\n id: z.int(),\n }),\n});\n","import * as z from 'zod';\nimport { OrderStatusSchema } from '../../orders/schemas/status.schema';\nexport const OrderWebhookScopeSchema = z.object({\n scope: z.enum(['store/order/created', 'store/order/updated', 'store/order/archived']),\n data: z.object({\n type: z.literal('order'),\n id: z.int(),\n }),\n});\nexport const OrderStatusWebhookScopeSchema = z.object({\n scope: z.enum(['store/order/statusUpdated']),\n data: z.object({\n type: z.literal('order'),\n id: z.int(),\n status: z.object({\n previous_status_id: OrderStatusSchema,\n new_status_id: OrderStatusSchema,\n }),\n }),\n});\n","import * as z from 'zod';\nexport const OrderStatusNameEnumSchema = z.enum([\n 'Incomplete',\n 'Pending',\n 'Shipped',\n 'Partially Shipped',\n 'Refunded',\n 'Cancelled',\n 'Declined',\n 'Awaiting Payment',\n 'Awaiting Pickup',\n 'Awaiting Shipment',\n 'Completed',\n 'Awaiting Fulfillment',\n 'Manual Verification Required',\n 'Disputed',\n 'Partially Refunded',\n]);\nexport enum OrderStatusEnum {\n Incomplete = 0,\n Pending = 1,\n Shipped = 2,\n PartiallyShipped = 3,\n Refunded = 4,\n Cancelled = 5,\n Declined = 6,\n AwaitingPayment = 7,\n AwaitingPickup = 8,\n AwaitingShipment = 9,\n Completed = 10,\n AwaitingFulfillment = 11,\n ManualVerificationRequired = 12,\n Disputed = 13,\n PartiallyRefunded = 14,\n}\nexport const OrderStatusSchema = z.enum(OrderStatusEnum);\n","import * as z from 'zod';\nimport {\n CustomerAddressWebhookScopeSchema,\n CustomerWebhookScopeSchema,\n} from './customer.scope.schema';\nimport { OrderStatusWebhookScopeSchema, OrderWebhookScopeSchema } from './order.scope.schema';\n\nconst BigCommerceSomeOfSchema = z.discriminatedUnion('scope', [\n OrderWebhookScopeSchema,\n OrderStatusWebhookScopeSchema,\n CustomerWebhookScopeSchema,\n CustomerAddressWebhookScopeSchema,\n]);\n\nexport const BigCommerceWebhooksScopeSchema = z.intersection(\n z.object({\n hash: z.string(),\n created_at: z.number(),\n store_id: z.string(),\n producer: z.string(),\n }),\n BigCommerceSomeOfSchema,\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,QAAmB;AACZ,IAAM,oCAAsC,SAAO;AAAA,EACxD,OAAS,OAAK;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,MAAQ,SAAO;AAAA,IACb,MAAQ,UAAQ,UAAU;AAAA,IAC1B,IAAM,MAAI;AAAA,IACV,SAAW,SAAO;AAAA,MAChB,aAAe,MAAI;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AACH,CAAC;AACM,IAAM,6BAA+B,SAAO;AAAA,EACjD,OAAS,OAAK;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,MAAQ,SAAO;AAAA,IACb,MAAQ,UAAQ,UAAU;AAAA,IAC1B,IAAM,MAAI;AAAA,EACZ,CAAC;AACH,CAAC;;;AC1BD,IAAAA,KAAmB;;;ACAnB,IAAAC,KAAmB;AACZ,IAAM,4BAA8B,QAAK;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACM,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,kCAAA,gBAAa,KAAb;AACA,EAAAA,kCAAA,aAAU,KAAV;AACA,EAAAA,kCAAA,aAAU,KAAV;AACA,EAAAA,kCAAA,sBAAmB,KAAnB;AACA,EAAAA,kCAAA,cAAW,KAAX;AACA,EAAAA,kCAAA,eAAY,KAAZ;AACA,EAAAA,kCAAA,cAAW,KAAX;AACA,EAAAA,kCAAA,qBAAkB,KAAlB;AACA,EAAAA,kCAAA,oBAAiB,KAAjB;AACA,EAAAA,kCAAA,sBAAmB,KAAnB;AACA,EAAAA,kCAAA,eAAY,MAAZ;AACA,EAAAA,kCAAA,yBAAsB,MAAtB;AACA,EAAAA,kCAAA,gCAA6B,MAA7B;AACA,EAAAA,kCAAA,cAAW,MAAX;AACA,EAAAA,kCAAA,uBAAoB,MAApB;AAfU,SAAAA;AAAA,GAAA;AAiBL,IAAM,oBAAsB,QAAK,eAAe;;;ADjChD,IAAM,0BAA4B,UAAO;AAAA,EAC9C,OAAS,QAAK,CAAC,uBAAuB,uBAAuB,sBAAsB,CAAC;AAAA,EACpF,MAAQ,UAAO;AAAA,IACb,MAAQ,WAAQ,OAAO;AAAA,IACvB,IAAM,OAAI;AAAA,EACZ,CAAC;AACH,CAAC;AACM,IAAM,gCAAkC,UAAO;AAAA,EACpD,OAAS,QAAK,CAAC,2BAA2B,CAAC;AAAA,EAC3C,MAAQ,UAAO;AAAA,IACb,MAAQ,WAAQ,OAAO;AAAA,IACvB,IAAM,OAAI;AAAA,IACV,QAAU,UAAO;AAAA,MACf,oBAAoB;AAAA,MACpB,eAAe;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AACH,CAAC;;;AEnBD,IAAAC,KAAmB;AAOnB,IAAM,0BAA4B,sBAAmB,SAAS;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,iCAAmC;AAAA,EAC5C,UAAO;AAAA,IACP,MAAQ,UAAO;AAAA,IACf,YAAc,UAAO;AAAA,IACrB,UAAY,UAAO;AAAA,IACnB,UAAY,UAAO;AAAA,EACrB,CAAC;AAAA,EACD;AACF;","names":["z","z","OrderStatusEnum","z"]}
|