cloudcommerce 2.13.0 → 2.14.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 (168) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/ecomplus-stores/barradoce/conf/firebase.json +1 -0
  3. package/ecomplus-stores/barradoce/functions/many/package.json +3 -3
  4. package/ecomplus-stores/barradoce/functions/ssr/content/extra-pages/promocoes.md +1 -1
  5. package/ecomplus-stores/barradoce/functions/ssr/package.json +6 -6
  6. package/ecomplus-stores/barradoce/functions/ssr/src/components/AccountMenu.vue +18 -15
  7. package/ecomplus-stores/barradoce/functions/ssr/src/components/AccountPage.vue +5 -5
  8. package/ecomplus-stores/barradoce/functions/ssr/src/components/LoginForm.vue +16 -10
  9. package/ecomplus-stores/barradoce/functions/ssr/src/components/ShopFooter.vue +1 -1
  10. package/ecomplus-stores/barradoce/functions/ssr/src/pages/sitemap-[index].xml.astro +75 -0
  11. package/ecomplus-stores/barradoce/functions/with-apps/package.json +3 -3
  12. package/ecomplus-stores/barradoce/package.json +2 -2
  13. package/package.json +2 -2
  14. package/packages/api/package.json +1 -1
  15. package/packages/apps/affiliate-program/package.json +1 -1
  16. package/packages/apps/correios/package.json +1 -1
  17. package/packages/apps/custom-payment/package.json +1 -1
  18. package/packages/apps/custom-shipping/package.json +1 -1
  19. package/packages/apps/datafrete/package.json +1 -1
  20. package/packages/apps/discounts/package.json +1 -1
  21. package/packages/apps/emails/package.json +1 -1
  22. package/packages/apps/fb-conversions/package.json +1 -1
  23. package/packages/apps/flash-courier/package.json +1 -1
  24. package/packages/apps/frenet/package.json +1 -1
  25. package/packages/apps/galaxpay/package.json +1 -1
  26. package/packages/apps/google-analytics/package.json +1 -1
  27. package/packages/apps/jadlog/package.json +1 -1
  28. package/packages/apps/loyalty-points/package.json +1 -1
  29. package/packages/apps/mandae/package.json +1 -1
  30. package/packages/apps/melhor-envio/package.json +1 -1
  31. package/packages/apps/mercadopago/package.json +1 -1
  32. package/packages/apps/pagaleve/package.json +1 -1
  33. package/packages/apps/pagarme/package.json +1 -1
  34. package/packages/apps/pagarme-v5/package.json +1 -1
  35. package/packages/apps/paghiper/package.json +1 -1
  36. package/packages/apps/pix/package.json +1 -1
  37. package/packages/apps/tiny-erp/package.json +1 -1
  38. package/packages/apps/webhooks/package.json +1 -1
  39. package/packages/cli/ci/bunny-config-base.sh +4 -6
  40. package/packages/cli/config/firebase.json +1 -1
  41. package/packages/cli/package.json +1 -1
  42. package/packages/config/package.json +1 -1
  43. package/packages/emails/package.json +1 -1
  44. package/packages/eslint/package.json +1 -1
  45. package/packages/events/package.json +1 -1
  46. package/packages/feeds/lib/firebase/render-catalog.js +272 -0
  47. package/packages/feeds/lib/firebase/render-catalog.js.map +1 -0
  48. package/packages/feeds/lib/firebase/render-sitemap.js +42 -0
  49. package/packages/feeds/lib/firebase/render-sitemap.js.map +1 -0
  50. package/packages/feeds/lib/firebase/serve-feeds.js +22 -270
  51. package/packages/feeds/lib/firebase/serve-feeds.js.map +1 -1
  52. package/packages/feeds/package.json +1 -1
  53. package/packages/feeds/src/firebase/render-catalog.ts +286 -0
  54. package/packages/feeds/src/firebase/render-sitemap.ts +46 -0
  55. package/packages/feeds/src/firebase/serve-feeds.ts +22 -283
  56. package/packages/firebase/package.json +1 -1
  57. package/packages/i18n/package.json +1 -1
  58. package/packages/modules/package.json +1 -1
  59. package/packages/passport/package.json +1 -1
  60. package/packages/ssr/package.json +1 -1
  61. package/packages/storefront/dist/client/_astro/{AccountPage.Cf0WE6GF.js → AccountPage.CKu0oakN.js} +1 -1
  62. package/packages/storefront/dist/client/_astro/{CartSidebar.DAvJKL2c.js → CartSidebar.Bxz7ZD9N.js} +1 -1
  63. package/packages/storefront/dist/client/_astro/{ProductDetails.BpZtnS8j.js → ProductDetails.PkZr50hA.js} +1 -1
  64. package/packages/storefront/dist/client/_astro/{ProductShelf.C0TU_sRb.js → ProductShelf.BKz6WXbp.js} +1 -1
  65. package/packages/storefront/dist/client/_astro/{SearchModal.DWNSfxML.js → SearchModal.BIrixnFb.js} +1 -1
  66. package/packages/storefront/dist/client/_astro/SearchShowcase.YMZqG8rj.js +1 -0
  67. package/packages/storefront/dist/client/_astro/ShopHeader.BOLegIRO.js +7 -0
  68. package/packages/storefront/dist/client/_astro/{_slug_.HhgCFKHv.css → _slug_.oAbCb631.css} +1 -1
  69. package/packages/storefront/dist/client/_astro/customer-session.B9MvrBAQ.js +7 -0
  70. package/packages/storefront/dist/client/_astro/ecom-icon.png +0 -0
  71. package/packages/storefront/dist/client/_astro/ecom-icon_12falx.png +0 -0
  72. package/packages/storefront/dist/client/_astro/ecom-icon_15pqnO.png +0 -0
  73. package/packages/storefront/dist/client/_astro/ecom-icon_t3guw.png +0 -0
  74. package/packages/storefront/dist/client/_astro/{firebase-app.CmI1zl7o.js → firebase-app.DPioxxma.js} +1 -1
  75. package/packages/storefront/dist/client/_astro/headphone.webp +0 -0
  76. package/packages/storefront/dist/client/_astro/headphone_T2Jjc.avif +0 -0
  77. package/packages/storefront/dist/client/_astro/headphone_Z1CG18r.webp +0 -0
  78. package/packages/storefront/dist/client/_astro/{hoisted.BeKMioW4.js → hoisted.8Sq2YuJM.js} +1 -1
  79. package/packages/storefront/dist/client/_astro/{hoisted.Bf1gCkSN.js → hoisted.BzVcl7We.js} +1 -1
  80. package/packages/storefront/dist/client/_astro/{hoisted.-C0vLMXT.js → hoisted.CPcG9RpX.js} +1 -1
  81. package/packages/storefront/dist/client/_astro/{index-a8cf6c8f.k99a-gIB.js → index-219c3cac.78peI8kt.js} +3 -3
  82. package/packages/storefront/dist/client/_astro/logo.png +0 -0
  83. package/packages/storefront/dist/client/_astro/logo_1UBsBq.webp +0 -0
  84. package/packages/storefront/dist/client/_astro/logo_Z1K5PE9.png +0 -0
  85. package/packages/storefront/dist/client/_astro/logo_Z1KIIl1.avif +0 -0
  86. package/packages/storefront/dist/client/_astro/passion.webp +0 -0
  87. package/packages/storefront/dist/client/_astro/passion_LHbe9.webp +0 -0
  88. package/packages/storefront/dist/client/_astro/passion_Z23MeUb.avif +0 -0
  89. package/packages/storefront/dist/client/_astro/rect8589.png +0 -0
  90. package/packages/storefront/dist/client/_astro/rect8589_1TtOHY.png +0 -0
  91. package/packages/storefront/dist/client/_astro/rect8589_1f5opX.webp +0 -0
  92. package/packages/storefront/dist/client/_astro/rect8589_IUskt.webp +0 -0
  93. package/packages/storefront/dist/client/_astro/rect8589_Uxfdf.png +0 -0
  94. package/packages/storefront/dist/client/_astro/rect8589_Z15uApA.png +0 -0
  95. package/packages/storefront/dist/client/_astro/rect8589_Z1Ap1Im.avif +0 -0
  96. package/packages/storefront/dist/client/_astro/rect8589_Z1JT1HB.webp +0 -0
  97. package/packages/storefront/dist/client/_astro/rect8589_ZY9mtN.avif +0 -0
  98. package/packages/storefront/dist/client/_astro/rect8589_tMFW0.avif +0 -0
  99. package/packages/storefront/dist/client/_astro/rect859.png +0 -0
  100. package/packages/storefront/dist/client/_astro/rect859_1TgQXS.avif +0 -0
  101. package/packages/storefront/dist/client/_astro/rect859_2Nm1z.avif +0 -0
  102. package/packages/storefront/dist/client/_astro/rect859_DIqwR.png +0 -0
  103. package/packages/storefront/dist/client/_astro/rect859_Z1IKDb2.png +0 -0
  104. package/packages/storefront/dist/client/_astro/rect859_Z29FI4V.webp +0 -0
  105. package/packages/storefront/dist/client/_astro/rect859_Z2kFHGk.avif +0 -0
  106. package/packages/storefront/dist/client/_astro/rect859_ZkpPFI.webp +0 -0
  107. package/packages/storefront/dist/client/_astro/rect859_jXzBi.png +0 -0
  108. package/packages/storefront/dist/client/_astro/rect859_x1l16.webp +0 -0
  109. package/packages/storefront/dist/client/_astro/rect89.webp +0 -0
  110. package/packages/storefront/dist/client/_astro/rect89_1TSfW7.avif +0 -0
  111. package/packages/storefront/dist/client/_astro/rect89_Z1re32x.webp +0 -0
  112. package/packages/storefront/dist/client/_astro/{shopping-cart.Cqc6p5UR.js → shopping-cart.D8fbm2Dv.js} +1 -1
  113. package/packages/storefront/dist/client/_astro/{use-analytics.bP3a5cR0.js → use-analytics.D_peWG3X.js} +1 -1
  114. package/packages/storefront/dist/client/_astro/{use-product-card.Cj9Q-Y1A.js → use-product-card.BCGHZKB5.js} +1 -1
  115. package/packages/storefront/dist/client/_astro/{use-text-value.DT0v9Yj_.js → use-text-value.BFLvKnYE.js} +1 -1
  116. package/packages/storefront/dist/client/assets/cvv.png +0 -0
  117. package/packages/storefront/dist/client/assets/payments.png +0 -0
  118. package/packages/storefront/dist/client/robots.txt +2 -0
  119. package/packages/storefront/dist/client/~fallback.html +112 -0
  120. package/packages/storefront/dist/client/~index.html +137 -0
  121. package/packages/storefront/dist/server/_astro-internal_middleware.mjs +2 -2
  122. package/packages/storefront/dist/server/chunks/404_BUZm2bP1.mjs +5 -0
  123. package/packages/storefront/dist/server/chunks/{CartSidebar_tmly-0ip.mjs → CartSidebar_kQSDOTj2.mjs} +2 -2
  124. package/packages/storefront/dist/server/chunks/{SearchModal_CGNQss2j.mjs → SearchModal_O1xTrm-9.mjs} +2 -2
  125. package/packages/storefront/dist/server/chunks/{_.._Bt6Uzpk2.mjs → _.._6Bd7O3FD.mjs} +1 -1
  126. package/packages/storefront/dist/server/chunks/{_astro-internal_middleware_CqUpziyW.mjs → _astro-internal_middleware_BnKXd-Ev.mjs} +1 -1
  127. package/packages/storefront/dist/server/chunks/{_page__Dz-iZHMh.mjs → _page__CXnal5Rn.mjs} +1 -1
  128. package/packages/storefront/dist/server/chunks/{account_tfs9KFTy.mjs → account_C6XTKIP9.mjs} +1 -1
  129. package/packages/storefront/dist/server/chunks/astro/{assets-service_DSoC_W52.mjs → assets-service_146xb0vN.mjs} +11 -67
  130. package/packages/storefront/dist/server/chunks/{astro_Cu3MZ9xv.mjs → astro_DIU6qHCh.mjs} +34 -79
  131. package/packages/storefront/dist/server/chunks/{index_CGzMgZTN.mjs → index_EbDDnIXs.mjs} +1 -1
  132. package/packages/storefront/dist/server/chunks/{index_BKS_40rA.mjs → index_STpvD2cy.mjs} +1 -1
  133. package/packages/storefront/dist/server/chunks/{node_lZaNT3E1.mjs → node_DHQVZgH_.mjs} +1 -1
  134. package/packages/storefront/dist/server/chunks/pages/{404_CMwuVMu1.mjs → 404_n3mvoSWv.mjs} +94 -1140
  135. package/packages/storefront/dist/server/chunks/pages/{__Dz53F-0T.mjs → __C9Nd4c7_.mjs} +11 -42
  136. package/packages/storefront/dist/server/chunks/pages/{_page__C1x19nYF.mjs → _page__BnXBvVvn.mjs} +4 -20
  137. package/packages/storefront/dist/server/chunks/pages/account_Dk-8R3rY.mjs +22 -0
  138. package/packages/storefront/dist/server/chunks/pages/{index_CqvjdvSg.mjs → index_us3QX6kE.mjs} +5 -22
  139. package/packages/storefront/dist/server/chunks/pages/node_BGdGQ52C.mjs +1864 -0
  140. package/packages/storefront/dist/server/chunks/pages/sitemap-_index__rcX10oKd.mjs +32 -0
  141. package/packages/storefront/dist/server/chunks/pages/~fallback_BNfV6ECv.mjs +22 -0
  142. package/packages/storefront/dist/server/chunks/sitemap-_index__e6mToVZH.mjs +5 -0
  143. package/packages/storefront/dist/server/chunks/{~fallback_CrFe__-f.mjs → ~fallback_Cg1Pbe1d.mjs} +1 -1
  144. package/packages/storefront/dist/server/entry.mjs +18 -17
  145. package/packages/storefront/dist/server/images.dist.csv +37 -0
  146. package/packages/storefront/dist/server/images.src.csv +13 -0
  147. package/packages/storefront/dist/server/manifest_xBcEm6Np.mjs +206 -0
  148. package/packages/storefront/dist/server/middleware.mjs +2 -2
  149. package/packages/storefront/dist/server/renderers.mjs +1 -1
  150. package/packages/storefront/dist/server/static-builds.csv +80 -0
  151. package/packages/storefront/package.json +1 -1
  152. package/packages/storefront/scripts/build-prod.sh +17 -0
  153. package/packages/storefront/src/lib/components/AccountLink.vue +16 -11
  154. package/packages/storefront/src/lib/components/globals/Skeleton.vue +6 -4
  155. package/packages/storefront/src/lib/composables/use-login-form.ts +6 -1
  156. package/packages/storefront/src/lib/scripts/vbeta-app.ts +11 -2
  157. package/packages/storefront/src/lib/state/customer-session.ts +8 -1
  158. package/packages/test-base/package.json +1 -1
  159. package/packages/types/package.json +1 -1
  160. package/packages/storefront/dist/client/_astro/SearchShowcase.CUkbXIRk.js +0 -1
  161. package/packages/storefront/dist/client/_astro/ShopHeader.D7qqQxFD.js +0 -7
  162. package/packages/storefront/dist/client/_astro/customer-session.Cctko5_9.js +0 -7
  163. package/packages/storefront/dist/client/assets/.gitkeep +0 -2
  164. package/packages/storefront/dist/server/chunks/404_BcY_5eJJ.mjs +0 -5
  165. package/packages/storefront/dist/server/chunks/pages/account_B5Z6wDBy.mjs +0 -32
  166. package/packages/storefront/dist/server/chunks/pages/node_mvX6Tssv.mjs +0 -879
  167. package/packages/storefront/dist/server/chunks/pages/~fallback_D2ugBVgc.mjs +0 -32
  168. package/packages/storefront/dist/server/manifest_D4v8KX-D.mjs +0 -206
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-tiny-erp",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce app for Tiny ERP",
6
6
  "main": "lib/tiny-erp.js",
7
7
  "files": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-webhooks",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce app for general order webhooks",
6
6
  "main": "lib/index.js",
7
7
  "files": [
@@ -153,10 +153,9 @@ configure_edge_rule "APIs bypass CDN cache" '
153
153
  "Type": 0,
154
154
  "PatternMatches": [
155
155
  "*/_api/*",
156
- "*/_feeds/*",
156
+ "*.xml",
157
157
  "*/.*/git/*",
158
- "*/_analytics",
159
- "*/admin/",
158
+ "*/admin/*",
160
159
  "*/~*"
161
160
  ],
162
161
  "PatternMatchingType": 0,
@@ -179,10 +178,9 @@ configure_edge_rule "APIs bypass perma-cache" '
179
178
  "Type": 0,
180
179
  "PatternMatches": [
181
180
  "*/_api/*",
182
- "*/_feeds/*",
181
+ "*.xml",
183
182
  "*/.*/git/*",
184
- "*/_analytics",
185
- "*/admin/",
183
+ "*/admin/*",
186
184
  "*/~*"
187
185
  ],
188
186
  "PatternMatchingType": 0,
@@ -67,7 +67,7 @@
67
67
  "region": "us-east4"
68
68
  },
69
69
  {
70
- "source": "/sitemap.xml",
70
+ "source": "/sitemap-catalog.xml",
71
71
  "function": "feeds",
72
72
  "region": "us-east4"
73
73
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/cli",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce CLI tools",
6
6
  "bin": {
7
7
  "cloudcommerce": "./bin/run.mjs"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/config",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce base config",
6
6
  "main": "lib/config.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/emails",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce email sender",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/eslint",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce ESLint config",
6
6
  "main": "lib/index.js",
7
7
  "files": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/events",
3
3
  "type": "module",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "e-com.plus Cloud Commerce app events",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -0,0 +1,272 @@
1
+ import config from '@cloudcommerce/firebase/lib/config';
2
+
3
+ const renderCatalog = async (req, res, products) => {
4
+ const { storeId, settingsContent: { domain, name } } = config.get();
5
+ const title = `Products feed - ${name}`;
6
+ const isSkipVariations = !!req.query.skip_variations;
7
+ const discount = Number(req.query.discount) || 0;
8
+ let querystring = req.query.qs ? String(req.query.qs) : '?_=feed';
9
+ if (querystring.charAt(0) !== '?') {
10
+ querystring = `?${querystring}`;
11
+ }
12
+ let propsSet = {};
13
+ if (typeof req.query.set_properties === 'string') {
14
+ try {
15
+ propsSet = JSON.parse(req.query.set_properties);
16
+ if (typeof propsSet !== 'object' || !propsSet) {
17
+ throw new Error('Invalid');
18
+ }
19
+ } catch {
20
+ res.sendStatus(400);
21
+ return;
22
+ }
23
+ }
24
+ const isFacebook = (req.get('User-Agent') || '').includes('facebook');
25
+ let xml = `<?xml version="1.0"?>
26
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
27
+ <title><![CDATA[${title}]]></title>
28
+ <link href="https://${domain}/" rel="alternate" type="text/html"/>
29
+ <updated>${new Date().toISOString()}</updated>
30
+ <id><![CDATA[#${storeId},${Math.random()}]]></id>
31
+ <author>
32
+ <name>e-com.plus Cloud Commerce</name>
33
+ </author>`;
34
+ const convertProduct = (p, groupId) => {
35
+ if (p.name) {
36
+ const entry = {
37
+ id: p.sku || p._id,
38
+ title: p.name,
39
+ item_group_id: groupId,
40
+ google_product_category: p.google_product_category_id,
41
+ };
42
+ if (p.short_description) {
43
+ entry.description = p.short_description;
44
+ } else if (p.body_html) {
45
+ entry.description = p.body_html
46
+ .replace(/<style\b[^>]*>.*?<\/style>/isg, '')
47
+ .replace(/<[^>]+>/g, '')
48
+ .replace(/&nbsp;/g, '');
49
+ } else {
50
+ entry.description = p.name;
51
+ }
52
+ if (p.slug) {
53
+ entry.link = `https://${domain}/${p.slug}${querystring}`;
54
+ if (groupId) entry.link += `&amp;var=${p._id}`;
55
+ if (discount > 0) entry.link += `&amp;discount=${discount}`;
56
+ }
57
+ if ((p.quantity === undefined || p.quantity)
58
+ && (!p.min_quantity || p.quantity >= p.min_quantity)) {
59
+ entry.availability = 'in stock';
60
+ } else {
61
+ entry.availability = 'out of stock';
62
+ }
63
+ if (p.production_time?.days) {
64
+ entry.min_handling_time = p.production_time.days;
65
+ if (p.production_time.max_time) {
66
+ entry.max_handling_time = p.production_time.max_time;
67
+ }
68
+ }
69
+ if (p.pictures?.length) {
70
+ const additionalImages = [];
71
+ for (let i = 0; i < p.pictures.length && i < 10; i++) {
72
+ const picture = p.pictures[i];
73
+ let img = picture.zoom?.url || picture.big?.url || picture.normal?.url;
74
+ if (img) {
75
+ img = img.replace(/(\w+\.)?(ecoms\d)\.com/i, '$2-nyc3.nyc3.cdn.digitaloceanspaces.com');
76
+ if (!entry.image_link) {
77
+ entry.image_link = img;
78
+ } else {
79
+ additionalImages.push(img);
80
+ }
81
+ }
82
+ }
83
+ if (additionalImages.length) {
84
+ entry.additional_image_link = additionalImages;
85
+ }
86
+ }
87
+ if (p.price) {
88
+ if (p.base_price && p.base_price > p.price) {
89
+ entry.price = `${p.base_price} ${p.currency_id}`;
90
+ entry.sale_price = (p.price * (1 - discount)).toFixed(2) + ` ${p.currency_id}`;
91
+ } else {
92
+ entry.price = (p.price * (1 - discount)).toFixed(2) + ` ${p.currency_id}`;
93
+ }
94
+ }
95
+ if (p.category_tree) {
96
+ entry.product_type = p.category_tree;
97
+ } else if (p.categories?.length) {
98
+ entry.product_type = p.categories[0].name;
99
+ }
100
+ let isIdentifierExists = false;
101
+ if (p.brands?.length) {
102
+ isIdentifierExists = true;
103
+ entry.brand = p.brands[0].name;
104
+ }
105
+ ['gtin', 'mpn'].forEach((field) => {
106
+ const codes = p[field];
107
+ if (Array.isArray(codes) && codes.length) {
108
+ entry[field] = codes[0];
109
+ isIdentifierExists = true;
110
+ }
111
+ });
112
+ entry.identifier_exists = isIdentifierExists ? 'yes' : 'no';
113
+ if (p.adult) {
114
+ entry.adult = 'yes';
115
+ }
116
+ if (p.condition) {
117
+ entry.condition = p.condition !== 'not_specified' ? p.condition : 'new';
118
+ }
119
+ if (p.weight) {
120
+ entry.shipping_weight = `${p.weight.value} ${p.weight.unit || ''}`;
121
+ }
122
+ if (p.dimensions && !isFacebook) {
123
+ ['length', 'width', 'height'].forEach((side) => {
124
+ const dimension = p.dimensions[side];
125
+ if (dimension) {
126
+ entry[`shipping_${side}`] = `${dimension.value} ${dimension.unit || ''}`;
127
+ }
128
+ });
129
+ }
130
+ if (p.specifications) {
131
+ let customLabel = 0;
132
+ Object.keys(p.specifications).forEach((spec) => {
133
+ const values = p.specifications[spec];
134
+ if (!values.length) return;
135
+ const [val] = values;
136
+ /* eslint-disable no-case-declarations */
137
+ switch (spec) {
138
+ case 'energy_efficiency_class':
139
+ case 'age_group':
140
+ case 'gender':
141
+ case 'size_type':
142
+ case 'size_system':
143
+ entry[spec] = val.value || val.text;
144
+ break;
145
+ case 'size':
146
+ case 'pattern':
147
+ case 'material':
148
+ entry[spec] = val.text;
149
+ break;
150
+ case 'colors':
151
+ case 'color':
152
+ case 'cor':
153
+ case 'cores':
154
+ let colors = val.text.replace(/[/]/g, ' ');
155
+ for (let i = 1; i < values.length; i++) {
156
+ colors += `/${values[i].text.replace(/[/]/g, ' ')}`;
157
+ }
158
+ entry.color = colors;
159
+ break;
160
+ default:
161
+ let commonSpec = null;
162
+ let fixedText = val.value || val.text;
163
+ switch (fixedText.toLowerCase()) {
164
+ case 'm':
165
+ case 'l':
166
+ case 'g':
167
+ case 's':
168
+ case 'p':
169
+ case 'xs':
170
+ case 'pp':
171
+ case 'xl':
172
+ case 'gg':
173
+ case 'xxl':
174
+ case 'xg':
175
+ case 'u':
176
+ case 'Único':
177
+ case 'unico':
178
+ commonSpec = 'size';
179
+ break;
180
+ case 'adult':
181
+ case 'adulto':
182
+ case 'kids':
183
+ case 'criança':
184
+ case 'infant':
185
+ case 'infantil':
186
+ case 'newborn':
187
+ case 'recém-nascido':
188
+ case 'toddler':
189
+ commonSpec = 'age_group';
190
+ break;
191
+ case 'male':
192
+ case 'masculino':
193
+ case 'female':
194
+ case 'feminino':
195
+ case 'unisex':
196
+ commonSpec = 'gender';
197
+ break;
198
+ case 'homem':
199
+ commonSpec = 'gender';
200
+ fixedText = 'male';
201
+ break;
202
+ case 'mulher':
203
+ commonSpec = 'gender';
204
+ fixedText = 'female';
205
+ break;
206
+ default:
207
+ if (customLabel < 5) {
208
+ entry[`custom_label_${customLabel}`] = val.text;
209
+ customLabel += 1;
210
+ }
211
+ break;
212
+ }
213
+ if (commonSpec !== null && !entry[commonSpec]) {
214
+ entry[commonSpec] = fixedText;
215
+ }
216
+ break;
217
+ }
218
+ });
219
+ }
220
+ Object.keys(propsSet).forEach((key) => {
221
+ entry[key] = propsSet[key];
222
+ });
223
+ xml += `
224
+ <entry>`;
225
+ Object.keys(entry).forEach((key) => {
226
+ const val = entry[key];
227
+ if (val === undefined || val === null) return;
228
+ if (typeof val === 'object' && val) {
229
+ Object.keys(entry).forEach((nKey) => {
230
+ const nested = val[nKey];
231
+ xml += `<g:${key}><![CDATA[${nested}]]></g:${key}>`;
232
+ });
233
+ return;
234
+ }
235
+ if (key === 'link') {
236
+ xml += `<g:${key}><!--${p._id}-->${val}</g:${key}>`;
237
+ return;
238
+ }
239
+ xml += `<g:${key}><![CDATA[${val}]]></g:${key}>`;
240
+ });
241
+ xml += `
242
+ </entry>`;
243
+ if (p.variations && !isSkipVariations) {
244
+ p.variations.forEach((variation) => {
245
+ const mergedItem = { ...p, ...variation };
246
+ if (p.specifications) {
247
+ mergedItem.specifications = {
248
+ ...p.specifications,
249
+ ...variation.specifications,
250
+ };
251
+ }
252
+ if (!variation.sku && p.sku) {
253
+ mergedItem.sku = `${p.sku}-${Math.ceil(Math.random() * 1000)}`;
254
+ }
255
+ if (variation.picture_id && p.pictures) {
256
+ const picture = p.pictures.find(({ _id }) => _id === variation.picture_id);
257
+ if (picture) mergedItem.pictures = [picture];
258
+ }
259
+ delete mergedItem.variations;
260
+ convertProduct(mergedItem, entry.id);
261
+ });
262
+ }
263
+ }
264
+ };
265
+ products.forEach((p) => convertProduct(p));
266
+ xml += `
267
+ </feed>`;
268
+ res.send(xml);
269
+ };
270
+
271
+ export default renderCatalog;
272
+ // # sourceMappingURL=render-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-catalog.js","sourceRoot":"","sources":["../../src/firebase/render-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import api from '@cloudcommerce/api';
2
+ import config from '@cloudcommerce/firebase/lib/config';
3
+
4
+ const renderSitemap = async (req, res, products) => {
5
+ const { settingsContent: { domain } } = config.get();
6
+ const fetchingCategories = api.get('categories', {
7
+ limit: 3000,
8
+ fields: ['slug'],
9
+ });
10
+ const fetchingBrands = api.get('brands', {
11
+ limit: 3000,
12
+ fields: ['slug'],
13
+ });
14
+ const { data: { result: categories } } = await fetchingCategories;
15
+ const { data: { result: brands } } = await fetchingBrands;
16
+ let xml = `<?xml version="1.0" encoding="UTF-8"?>
17
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">`;
18
+ [...categories, ...brands].forEach(({ slug }) => {
19
+ if (!slug) return;
20
+ xml += `
21
+ <url>
22
+ <loc>https://${domain}/${slug}</loc>
23
+ <changefreq>weekly</changefreq>
24
+ <priority>0.8</priority>
25
+ </url>`;
26
+ });
27
+ products.forEach(({ slug }) => {
28
+ if (!slug) return;
29
+ xml += `
30
+ <url>
31
+ <loc>https://${domain}/${slug}</loc>
32
+ <changefreq>weekly</changefreq>
33
+ <priority>0.9</priority>
34
+ </url>`;
35
+ });
36
+ xml += `
37
+ </urlset>`;
38
+ res.send(xml);
39
+ };
40
+
41
+ export default renderSitemap;
42
+ // # sourceMappingURL=render-sitemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-sitemap.js","sourceRoot":"","sources":["../../src/firebase/render-sitemap.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,MAAM,MAAM,oCAAoC,CAAC;AAExD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,QAAsB,EAAE,EAAE;IAClF,MAAM,EACJ,eAAe,EAAE,EAAE,MAAM,EAAE,GAC5B,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IACjB,MAAM,kBAAkB,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE;QAC/C,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,MAAM,CAAU;KAC1B,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,MAAM,CAAU;KAC1B,CAAC,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,kBAAkB,CAAC;IAClE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,cAAc,CAAC;IAE1D,IAAI,GAAG,GAAG;+DACmD,CAAC;IAC9D,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,GAAG,IAAI;;qBAEU,MAAM,IAAI,IAAI;;;WAGxB,CAAC;IACV,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,GAAG,IAAI;;qBAEU,MAAM,IAAI,IAAI;;;WAGxB,CAAC;IACV,CAAC,CAAC,CAAC;IACH,GAAG,IAAI;YACG,CAAC;IACX,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}