@tonytang99/integration-canonical 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +414 -1
  2. package/dist/index.d.ts +5 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +80 -15
  5. package/dist/index.js.map +1 -1
  6. package/dist/schemas/customer.d.ts +746 -0
  7. package/dist/schemas/customer.d.ts.map +1 -0
  8. package/dist/schemas/customer.js +282 -0
  9. package/dist/schemas/customer.js.map +1 -0
  10. package/dist/schemas/index.d.ts +13 -0
  11. package/dist/schemas/index.d.ts.map +1 -0
  12. package/dist/schemas/index.js +33 -0
  13. package/dist/schemas/index.js.map +1 -0
  14. package/dist/schemas/inventory.d.ts +1642 -0
  15. package/dist/schemas/inventory.d.ts.map +1 -0
  16. package/dist/schemas/inventory.js +302 -0
  17. package/dist/schemas/inventory.js.map +1 -0
  18. package/dist/schemas/order.d.ts +1339 -0
  19. package/dist/schemas/order.d.ts.map +1 -0
  20. package/dist/schemas/order.js +310 -0
  21. package/dist/schemas/order.js.map +1 -0
  22. package/dist/schemas/product.d.ts +717 -0
  23. package/dist/schemas/product.d.ts.map +1 -0
  24. package/dist/schemas/product.js +303 -0
  25. package/dist/schemas/product.js.map +1 -0
  26. package/dist/slots.d.ts +572 -0
  27. package/dist/slots.d.ts.map +1 -0
  28. package/dist/slots.js +20 -0
  29. package/dist/slots.js.map +1 -0
  30. package/dist/types/common.d.ts +284 -0
  31. package/dist/types/common.d.ts.map +1 -0
  32. package/dist/types/common.js +401 -0
  33. package/dist/types/common.js.map +1 -0
  34. package/dist/types/enrichments.d.ts +378 -0
  35. package/dist/types/enrichments.d.ts.map +1 -0
  36. package/dist/types/enrichments.js +96 -0
  37. package/dist/types/enrichments.js.map +1 -0
  38. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/schemas/product.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductHelper = exports.MinimalProductSchema = exports.CanonicalProductSchema = exports.ProductVariantSchema = exports.ProductImageSchema = exports.ProductDimensionsSchema = exports.ProductWeightSchema = exports.ProductCondition = exports.ProductAvailability = void 0;
4
+ // packages/canonical/src/schemas/product.ts
5
+ const zod_1 = require("zod");
6
+ const common_1 = require("../types/common");
7
+ // ============================================================================
8
+ // PRODUCT SCHEMAS
9
+ // ============================================================================
10
+ /**
11
+ * Product availability status
12
+ */
13
+ exports.ProductAvailability = zod_1.z.enum([
14
+ 'available',
15
+ 'preorder',
16
+ 'backorder',
17
+ 'discontinued',
18
+ 'out-of-stock',
19
+ ]);
20
+ /**
21
+ * Product condition
22
+ */
23
+ exports.ProductCondition = zod_1.z.enum([
24
+ 'new',
25
+ 'refurbished',
26
+ 'used',
27
+ ]);
28
+ /**
29
+ * Product weight with unit
30
+ */
31
+ exports.ProductWeightSchema = zod_1.z.object({
32
+ value: zod_1.z.number().positive(),
33
+ unit: zod_1.z.enum(['kg', 'g', 'lb', 'oz']),
34
+ });
35
+ /**
36
+ * Product dimensions
37
+ */
38
+ exports.ProductDimensionsSchema = zod_1.z.object({
39
+ length: zod_1.z.number().positive(),
40
+ width: zod_1.z.number().positive(),
41
+ height: zod_1.z.number().positive(),
42
+ unit: zod_1.z.enum(['cm', 'm', 'in', 'ft']),
43
+ });
44
+ /**
45
+ * Product image
46
+ */
47
+ exports.ProductImageSchema = zod_1.z.object({
48
+ url: zod_1.z.string().url(),
49
+ altText: zod_1.z.string().optional(),
50
+ sortOrder: zod_1.z.number().int().optional(),
51
+ isThumbnail: zod_1.z.boolean().optional(),
52
+ });
53
+ /**
54
+ * Product variant/option
55
+ */
56
+ exports.ProductVariantSchema = zod_1.z.object({
57
+ id: zod_1.z.string(),
58
+ sku: zod_1.z.string(),
59
+ name: zod_1.z.string().optional(),
60
+ // Variant-specific pricing
61
+ price: common_1.MoneySchema.optional(),
62
+ compareAtPrice: common_1.MoneySchema.optional(),
63
+ // Variant-specific inventory
64
+ inventory: zod_1.z.object({
65
+ quantity: zod_1.z.number().int(),
66
+ tracked: zod_1.z.boolean(),
67
+ allowBackorder: zod_1.z.boolean().optional(),
68
+ }).optional(),
69
+ // Options (e.g., color: "Red", size: "Large")
70
+ options: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
71
+ // Variant image
72
+ image: exports.ProductImageSchema.optional(),
73
+ // Variant availability
74
+ isAvailable: zod_1.z.boolean().optional(),
75
+ });
76
+ /**
77
+ * Canonical Product Schema
78
+ *
79
+ * This represents a normalized product that can be mapped to/from:
80
+ * - BigCommerce Products
81
+ * - MYOB Stock Items
82
+ * - Adobe Commerce (Magento) Products
83
+ * - Shopify Products
84
+ * etc.
85
+ */
86
+ exports.CanonicalProductSchema = zod_1.z.object({
87
+ // Core identifiers
88
+ id: zod_1.z.string(),
89
+ sku: zod_1.z.string(),
90
+ // Basic information
91
+ name: zod_1.z.string().min(1, 'Product name is required'),
92
+ description: zod_1.z.string().optional(),
93
+ shortDescription: zod_1.z.string().optional(),
94
+ // Pricing
95
+ price: common_1.MoneySchema,
96
+ compareAtPrice: common_1.MoneySchema.optional(), // "Was" price for showing discounts
97
+ costPrice: common_1.MoneySchema.optional(), // Wholesale/cost price
98
+ // Tax information
99
+ taxable: zod_1.z.boolean().optional(),
100
+ taxCode: zod_1.z.string().optional(),
101
+ // Inventory
102
+ inventory: zod_1.z.object({
103
+ quantity: zod_1.z.number().int(),
104
+ tracked: zod_1.z.boolean(), // Whether inventory is tracked
105
+ allowBackorder: zod_1.z.boolean().optional(),
106
+ lowStockLevel: zod_1.z.number().int().optional(),
107
+ warningLevel: zod_1.z.number().int().optional(),
108
+ }),
109
+ // Physical properties
110
+ weight: exports.ProductWeightSchema.optional(),
111
+ dimensions: exports.ProductDimensionsSchema.optional(),
112
+ // Status and availability
113
+ isVisible: zod_1.z.boolean().optional(),
114
+ availability: exports.ProductAvailability.optional(),
115
+ condition: exports.ProductCondition.optional(),
116
+ // Categorization
117
+ categories: zod_1.z.array(zod_1.z.string()).optional(), // Category IDs or names
118
+ brand: zod_1.z.string().optional(),
119
+ manufacturer: zod_1.z.string().optional(),
120
+ // Media
121
+ images: zod_1.z.array(exports.ProductImageSchema).optional(),
122
+ // Variants (for products with options like size, color, etc.)
123
+ variants: zod_1.z.array(exports.ProductVariantSchema).optional(),
124
+ hasVariants: zod_1.z.boolean().optional(),
125
+ // SEO
126
+ seo: zod_1.z.object({
127
+ title: zod_1.z.string().optional(),
128
+ description: zod_1.z.string().optional(),
129
+ keywords: zod_1.z.array(zod_1.z.string()).optional(),
130
+ }).optional(),
131
+ // Shipping
132
+ requiresShipping: zod_1.z.boolean().optional(),
133
+ freeShipping: zod_1.z.boolean().optional(),
134
+ // Custom fields (for system-specific data that doesn't fit elsewhere)
135
+ customFields: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
136
+ // Metadata
137
+ metadata: zod_1.z.object({
138
+ createdAt: zod_1.z.string().datetime().optional(),
139
+ updatedAt: zod_1.z.string().datetime().optional(),
140
+ source: zod_1.z.string(), // e.g., 'bigcommerce', 'myob', 'adobe'
141
+ sourceId: zod_1.z.string(), // Original ID in source system
142
+ externalIds: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), // IDs in other systems
143
+ }),
144
+ });
145
+ /**
146
+ * Minimal product schema for simple operations
147
+ */
148
+ exports.MinimalProductSchema = zod_1.z.object({
149
+ id: zod_1.z.string(),
150
+ sku: zod_1.z.string(),
151
+ name: zod_1.z.string(),
152
+ price: common_1.MoneySchema,
153
+ inventory: zod_1.z.object({
154
+ quantity: zod_1.z.number().int(),
155
+ tracked: zod_1.z.boolean(),
156
+ }),
157
+ });
158
+ // ============================================================================
159
+ // HELPER FUNCTIONS
160
+ // ============================================================================
161
+ exports.ProductHelper = {
162
+ /**
163
+ * Check if product is in stock
164
+ */
165
+ isInStock(product) {
166
+ if (!product.inventory.tracked) {
167
+ return true; // Non-tracked inventory is always "in stock"
168
+ }
169
+ return product.inventory.quantity > 0 || product.inventory.allowBackorder === true;
170
+ },
171
+ /**
172
+ * Check if product is low stock
173
+ */
174
+ isLowStock(product) {
175
+ if (!product.inventory.tracked || !product.inventory.lowStockLevel) {
176
+ return false;
177
+ }
178
+ return product.inventory.quantity <= product.inventory.lowStockLevel;
179
+ },
180
+ /**
181
+ * Get product display price (considering compare-at price)
182
+ */
183
+ getDisplayPrice(product) {
184
+ const isOnSale = !!(product.compareAtPrice &&
185
+ product.compareAtPrice.amount > product.price.amount);
186
+ const discount = isOnSale && product.compareAtPrice
187
+ ? {
188
+ amount: product.compareAtPrice.amount - product.price.amount,
189
+ currency: product.price.currency,
190
+ }
191
+ : undefined;
192
+ return {
193
+ price: product.price,
194
+ isOnSale,
195
+ discount,
196
+ };
197
+ },
198
+ /**
199
+ * Get product thumbnail image
200
+ */
201
+ getThumbnail(product) {
202
+ if (!product.images || product.images.length === 0) {
203
+ return null;
204
+ }
205
+ // Find explicitly marked thumbnail
206
+ const thumbnail = product.images.find(img => img.isThumbnail);
207
+ if (thumbnail) {
208
+ return thumbnail;
209
+ }
210
+ // Fall back to first image
211
+ return product.images[0];
212
+ },
213
+ /**
214
+ * Get variant by SKU
215
+ */
216
+ getVariantBySku(product, sku) {
217
+ if (!product.variants) {
218
+ return null;
219
+ }
220
+ return product.variants.find(v => v.sku === sku) || null;
221
+ },
222
+ /**
223
+ * Get total inventory across all variants
224
+ */
225
+ getTotalInventory(product) {
226
+ if (!product.hasVariants || !product.variants) {
227
+ return product.inventory.quantity;
228
+ }
229
+ return product.variants.reduce((total, variant) => {
230
+ return total + (variant.inventory?.quantity || 0);
231
+ }, 0);
232
+ },
233
+ /**
234
+ * Create a minimal product from full product
235
+ */
236
+ toMinimal(product) {
237
+ return {
238
+ id: product.id,
239
+ sku: product.sku,
240
+ name: product.name,
241
+ price: product.price,
242
+ inventory: {
243
+ quantity: product.inventory.quantity,
244
+ tracked: product.inventory.tracked,
245
+ },
246
+ };
247
+ },
248
+ /**
249
+ * Check if product has valid price
250
+ */
251
+ hasValidPrice(product) {
252
+ return product.price.amount > 0;
253
+ },
254
+ /**
255
+ * Get product weight in kilograms (normalized)
256
+ */
257
+ getWeightInKg(product) {
258
+ if (!product.weight) {
259
+ return null;
260
+ }
261
+ const { value, unit } = product.weight;
262
+ switch (unit) {
263
+ case 'kg':
264
+ return value;
265
+ case 'g':
266
+ return value / 1000;
267
+ case 'lb':
268
+ return value * 0.453592;
269
+ case 'oz':
270
+ return value * 0.0283495;
271
+ default:
272
+ return null;
273
+ }
274
+ },
275
+ /**
276
+ * Get product volume in cubic meters (normalized)
277
+ */
278
+ getVolumeInCubicMeters(product) {
279
+ if (!product.dimensions) {
280
+ return null;
281
+ }
282
+ const { length, width, height, unit } = product.dimensions;
283
+ let volumeInMeters = length * width * height;
284
+ switch (unit) {
285
+ case 'm':
286
+ // Already in meters
287
+ break;
288
+ case 'cm':
289
+ volumeInMeters = volumeInMeters / 1000000; // cm³ to m³
290
+ break;
291
+ case 'in':
292
+ volumeInMeters = volumeInMeters * 0.000016387; // in³ to m³
293
+ break;
294
+ case 'ft':
295
+ volumeInMeters = volumeInMeters * 0.0283168; // ft³ to m³
296
+ break;
297
+ default:
298
+ return null;
299
+ }
300
+ return volumeInMeters;
301
+ },
302
+ };
303
+ //# sourceMappingURL=product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/schemas/product.ts"],"names":[],"mappings":"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"}