@commercelayer/sdk-utils
Version:
Commerce Layer Javascript SDK Utils library
1 lines • 17.9 kB
Source Map (JSON)
{"version":3,"sources":["../src/resources/webhooks.ts"],"names":["CommerceLayerStatic","inc","config","crypto"],"mappings":"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","file":"chunk-N2YKKMHB.cjs","sourcesContent":["import type { Resource, ResourceType, Address, Authorization, Bundle, BuyXPayYPromotion, Capture, Cleanup, Coupon, Customer, CustomerAddress, CustomerPasswordReset, CustomerSubscription, Export, ExternalPromotion, FixedAmountPromotion, FixedPricePromotion, FreeGiftPromotion, FreeShippingPromotion, GiftCard, Import, InStockSubscription, LineItem, LineItemOption, Order, OrderCopy, OrderSubscription, Parcel, PercentageDiscountPromotion, PriceFrequencyTier, PriceVolumeTier, Promotion, RecurringOrderCopy, Refund, Return, Shipment, ShippingWeightTier, Sku, SkuOption, StockTransfer, Transaction, Void, AvalaraAccount } from \"@commercelayer/sdk\"\nimport { CommerceLayerStatic } from '@commercelayer/sdk'\nimport type { DocWithData, Included, ResourceIdentifierObject, ResourceObject } from 'jsonapi-typescript'\nimport crypto from 'crypto'\nimport { config } from \"../config\"\n\n\n\nconst checkPayload = (payload: string): DocWithData => {\n\n\tlet resource\n\n\t// Check JSON\n\ttry { resource = JSON.parse(payload) }\n\tcatch (error: any) { throw new Error(`Error parsing payload [${error.message}]`) }\n\n\t// Check resource type\n\tif (!CommerceLayerStatic.resources().includes(resource.data?.type as string)) throw new Error(`Invalid resource type [${resource.data?.type}]`)\n\n\treturn resource\n\n}\n\n\nexport const denormalizePayload = <R extends Resource>(payload: string): R | R[] => {\n\n\tlet denormalized\n\n\tconst resource = checkPayload(payload)\n\n\tif (resource.links) delete resource.links\n\n\tconst data = resource.data\n\tconst included = resource.included\n\n\tif (!data) denormalized = data\n\telse {\n\t\tif (Array.isArray(data)) denormalized = data.map(res => denormalizeResource<R>(res, included))\n\t\telse denormalized = denormalizeResource<R>(data, included)\n\t}\n\n\treturn denormalized\n\n}\n\n\nconst findIncluded = (rel: ResourceIdentifierObject, included: Included = []): ResourceObject | undefined => {\n\tconst inc = included.find(inc => {\n\t\treturn (rel.id === inc.id) && (rel.type === inc.type)\n\t})\n\treturn inc || rel\n}\n\n\nconst denormalizeResource = <T extends ResourceType>(res: any, included?: Included, chain: ResourceIdentifierObject[] = []): T => {\n\n\tif (!res) return res\n\n\tconst resource = {\n\t\tid: res.id,\n\t\ttype: res.type,\n\t\t...res.attributes,\n\t}\n\n\tif (res.relationships) Object.keys(res.relationships as object).forEach(key => {\n\t\tconst rel: ResourceIdentifierObject = res.relationships[key].data\n\t\tif (rel) {\n\t\t\tif (chain.filter(r => (r.id === rel.id) && (r.type === rel.type)).length >= config.webhooks.jsonapi.maxResourceIncluded) resource[key] = rel\n\t\t\tif (Array.isArray(rel)) resource[key] = rel.map((r: ResourceIdentifierObject) => denormalizeResource<ResourceType>(findIncluded(r, included), included, [...chain, r]))\n\t\t\telse resource[key] = denormalizeResource<ResourceType>(findIncluded(rel, included), included, [...chain, rel] )\n\t\t} else if (rel === null) resource[key] = null\n\t})\n\n\n\treturn resource\n\n}\n\n\n\nconst generateHMAC = (payload: string, sharedSecret: string): string => {\n\tconst { algorithm, digest } = config.webhooks.signature\n\treturn crypto.createHmac(algorithm, sharedSecret).update(payload).digest(digest)\n}\n\n\ntype CheckStatus = {\n\tok: boolean,\n\ttopic?: string,\n\tmessage?: string\n}\n\n/**\n * \n * @param body the webhook body\n * @param headers all headers map or value of the signature header\n * @param secret the shared secret string\n * @returns \n */\nexport const checkSignature = (body: string, headers: Record<string, string> | string, secret: string): CheckStatus => {\n\n\tconst status: CheckStatus = {\n\t\tok: false\n\t}\n\n\ttry {\n\n\t\tconst topic = (typeof headers === 'string')? undefined : headers[config.webhooks.topic]\n\t\tconst signature = (typeof headers === 'string')? headers : headers[config.webhooks.signature.header]\n\n\t\tif (!secret) return { ...status, message: 'Missing shared secret'}\n\t\tif (!signature) return { ...status, message: 'Missing webhook signature'}\n\n\t\tconst hash = generateHMAC(body, secret)\n\n\t\tstatus.topic = topic\n\n\t\tif (signature === hash) {\n\t\t\tstatus.ok = true\n\t\t\tstatus.message = 'Signature successfully checked'\n\t\t}\n\t\telse status.message = 'Payload signature verification failed'\n\n\t}\n\tcatch (err) {\n\t\tstatus.ok = false\n\t\tstatus.message = (err as Error).message\n\t}\n\n\n\treturn status\n\n}\n\n/*\nexport const sign = (body: string, secret: string, headers?: Record<string, string>): string => {\n\tconst hash = generateHMAC(body, secret)\n\tif (headers) headers[config.webhooks.signature.header] = hash\n\treturn hash\n}\n*/\n\nclass ParseError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t\tthis.name = 'ParseError'\n\t}\n}\n\n\nconst parse = <R extends Resource>(payload: string, type: string): R/* | R[] */=> {\n\ttry {\n\t\tconst res = denormalizePayload<R>(payload) as R\n\t\t// if (Array.isArray(res) && (res.length === 0)) return res\n\t\t// const resType = Array.isArray(res)? res[0].type : res.type\n\t\tconst resType = res.type\n\t\tif (resType !== type) throw new ParseError(`Invalid resource type [${resType}]`)\n\t\treturn res\n\t} catch (error: any) {\n\t\tthrow new ParseError(`Payload parse error [${error.message}]`)\n\t}\n}\n\n\nconst parsers = {\n\taddresses(payload: string): Address {\n\t\treturn parse<Address>(payload, 'addresses')\n\t},\n\tauthorizations(payload: string): Authorization {\n\t\treturn parse<Authorization>(payload, 'authorizations')\n\t},\n\tavalara_accounts(payload: string): AvalaraAccount {\n\t\treturn parse<AvalaraAccount>(payload, 'avalara_accounts')\n\t},\n\tbundles(payload: string): Bundle {\n\t\treturn parse<Bundle>(payload, 'bundles')\n\t},\n\tbuy_x_pay_y_promotions(payload: string): BuyXPayYPromotion {\n\t\treturn parse<BuyXPayYPromotion>(payload, 'buy_x_pay_y_promotions')\n\t},\n\tcaptures(payload: string): Capture {\n\t\treturn parse<Capture>(payload, 'captures')\n\t},\n\tcleanups(payload: string): Cleanup {\n\t\treturn parse<Cleanup>(payload, 'cleanups')\n\t},\n\tcoupons(payload: string): Coupon {\n\t\treturn parse<Coupon>(payload, 'coupons')\n\t},\n\tcustomer_addresses(payload: string): CustomerAddress {\n\t\treturn parse<CustomerAddress>(payload, 'customer_addresses')\n\t},\n\tcustomer_password_resets(payload: string): CustomerPasswordReset {\n\t\treturn parse<CustomerPasswordReset>(payload, 'customer_password_resets')\n\t},\n\tcustomer_subscriptions(payload: string): CustomerSubscription {\n\t\treturn parse<CustomerSubscription>(payload, 'customer_subscriptions')\n\t},\n\tcustomers(payload: string): Customer {\n\t\treturn parse<Customer>(payload, 'customers')\n\t},\n\texports(payload: string): Export {\n\t\treturn parse<Export>(payload, 'exports')\n\t},\n\texternal_promotions(payload: string): ExternalPromotion {\n\t\treturn parse<ExternalPromotion>(payload, 'external_promotions')\n\t},\n\tfixed_amount_promotions(payload: string): FixedAmountPromotion {\n\t\treturn parse<FixedAmountPromotion>(payload, 'fixed_amount_promotions')\n\t},\n\tfixed_price_promotions(payload: string): FixedPricePromotion {\n\t\treturn parse<FixedPricePromotion>(payload, 'fixed_price_promotions')\n\t},\n\tfree_gift_promotions(payload: string): FreeGiftPromotion {\n\t\treturn parse<FreeGiftPromotion>(payload, 'free_gift_promotions')\n\t},\n\tfree_shipping_promotions(payload: string): FreeShippingPromotion {\n\t\treturn parse<FreeShippingPromotion>(payload, 'free_shipping_promotions')\n\t},\n\tgift_cards(payload: string): GiftCard {\n\t\treturn parse<GiftCard>(payload, 'gift_cards')\n\t},\n\timports(payload: string): Import {\n\t\treturn parse<Import>(payload, 'imports')\n\t},\n\tin_stock_subscriptions(payload: string): InStockSubscription {\n\t\treturn parse<InStockSubscription>(payload, 'in_stock_subscriptions')\n\t},\n\tline_items(payload: string): LineItem {\n\t\treturn parse<LineItem>(payload, 'line_items')\n\t},\n\tline_items_options(payload: string): LineItemOption {\n\t\treturn parse<LineItemOption>(payload, 'line_items_options')\n\t},\n\torders(payload: string): Order {\n\t\treturn parse<Order>(payload, 'orders')\n\t},\n\torder_copies(payload: string): OrderCopy {\n\t\treturn parse<OrderCopy>(payload, 'order_copies')\n\t},\n\torder_subscriptions(payload: string): OrderSubscription {\n\t\treturn parse<OrderSubscription>(payload, 'order_subscriptions')\n\t},\n\tparcels(payload: string): Parcel | Parcel[] {\n\t\treturn parse<Parcel>(payload, 'parcels')\n\t},\n\tpercentage_discount_promotions(payload: string): PercentageDiscountPromotion {\n\t\treturn parse<PercentageDiscountPromotion>(payload, 'percentage_discount_promotions')\n\t},\n\tprice_frequency_tiers(payload: string): PriceFrequencyTier {\n\t\treturn parse<PriceFrequencyTier>(payload, 'price_frequency_tiers')\n\t},\n\tprice_volume_tiers(payload: string): PriceVolumeTier {\n\t\treturn parse<PriceVolumeTier>(payload, 'price_volume_tiers')\n\t},\n\tpromotions(payload: string): Promotion {\n\t\treturn parse<Promotion>(payload, 'promotions')\n\t},\n\trecurring_order_copies(payload: string): RecurringOrderCopy {\n\t\treturn parse<RecurringOrderCopy>(payload, 'recurring_order_copies')\n\t},\n\trefunds(payload: string): Refund {\n\t\treturn parse<Refund>(payload, 'refunds')\n\t},\n\treturns(payload: string): Return {\n\t\treturn parse<Return>(payload, 'returns')\n\t},\n\tshipments(payload: string): Shipment {\n\t\treturn parse<Shipment>(payload, 'shipments')\n\t},\n\tshipping_weight_tiers(payload: string): ShippingWeightTier {\n\t\treturn parse<ShippingWeightTier>(payload, 'shipping_weight_tiers')\n\t},\n\tskus(payload: string): Sku {\n\t\treturn parse<Sku>(payload, 'skus')\n\t},\n\tsku_options(payload: string): SkuOption {\n\t\treturn parse<SkuOption>(payload, 'sku_options')\n\t},\n\tstock_transfers(payload: string): StockTransfer {\n\t\treturn parse<StockTransfer>(payload, 'stock_transfers')\n\t},\n\ttransactions(payload: string): Transaction {\n\t\treturn parse<Transaction>(payload, 'transactions')\n\t},\n\tvoids(payload: string): Void {\n\t\treturn parse<Void>(payload, 'voids')\n\t}\n}\n\n\n\nexport const webhooks = {\n\tdenormalizePayload,\n\tcheckSignature,\n\tparse: parsers\n}\n"]}