@pfantato/printful-ts
Version:
Typescript SDK to integrate with Printful
44 lines (43 loc) • 1.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderItem = exports.ProductTemplateOrderItem = exports.CatalogOrderItem = exports.WarehouseOrderItem = exports.BaseOrderItem = exports.OrderItemSource = void 0;
const zod_1 = require("zod");
const common_1 = require("@printful-ts/schemas/common");
const placements_list_schema_1 = require("./placements-list.schema");
const product_options_schema_1 = require("./product-options.schema");
exports.OrderItemSource = zod_1.z.enum([
'catalog',
'product_template',
'warehouse',
]);
exports.BaseOrderItem = zod_1.z.object({
id: zod_1.z.number(),
source: exports.OrderItemSource,
external_id: zod_1.z.string().nullable(),
quantity: zod_1.z.number(),
retail_price: zod_1.z.string(),
name: zod_1.z.string(),
_links: zod_1.z.object({
self: common_1.HateoasLink,
}),
});
exports.WarehouseOrderItem = exports.BaseOrderItem.extend({
source: zod_1.z.literal(exports.OrderItemSource.enum.warehouse),
warehouse_product_variant_id: zod_1.z.number(),
});
exports.CatalogOrderItem = exports.BaseOrderItem.extend({
source: zod_1.z.literal(exports.OrderItemSource.enum.catalog),
catalog_variant_id: zod_1.z.number(),
placements: zod_1.z.array(placements_list_schema_1.PlacementsList),
product_options: zod_1.z.array(product_options_schema_1.ProductOptions),
});
exports.ProductTemplateOrderItem = exports.BaseOrderItem.extend({
source: zod_1.z.literal(exports.OrderItemSource.enum.product_template),
product_template_id: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]),
catalog_variant_id: zod_1.z.number(),
});
exports.OrderItem = zod_1.z.discriminatedUnion('source', [
exports.WarehouseOrderItem,
exports.CatalogOrderItem,
exports.ProductTemplateOrderItem,
]);