rerobe-js-orm 2.4.85 → 2.4.89
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/lib/factories/Merchant/MerchantFromFormState.js +5 -4
- package/lib/form-states/Product/ProductFormState.d.ts +1 -0
- package/lib/form-states/Product/ProductFormState.js +7 -5
- package/lib/helpers/Utilities.d.ts +5 -0
- package/lib/helpers/Utilities.js +24 -0
- package/lib/models/Merchant.d.ts +1 -0
- package/lib/models/Merchant.js +2 -0
- package/lib/models/Product.d.ts +18 -0
- package/lib/models/Product.js +393 -1
- package/lib/types/merchant-types.d.ts +1 -0
- package/lib/types/rerobe-product-types.d.ts +64 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ const MerchantFactory_1 = require("./MerchantFactory");
|
|
|
4
4
|
const Merchant_1 = require("../../models/Merchant");
|
|
5
5
|
class MerchantFromFormState extends MerchantFactory_1.default {
|
|
6
6
|
createMerchant(fs) {
|
|
7
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
8
8
|
const merchantAttributes = {
|
|
9
9
|
id: ((_a = fs.props) === null || _a === void 0 ? void 0 : _a.id) || '',
|
|
10
10
|
name: fs.fields.name.inputValue,
|
|
@@ -27,10 +27,11 @@ class MerchantFromFormState extends MerchantFactory_1.default {
|
|
|
27
27
|
numOrders: (_f = fs.props) === null || _f === void 0 ? void 0 : _f.numOrders,
|
|
28
28
|
numProducts: (_g = fs.props) === null || _g === void 0 ? void 0 : _g.numProducts,
|
|
29
29
|
orderTags: (_h = fs.props) === null || _h === void 0 ? void 0 : _h.orderTags,
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
productTags: (_j = fs.props) === null || _j === void 0 ? void 0 : _j.productTags,
|
|
31
|
+
theme: (_k = fs.props) === null || _k === void 0 ? void 0 : _k.theme,
|
|
32
|
+
webshopTenantId: (_l = fs.props) === null || _l === void 0 ? void 0 : _l.webshopTenantId,
|
|
32
33
|
webhooks: fs.fields.webhooks.selectedValues,
|
|
33
|
-
sharedSecret: (
|
|
34
|
+
sharedSecret: (_m = fs.props) === null || _m === void 0 ? void 0 : _m.sharedSecret,
|
|
34
35
|
};
|
|
35
36
|
return new Merchant_1.default(Object.assign({}, merchantAttributes));
|
|
36
37
|
}
|
|
@@ -531,13 +531,15 @@ class ProductFormState extends FormState_1.default {
|
|
|
531
531
|
hidden = this.props.productStyle.length < 1;
|
|
532
532
|
}
|
|
533
533
|
if (fieldKey === 'tags') {
|
|
534
|
+
let selectedTagOptions = [];
|
|
534
535
|
if (this.props.tags && Array.isArray(this.props.tags) && this.props.tags.length > 0) {
|
|
535
|
-
this.props.tags.
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
});
|
|
536
|
+
selectedTagOptions = this.props.tags.map((t) => ({ label: t, value: t }));
|
|
537
|
+
}
|
|
538
|
+
let tagOptions = [];
|
|
539
|
+
if (this.opts && this.opts.tags && this.opts.tags.length > 0) {
|
|
540
|
+
tagOptions = this.opts.tags.map((t) => ({ label: t, value: t }));
|
|
540
541
|
}
|
|
542
|
+
options = this.utilities.uniqObjArray([...selectedTagOptions, ...tagOptions], 'value');
|
|
541
543
|
hidden = Boolean(this.props.tags && Array.isArray(this.props.tags) && this.props.tags.length < 1);
|
|
542
544
|
}
|
|
543
545
|
if (fieldKey === 'featuredCollections') {
|
|
@@ -7,6 +7,11 @@ export default class Utilities {
|
|
|
7
7
|
getWeekNumberFromDate(dateString: string): string;
|
|
8
8
|
capitalizeString(s: string): string;
|
|
9
9
|
startCase(s: string): string;
|
|
10
|
+
camelCase(s: string): string;
|
|
10
11
|
constantCase(str: string): any;
|
|
11
12
|
makeRandId(length: number): string;
|
|
13
|
+
sanitizeString(v: any): string;
|
|
14
|
+
sanitzeStringArr(v: any): string[];
|
|
15
|
+
sanitizeNumber(v: any, to?: number): number;
|
|
16
|
+
sanitizeMillisTimeStamp(t: any): number;
|
|
12
17
|
}
|
package/lib/helpers/Utilities.js
CHANGED
|
@@ -47,6 +47,9 @@ class Utilities {
|
|
|
47
47
|
startCase(s) {
|
|
48
48
|
return lodash_1.startCase(s);
|
|
49
49
|
}
|
|
50
|
+
camelCase(s) {
|
|
51
|
+
return lodash_1.camelCase(s);
|
|
52
|
+
}
|
|
50
53
|
constantCase(str) {
|
|
51
54
|
return lodash_1.snakeCase(str).toUpperCase();
|
|
52
55
|
}
|
|
@@ -60,5 +63,26 @@ class Utilities {
|
|
|
60
63
|
}
|
|
61
64
|
return result;
|
|
62
65
|
}
|
|
66
|
+
sanitizeString(v) {
|
|
67
|
+
if (v && (typeof v === 'string' || typeof v === 'number')) {
|
|
68
|
+
return String(v);
|
|
69
|
+
}
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
sanitzeStringArr(v) {
|
|
73
|
+
if (v && Array.isArray(v)) {
|
|
74
|
+
return v.filter((e) => e).map((e) => String(e));
|
|
75
|
+
}
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
sanitizeNumber(v, to = 1) {
|
|
79
|
+
return Number.isNaN(parseFloat(String(v))) ? Number(to) : parseFloat(String(v));
|
|
80
|
+
}
|
|
81
|
+
sanitizeMillisTimeStamp(t) {
|
|
82
|
+
if (t && typeof t === 'number') {
|
|
83
|
+
return t;
|
|
84
|
+
}
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
63
87
|
}
|
|
64
88
|
exports.default = Utilities;
|
package/lib/models/Merchant.d.ts
CHANGED
package/lib/models/Merchant.js
CHANGED
|
@@ -34,6 +34,7 @@ class Merchant extends Base_1.default {
|
|
|
34
34
|
this.numOrders = (props === null || props === void 0 ? void 0 : props.numOrders) || 0;
|
|
35
35
|
this.numProducts = (props === null || props === void 0 ? void 0 : props.numProducts) || 0;
|
|
36
36
|
this.orderTags = (props === null || props === void 0 ? void 0 : props.orderTags) || [];
|
|
37
|
+
this.productTags = (props === null || props === void 0 ? void 0 : props.productTags) || [];
|
|
37
38
|
this.theme = (props === null || props === void 0 ? void 0 : props.theme) || {
|
|
38
39
|
layoutType: 'StandardNavLayout',
|
|
39
40
|
bgColor: '#fff',
|
|
@@ -74,6 +75,7 @@ class Merchant extends Base_1.default {
|
|
|
74
75
|
numOrders: this.numOrders,
|
|
75
76
|
numProducts: this.numProducts,
|
|
76
77
|
orderTags: this.orderTags,
|
|
78
|
+
productTags: this.productTags,
|
|
77
79
|
theme: this.theme,
|
|
78
80
|
webshopTenantId: this.webshopTenantId,
|
|
79
81
|
webhooks: this.webhooks,
|
package/lib/models/Product.d.ts
CHANGED
|
@@ -10,11 +10,29 @@ export default class Product extends Base {
|
|
|
10
10
|
toObj(): CompleteProduct;
|
|
11
11
|
toProductInputObjForShopify(location?: string): any;
|
|
12
12
|
toObjForTextTranslation(): TranslatableAttributes;
|
|
13
|
+
toObjForTypesense(): TypesenseProductObj;
|
|
13
14
|
updateSelfFromTranslatedTextArray(translatedTextArray?: string[]): void;
|
|
14
15
|
autoCreateTitle(): string;
|
|
15
16
|
autoCreateDescriptionHTML(): string;
|
|
17
|
+
generateSchemaForTypesense(name?: string): {
|
|
18
|
+
default_sorting_field: string;
|
|
19
|
+
fields: ({
|
|
20
|
+
facet: boolean;
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
optional?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
facet: boolean;
|
|
26
|
+
optional: boolean;
|
|
27
|
+
name: string;
|
|
28
|
+
type: string;
|
|
29
|
+
})[];
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
16
32
|
private materialCompTagsArrayForShopify;
|
|
17
33
|
private materialCompJoinedString;
|
|
18
34
|
private measurementsJoinedString;
|
|
19
35
|
private convertMaterialCompJoinedStrToObj;
|
|
36
|
+
private sanitizeMaterialComp;
|
|
37
|
+
private sanitizeCommission;
|
|
20
38
|
}
|
package/lib/models/Product.js
CHANGED
|
@@ -117,7 +117,7 @@ class Product extends Base_1.default {
|
|
|
117
117
|
}
|
|
118
118
|
toPartialObj() {
|
|
119
119
|
return Object.assign(Object.assign({}, this.attributes), this.filterAttributes);
|
|
120
|
-
}
|
|
120
|
+
} // ToDo: Deprecate soon
|
|
121
121
|
toObj() {
|
|
122
122
|
return Object.assign(Object.assign(Object.assign(Object.assign({}, this.attributes), this.filterAttributes), this.consignmentAttributes), this.timestampAttributes);
|
|
123
123
|
}
|
|
@@ -228,6 +228,87 @@ class Product extends Base_1.default {
|
|
|
228
228
|
condition: this.filterAttributes.condition || this.FIELD_NOT_TRANSLATABLE_KEY,
|
|
229
229
|
};
|
|
230
230
|
}
|
|
231
|
+
toObjForTypesense() {
|
|
232
|
+
const stagedObj = {
|
|
233
|
+
brand: this.utilities.sanitizeString(this.filterAttributes.brand),
|
|
234
|
+
clothingSize: this.utilities.sanitzeStringArr(this.filterAttributes.clothingSize),
|
|
235
|
+
jeanSize: this.utilities.sanitizeString(this.filterAttributes.jeanSize),
|
|
236
|
+
shoeSize: this.utilities.sanitizeString(this.filterAttributes.shoeSize),
|
|
237
|
+
condition: this.utilities.sanitizeString(this.filterAttributes.condition),
|
|
238
|
+
featuredCollections: this.utilities.sanitzeStringArr(this.filterAttributes.featuredCollections),
|
|
239
|
+
isOnSale: this.utilities.sanitizeString(this.consignmentAttributes.isOnSale),
|
|
240
|
+
merchants: this.utilities.sanitzeStringArr(this.attributes.merchants),
|
|
241
|
+
price: this.utilities.sanitizeNumber(this.attributes.price),
|
|
242
|
+
suggestedResalePrice: this.utilities.sanitizeNumber(this.consignmentAttributes.suggestedResalePrice),
|
|
243
|
+
salePrice: this.utilities.sanitizeNumber(this.consignmentAttributes.salePrice),
|
|
244
|
+
compareAtPrice: this.utilities.sanitizeNumber(this.attributes.compareAtPrice),
|
|
245
|
+
costPerItem: this.utilities.sanitizeNumber(this.attributes.costPerItem),
|
|
246
|
+
priceRange: this.utilities.sanitizeString(this.filterAttributes.priceRange),
|
|
247
|
+
productCategory: this.utilities.sanitizeString(this.filterAttributes.productCategory),
|
|
248
|
+
productType: this.utilities.sanitizeString(this.filterAttributes.productType),
|
|
249
|
+
productStyle: this.utilities.sanitzeStringArr(this.filterAttributes.productStyle),
|
|
250
|
+
reRobeCommission: this.sanitizeCommission(),
|
|
251
|
+
rfidTag: this.utilities.sanitizeString(this.attributes.rfidTag),
|
|
252
|
+
salesChannel: this.utilities.sanitzeStringArr(this.consignmentAttributes.salesChannel),
|
|
253
|
+
status: this.utilities.sanitizeString(this.consignmentAttributes.status),
|
|
254
|
+
tags: this.utilities.sanitzeStringArr(this.filterAttributes.tags),
|
|
255
|
+
title: this.utilities.sanitizeString(this.attributes.title),
|
|
256
|
+
vendorName: this.utilities.sanitizeString(this.attributes.vendorName),
|
|
257
|
+
vendorId: this.utilities.sanitizeString(this.attributes.vendorId),
|
|
258
|
+
createdAtTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.createdAtTimestamp),
|
|
259
|
+
updatedAtTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.updatedAtTimestamp),
|
|
260
|
+
sellRequestReviewTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellRequestReviewTimestamp),
|
|
261
|
+
sellRequestReviewDraftTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellRequestReviewDraftTimestamp),
|
|
262
|
+
rejectedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.rejectedTimestamp),
|
|
263
|
+
holdTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.holdTimestamp),
|
|
264
|
+
acceptedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.acceptedTimestamp),
|
|
265
|
+
sellerToDropOffTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellerToDropOffTimestamp),
|
|
266
|
+
sellerToShipTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellerToShipTimestamp),
|
|
267
|
+
sellerToGetPickUpTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellerToGetPickUpTimestamp),
|
|
268
|
+
qualityControlTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.qualityControlTimestamp),
|
|
269
|
+
pendingPublicationTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.pendingPublicationTimestamp),
|
|
270
|
+
listedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.listedTimestamp),
|
|
271
|
+
clearanceTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.clearanceTimestamp),
|
|
272
|
+
reservedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.reservedTimestamp),
|
|
273
|
+
soldTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.soldTimestamp),
|
|
274
|
+
returnedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.returnedTimestamp),
|
|
275
|
+
soldSellerToBePaidTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.soldSellerToBePaidTimestamp),
|
|
276
|
+
soldSellerPaidTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.soldSellerPaidTimestamp),
|
|
277
|
+
sellerSelfRejectTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellerSelfRejectTimestamp),
|
|
278
|
+
liquidationRequestedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.liquidationRequestedTimestamp),
|
|
279
|
+
sellerLiquidatedTimestamp: this.utilities.sanitizeMillisTimeStamp(this.timestampAttributes.sellerLiquidatedTimestamp),
|
|
280
|
+
selectedForClearance: this.utilities.sanitizeString(this.consignmentAttributes.selectedForClearance),
|
|
281
|
+
availableForSale: !!this.attributes.availableForSale,
|
|
282
|
+
color: this.utilities.sanitizeString(this.filterAttributes.color),
|
|
283
|
+
description: this.utilities.sanitizeString(this.attributes.description),
|
|
284
|
+
discountType: this.utilities.sanitizeString(this.consignmentAttributes.discountType),
|
|
285
|
+
discountValue: this.utilities.sanitizeNumber(this.consignmentAttributes.discountValue, 0),
|
|
286
|
+
id: this.utilities.sanitizeString(this.filterAttributes.documentId),
|
|
287
|
+
documentId: this.utilities.sanitizeString(this.filterAttributes.documentId),
|
|
288
|
+
shopifyId: this.utilities.sanitizeString(this.attributes.shopifyId),
|
|
289
|
+
gender: this.utilities.sanitizeString(this.filterAttributes.gender),
|
|
290
|
+
handle: this.utilities.sanitizeString(this.attributes.handle),
|
|
291
|
+
imageUrls: this.utilities.sanitzeStringArr(this.attributes.imageUrls),
|
|
292
|
+
sellRequestImageUrls: this.utilities.sanitzeStringArr(this.consignmentAttributes.sellRequestImageUrls),
|
|
293
|
+
reservedBy: this.utilities.sanitzeStringArr(this.attributes.reservedBy),
|
|
294
|
+
'materialComposition.names': Object.keys(this.sanitizeMaterialComp()),
|
|
295
|
+
'inventoryLocations.ids': this.consignmentAttributes.inventoryLocations && Array.isArray(this.consignmentAttributes.inventoryLocations)
|
|
296
|
+
? this.consignmentAttributes.inventoryLocations.map((c) => String(c.id))
|
|
297
|
+
: [],
|
|
298
|
+
};
|
|
299
|
+
this.consignmentAttributes.inventoryLocations.forEach((l) => {
|
|
300
|
+
if (l.id) {
|
|
301
|
+
stagedObj[`inventoryLocations.${l.id}.availableAmount`] = l.availableAmount || 0;
|
|
302
|
+
stagedObj[`inventoryLocations.${l.id}.incomingAmount`] = l.incomingAmount || 0;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
Object.values(this.sanitizeMaterialComp()).forEach((v, i) => {
|
|
306
|
+
if (v) {
|
|
307
|
+
stagedObj[`materialComposition.${Object.keys(this.sanitizeMaterialComp())[i]}.value`] = v;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
return stagedObj;
|
|
311
|
+
}
|
|
231
312
|
updateSelfFromTranslatedTextArray(translatedTextArray = []) {
|
|
232
313
|
const checkFieldTranslated = (val) => {
|
|
233
314
|
return val !== this.FIELD_NOT_TRANSLATABLE_KEY;
|
|
@@ -326,6 +407,281 @@ class Product extends Base_1.default {
|
|
|
326
407
|
return acc;
|
|
327
408
|
}, '');
|
|
328
409
|
}
|
|
410
|
+
generateSchemaForTypesense(name = 'prod_products_20210108') {
|
|
411
|
+
return {
|
|
412
|
+
default_sorting_field: 'createdAtTimestamp',
|
|
413
|
+
fields: [
|
|
414
|
+
{
|
|
415
|
+
facet: true,
|
|
416
|
+
name: 'brand',
|
|
417
|
+
type: 'string',
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
facet: true,
|
|
421
|
+
name: 'clothingSize',
|
|
422
|
+
type: 'string[]',
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
facet: true,
|
|
426
|
+
name: 'jeanSize',
|
|
427
|
+
type: 'string',
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
facet: true,
|
|
431
|
+
name: 'shoeSize',
|
|
432
|
+
type: 'string',
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
facet: true,
|
|
436
|
+
name: 'condition',
|
|
437
|
+
type: 'string',
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
facet: true,
|
|
441
|
+
optional: true,
|
|
442
|
+
name: 'featuredCollections',
|
|
443
|
+
type: 'string[]',
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
facet: true,
|
|
447
|
+
optional: true,
|
|
448
|
+
name: 'isOnSale',
|
|
449
|
+
type: 'string',
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
facet: false,
|
|
453
|
+
optional: false,
|
|
454
|
+
name: 'merchants',
|
|
455
|
+
type: 'string[]',
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
facet: true,
|
|
459
|
+
name: 'price',
|
|
460
|
+
type: 'float',
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
facet: true,
|
|
464
|
+
optional: true,
|
|
465
|
+
name: 'suggestedResalePrice',
|
|
466
|
+
type: 'float',
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
facet: true,
|
|
470
|
+
optional: true,
|
|
471
|
+
name: 'salePrice',
|
|
472
|
+
type: 'float',
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
facet: false,
|
|
476
|
+
optional: true,
|
|
477
|
+
name: 'compareAtPrice',
|
|
478
|
+
type: 'float',
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
facet: false,
|
|
482
|
+
optional: true,
|
|
483
|
+
name: 'costPerItem',
|
|
484
|
+
type: 'float',
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
facet: true,
|
|
488
|
+
name: 'priceRange',
|
|
489
|
+
type: 'string',
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
facet: true,
|
|
493
|
+
name: 'productCategory',
|
|
494
|
+
type: 'string',
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
facet: true,
|
|
498
|
+
name: 'productType',
|
|
499
|
+
type: 'string',
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
facet: true,
|
|
503
|
+
name: 'productStyle',
|
|
504
|
+
type: 'string[]',
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
facet: true,
|
|
508
|
+
name: 'reRobeCommission',
|
|
509
|
+
type: 'float',
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
facet: true,
|
|
513
|
+
optional: true,
|
|
514
|
+
name: 'rfidTag',
|
|
515
|
+
type: 'string',
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
facet: true,
|
|
519
|
+
optional: true,
|
|
520
|
+
name: 'salesChannel',
|
|
521
|
+
type: 'string[]',
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
facet: true,
|
|
525
|
+
name: 'status',
|
|
526
|
+
type: 'string',
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
facet: true,
|
|
530
|
+
optional: true,
|
|
531
|
+
name: 'tags',
|
|
532
|
+
type: 'string[]',
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
facet: false,
|
|
536
|
+
name: 'title',
|
|
537
|
+
type: 'string',
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
facet: true,
|
|
541
|
+
name: 'vendorName',
|
|
542
|
+
type: 'string',
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
facet: true,
|
|
546
|
+
name: 'vendorId',
|
|
547
|
+
type: 'string',
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
facet: false,
|
|
551
|
+
optional: true,
|
|
552
|
+
name: '.*Timestamp',
|
|
553
|
+
type: 'int32',
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
facet: false,
|
|
557
|
+
name: 'createdAtTimestamp',
|
|
558
|
+
type: 'int32',
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
facet: false,
|
|
562
|
+
name: 'updatedAtTimestamp',
|
|
563
|
+
type: 'int32',
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
facet: true,
|
|
567
|
+
name: 'availableForSale',
|
|
568
|
+
type: 'bool',
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
facet: true,
|
|
572
|
+
name: 'selectedForClearance',
|
|
573
|
+
type: 'string',
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
facet: true,
|
|
577
|
+
name: 'color',
|
|
578
|
+
type: 'string',
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
facet: false,
|
|
582
|
+
name: 'description',
|
|
583
|
+
type: 'string',
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
facet: false,
|
|
587
|
+
optional: true,
|
|
588
|
+
name: 'discountType',
|
|
589
|
+
type: 'string',
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
facet: false,
|
|
593
|
+
optional: true,
|
|
594
|
+
name: 'discountValue',
|
|
595
|
+
type: 'string',
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
facet: false,
|
|
599
|
+
name: 'id',
|
|
600
|
+
type: 'string',
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
facet: false,
|
|
604
|
+
name: 'documentId',
|
|
605
|
+
type: 'string',
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
facet: false,
|
|
609
|
+
name: 'shopifyId',
|
|
610
|
+
type: 'string',
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
facet: true,
|
|
614
|
+
name: 'gender',
|
|
615
|
+
type: 'string',
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
facet: false,
|
|
619
|
+
optional: true,
|
|
620
|
+
name: 'handle',
|
|
621
|
+
type: 'string',
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
facet: false,
|
|
625
|
+
name: 'imageUrls',
|
|
626
|
+
type: 'string[]',
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
facet: false,
|
|
630
|
+
name: 'sellRequestImageUrls',
|
|
631
|
+
type: 'string[]',
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
facet: false,
|
|
635
|
+
optional: true,
|
|
636
|
+
name: 'notesForProductionTeam',
|
|
637
|
+
type: 'string',
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
facet: false,
|
|
641
|
+
optional: true,
|
|
642
|
+
name: 'nextAvailableSeason',
|
|
643
|
+
type: 'string',
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
facet: false,
|
|
647
|
+
optional: true,
|
|
648
|
+
name: 'reservedBy',
|
|
649
|
+
type: 'string[]',
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
facet: true,
|
|
653
|
+
optional: true,
|
|
654
|
+
name: 'inventoryLocations.ids',
|
|
655
|
+
type: 'string[]',
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
facet: true,
|
|
659
|
+
optional: true,
|
|
660
|
+
name: 'inventoryLocations..*.availableAmount',
|
|
661
|
+
type: 'int32',
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
facet: true,
|
|
665
|
+
optional: true,
|
|
666
|
+
name: 'inventoryLocations..*.incomingAmount',
|
|
667
|
+
type: 'int32',
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
facet: true,
|
|
671
|
+
optional: true,
|
|
672
|
+
name: 'materialComposition.names',
|
|
673
|
+
type: 'string[]',
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
facet: true,
|
|
677
|
+
optional: true,
|
|
678
|
+
name: 'materialComposition..*.value',
|
|
679
|
+
type: 'int32',
|
|
680
|
+
},
|
|
681
|
+
],
|
|
682
|
+
name,
|
|
683
|
+
};
|
|
684
|
+
}
|
|
329
685
|
materialCompTagsArrayForShopify() {
|
|
330
686
|
return Object.keys(this.filterAttributes.materialComposition).reduce((acc, cur, idx) => {
|
|
331
687
|
acc.push(`${cur} ${Object.values(this.filterAttributes.materialComposition)[idx]}`);
|
|
@@ -367,5 +723,41 @@ class Product extends Base_1.default {
|
|
|
367
723
|
}
|
|
368
724
|
return materialObj;
|
|
369
725
|
}
|
|
726
|
+
sanitizeMaterialComp() {
|
|
727
|
+
let materialComp = this.filterAttributes.materialComposition;
|
|
728
|
+
if (materialComp && Array.isArray(materialComp)) {
|
|
729
|
+
materialComp = materialComp.reduce((acc, cur) => {
|
|
730
|
+
const camelKey = this.utilities.camelCase(cur);
|
|
731
|
+
acc[camelKey] = 100;
|
|
732
|
+
return acc;
|
|
733
|
+
}, {});
|
|
734
|
+
}
|
|
735
|
+
if (typeof materialComp !== 'object') {
|
|
736
|
+
materialComp = {};
|
|
737
|
+
}
|
|
738
|
+
if (materialComp && Object.keys(materialComp).length > 0) {
|
|
739
|
+
const mcKeys = Object.keys(materialComp);
|
|
740
|
+
const mcValues = Object.values(materialComp);
|
|
741
|
+
materialComp = mcKeys.reduce((acc, curr, ind) => {
|
|
742
|
+
if (curr.charCodeAt(0) >= 65 && curr.charCodeAt(0) <= 90) {
|
|
743
|
+
return acc;
|
|
744
|
+
}
|
|
745
|
+
const camelKey = this.utilities.camelCase(curr);
|
|
746
|
+
acc[camelKey] = Number(mcValues[ind]);
|
|
747
|
+
return acc;
|
|
748
|
+
}, {});
|
|
749
|
+
}
|
|
750
|
+
return materialComp;
|
|
751
|
+
}
|
|
752
|
+
sanitizeCommission() {
|
|
753
|
+
const com = this.consignmentAttributes.reRobeCommission;
|
|
754
|
+
if (Number.isNaN(parseFloat(String(com)))) {
|
|
755
|
+
return 0.5;
|
|
756
|
+
}
|
|
757
|
+
if (parseFloat(String(com)) <= 1) {
|
|
758
|
+
return parseFloat(String(com));
|
|
759
|
+
}
|
|
760
|
+
return parseFloat(String(com)) / 100;
|
|
761
|
+
}
|
|
370
762
|
}
|
|
371
763
|
exports.default = Product;
|
|
@@ -231,3 +231,67 @@ declare type InventoryLocation = {
|
|
|
231
231
|
incomingAmount: number;
|
|
232
232
|
availableAmount: number;
|
|
233
233
|
};
|
|
234
|
+
declare type TypesenseProductObj = {
|
|
235
|
+
brand: string;
|
|
236
|
+
clothingSize: string[];
|
|
237
|
+
jeanSize: string;
|
|
238
|
+
shoeSize: string;
|
|
239
|
+
condition: string;
|
|
240
|
+
featuredCollections: string[];
|
|
241
|
+
isOnSale: string;
|
|
242
|
+
merchants: string[];
|
|
243
|
+
price: number;
|
|
244
|
+
suggestedResalePrice: number;
|
|
245
|
+
salePrice: number;
|
|
246
|
+
compareAtPrice: number;
|
|
247
|
+
costPerItem: number;
|
|
248
|
+
priceRange: string;
|
|
249
|
+
productCategory: string;
|
|
250
|
+
productType: string;
|
|
251
|
+
productStyle: string[];
|
|
252
|
+
reRobeCommission: number;
|
|
253
|
+
rfidTag: string;
|
|
254
|
+
salesChannel: string[];
|
|
255
|
+
status: string;
|
|
256
|
+
tags: string[];
|
|
257
|
+
title: string;
|
|
258
|
+
vendorName: string;
|
|
259
|
+
vendorId: string;
|
|
260
|
+
createdAtTimestamp: number;
|
|
261
|
+
updatedAtTimestamp: number;
|
|
262
|
+
sellRequestReviewTimestamp: number;
|
|
263
|
+
sellRequestReviewDraftTimestamp: number;
|
|
264
|
+
rejectedTimestamp: number;
|
|
265
|
+
holdTimestamp: number;
|
|
266
|
+
acceptedTimestamp: number;
|
|
267
|
+
sellerToDropOffTimestamp: number;
|
|
268
|
+
sellerToShipTimestamp: number;
|
|
269
|
+
sellerToGetPickUpTimestamp: number;
|
|
270
|
+
qualityControlTimestamp: number;
|
|
271
|
+
pendingPublicationTimestamp: number;
|
|
272
|
+
listedTimestamp: number;
|
|
273
|
+
clearanceTimestamp: number;
|
|
274
|
+
reservedTimestamp: number;
|
|
275
|
+
soldTimestamp: number;
|
|
276
|
+
returnedTimestamp: number;
|
|
277
|
+
soldSellerToBePaidTimestamp: number;
|
|
278
|
+
soldSellerPaidTimestamp: number;
|
|
279
|
+
sellerSelfRejectTimestamp: number;
|
|
280
|
+
liquidationRequestedTimestamp: number;
|
|
281
|
+
sellerLiquidatedTimestamp: number;
|
|
282
|
+
availableForSale: boolean;
|
|
283
|
+
color: string;
|
|
284
|
+
description: string;
|
|
285
|
+
discountType: string;
|
|
286
|
+
discountValue: number;
|
|
287
|
+
id: string;
|
|
288
|
+
documentId: string;
|
|
289
|
+
gender: string;
|
|
290
|
+
handle: string;
|
|
291
|
+
imageUrls: string[];
|
|
292
|
+
sellRequestImageUrls: string[];
|
|
293
|
+
reservedBy: string[];
|
|
294
|
+
'inventoryLocations.ids': string[];
|
|
295
|
+
'materialComposition.names': string[];
|
|
296
|
+
[key: string]: any;
|
|
297
|
+
};
|