cloudcommerce 0.1.2 → 0.1.4

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 (140) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/ecomplus-stores/monocard/functions/core/package.json +1 -1
  3. package/ecomplus-stores/monocard/functions/events/package.json +2 -2
  4. package/ecomplus-stores/monocard/functions/modules/package.json +2 -2
  5. package/ecomplus-stores/monocard/functions/passport/package.json +2 -2
  6. package/ecomplus-stores/monocard/functions/ssr/package.json +6 -6
  7. package/ecomplus-stores/monocard/package.json +1 -1
  8. package/ecomplus-stores/tia-sonia/functions/core/package.json +1 -1
  9. package/ecomplus-stores/tia-sonia/functions/events/package.json +2 -2
  10. package/ecomplus-stores/tia-sonia/functions/modules/package.json +2 -2
  11. package/ecomplus-stores/tia-sonia/functions/passport/package.json +2 -2
  12. package/ecomplus-stores/tia-sonia/functions/ssr/content/settings.json +3 -2
  13. package/ecomplus-stores/tia-sonia/functions/ssr/package.json +9 -6
  14. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/fimdeano1920x736.jpg +0 -0
  15. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/granolas-em-pote.png +0 -0
  16. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/granolas-espalhadas.png +0 -0
  17. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/tiasonia-logo-mono.png +0 -0
  18. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/tiasonia-logo-var.png +0 -0
  19. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/tiasonia-logo.png +0 -0
  20. package/ecomplus-stores/tia-sonia/functions/ssr/src/components/TheHeader.vue +146 -7
  21. package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderBarLink.vue +5 -0
  22. package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderButtonLink.vue +1 -1
  23. package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderNav.vue +7 -6
  24. package/ecomplus-stores/tia-sonia/functions/ssr/src/layouts/Base.astro +19 -7
  25. package/ecomplus-stores/tia-sonia/functions/ssr/src/layouts/Pages.astro +17 -1
  26. package/ecomplus-stores/tia-sonia/functions/ssr/src/layouts/PagesHeader.astro +1 -9
  27. package/ecomplus-stores/tia-sonia/functions/ssr/src/main/Home.astro +15 -8
  28. package/ecomplus-stores/tia-sonia/functions/ssr/tailwind.config.cjs +9 -1
  29. package/ecomplus-stores/tia-sonia/functions/ssr/uno.config.cjs +3 -1
  30. package/ecomplus-stores/tia-sonia/package.json +1 -1
  31. package/package.json +6 -5
  32. package/packages/api/package.json +1 -1
  33. package/packages/apps/correios/package.json +1 -1
  34. package/packages/apps/custom-payment/package.json +1 -1
  35. package/packages/apps/custom-shipping/package.json +1 -1
  36. package/packages/apps/discounts/package.json +1 -1
  37. package/packages/apps/emails/package.json +2 -2
  38. package/packages/apps/frenet/events.js +1 -0
  39. package/packages/apps/frenet/lib/frenet-events.d.ts +6 -0
  40. package/packages/apps/frenet/lib/frenet-events.js +19 -0
  41. package/packages/apps/frenet/lib/frenet-events.js.map +1 -0
  42. package/packages/apps/frenet/lib/functions-lib/database.d.ts +18 -0
  43. package/packages/apps/frenet/lib/functions-lib/database.js +128 -0
  44. package/packages/apps/frenet/lib/functions-lib/database.js.map +1 -0
  45. package/packages/apps/frenet/lib/functions-lib/events-to-frenet.d.ts +3 -0
  46. package/packages/apps/frenet/lib/functions-lib/events-to-frenet.js +48 -0
  47. package/packages/apps/frenet/lib/functions-lib/events-to-frenet.js.map +1 -0
  48. package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.d.ts +2 -0
  49. package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.js +19 -0
  50. package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.js.map +1 -0
  51. package/packages/apps/frenet/lib/functions-lib/remove-delivered.d.ts +2 -0
  52. package/packages/apps/frenet/lib/functions-lib/remove-delivered.js +30 -0
  53. package/packages/apps/frenet/lib/functions-lib/remove-delivered.js.map +1 -0
  54. package/packages/apps/frenet/lib/functions-lib/tracking-codes.d.ts +2 -0
  55. package/packages/apps/frenet/lib/functions-lib/tracking-codes.js +138 -0
  56. package/packages/apps/frenet/lib/functions-lib/tracking-codes.js.map +1 -0
  57. package/packages/apps/frenet/lib/functions-lib/update-fulfillments.d.ts +5 -0
  58. package/packages/apps/frenet/lib/functions-lib/update-fulfillments.js +49 -0
  59. package/packages/apps/frenet/lib/functions-lib/update-fulfillments.js.map +1 -0
  60. package/packages/apps/frenet/package.json +11 -3
  61. package/packages/apps/frenet/src/frenet-events.ts +25 -0
  62. package/packages/apps/frenet/src/functions-lib/database.ts +159 -0
  63. package/packages/apps/frenet/src/functions-lib/events-to-frenet.ts +62 -0
  64. package/packages/apps/frenet/src/functions-lib/fetch-tracking-code.ts +22 -0
  65. package/packages/apps/frenet/src/functions-lib/remove-delivered.ts +31 -0
  66. package/packages/apps/frenet/src/functions-lib/tracking-codes.ts +170 -0
  67. package/packages/apps/frenet/src/functions-lib/update-fulfillments.ts +56 -0
  68. package/packages/apps/galaxpay/package.json +3 -3
  69. package/packages/apps/infinitepay/package.json +2 -2
  70. package/packages/apps/jadlog/package.json +1 -1
  71. package/packages/apps/loyalty-points/package.json +1 -1
  72. package/packages/apps/mercadopago/package.json +2 -2
  73. package/packages/apps/pagarme/package.json +3 -3
  74. package/packages/apps/pix/package.json +2 -2
  75. package/packages/apps/tiny-erp/package.json +2 -2
  76. package/packages/cli/package.json +1 -1
  77. package/packages/config/package.json +1 -1
  78. package/packages/emails/package.json +1 -1
  79. package/packages/events/lib/firebase.js +2 -0
  80. package/packages/events/lib/firebase.js.map +1 -1
  81. package/packages/events/package.json +3 -2
  82. package/packages/events/src/firebase.ts +2 -0
  83. package/packages/firebase/lib/config.d.ts +1 -0
  84. package/packages/firebase/lib/config.js +4 -0
  85. package/packages/firebase/lib/config.js.map +1 -1
  86. package/packages/firebase/package.json +2 -2
  87. package/packages/firebase/src/config.ts +5 -0
  88. package/packages/i18n/package.json +1 -1
  89. package/packages/modules/package.json +2 -2
  90. package/packages/passport/package.json +2 -2
  91. package/packages/ssr/package.json +5 -4
  92. package/packages/storefront/dist/client/HeaderButtons.300c19e5.js +1 -0
  93. package/packages/storefront/dist/client/Prices.d79bd862.js +1 -0
  94. package/packages/storefront/dist/client/{ProductCard.7b68cc35.js → ProductCard.6b27d9fa.js} +1 -1
  95. package/packages/storefront/dist/client/assets/_...slug_.4dbd1d47.css +1 -0
  96. package/packages/storefront/dist/client/assets/server.4d9646d8.css +1 -0
  97. package/packages/storefront/dist/client/chunks/{HeaderButtons.cbbb059d.js → HeaderButtons.1abd5bf4.js} +1 -1
  98. package/packages/storefront/dist/client/chunks/{LoginForm.ac2f1b1f.js → LoginForm.7e7d6137.js} +1 -1
  99. package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.b29421b3.js +1 -0
  100. package/packages/storefront/dist/client/chunks/_plugin-vue_export-helper.fc452b02.js +1 -0
  101. package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.b4556b35.js +1 -0
  102. package/packages/storefront/dist/client/client.2a3e5a58.js +1 -0
  103. package/packages/storefront/dist/client/sw.js +1 -1
  104. package/packages/storefront/dist/client/~partytown/partytown-atomics.js +2 -2
  105. package/packages/storefront/dist/client/~partytown/partytown-media.js +1 -1
  106. package/packages/storefront/dist/client/~partytown/partytown-sw.js +2 -2
  107. package/packages/storefront/dist/client/~partytown/partytown.js +2 -2
  108. package/packages/storefront/dist/server/entry.mjs +35 -1560
  109. package/packages/storefront/package.json +7 -8
  110. package/packages/storefront/src/lib/assets/tooltip.css +43 -0
  111. package/packages/storefront/src/lib/components/Prices.vue +1 -1
  112. package/packages/storefront/src/lib/layouts/BaseBody.astro +1 -1
  113. package/packages/storefront/src/lib/pages/_vue.ts +0 -2
  114. package/packages/storefront/tailwind.config.cjs +30 -19
  115. package/packages/storefront/uno.config.cjs +20 -19
  116. package/packages/types/package.json +1 -1
  117. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/banner1.png +0 -0
  118. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/banner2.png +0 -0
  119. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/banner2.webp +0 -0
  120. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/headless.png +0 -0
  121. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/headphone.png +0 -0
  122. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/headphone.webp +0 -0
  123. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/logo.png +0 -0
  124. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/logo.webp +0 -0
  125. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/passion.png +0 -0
  126. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/passion.webp +0 -0
  127. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/pwa-reliable.png +0 -0
  128. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/rect8589.png +0 -0
  129. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/rect859.png +0 -0
  130. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/rect89.png +0 -0
  131. package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/rect89.webp +0 -0
  132. package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderNavLink.vue +0 -5
  133. package/packages/storefront/dist/client/HeaderButtons.8acf8a3b.js +0 -1
  134. package/packages/storefront/dist/client/Prices.9099fe99.js +0 -1
  135. package/packages/storefront/dist/client/assets/_...slug_.f19a16ca.css +0 -1
  136. package/packages/storefront/dist/client/assets/server.55b8d73d.css +0 -1
  137. package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.c37148c1.js +0 -1
  138. package/packages/storefront/dist/client/chunks/_plugin-vue_export-helper.5ccc5d75.js +0 -1
  139. package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.d5646b29.js +0 -1
  140. package/packages/storefront/dist/client/client.9783ef49.js +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-correios",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce app for Correios shipping calculation",
6
6
  "main": "lib/correios.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-payment",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce app for simple custom payment methods",
6
6
  "main": "lib/index.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-shipping",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce app for custom shipping methods",
6
6
  "main": "lib/custom-shipping.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-emails",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce default transactional email app",
6
6
  "main": "lib/index.js",
7
7
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "@cloudcommerce/emails": "workspace:*",
24
24
  "@cloudcommerce/firebase": "workspace:*",
25
25
  "@ecomplus/transactional-mails": "^1.11.1",
26
- "firebase-admin": "^11.4.0",
26
+ "firebase-admin": "^11.4.1",
27
27
  "firebase-functions": "^3.24.1"
28
28
  },
29
29
  "devDependencies": {
@@ -0,0 +1 @@
1
+ export * from './lib/frenet-events';
@@ -0,0 +1,6 @@
1
+ import '@cloudcommerce/firebase/lib/init';
2
+ import functions from 'firebase-functions/v1';
3
+ export declare const frenet: {
4
+ cronTrackingCodes: functions.CloudFunction<unknown>;
5
+ onStoreEvent: functions.CloudFunction<functions.pubsub.Message>;
6
+ };
@@ -0,0 +1,19 @@
1
+ /* eslint-disable import/prefer-default-export */
2
+ import '@cloudcommerce/firebase/lib/init';
3
+ import { createAppEventsFunction } from '@cloudcommerce/firebase/lib/helpers/pubsub';
4
+ import config from '@cloudcommerce/firebase/lib/config';
5
+ import functions from 'firebase-functions/v1';
6
+ import handleTrackingCodes from './functions-lib/tracking-codes.js';
7
+ import handleApiEvent from './functions-lib/events-to-frenet.js';
8
+
9
+ const { httpsFunctionOptions: { region } } = config.get();
10
+
11
+ export const frenet = {
12
+ cronTrackingCodes: functions.region(region).pubsub
13
+ .schedule('*/30 * * * *')
14
+ .onRun(() => {
15
+ return handleTrackingCodes;
16
+ }),
17
+ onStoreEvent: createAppEventsFunction('frenet', handleApiEvent),
18
+ };
19
+ // # sourceMappingURL=frenet-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frenet-events.js","sourceRoot":"","sources":["../src/frenet-events.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,GAExB,MAAM,4CAA4C,CAAC;AACpD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,gCAAgC,CAAC;AACjE,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAE9D,MAAM,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;SAC/C,QAAQ,CAAC,cAAc,CAAC;SACxB,KAAK,CAAC,GAAG,EAAE;QACV,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC;IAEJ,YAAY,EAAE,uBAAuB,CACnC,QAAQ,EACR,cAAiC,CAClC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ declare const db: {
2
+ save: (orderId: string, trackingStatus: string, trackingCode: string, serviceCode?: string) => Promise<unknown>;
3
+ get: (orderId: string, trackingCode: string) => Promise<unknown>;
4
+ clear: () => Promise<unknown>;
5
+ remove: (trackingCode: string, serviceCode: string) => Promise<unknown>;
6
+ update: (trackingStatus: string, trackingCode: string) => Promise<unknown>;
7
+ getAll: () => Promise<unknown>;
8
+ getAllDelivered: () => Promise<unknown>;
9
+ };
10
+ export default db;
11
+ export type TrackingDoc = {
12
+ orderId: string;
13
+ trackingStatus: string;
14
+ trackingCode: string;
15
+ serviceCode: string;
16
+ createdAt: string;
17
+ updateAt?: string;
18
+ };
@@ -0,0 +1,128 @@
1
+ import { getFirestore } from 'firebase-admin/firestore';
2
+ import logger from 'firebase-functions/logger';
3
+
4
+ const firestoreColl = 'frenetTrackingCodes';
5
+ const save = (orderId, trackingStatus, trackingCode, serviceCode) => new Promise((resolve) => {
6
+ const documentRef = getFirestore().doc(`${firestoreColl}/${trackingCode}`);
7
+ if (documentRef) {
8
+ documentRef.set({
9
+ orderId,
10
+ trackingStatus,
11
+ trackingCode,
12
+ serviceCode,
13
+ createdAt: new Date(),
14
+ }).then(() => resolve(true))
15
+ .catch(logger.error);
16
+ }
17
+ });
18
+ const get = async (orderId, trackingCode) => new Promise((resolve, reject) => {
19
+ getFirestore().doc(`${firestoreColl}/${trackingCode}`)
20
+ .get()
21
+ .then((documentSnapshot) => {
22
+ if (documentSnapshot && documentSnapshot.exists) {
23
+ const data = documentSnapshot.data();
24
+ if (data && data.orderId === orderId) {
25
+ resolve({ ...data, createdAt: data.createdAt.toDate() });
26
+ } else {
27
+ resolve(null);
28
+ }
29
+ } else {
30
+ resolve(null);
31
+ }
32
+ })
33
+ .catch((err) => {
34
+ err.name = 'TrackingCodeNotFound';
35
+ reject(err);
36
+ });
37
+ });
38
+ const clear = async () => new Promise((resolve) => {
39
+ const deadline = new Date();
40
+ deadline.setMonth(deadline.getMonth() - 2);
41
+ getFirestore().collection(firestoreColl)
42
+ .where('createdAt', '<=', deadline)
43
+ .get()
44
+ .then((docsRef) => {
45
+ docsRef.docs.forEach((doc) => {
46
+ doc.ref.delete();
47
+ });
48
+ resolve(true);
49
+ });
50
+ });
51
+ const remove = async (trackingCode, serviceCode) => new Promise((resolve) => {
52
+ getFirestore().doc(`${firestoreColl}/${trackingCode}`)
53
+ .get()
54
+ .then(async (documentSnapshot) => {
55
+ if (documentSnapshot && documentSnapshot.exists) {
56
+ const data = documentSnapshot.data();
57
+ if (data && data.serviceCode === serviceCode) {
58
+ await documentSnapshot.ref.delete();
59
+ resolve(true);
60
+ }
61
+ }
62
+ resolve(false);
63
+ });
64
+ });
65
+ const update = async (trackingStatus, trackingCode) => new Promise((resolve) => {
66
+ const documentRef = getFirestore().doc(`${firestoreColl}/${trackingCode}`);
67
+ if (documentRef) {
68
+ documentRef.set({
69
+ trackingStatus,
70
+ updateAt: new Date().toISOString(),
71
+ }, { merge: true })
72
+ .then(() => resolve(true));
73
+ }
74
+ });
75
+ const getAll = () => new Promise((resolve, reject) => {
76
+ getFirestore().collection(firestoreColl)
77
+ .where('trackingStatus', '!=', '9')
78
+ .get()
79
+ .then((docsRef) => {
80
+ if (docsRef.size > 0) {
81
+ const list = [];
82
+ docsRef.forEach((documentSnapshot) => {
83
+ if (documentSnapshot && documentSnapshot.exists) {
84
+ const data = documentSnapshot.data();
85
+ list.push({ ...data, createAt: data.toDate() });
86
+ }
87
+ });
88
+ resolve(list);
89
+ } else {
90
+ const err = new Error('Tracking code not found for any store :)');
91
+ err.name = 'NoTrackingCodesForUpdate';
92
+ reject(err);
93
+ }
94
+ });
95
+ });
96
+ const getAllDelivered = () => new Promise((resolve, reject) => {
97
+ getFirestore().collection(firestoreColl)
98
+ .where('trackingStatus', '==', '9')
99
+ .get()
100
+ .then((docsRef) => {
101
+ if (docsRef.size > 0) {
102
+ const list = [];
103
+ docsRef.forEach((documentSnapshot) => {
104
+ if (documentSnapshot && documentSnapshot.exists) {
105
+ const data = documentSnapshot.data();
106
+ list.push({ ...data, createAt: data.toDate() });
107
+ }
108
+ });
109
+ resolve(list);
110
+ } else {
111
+ const err = new Error('Tracking code not found for any store :)');
112
+ err.name = 'NoTrackingCodesForUpdate';
113
+ reject(err);
114
+ }
115
+ });
116
+ });
117
+ const db = {
118
+ save,
119
+ get,
120
+ clear,
121
+ remove,
122
+ update,
123
+ getAll,
124
+ getAllDelivered,
125
+ };
126
+
127
+ export default db;
128
+ // # sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/functions-lib/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ApiEventHandler } from '@cloudcommerce/firebase/lib/helpers/pubsub';
2
+ declare const handleApiEvent: ApiEventHandler;
3
+ export default handleApiEvent;
@@ -0,0 +1,48 @@
1
+ import logger from 'firebase-functions/logger';
2
+ import db from './database.js';
3
+
4
+ const pattern = /rastreador|lang|version|(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-/]))?/;
5
+ const isUrl = (str) => pattern.test(str);
6
+ const handleApiEvent = async ({
7
+ evName, apiEvent, apiDoc, app,
8
+ }) => {
9
+ const resourceId = apiEvent.resource_id;
10
+ logger.info('>> ', resourceId, ' - Action: ', apiEvent.action);
11
+ const key = `${evName}_${resourceId}`;
12
+ const appData = { ...app.data, ...app.hidden_data };
13
+ const order = apiDoc;
14
+ const orderId = order._id;
15
+ if ((Array.isArray(appData.ignore_events)
16
+ && appData.ignore_events.includes(evName))
17
+ || !order.shipping_lines) {
18
+ logger.info('>> ', key, ' - Ignored event');
19
+ return null;
20
+ }
21
+ logger.info(`> Webhook ${resourceId} [${evName}]`);
22
+ order.shipping_lines.forEach((shipping) => {
23
+ if (shipping.tracking_codes
24
+ && shipping.custom_fields
25
+ && shipping.custom_fields.find(({ field }) => field === 'by_frenet')) {
26
+ shipping.tracking_codes.forEach(async ({ code }) => {
27
+ // algumas integrações enviam um link de rastreamento
28
+ // ao invés do código de rastreamento, como é o caso do bling
29
+ // para evitar gargalos na fila só salva se for código
30
+ if (code && !isUrl(code)) {
31
+ const trackingCode = await db.get(orderId, code);
32
+ if (!trackingCode) {
33
+ const appShipping = shipping.app;
34
+ await db.save(orderId, '0', code, appShipping?.service_code);
35
+ }
36
+ return null;
37
+ }
38
+ logger.error(`> (App Frenet) Error => webhook #${orderId}: ${code},
39
+ Não foi possivel salvar código de rastreio pois seu formato é inválido. `, shipping.tracking_codes);
40
+ return null;
41
+ });
42
+ }
43
+ });
44
+ return null;
45
+ };
46
+
47
+ export default handleApiEvent;
48
+ // # sourceMappingURL=events-to-frenet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-to-frenet.js","sourceRoot":"","sources":["../../src/functions-lib/events-to-frenet.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,OAAO,GAAG,oGAAoG,CAAC;AACrH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,cAAc,GAAoB,KAAK,EAAE,EAC7C,MAAM,EACN,QAAQ,EACR,MAAM,EACN,GAAG,GACJ,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAgB,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;WAChC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;WACzC,CAAC,KAAK,CAAC,cAAc,EACxB;QACA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,KAAK,MAAM,GAAG,CAAC,CAAC;IAEnD,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,cAAc;eACtB,QAAQ,CAAC,aAAa;eACtB,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,EACpE;YACA,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBACjD,qDAAqD;gBACrD,6DAA6D;gBAC7D,sDAAsD;gBAEtD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACxB,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,YAAY,EAAE;wBACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;wBACjC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;qBAC9D;oBACD,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,CAAC,KAAK,CACV,oCAAoC,OAAO,KAAK,IAAI;mFACqB,EACzE,QAAQ,CAAC,cAAc,CACxB,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (trackingCode: string, serviceCode: string, token: string) => Promise<unknown>;
2
+ export default _default;
@@ -0,0 +1,19 @@
1
+ import axios from 'axios';
2
+
3
+ export default (trackingCode, serviceCode, token) => new Promise((resolve) => {
4
+ axios({
5
+ method: 'post',
6
+ url: 'http://api.frenet.com.br/tracking/trackinginfo',
7
+ headers: {
8
+ 'Content-Type': 'application/json',
9
+ Accept: 'application/json',
10
+ token,
11
+ },
12
+ data: {
13
+ ShippingServiceCode: serviceCode,
14
+ TrackingNumber: trackingCode,
15
+ },
16
+ })
17
+ .then(({ data }) => resolve(data));
18
+ });
19
+ // # sourceMappingURL=fetch-tracking-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-tracking-code.js","sourceRoot":"","sources":["../../src/functions-lib/fetch-tracking-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAe,CACb,YAAoB,EACpB,WAAmB,EACnB,KAAa,EACb,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC3B,KAAK,CAAC;QACJ,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,gDAAgD;QACrD,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,KAAK;SACN;QACD,IAAI,EAAE;YACJ,mBAAmB,EAAE,WAAW;YAChC,cAAc,EAAE,YAAY;SAC7B;KACF,CAAC;SACC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const removeDeliveredToFirestore: () => Promise<void>;
2
+ export default removeDeliveredToFirestore;
@@ -0,0 +1,30 @@
1
+ import logger from 'firebase-functions/logger';
2
+ import db from './database.js';
3
+
4
+ const removeDeliveredToFirestore = async () => {
5
+ // eslint-disable-next-line no-async-promise-executor
6
+ const job = new Promise(async (resolve, reject) => {
7
+ try {
8
+ const codes = await db.getAllDelivered();
9
+ if (codes.length > 0) {
10
+ codes.forEach(async (code) => {
11
+ try {
12
+ await db.remove(code.trackingCode, code.serviceCode);
13
+ logger.log('> (App Frenet) Code removed, delivered status', code);
14
+ } catch (err) {
15
+ logger.error('> (App Frenet) => TrackingCodesRemoveErr =>', err);
16
+ }
17
+ });
18
+ resolve(null);
19
+ }
20
+ } catch (err) {
21
+ reject(err);
22
+ }
23
+ });
24
+ await job.catch((err) => {
25
+ logger.error('> (App Frenet) Error => ', err);
26
+ });
27
+ };
28
+
29
+ export default removeDeliveredToFirestore;
30
+ // # sourceMappingURL=remove-delivered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-delivered.js","sourceRoot":"","sources":["../../src/functions-lib/remove-delivered.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,0BAA0B,GAAG,KAAK,IAAI,EAAE;IAC5C,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAChD,IAAI;YACF,MAAM,KAAK,GAAkB,MAAM,EAAE,CAAC,eAAe,EAAmB,CAAC;YACzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC3B,IAAI;wBACF,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;wBACrD,MAAM,CAAC,GAAG,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;qBACnE;oBAAC,OAAO,GAAG,EAAE;wBACZ,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;qBAClE;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC;SACb;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const handleTrackingCodes: () => Promise<void>;
2
+ export default handleTrackingCodes;
@@ -0,0 +1,138 @@
1
+ import api from '@cloudcommerce/api';
2
+ import logger from 'firebase-functions/logger';
3
+ import db from './database.js';
4
+ import updateOrderfulfilllment from './update-fulfillments.js';
5
+ import fetchTrackingEvents from './fetch-tracking-code.js';
6
+ import removeDeliveredToFirestore from './remove-delivered.js';
7
+
8
+ const getConfig = async () => {
9
+ try {
10
+ const app = (await api.get('applications?app_id=1244&fields=hidden_data')).data.result;
11
+ return app[0].hidden_data;
12
+ } catch (err) {
13
+ logger.error('(App Frenet) Error =>', err);
14
+ return null;
15
+ }
16
+ };
17
+ const diffInDays = (createdAt) => {
18
+ const today = new Date();
19
+ const created = new Date(createdAt);
20
+ const diff = today.getTime() - created.getTime();
21
+ return Math.ceil(diff / (1000 * 3600 * 24));
22
+ };
23
+ const handleTrackingCodes = async () => {
24
+ const appConfig = await getConfig();
25
+ // eslint-disable-next-line no-async-promise-executor
26
+ const checkTrackingCodes = new Promise(async (resolve, reject) => {
27
+ logger.log('> (App Frenet) Automatic tracking code update started.');
28
+ let codes;
29
+ try {
30
+ codes = await db.getAll();
31
+ } catch (err) {
32
+ if (err.name !== 'NoTrackingCodesForUpdate') {
33
+ reject(err);
34
+ }
35
+ resolve(null);
36
+ }
37
+ if (!appConfig || !appConfig.frenet_access_token || !codes) {
38
+ // no config for store bye
39
+ resolve(null);
40
+ } else {
41
+ // eslint-disable-next-line consistent-return
42
+ codes.forEach(async (code) => {
43
+ const serviceCode = String(code.serviceCode).startsWith('FR')
44
+ ? String(code.serviceCode.replace(/^FR/, '')).trim()
45
+ : code.serviceCode;
46
+ let trackingData;
47
+ try {
48
+ trackingData = await fetchTrackingEvents(code.trackingCode, serviceCode, appConfig.frenet_access_token);
49
+ } catch (err) {
50
+ logger.error('> (App Frenet) Error => ', err);
51
+ }
52
+ if (trackingData) {
53
+ const { ErrorMessage, TrackingEvents } = trackingData;
54
+ if (ErrorMessage && (!Array.isArray(TrackingEvents) || !TrackingEvents.length)) {
55
+ const startWithError = [
56
+ 'ShippingServiceCode ou CarrierCode informado não foram encontrados',
57
+ 'Object reference not set to an instance of an object',
58
+ 'Value cannot be null',
59
+ 'Cannot deserialize the current JSON array',
60
+ ].some((msg) => ErrorMessage.startsWith(msg));
61
+ if (startWithError || ErrorMessage.startsWith('Objeto não encontrado na base de dados dos Correios')) {
62
+ if (startWithError || diffInDays(code.createdAt) >= 15) {
63
+ // remove pra evitar flod com errors
64
+ try {
65
+ await db.remove(code.trackingCode, code.serviceCode);
66
+ logger.log('> (App Frenet) Code removed, error detected in \'trackingData\'', code);
67
+ } catch (err) {
68
+ logger.error('> (App Frenet) => TrackingCodesRemoveErr =>', err);
69
+ }
70
+ }
71
+ } else {
72
+ const err = {
73
+ ...code,
74
+ error: true,
75
+ ErrorMessage,
76
+ TrackingEvents,
77
+ };
78
+ logger.error('> (App Frenet) Error => ', err);
79
+ }
80
+ } else if (TrackingEvents && Array.isArray(TrackingEvents)) {
81
+ let trackingEvent;
82
+ TrackingEvents.forEach(({ EventType, EventDateTime, EventDescription }) => {
83
+ const [day, month, yearAndTime] = EventDateTime.split('/');
84
+ const [year, time] = yearAndTime.split(' ');
85
+ const [hour, minute] = time.split(':');
86
+ const date = new Date(Date.UTC(year, parseInt(month, 10) - 1, day, hour, minute));
87
+ date.setHours(date.getHours() - 3);
88
+ if (!trackingEvent || trackingEvent.date.getTime() < date.getTime()) {
89
+ trackingEvent = {
90
+ status: parseInt(EventType, 10),
91
+ date,
92
+ description: EventDescription,
93
+ };
94
+ }
95
+ });
96
+ if (trackingEvent && parseInt(code.trackingStatus, 10) !== trackingEvent.status) {
97
+ try {
98
+ await updateOrderfulfilllment(code.orderId, code.trackingCode, trackingEvent.status, trackingEvent.date);
99
+ await db.update(trackingEvent.status, code.trackingCode);
100
+ logger.log(`> (App Frenet) Novo Evento => orderId #${code.orderId},
101
+ code: ${code.trackingCode} lastStatus: ${code.trackingStatus}
102
+ newStatus: ${trackingEvent.status} description: ${trackingEvent.description}`);
103
+ } catch (err) {
104
+ if (err.response) {
105
+ const payload = {
106
+ message: err.message,
107
+ config: err.response.toJSON(),
108
+ orderId: code.orderId,
109
+ };
110
+ logger.error('> (App Frenet) Error => ', payload);
111
+ } else {
112
+ logger.error('> (App Frenet) Error => ', err);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ resolve(null);
119
+ });
120
+ }
121
+ });
122
+ if (appConfig && appConfig.frenet_access_token) {
123
+ await checkTrackingCodes.catch((err) => {
124
+ logger.error('> (App Frenet) Error => ', err);
125
+ });
126
+ await removeDeliveredToFirestore().catch((err) => {
127
+ logger.error('> (App Frenet) Error removing Delivered to Firestore => ', err);
128
+ });
129
+ if (new Date().getHours() === 23) {
130
+ await db.clear().catch((err) => {
131
+ logger.error('> (App Frenet) Error removing old tracking codes => ', err);
132
+ });
133
+ }
134
+ }
135
+ };
136
+
137
+ export default handleTrackingCodes;
138
+ // # sourceMappingURL=tracking-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-codes.js","sourceRoot":"","sources":["../../src/functions-lib/tracking-codes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const updateFulfillments: (orderId: string, trackingCode: string, eventType: number, eventDate: Date) => Promise<true | (Response & {
2
+ config: import("@cloudcommerce/api/lib/types").Config;
3
+ data: null;
4
+ }) | null>;
5
+ export default updateFulfillments;
@@ -0,0 +1,49 @@
1
+ import api from '@cloudcommerce/api';
2
+
3
+ const parseStatus = (status) => {
4
+ switch (status) {
5
+ case 0:
6
+ case 1:
7
+ case 2:
8
+ return 'shipped';
9
+ case 3:
10
+ case 4:
11
+ return 'returned';
12
+ case 9:
13
+ return 'delivered';
14
+ default:
15
+ return '';
16
+ }
17
+ };
18
+ const updateFulfillments = async (orderId, trackingCode, eventType, eventDate) => {
19
+ let notes;
20
+ const status = parseStatus(eventType);
21
+ const bodyFulfillments = {
22
+ date_time: eventDate.toISOString(),
23
+ status,
24
+ notification_code: String(trackingCode),
25
+ flags: [
26
+ 'app-frenet',
27
+ ],
28
+ }; // TODO: incompatible type=> amount;
29
+ if (eventType === 2) {
30
+ notes = 'Entrega está atrasada.';
31
+ } else if (eventType === 4) {
32
+ notes = 'Pedido extraviado.';
33
+ }
34
+ const order = (await api.get(`orders/${orderId}`)).data;
35
+ if (order.fulfillment_status && order.fulfillment_status.current === status) {
36
+ return null;
37
+ }
38
+ await api.post(`orders/${orderId}/fulfillments`, bodyFulfillments);
39
+ if (notes) {
40
+ if (order.notes) {
41
+ notes = `${order.notes}\n${notes}`;
42
+ }
43
+ return api.patch(`orders/${orderId}`, { notes });
44
+ }
45
+ return true;
46
+ };
47
+
48
+ export default updateFulfillments;
49
+ // # sourceMappingURL=update-fulfillments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-fulfillments.js","sourceRoot":"","sources":["../../src/functions-lib/update-fulfillments.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AAErC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;IACrC,QAAQ,MAAM,EAAE;QACd,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,EAAE,CAAC;KACb;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,OAAe,EACf,YAAoB,EACpB,SAAiB,EACjB,SAAe,EACf,EAAE;IACF,IAAI,KAAK,CAAC;IACV,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG;QACvB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;QAClC,MAAM;QACN,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC;QACvC,KAAK,EAAE;YACL,YAAY;SACb;KACK,CAAC,CAAC,oCAAoC;IAE9C,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,KAAK,GAAG,wBAAwB,CAAC;KAClC;SAAM,IAAI,SAAS,KAAK,CAAC,EAAE;QAC1B,KAAK,GAAG,oBAAoB,CAAC;KAC9B;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,KAAK,MAAM,EAAE;QAC3E,OAAO,IAAI,CAAC;KACb;IACD,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,OAAO,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;SACpC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAClD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-frenet",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.4",
5
5
  "description": "E-Com Plus Cloud Commerce app for Frenet shipping calculation",
6
6
  "main": "lib/frenet.js",
7
+ "exports": {
8
+ ".": "./lib/frenet.js",
9
+ "./events": "./lib/frenet-events.js"
10
+ },
7
11
  "repository": {
8
12
  "type": "git",
9
13
  "url": "git+https://github.com/ecomplus/cloud-commerce.git",
@@ -20,9 +24,13 @@
20
24
  },
21
25
  "dependencies": {
22
26
  "@cloudcommerce/api": "workspace:*",
23
- "axios": "^1.2.1"
27
+ "@cloudcommerce/firebase": "workspace:*",
28
+ "axios": "^1.2.1",
29
+ "firebase-admin": "^11.4.0",
30
+ "firebase-functions": "^4.1.1"
24
31
  },
25
32
  "devDependencies": {
26
- "@cloudcommerce/types": "workspace:*"
33
+ "@cloudcommerce/types": "workspace:*",
34
+ "@firebase/app-types": "^0.9.0"
27
35
  }
28
36
  }