store-scrapper-js-common 1.0.167 → 1.0.169

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.
@@ -18,6 +18,7 @@ export declare enum SQSCommandNames {
18
18
  getPages = "getPages",
19
19
  getProducts = "getProducts",
20
20
  getProduct = "getProduct",
21
+ getSubMenuPages = "getSubMenuPages",
21
22
  persistCategory = "persistCategory",
22
23
  persistCategoryPages = "persistCategoryPages",
23
24
  persistProducts = "persistProducts",
@@ -32,6 +32,7 @@ var SQSCommandNames;
32
32
  SQSCommandNames["getPages"] = "getPages";
33
33
  SQSCommandNames["getProducts"] = "getProducts";
34
34
  SQSCommandNames["getProduct"] = "getProduct";
35
+ SQSCommandNames["getSubMenuPages"] = "getSubMenuPages";
35
36
  SQSCommandNames["persistCategory"] = "persistCategory";
36
37
  SQSCommandNames["persistCategoryPages"] = "persistCategoryPages";
37
38
  SQSCommandNames["persistProducts"] = "persistProducts";
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"/","sources":["classes/command.ts"],"names":[],"mappings":";;;AACA,kDAA2C;AAG3C,MAAa,OAAO;CAUnB;AAVD,0BAUC;AAEY,QAAA,eAAe,GAAG,CAAC,YAA+B,EAAE,WAA6B,EACzB,EAAE;IACrE,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,WAAW,EAAE;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;gBACnC,YAAY,GAAG,CAAC,CAAC;gBACjB,MAAM;aACP;SACF;KACF;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,CAAC,IAAqB,EACjD,QAAwB,EACxB,OAAgB,EAChB,WAAoC,EACxB,EAAE,CAAC,CAAC;IAChB,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,wDAAqC,CAAA;IACrC,wCAAqB,CAAA;IACrB,8CAA2B,CAAA;IAC3B,4CAAyB,CAAA;IAEzB,sDAAmC,CAAA;IACnC,gEAA6C,CAAA;IAC7C,sDAAmC,CAAA;IACnC,oDAAiC,CAAA;IAEjC,gEAA6C,CAAA;IAC7C,sEAAmD,CAAA;IACnD,0DAAuC,CAAA;AACzC,CAAC,EAfW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAe1B;AAEY,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AACxC,QAAA,cAAc,GAAG,mBAAmB,CAAC;AAErC,QAAA,aAAa,GAAG,CAAC,OAAgB,EAAE,KAAc,EAAE,YAAqB,EAAW,EAAE;IAChG,MAAM,YAAY,GAAG,CAAC,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,KAAK,IAAI,sBAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnG,MAAM,gBAAgB,GAAG,CAAC,iBAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,YAAY,IAAI,0BAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpI,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5E,CAAC,CAAC","sourcesContent":["import { ObjectLiteral } from './object-literal';\nimport { isUrl } from '../utils/url-utils';\nimport { StoreConfig } from '../dto/store-config.dto';\n\nexport class Command {\n name: string;\n\n metadata?: ObjectLiteral;\n\n storeId?: string;\n\n storeConfig?: StoreConfig;\n\n nextCommand?: string;\n}\n\nexport const getCommandsStep = (crawlerSteps: SQSCommandNames[], currentStep?: SQSCommandNames)\n : {firstStep: SQSCommandNames, nextStep: SQSCommandNames | null} => {\n let currentIndex = 0;\n\n if (currentStep) {\n for (let i = 0; i < crawlerSteps.length; i += 1) {\n if (crawlerSteps[i] === currentStep) {\n currentIndex = i;\n break;\n }\n }\n }\n\n const firstStep = crawlerSteps[currentIndex];\n const nextStep = crawlerSteps.length > (currentIndex + 1) ? crawlerSteps[currentIndex + 1] : null;\n\n return { firstStep, nextStep };\n};\n\nexport const createCommand = (name: SQSCommandNames,\n metadata?: ObjectLiteral,\n storeId?: string,\n nextCommand?: SQSCommandNames | null)\n : Command => ({\n name,\n metadata,\n storeId,\n nextCommand,\n});\n\nexport enum SQSCommandNames {\n getMenuPages = 'getMenuPages',\n getCategoryPages = 'getCategoryPages',\n getPages = 'getPages',\n getProducts = 'getProducts',\n getProduct = 'getProduct',\n\n persistCategory = 'persistCategory',\n persistCategoryPages = 'persistCategoryPages',\n persistProducts = 'persistProducts',\n persistProduct = 'persistProduct',\n\n processProductPrices = 'processProductPrices',\n processCategoryKeywords = 'processCategoryKeywords',\n processPriceStats = 'processPriceStats'\n}\n\nexport const SQSPersistenceName = 'PersistenceQueue';\nexport const SQSCommandName = 'StoreCommandQueue';\n\nexport const getNextSQSUrl = (command: Command, queue?: string, persistQueue?: string) : string => {\n const commandQueue = !isUrl(queue) ? process.env.SQSCommandUrl + (queue || SQSCommandName) : queue;\n const persistenceQueue = !isUrl(persistQueue) ? process.env.SQSPersistenceUrl + (persistQueue || SQSPersistenceName) : persistQueue;\n\n return command.name.includes('persist') ? persistenceQueue : commandQueue;\n};\n"]}
1
+ {"version":3,"file":"command.js","sourceRoot":"/","sources":["classes/command.ts"],"names":[],"mappings":";;;AACA,kDAA2C;AAG3C,MAAa,OAAO;CAUnB;AAVD,0BAUC;AAEY,QAAA,eAAe,GAAG,CAAC,YAA+B,EAAE,WAA6B,EACzB,EAAE;IACrE,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,WAAW,EAAE;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;gBACnC,YAAY,GAAG,CAAC,CAAC;gBACjB,MAAM;aACP;SACF;KACF;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,CAAC,IAAqB,EACjD,QAAwB,EACxB,OAAgB,EAChB,WAAoC,EACxB,EAAE,CAAC,CAAC;IAChB,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,wDAAqC,CAAA;IACrC,wCAAqB,CAAA;IACrB,8CAA2B,CAAA;IAC3B,4CAAyB,CAAA;IAEzB,sDAAmC,CAAA;IAEnC,sDAAmC,CAAA;IACnC,gEAA6C,CAAA;IAC7C,sDAAmC,CAAA;IACnC,oDAAiC,CAAA;IAEjC,gEAA6C,CAAA;IAC7C,sEAAmD,CAAA;IACnD,0DAAuC,CAAA;AACzC,CAAC,EAjBW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAiB1B;AAEY,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AACxC,QAAA,cAAc,GAAG,mBAAmB,CAAC;AAErC,QAAA,aAAa,GAAG,CAAC,OAAgB,EAAE,KAAc,EAAE,YAAqB,EAAW,EAAE;IAChG,MAAM,YAAY,GAAG,CAAC,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,KAAK,IAAI,sBAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnG,MAAM,gBAAgB,GAAG,CAAC,iBAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,YAAY,IAAI,0BAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpI,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5E,CAAC,CAAC","sourcesContent":["import { ObjectLiteral } from './object-literal';\nimport { isUrl } from '../utils/url-utils';\nimport { StoreConfig } from '../dto/store-config.dto';\n\nexport class Command {\n name: string;\n\n metadata?: ObjectLiteral;\n\n storeId?: string;\n\n storeConfig?: StoreConfig;\n\n nextCommand?: string;\n}\n\nexport const getCommandsStep = (crawlerSteps: SQSCommandNames[], currentStep?: SQSCommandNames)\n : {firstStep: SQSCommandNames, nextStep: SQSCommandNames | null} => {\n let currentIndex = 0;\n\n if (currentStep) {\n for (let i = 0; i < crawlerSteps.length; i += 1) {\n if (crawlerSteps[i] === currentStep) {\n currentIndex = i;\n break;\n }\n }\n }\n\n const firstStep = crawlerSteps[currentIndex];\n const nextStep = crawlerSteps.length > (currentIndex + 1) ? crawlerSteps[currentIndex + 1] : null;\n\n return { firstStep, nextStep };\n};\n\nexport const createCommand = (name: SQSCommandNames,\n metadata?: ObjectLiteral,\n storeId?: string,\n nextCommand?: SQSCommandNames | null)\n : Command => ({\n name,\n metadata,\n storeId,\n nextCommand,\n});\n\nexport enum SQSCommandNames {\n getMenuPages = 'getMenuPages',\n getCategoryPages = 'getCategoryPages',\n getPages = 'getPages',\n getProducts = 'getProducts',\n getProduct = 'getProduct',\n\n getSubMenuPages = 'getSubMenuPages',\n\n persistCategory = 'persistCategory',\n persistCategoryPages = 'persistCategoryPages',\n persistProducts = 'persistProducts',\n persistProduct = 'persistProduct',\n\n processProductPrices = 'processProductPrices',\n processCategoryKeywords = 'processCategoryKeywords',\n processPriceStats = 'processPriceStats'\n}\n\nexport const SQSPersistenceName = 'PersistenceQueue';\nexport const SQSCommandName = 'StoreCommandQueue';\n\nexport const getNextSQSUrl = (command: Command, queue?: string, persistQueue?: string) : string => {\n const commandQueue = !isUrl(queue) ? process.env.SQSCommandUrl + (queue || SQSCommandName) : queue;\n const persistenceQueue = !isUrl(persistQueue) ? process.env.SQSPersistenceUrl + (persistQueue || SQSPersistenceName) : persistQueue;\n\n return command.name.includes('persist') ? persistenceQueue : commandQueue;\n};\n"]}
@@ -14,7 +14,8 @@ export declare enum CurrencyEnum {
14
14
  PEN = "pen",
15
15
  ARS = "ars",
16
16
  EUR = "eur",
17
- USD = "usd"
17
+ USD = "usd",
18
+ MXN = "mxn"
18
19
  }
19
20
  export declare enum UpdateReasonEnum {
20
21
  TIME = "time",
@@ -28,6 +28,7 @@ var CurrencyEnum;
28
28
  CurrencyEnum["ARS"] = "ars";
29
29
  CurrencyEnum["EUR"] = "eur";
30
30
  CurrencyEnum["USD"] = "usd";
31
+ CurrencyEnum["MXN"] = "mxn";
31
32
  })(CurrencyEnum = exports.CurrencyEnum || (exports.CurrencyEnum = {}));
32
33
  var UpdateReasonEnum;
33
34
  (function (UpdateReasonEnum) {
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"/","sources":["entities/product.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n Entity, Index, Unique,\n} from 'typeorm';\nimport { IsNotEmpty } from 'class-validator';\nimport { AbstractBase } from './abstract-base';\nimport { Price } from './price';\nimport { PricesStats } from './prices-stats';\nimport { Keyword } from './keyword';\nimport { HttpRequest } from '../classes/http-request';\nimport { ImageTypeEnum } from '../enums/image-type.enum';\n\nexport enum CurrencyEnum {\n CLP = 'clp',\n CMR_PTS = 'cmr_pts',\n PARIS_PTS = 'paris_pts',\n RIPLEY_PTS = 'ripley_pts',\n GENERAL_POINTS = 'general_pts',\n BRL = 'brl',\n PEN = 'pen',\n ARS = 'ars',\n EUR = 'eur',\n USD = 'usd',\n}\n\nexport enum UpdateReasonEnum {\n TIME = 'time',\n NEW_PRICE = 'new_price',\n PRICE_DOWN = 'price_down',\n PRICE_UP = 'price_up',\n NEW_CONDITIONAL_PRICE = 'new_conditional_price',\n NEW_NAME = 'new_name',\n NEW_LISTING = 'new_listing',\n NEW_STOCK = 'new_stock',\n STOCK_UP = 'stock_up',\n STOCK_DOWN = 'stock_down',\n MISSING_DATA = 'missing_data',\n FIX_DATA = 'fix_data',\n RE_LISTING = 're_listing',\n OUT_OF_STOCK = 'out_of_stock',\n\n CHILDREN_NEW_PRICE = 'children_new_price',\n CHILDREN_NEW_CONDITIONAL_PRICE = 'children_conditional_new_price',\n CHILDREN_NEW_NAME = 'children_new_name',\n CHILDREN_NEW_LISTING = 'children_new_listing',\n CHILDREN_NEW_STOCK = 'children_new_stock',\n CHILDREN_MISSING_DATA = 'children_missing_data',\n CHILDREN_FIX_DATA = 'children_fix_data',\n CHILDREN_RE_LISTING = 'children_re_listing',\n CHILDREN_OUT_OF_STOCK = 'children_out_of_stock'\n}\n\nexport interface ProductAttributes {\n stock?: number;\n\n // TODO: Add enum\n color?: string;\n\n // TODO: Add enum\n size?: string;\n\n [key: string]: any;\n}\n\nexport interface ConditionalPrice {\n minAmount?: number;\n price?:number;\n cardRequired?: boolean;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n@Entity({ name: 'products' })\n@Unique('store_ref_sku', ['storeRef', 'sku'])\nexport class Product extends AbstractBase {\n @Column()\n name: string;\n\n @Column()\n brandName?: string;\n\n @Column()\n normalizedBrandName?: string;\n\n @Column()\n modelName?: string;\n\n @Column()\n @IsNotEmpty()\n @Index()\n sku: string;\n\n @Column()\n internalId?: string;\n\n @Column()\n ean?: string;\n\n @Column()\n @IsNotEmpty()\n url: string;\n\n @Column()\n @IsNotEmpty()\n @Index()\n storeRef: string;\n\n @Column()\n storeName?: string;\n\n @Column()\n branchStoreName?: string;\n\n @Column()\n sellerName?: string;\n\n @Column()\n normalizedSellerName?: string;\n\n @Column()\n @IsNotEmpty()\n price?: Price;\n\n @Column()\n conditionalPrice?: ConditionalPrice;\n\n @Column()\n conditionalPriceHistory?: ConditionalPrice[];\n\n @Column()\n previousPrice?: Price;\n\n @Column()\n bestPrice?: Price;\n\n @Column()\n priceStats?: PricesStats;\n\n @Column()\n priceHistory?: Price[];\n\n @Column()\n rank?: number;\n\n @Column()\n image?: string;\n\n @Column()\n images?: { type: ImageTypeEnum, url: string }[]\n\n @Column()\n category?: string;\n\n @Column()\n categoryPath?: string;\n\n @Column()\n page?: number;\n\n @Column()\n userRank?: number;\n\n @Column()\n attributes?: ProductAttributes;\n\n @Column()\n stockHistory?: {\n stock: number,\n updatedAt: string,\n }[];\n\n @Column()\n homeDeliveryShipping?: boolean;\n\n @Column()\n pickUpFromStoreShipping?: boolean;\n\n @Column()\n fastDelivery?: boolean;\n\n @Column()\n enabled?: boolean;\n\n @Column()\n enabledHistory?: {enabled: boolean, updatedAt?:Date, createdAt?: Date}[];\n\n @Column()\n sourceUrl?: string;\n\n @Column()\n request? : HttpRequest;\n\n @Column()\n @Index()\n updatedAt?: Date;\n\n @Column()\n @Index()\n categoryKeywordNames?: string[];\n\n @Column()\n categoryKeywords?: Keyword[];\n\n @Column()\n @Index()\n processedPricesAt?: Date;\n\n @Column()\n isMarketplace?: boolean;\n\n @Column()\n addToCartLink?: string;\n\n @Column()\n currency?: CurrencyEnum;\n\n @Column()\n updateReason?: UpdateReasonEnum[];\n\n @Column()\n nameHistory?: {\n name: string,\n updatedAt: string,\n }[];\n\n @Column()\n availableLocations?: string[];\n\n @Column()\n refurbished?: boolean;\n\n @Column()\n parentProductIdRef?: string;\n\n @Column()\n parentProductSkuRef?: string;\n\n @Column()\n children?: Product[]\n\n @Column()\n extractedAt?: Date;\n\n @Column()\n isFree?: boolean;\n}\n"]}
1
+ {"version":3,"file":"product.js","sourceRoot":"/","sources":["entities/product.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n Entity, Index, Unique,\n} from 'typeorm';\nimport { IsNotEmpty } from 'class-validator';\nimport { AbstractBase } from './abstract-base';\nimport { Price } from './price';\nimport { PricesStats } from './prices-stats';\nimport { Keyword } from './keyword';\nimport { HttpRequest } from '../classes/http-request';\nimport { ImageTypeEnum } from '../enums/image-type.enum';\n\nexport enum CurrencyEnum {\n CLP = 'clp',\n CMR_PTS = 'cmr_pts',\n PARIS_PTS = 'paris_pts',\n RIPLEY_PTS = 'ripley_pts',\n GENERAL_POINTS = 'general_pts',\n BRL = 'brl',\n PEN = 'pen',\n ARS = 'ars',\n EUR = 'eur',\n USD = 'usd',\n MXN = 'mxn',\n}\n\nexport enum UpdateReasonEnum {\n TIME = 'time',\n NEW_PRICE = 'new_price',\n PRICE_DOWN = 'price_down',\n PRICE_UP = 'price_up',\n NEW_CONDITIONAL_PRICE = 'new_conditional_price',\n NEW_NAME = 'new_name',\n NEW_LISTING = 'new_listing',\n NEW_STOCK = 'new_stock',\n STOCK_UP = 'stock_up',\n STOCK_DOWN = 'stock_down',\n MISSING_DATA = 'missing_data',\n FIX_DATA = 'fix_data',\n RE_LISTING = 're_listing',\n OUT_OF_STOCK = 'out_of_stock',\n\n CHILDREN_NEW_PRICE = 'children_new_price',\n CHILDREN_NEW_CONDITIONAL_PRICE = 'children_conditional_new_price',\n CHILDREN_NEW_NAME = 'children_new_name',\n CHILDREN_NEW_LISTING = 'children_new_listing',\n CHILDREN_NEW_STOCK = 'children_new_stock',\n CHILDREN_MISSING_DATA = 'children_missing_data',\n CHILDREN_FIX_DATA = 'children_fix_data',\n CHILDREN_RE_LISTING = 'children_re_listing',\n CHILDREN_OUT_OF_STOCK = 'children_out_of_stock'\n}\n\nexport interface ProductAttributes {\n stock?: number;\n\n // TODO: Add enum\n color?: string;\n\n // TODO: Add enum\n size?: string;\n\n [key: string]: any;\n}\n\nexport interface ConditionalPrice {\n minAmount?: number;\n price?:number;\n cardRequired?: boolean;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n@Entity({ name: 'products' })\n@Unique('store_ref_sku', ['storeRef', 'sku'])\nexport class Product extends AbstractBase {\n @Column()\n name: string;\n\n @Column()\n brandName?: string;\n\n @Column()\n normalizedBrandName?: string;\n\n @Column()\n modelName?: string;\n\n @Column()\n @IsNotEmpty()\n @Index()\n sku: string;\n\n @Column()\n internalId?: string;\n\n @Column()\n ean?: string;\n\n @Column()\n @IsNotEmpty()\n url: string;\n\n @Column()\n @IsNotEmpty()\n @Index()\n storeRef: string;\n\n @Column()\n storeName?: string;\n\n @Column()\n branchStoreName?: string;\n\n @Column()\n sellerName?: string;\n\n @Column()\n normalizedSellerName?: string;\n\n @Column()\n @IsNotEmpty()\n price?: Price;\n\n @Column()\n conditionalPrice?: ConditionalPrice;\n\n @Column()\n conditionalPriceHistory?: ConditionalPrice[];\n\n @Column()\n previousPrice?: Price;\n\n @Column()\n bestPrice?: Price;\n\n @Column()\n priceStats?: PricesStats;\n\n @Column()\n priceHistory?: Price[];\n\n @Column()\n rank?: number;\n\n @Column()\n image?: string;\n\n @Column()\n images?: { type: ImageTypeEnum, url: string }[]\n\n @Column()\n category?: string;\n\n @Column()\n categoryPath?: string;\n\n @Column()\n page?: number;\n\n @Column()\n userRank?: number;\n\n @Column()\n attributes?: ProductAttributes;\n\n @Column()\n stockHistory?: {\n stock: number,\n updatedAt: string,\n }[];\n\n @Column()\n homeDeliveryShipping?: boolean;\n\n @Column()\n pickUpFromStoreShipping?: boolean;\n\n @Column()\n fastDelivery?: boolean;\n\n @Column()\n enabled?: boolean;\n\n @Column()\n enabledHistory?: {enabled: boolean, updatedAt?:Date, createdAt?: Date}[];\n\n @Column()\n sourceUrl?: string;\n\n @Column()\n request? : HttpRequest;\n\n @Column()\n @Index()\n updatedAt?: Date;\n\n @Column()\n @Index()\n categoryKeywordNames?: string[];\n\n @Column()\n categoryKeywords?: Keyword[];\n\n @Column()\n @Index()\n processedPricesAt?: Date;\n\n @Column()\n isMarketplace?: boolean;\n\n @Column()\n addToCartLink?: string;\n\n @Column()\n currency?: CurrencyEnum;\n\n @Column()\n updateReason?: UpdateReasonEnum[];\n\n @Column()\n nameHistory?: {\n name: string,\n updatedAt: string,\n }[];\n\n @Column()\n availableLocations?: string[];\n\n @Column()\n refurbished?: boolean;\n\n @Column()\n parentProductIdRef?: string;\n\n @Column()\n parentProductSkuRef?: string;\n\n @Column()\n children?: Product[]\n\n @Column()\n extractedAt?: Date;\n\n @Column()\n isFree?: boolean;\n}\n"]}
@@ -37,16 +37,19 @@ exports.formatMoney = (money, currency) => {
37
37
  if (!money) {
38
38
  return '';
39
39
  }
40
+ let appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';
40
41
  let prependSign = '';
41
42
  if (!currency || !currency.toLowerCase().includes('pts')) {
42
43
  if (currency === entities_1.CurrencyEnum.USD) {
43
44
  prependSign = 'U$';
44
45
  }
46
+ else if (currency === entities_1.CurrencyEnum.EUR) {
47
+ appendSign = `€ ${appendSign}`.trim();
48
+ }
45
49
  else {
46
50
  prependSign = '$';
47
51
  }
48
52
  }
49
- const appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';
50
53
  return prependSign + addThousandSeparator(money.toString()) + appendSign;
51
54
  };
52
55
  exports.formatDate = (str, timezone = 'America/Santiago', format = 'DD-MM-YYYY HH:mm:ss') => {
@@ -1 +1 @@
1
- {"version":3,"file":"string-formatter.js","sourceRoot":"/","sources":["utils/string-formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,0CAA2C;AAE3C,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,cAAc,CAAC;IAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QACnB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/B;IACD,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,CAAC,KAAsB,EAAE,QAAuB,EAAU,EAAE;IACrF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,CAAC;KACX;IAED,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACxD,IAAI,QAAQ,KAAK,uBAAY,CAAC,GAAG,EAAE;YACjC,WAAW,GAAG,IAAI,CAAC;SACpB;aAAM;YACL,WAAW,GAAG,GAAG,CAAC;SACnB;KACF;IAED,MAAM,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,OAAO,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;AAC3E,CAAC,CAAC;AAEW,QAAA,UAAU,GAAG,CAAC,GAAW,EAAE,QAAQ,GAAG,kBAAkB,EAAE,MAAM,GAAG,qBAAqB,EAAU,EAAE;IAC/G,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,EAAE,CAAC;KACX;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,CAAC,GAAoB,EAAU,EAAE;IACxD,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,EAAE,CAAC;KACX;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC","sourcesContent":["import * as moment from 'moment-timezone';\nimport { CurrencyEnum } from '../entities';\n\nconst addThousandSeparator = (str: string) => {\n const nStr = (`${str}`);\n const x = nStr.split('.');\n let x1 = x[0];\n const x2 = x.length > 1 ? `.${x[1]}` : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1.$2');\n }\n return x1 + x2;\n};\n\nexport const formatMoney = (money: number | string, currency?: CurrencyEnum): string => {\n if (!money) {\n return '';\n }\n\n let prependSign = '';\n if (!currency || !currency.toLowerCase().includes('pts')) {\n if (currency === CurrencyEnum.USD) {\n prependSign = 'U$';\n } else {\n prependSign = '$';\n }\n }\n\n const appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';\n\n return prependSign + addThousandSeparator(money.toString()) + appendSign;\n};\n\nexport const formatDate = (str: string, timezone = 'America/Santiago', format = 'DD-MM-YYYY HH:mm:ss'): string => {\n if (!str) {\n return '';\n }\n\n const date = new Date(str);\n\n return moment.tz(date, timezone).format(format);\n};\n\nexport const formatPct = (pct: number | string): string => {\n if (!pct) {\n return '';\n }\n\n return `${pct}%`.replace('.', ',');\n};\n"]}
1
+ {"version":3,"file":"string-formatter.js","sourceRoot":"/","sources":["utils/string-formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,0CAA2C;AAE3C,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,cAAc,CAAC;IAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QACnB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/B;IACD,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,CAAC,KAAsB,EAAE,QAAuB,EAAU,EAAE;IACrF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,CAAC;KACX;IAED,IAAI,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACxD,IAAI,QAAQ,KAAK,uBAAY,CAAC,GAAG,EAAE;YACjC,WAAW,GAAG,IAAI,CAAC;SACpB;aAAM,IAAI,QAAQ,KAAK,uBAAY,CAAC,GAAG,EAAE;YACxC,UAAU,GAAG,KAAK,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;SACvC;aAAM;YACL,WAAW,GAAG,GAAG,CAAC;SACnB;KACF;IAED,OAAO,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;AAC3E,CAAC,CAAC;AAEW,QAAA,UAAU,GAAG,CAAC,GAAW,EAAE,QAAQ,GAAG,kBAAkB,EAAE,MAAM,GAAG,qBAAqB,EAAU,EAAE;IAC/G,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,EAAE,CAAC;KACX;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,CAAC,GAAoB,EAAU,EAAE;IACxD,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,EAAE,CAAC;KACX;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC","sourcesContent":["import * as moment from 'moment-timezone';\nimport { CurrencyEnum } from '../entities';\n\nconst addThousandSeparator = (str: string) => {\n const nStr = (`${str}`);\n const x = nStr.split('.');\n let x1 = x[0];\n const x2 = x.length > 1 ? `.${x[1]}` : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1.$2');\n }\n return x1 + x2;\n};\n\nexport const formatMoney = (money: number | string, currency?: CurrencyEnum): string => {\n if (!money) {\n return '';\n }\n\n let appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';\n let prependSign = '';\n if (!currency || !currency.toLowerCase().includes('pts')) {\n if (currency === CurrencyEnum.USD) {\n prependSign = 'U$';\n } else if (currency === CurrencyEnum.EUR) {\n appendSign = `€ ${appendSign}`.trim();\n } else {\n prependSign = '$';\n }\n }\n\n return prependSign + addThousandSeparator(money.toString()) + appendSign;\n};\n\nexport const formatDate = (str: string, timezone = 'America/Santiago', format = 'DD-MM-YYYY HH:mm:ss'): string => {\n if (!str) {\n return '';\n }\n\n const date = new Date(str);\n\n return moment.tz(date, timezone).format(format);\n};\n\nexport const formatPct = (pct: number | string): string => {\n if (!pct) {\n return '';\n }\n\n return `${pct}%`.replace('.', ',');\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "store-scrapper-js-common",
3
- "version": "1.0.167",
3
+ "version": "1.0.169",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -51,6 +51,8 @@ export enum SQSCommandNames {
51
51
  getProducts = 'getProducts',
52
52
  getProduct = 'getProduct',
53
53
 
54
+ getSubMenuPages = 'getSubMenuPages',
55
+
54
56
  persistCategory = 'persistCategory',
55
57
  persistCategoryPages = 'persistCategoryPages',
56
58
  persistProducts = 'persistProducts',
@@ -21,6 +21,7 @@ export enum CurrencyEnum {
21
21
  ARS = 'ars',
22
22
  EUR = 'eur',
23
23
  USD = 'usd',
24
+ MXN = 'mxn',
24
25
  }
25
26
 
26
27
  export enum UpdateReasonEnum {
@@ -18,17 +18,18 @@ export const formatMoney = (money: number | string, currency?: CurrencyEnum): st
18
18
  return '';
19
19
  }
20
20
 
21
+ let appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';
21
22
  let prependSign = '';
22
23
  if (!currency || !currency.toLowerCase().includes('pts')) {
23
24
  if (currency === CurrencyEnum.USD) {
24
25
  prependSign = 'U$';
26
+ } else if (currency === CurrencyEnum.EUR) {
27
+ appendSign = `€ ${appendSign}`.trim();
25
28
  } else {
26
29
  prependSign = '$';
27
30
  }
28
31
  }
29
32
 
30
- const appendSign = currency && currency.toLowerCase().includes('pts') ? ' (pts)' : '';
31
-
32
33
  return prependSign + addThousandSeparator(money.toString()) + appendSign;
33
34
  };
34
35
 
@@ -15,8 +15,12 @@ describe('string formatter', () => {
15
15
  expect(formatMoney(1000, CurrencyEnum.CMR_PTS)).toStrictEqual('1.000 (pts)');
16
16
  expect(formatMoney(1000000, CurrencyEnum.CMR_PTS)).toStrictEqual('1.000.000 (pts)');
17
17
 
18
+ expect(formatMoney(100.99, CurrencyEnum.USD)).toStrictEqual('U$100.99');
18
19
  expect(formatMoney(1000, CurrencyEnum.USD)).toStrictEqual('U$1.000');
19
20
  expect(formatMoney(1000000, CurrencyEnum.USD)).toStrictEqual('U$1.000.000');
21
+
22
+ expect(formatMoney(1000, CurrencyEnum.EUR)).toStrictEqual('1.000€');
23
+ expect(formatMoney(1000000, CurrencyEnum.EUR)).toStrictEqual('1.000.000€');
20
24
  });
21
25
 
22
26
  it('should return date as a formatted CLP Date', () => {