cloudcommerce 0.0.60 → 0.0.61

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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.61](https://github.com/ecomplus/cloud-commerce/compare/v0.0.60...v0.0.61) (2022-08-31)
6
+
7
+
8
+ ### Features
9
+
10
+ * Add optional `tiny-erp-token` input to GH Action to improve Tiny webhooks performance ([0444f65](https://github.com/ecomplus/cloud-commerce/commit/0444f655b0a358979b14cee8ab85f0f018d08df3))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **tiny-erp:** Properly set and reuse `process.env.TINY_ERP_TOKEN` on webhooks ([4aee43a](https://github.com/ecomplus/cloud-commerce/commit/4aee43a3f067eb430c0c183eada27dca1b331fd3))
16
+
5
17
  ### [0.0.60](https://github.com/ecomplus/cloud-commerce/compare/v0.0.59...v0.0.60) (2022-08-30)
6
18
 
7
19
 
package/action.yml CHANGED
@@ -15,7 +15,9 @@ inputs:
15
15
  description: 'E-Com Plus store API key'
16
16
  required: true
17
17
  ecom-store-id:
18
- description: 'Store ID if defined in config.json'
18
+ description: 'Store ID if not defined in config.json'
19
+ tiny-erp-token:
20
+ description: 'App: Tiny ERP API token'
19
21
 
20
22
  outputs: {}
21
23
 
@@ -52,6 +54,7 @@ runs:
52
54
  ECOM_AUTHENTICATION_ID: ${{ inputs.ecom-authentication-id }}
53
55
  ECOM_API_KEY: ${{ inputs.ecom-api-key }}
54
56
  ECOM_STORE_ID: ${{ inputs.ecom-store-id }}
57
+ TINY_ERP_TOKEN: ${{ inputs.tiny-erp-token }}
55
58
  run: |
56
59
  export GAC_FILENAME=".gac-$RANDOM.json"
57
60
  echo $FIREBASE_SERVICE_ACCOUNT > $GAC_FILENAME
@@ -59,6 +62,7 @@ runs:
59
62
  ECOM_API_KEY=$ECOM_API_KEY
60
63
  ECOM_STORE_ID=$ECOM_STORE_ID
61
64
  GITHUB_TOKEN=$GITHUB_TOKEN
65
+ TINY_ERP_TOKEN=$TINY_ERP_TOKEN
62
66
  " > functions/.env
63
67
  GOOGLE_APPLICATION_CREDENTIALS=$GAC_FILENAME npm run deploy
64
68
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloudcommerce",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "Open fair-code headless commerce platform: API-first, microservices based, event driven and cloud native",
6
6
  "main": "packages/api/lib/index.js",
7
7
  "author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
6
  "main": "lib/api.js",
7
7
  "types": "lib/api.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "repository": {
@@ -29,9 +29,15 @@ const handleApiEvent = async ({
29
29
  return null;
30
30
  }
31
31
  logger.info(`> Webhook ${resourceId} [${evName}]`);
32
- const tinyToken = appData.tiny_api_token;
33
- if (typeof tinyToken === 'string' && tinyToken) {
34
- process.env.TINY_ERP_TOKEN = tinyToken;
32
+ if (!process.env.TINY_ERP_TOKEN) {
33
+ const tinyToken = appData.tiny_api_token;
34
+ if (typeof tinyToken === 'string' && tinyToken) {
35
+ process.env.TINY_ERP_TOKEN = tinyToken;
36
+ } else {
37
+ logger.warn('Missing Tiny API token');
38
+ }
39
+ }
40
+ if (process.env.TINY_ERP_TOKEN) {
35
41
  let integrationConfig;
36
42
  let canCreateNew = false;
37
43
  if (evName === 'applications-dataSet') {
@@ -1 +1 @@
1
- {"version":3,"file":"event-to-tiny.js","sourceRoot":"","sources":["../src/event-to-tiny.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-to-tiny.js","sourceRoot":"","sources":["../src/event-to-tiny.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-unresolved
2
- import { getFirestore } from 'firebase-admin/firestore';
3
1
  import logger from 'firebase-functions/lib/logger';
4
2
  import api from '@cloudcommerce/api';
5
3
  import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
@@ -8,20 +6,6 @@ import parseProduct from './parsers/product-from-tiny.js';
8
6
 
9
7
  export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue) => {
10
8
  const [sku, productId] = String(queueEntry.nextId).split(';:');
11
- let { tinyStockUpdate } = queueEntry;
12
- if (!tinyStockUpdate) {
13
- const querySnapshot = await getFirestore().collection('tinyErpStockUpdates')
14
- .where('ref', '==', `${sku}`).get();
15
- let lastUpdateTime;
16
- querySnapshot.forEach((documentSnapshot) => {
17
- const updateTime = documentSnapshot.updateTime.toDate().getTime();
18
- if (!lastUpdateTime || updateTime > lastUpdateTime) {
19
- lastUpdateTime = updateTime;
20
- tinyStockUpdate = documentSnapshot.data();
21
- }
22
- documentSnapshot.ref.delete().catch(logger.error);
23
- });
24
- }
25
9
  let product = null;
26
10
  try {
27
11
  product = (await api.get(`products/${(productId || `sku:${sku}`)}`)).data;
@@ -101,6 +85,10 @@ export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue)
101
85
  data: product,
102
86
  });
103
87
  if (Array.isArray(produto.variacoes) && produto.variacoes.length) {
88
+ if (!queueEntry.app) {
89
+ logger.warn('Variations cannot be queued without `queueEntry.app`');
90
+ return promise;
91
+ }
104
92
  promise.then((response) => {
105
93
  let skus = appData.__importation && appData.__importation.skus;
106
94
  if (!Array.isArray(skus)) {
@@ -141,6 +129,7 @@ export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue)
141
129
  hasVariations,
142
130
  variationId,
143
131
  }));
132
+ const { tinyStockUpdate } = queueEntry;
144
133
  if (tinyStockUpdate && isHiddenQueue && productId) {
145
134
  return handleTinyStock(tinyStockUpdate);
146
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"import-product-from-tiny.js","sourceRoot":"","sources":["../../src/integration/import-product-from-tiny.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-product-from-tiny.js","sourceRoot":"","sources":["../../src/integration/import-product-from-tiny.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { firestore } from 'firebase-admin';
2
1
  import logger from 'firebase-functions/lib/logger';
3
2
  import api from '@cloudcommerce/api';
4
3
  import config from '@cloudcommerce/firebase/lib/config';
5
- import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
6
4
  import importProduct from './integration/import-product-from-tiny.js';
7
5
  import importOrder from './integration/import-order-from-tiny.js';
8
- import afterQueue from './integration/after-tiny-queue.js';
6
+
7
+ let appData = {};
8
+ let application;
9
9
 
10
10
  export default async (req, res) => {
11
11
  const tinyToken = req.query.token;
@@ -16,95 +16,51 @@ export default async (req, res) => {
16
16
  TODO: Check Tiny server IPs
17
17
  const clientIp = req.get('x-forwarded-for') || req.connection.remoteAddress
18
18
  */
19
- const { apps: { tinyErp: { appId } } } = config.get();
20
- const applicationId = req.query._id;
21
- const appEndpoint = applicationId && typeof applicationId === 'string'
22
- ? `applications/${applicationId}`
23
- : `applications/app_id:${appId}`;
24
- const application = (await api.get(appEndpoint)).data;
25
- const appData = {
26
- ...application.data,
27
- ...application.hidden_data,
28
- };
29
- if (appData.tiny_api_token !== tinyToken) {
30
- return res.sendStatus(401);
19
+ const { TINY_ERP_TOKEN } = process.env;
20
+ if (!TINY_ERP_TOKEN || TINY_ERP_TOKEN !== tinyToken) {
21
+ const { apps: { tinyErp: { appId } } } = config.get();
22
+ const applicationId = req.query._id;
23
+ const appEndpoint = applicationId && typeof applicationId === 'string'
24
+ ? `applications/${applicationId}`
25
+ : `applications/app_id:${appId}`;
26
+ application = (await api.get(appEndpoint)).data;
27
+ appData = {
28
+ ...application.data,
29
+ ...application.hidden_data,
30
+ };
31
+ if (appData.tiny_api_token !== tinyToken) {
32
+ return res.sendStatus(401);
33
+ }
34
+ process.env.TINY_ERP_TOKEN = tinyToken;
31
35
  }
32
36
  if (dados.idVendaTiny) {
33
- let orderNumbers = appData.___importation?.order_numbers;
34
- if (!Array.isArray(orderNumbers)) {
35
- orderNumbers = [];
36
- }
37
37
  const orderNumber = `id:${dados.idVendaTiny}`;
38
- if (!orderNumbers.includes(orderNumber)) {
39
- logger.info(`> Tiny webhook: order ${orderNumber}`);
40
- const saveToQueue = () => {
41
- orderNumbers.push(orderNumber);
42
- logger.info(`> Order numbers: ${JSON.stringify(orderNumbers)}`);
43
- return updateAppData(application, {
44
- ___importation: {
45
- ...appData.___importation,
46
- order_numbers: orderNumbers,
47
- },
48
- });
49
- };
50
- const queueEntry = {
51
- nextId: orderNumber,
52
- isNotQueued: true,
53
- };
54
- try {
55
- const payload = await importOrder({}, queueEntry);
56
- await afterQueue(queueEntry, appData, application, payload);
57
- } catch (e) {
58
- await saveToQueue();
59
- }
60
- }
61
- }
62
- if (tipo === 'produto' || tipo === 'estoque') {
63
- if ((dados.id || dados.idProduto) && (dados.codigo || dados.sku)) {
64
- const nextId = String(dados.skuMapeamento || dados.sku || dados.codigo);
65
- const tinyStockUpdate = {
66
- ref: `${nextId}`,
67
- tipo,
68
- produto: {
69
- id: dados.idProduto,
70
- codigo: dados.sku,
71
- ...dados,
72
- },
73
- updatedAt: firestore.Timestamp.fromDate(new Date()),
74
- };
75
- logger.info(`> Tiny webhook: ${nextId} => ${tinyStockUpdate.produto.saldo}`);
76
- const saveToQueue = () => {
77
- let skus = appData.___importation && appData.___importation.skus;
78
- if (!Array.isArray(skus)) {
79
- skus = [];
80
- }
81
- if (!skus.includes(nextId)) {
82
- return firestore().collection('tinyErpStockUpdates').add(tinyStockUpdate)
83
- .then(() => {
84
- skus.push(nextId);
85
- logger.info(`> SKUs: ${JSON.stringify(skus)}`);
86
- return updateAppData(application, {
87
- ___importation: {
88
- ...appData.___importation,
89
- skus,
90
- },
91
- });
92
- });
93
- }
94
- return Promise.resolve(null);
95
- };
96
- const queueEntry = {
97
- nextId,
98
- tinyStockUpdate,
99
- isNotQueued: true,
100
- };
101
- try {
102
- const payload = await importProduct({}, queueEntry, appData, false, true);
103
- await afterQueue(queueEntry, appData, application, payload);
104
- } catch (e) {
105
- await saveToQueue();
106
- }
107
- }
38
+ const queueEntry = {
39
+ nextId: orderNumber,
40
+ isNotQueued: true,
41
+ };
42
+ await importOrder({}, queueEntry);
43
+ } else if ((tipo === 'produto' || tipo === 'estoque')
44
+ && (dados.id || dados.idProduto)
45
+ && (dados.codigo || dados.sku)) {
46
+ const nextId = String(dados.skuMapeamento || dados.sku || dados.codigo);
47
+ const tinyStockUpdate = {
48
+ ref: `${nextId}`,
49
+ tipo,
50
+ produto: {
51
+ id: dados.idProduto,
52
+ codigo: dados.sku,
53
+ ...dados,
54
+ },
55
+ };
56
+ logger.info(`> Tiny webhook: ${nextId} => ${tinyStockUpdate.produto.saldo}`);
57
+ const queueEntry = {
58
+ nextId,
59
+ tinyStockUpdate,
60
+ isNotQueued: true,
61
+ app: application,
62
+ };
63
+ await importProduct({}, queueEntry, appData, false, true);
108
64
  }
109
65
  if (tipo === 'produto') {
110
66
  const mapeamentos = [];
@@ -129,6 +85,7 @@ export default async (req, res) => {
129
85
  }
130
86
  return res.sendStatus(200);
131
87
  }
88
+ logger.warn('< Invalid Tiny Webhook body', req.body);
132
89
  }
133
90
  return res.sendStatus(403);
134
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tiny-webhook.js","sourceRoot":"","sources":["../src/tiny-webhook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,MAAM,MAAM,+BAA+B,CAAC;AACnD,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,aAAa,MAAM,qDAAqD,CAAC;AAChF,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,UAAU,MAAM,gCAAgC,CAAC;AAExD,eAAe,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;IAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE;QAC1D,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,KAAK,EAAE;YACT;;;cAGE;YACF,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACtD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,MAAM,WAAW,GAAG,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;gBACpE,CAAC,CAAC,gBAAgB,aAAa,EAAE;gBACjC,CAAC,CAAC,uBAAuB,KAAK,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,WAAgC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,MAAM,OAAO,GAAwB;gBACnC,GAAG,WAAW,CAAC,IAAI;gBACnB,GAAG,WAAW,CAAC,WAAW;aAC3B,CAAC;YACF,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE;gBACxC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrB,IAAI,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAChC,YAAY,GAAG,EAAE,CAAC;iBACnB;gBACD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;oBACvC,MAAM,CAAC,IAAI,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;oBACpD,MAAM,WAAW,GAAG,GAAG,EAAE;wBACvB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;wBAChE,OAAO,aAAa,CAAC,WAAW,EAAE;4BAChC,cAAc,EAAE;gCACd,GAAG,OAAO,CAAC,cAAc;gCACzB,aAAa,EAAE,YAAY;6BAC5B;yBACF,CAAC,CAAC;oBACL,CAAC,CAAC;oBAEF,MAAM,UAAU,GAAG;wBACjB,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,IAAI;qBAClB,CAAC;oBACF,IAAI;wBACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;wBAClD,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;qBAC7D;oBAAC,OAAO,CAAC,EAAE;wBACV,MAAM,WAAW,EAAE,CAAC;qBACrB;iBACF;aACF;YAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE;gBAC5C,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;oBAChE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxE,MAAM,eAAe,GAAG;wBACtB,GAAG,EAAE,GAAG,MAAM,EAAE;wBAChB,IAAI;wBACJ,OAAO,EAAE;4BACP,EAAE,EAAE,KAAK,CAAC,SAAS;4BACnB,MAAM,EAAE,KAAK,CAAC,GAAG;4BACjB,GAAG,KAAK;yBACT;wBACD,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;qBACpD,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC7E,MAAM,WAAW,GAAG,GAAG,EAAE;wBACvB,IAAI,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;wBACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BACxB,IAAI,GAAG,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BAC1B,OAAO,SAAS,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;iCACtE,IAAI,CAAC,GAAG,EAAE;gCACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCAClB,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC/C,OAAO,aAAa,CAAC,WAAW,EAAE;oCAChC,cAAc,EAAE;wCACd,GAAG,OAAO,CAAC,cAAc;wCACzB,IAAI;qCACL;iCACF,CAAC,CAAC;4BACL,CAAC,CAAC,CAAC;yBACN;wBACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC,CAAC;oBAEF,MAAM,UAAU,GAAG;wBACjB,MAAM;wBACN,eAAe;wBACf,WAAW,EAAE,IAAI;qBAClB,CAAC;oBACF,IAAI;wBACF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC1E,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;qBAC7D;oBAAC,OAAO,CAAC,EAAE;wBACV,MAAM,WAAW,EAAE,CAAC;qBACrB;iBACF;aACF;YAED,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,MAAM,WAAW,GAAU,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;oBACjC,IAAI,QAAQ,EAAE;wBACZ,MAAM,EACJ,YAAY,EACZ,EAAE,EACF,MAAM,EACN,GAAG,GACJ,GAAG,QAAQ,CAAC;wBACb,WAAW,CAAC,IAAI,CAAC;4BACf,YAAY,EAAE,YAAY,IAAI,EAAE;4BAChC,aAAa,EAAE,MAAM,IAAI,GAAG;yBAC7B,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC;gBACF,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;oBAClC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACnC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;iBACJ;gBACD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1C;YACD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;KACF;IACD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"tiny-webhook.js","sourceRoot":"","sources":["../src/tiny-webhook.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-tiny-erp",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce app for Tiny ERP",
6
6
  "main": "lib/tiny-erp.js",
7
7
  "repository": {
@@ -37,9 +37,16 @@ const handleApiEvent: ApiEventHandler = async ({
37
37
  }
38
38
  logger.info(`> Webhook ${resourceId} [${evName}]`);
39
39
 
40
- const tinyToken = appData.tiny_api_token;
41
- if (typeof tinyToken === 'string' && tinyToken) {
42
- process.env.TINY_ERP_TOKEN = tinyToken;
40
+ if (!process.env.TINY_ERP_TOKEN) {
41
+ const tinyToken = appData.tiny_api_token;
42
+ if (typeof tinyToken === 'string' && tinyToken) {
43
+ process.env.TINY_ERP_TOKEN = tinyToken;
44
+ } else {
45
+ logger.warn('Missing Tiny API token');
46
+ }
47
+ }
48
+
49
+ if (process.env.TINY_ERP_TOKEN) {
43
50
  let integrationConfig;
44
51
  let canCreateNew = false;
45
52
  if (evName === 'applications-dataSet') {
@@ -1,6 +1,4 @@
1
1
  import type { Products } from '@cloudcommerce/types';
2
- // eslint-disable-next-line import/no-unresolved
3
- import { getFirestore } from 'firebase-admin/firestore';
4
2
  import logger from 'firebase-functions/lib/logger';
5
3
  import api from '@cloudcommerce/api';
6
4
  import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
@@ -9,21 +7,6 @@ import parseProduct from './parsers/product-from-tiny';
9
7
 
10
8
  export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue) => {
11
9
  const [sku, productId] = String(queueEntry.nextId).split(';:');
12
- let { tinyStockUpdate } = queueEntry;
13
- if (!tinyStockUpdate) {
14
- const querySnapshot = await getFirestore().collection('tinyErpStockUpdates')
15
- .where('ref', '==', `${sku}`).get();
16
- let lastUpdateTime;
17
- querySnapshot.forEach((documentSnapshot) => {
18
- const updateTime = documentSnapshot.updateTime.toDate().getTime();
19
- if (!lastUpdateTime || updateTime > lastUpdateTime) {
20
- lastUpdateTime = updateTime;
21
- tinyStockUpdate = documentSnapshot.data();
22
- }
23
- documentSnapshot.ref.delete().catch(logger.error);
24
- });
25
- }
26
-
27
10
  let product: Products | null = null;
28
11
  try {
29
12
  product = (await api.get(`products/${(productId || `sku:${sku}`)}`)).data;
@@ -106,6 +89,10 @@ export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue)
106
89
  });
107
90
 
108
91
  if (Array.isArray(produto.variacoes) && produto.variacoes.length) {
92
+ if (!queueEntry.app) {
93
+ logger.warn('Variations cannot be queued without `queueEntry.app`');
94
+ return promise;
95
+ }
109
96
  promise.then((response) => {
110
97
  let skus = appData.__importation && appData.__importation.skus;
111
98
  if (!Array.isArray(skus)) {
@@ -147,6 +134,7 @@ export default async (apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue)
147
134
  hasVariations,
148
135
  variationId,
149
136
  }));
137
+ const { tinyStockUpdate } = queueEntry;
150
138
  if (tinyStockUpdate && isHiddenQueue && productId) {
151
139
  return handleTinyStock(tinyStockUpdate as any);
152
140
  }
@@ -1,12 +1,13 @@
1
1
  import type { Request, Response } from 'firebase-functions';
2
- import { firestore } from 'firebase-admin';
2
+ import type { Applications } from '@cloudcommerce/types';
3
3
  import logger from 'firebase-functions/lib/logger';
4
4
  import api from '@cloudcommerce/api';
5
5
  import config from '@cloudcommerce/firebase/lib/config';
6
- import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
7
6
  import importProduct from './integration/import-product-from-tiny';
8
7
  import importOrder from './integration/import-order-from-tiny';
9
- import afterQueue from './integration/after-tiny-queue';
8
+
9
+ let appData: Record<string, any> = {};
10
+ let application: Applications;
10
11
 
11
12
  export default async (req: Request, res: Response) => {
12
13
  const tinyToken = req.query.token;
@@ -17,99 +18,54 @@ export default async (req: Request, res: Response) => {
17
18
  TODO: Check Tiny server IPs
18
19
  const clientIp = req.get('x-forwarded-for') || req.connection.remoteAddress
19
20
  */
20
- const { apps: { tinyErp: { appId } } } = config.get();
21
- const applicationId = req.query._id;
22
- const appEndpoint = applicationId && typeof applicationId === 'string'
23
- ? `applications/${applicationId}`
24
- : `applications/app_id:${appId}`;
25
- const application = (await api.get(appEndpoint as 'applications/id')).data;
26
- const appData: Record<string, any> = {
27
- ...application.data,
28
- ...application.hidden_data,
29
- };
30
- if (appData.tiny_api_token !== tinyToken) {
31
- return res.sendStatus(401);
21
+ const { TINY_ERP_TOKEN } = process.env;
22
+ if (!TINY_ERP_TOKEN || TINY_ERP_TOKEN !== tinyToken) {
23
+ const { apps: { tinyErp: { appId } } } = config.get();
24
+ const applicationId = req.query._id;
25
+ const appEndpoint = applicationId && typeof applicationId === 'string'
26
+ ? `applications/${applicationId}`
27
+ : `applications/app_id:${appId}`;
28
+ application = (await api.get(appEndpoint as 'applications/id')).data;
29
+ appData = {
30
+ ...application.data,
31
+ ...application.hidden_data,
32
+ };
33
+ if (appData.tiny_api_token !== tinyToken) {
34
+ return res.sendStatus(401);
35
+ }
36
+ process.env.TINY_ERP_TOKEN = tinyToken;
32
37
  }
33
38
 
34
39
  if (dados.idVendaTiny) {
35
- let orderNumbers = appData.___importation?.order_numbers;
36
- if (!Array.isArray(orderNumbers)) {
37
- orderNumbers = [];
38
- }
39
40
  const orderNumber = `id:${dados.idVendaTiny}`;
40
- if (!orderNumbers.includes(orderNumber)) {
41
- logger.info(`> Tiny webhook: order ${orderNumber}`);
42
- const saveToQueue = () => {
43
- orderNumbers.push(orderNumber);
44
- logger.info(`> Order numbers: ${JSON.stringify(orderNumbers)}`);
45
- return updateAppData(application, {
46
- ___importation: {
47
- ...appData.___importation,
48
- order_numbers: orderNumbers,
49
- },
50
- });
51
- };
52
-
53
- const queueEntry = {
54
- nextId: orderNumber,
55
- isNotQueued: true,
56
- };
57
- try {
58
- const payload = await importOrder({}, queueEntry);
59
- await afterQueue(queueEntry, appData, application, payload);
60
- } catch (e) {
61
- await saveToQueue();
62
- }
63
- }
64
- }
65
-
66
- if (tipo === 'produto' || tipo === 'estoque') {
67
- if ((dados.id || dados.idProduto) && (dados.codigo || dados.sku)) {
68
- const nextId = String(dados.skuMapeamento || dados.sku || dados.codigo);
69
- const tinyStockUpdate = {
70
- ref: `${nextId}`,
71
- tipo,
72
- produto: {
73
- id: dados.idProduto,
74
- codigo: dados.sku,
75
- ...dados,
76
- },
77
- updatedAt: firestore.Timestamp.fromDate(new Date()),
78
- };
79
- logger.info(`> Tiny webhook: ${nextId} => ${tinyStockUpdate.produto.saldo}`);
80
- const saveToQueue = () => {
81
- let skus = appData.___importation && appData.___importation.skus;
82
- if (!Array.isArray(skus)) {
83
- skus = [];
84
- }
85
- if (!skus.includes(nextId)) {
86
- return firestore().collection('tinyErpStockUpdates').add(tinyStockUpdate)
87
- .then(() => {
88
- skus.push(nextId);
89
- logger.info(`> SKUs: ${JSON.stringify(skus)}`);
90
- return updateAppData(application, {
91
- ___importation: {
92
- ...appData.___importation,
93
- skus,
94
- },
95
- });
96
- });
97
- }
98
- return Promise.resolve(null);
99
- };
100
-
101
- const queueEntry = {
102
- nextId,
103
- tinyStockUpdate,
104
- isNotQueued: true,
105
- };
106
- try {
107
- const payload = await importProduct({}, queueEntry, appData, false, true);
108
- await afterQueue(queueEntry, appData, application, payload);
109
- } catch (e) {
110
- await saveToQueue();
111
- }
112
- }
41
+ const queueEntry = {
42
+ nextId: orderNumber,
43
+ isNotQueued: true,
44
+ };
45
+ await importOrder({}, queueEntry);
46
+ } else if (
47
+ (tipo === 'produto' || tipo === 'estoque')
48
+ && (dados.id || dados.idProduto)
49
+ && (dados.codigo || dados.sku)
50
+ ) {
51
+ const nextId = String(dados.skuMapeamento || dados.sku || dados.codigo);
52
+ const tinyStockUpdate = {
53
+ ref: `${nextId}`,
54
+ tipo,
55
+ produto: {
56
+ id: dados.idProduto,
57
+ codigo: dados.sku,
58
+ ...dados,
59
+ },
60
+ };
61
+ logger.info(`> Tiny webhook: ${nextId} => ${tinyStockUpdate.produto.saldo}`);
62
+ const queueEntry = {
63
+ nextId,
64
+ tinyStockUpdate,
65
+ isNotQueued: true,
66
+ app: application,
67
+ };
68
+ await importProduct({}, queueEntry, appData, false, true);
113
69
  }
114
70
 
115
71
  if (tipo === 'produto') {
@@ -138,6 +94,7 @@ export default async (req: Request, res: Response) => {
138
94
  }
139
95
  return res.sendStatus(200);
140
96
  }
97
+ logger.warn('< Invalid Tiny Webhook body', req.body);
141
98
  }
142
99
  return res.sendStatus(403);
143
100
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/cli",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce CLI tools",
6
6
  "bin": {
7
7
  "cloudcommerce": "./bin/run.mjs"
@@ -1,2 +1,2 @@
1
- import './firebase';
1
+ import './firebase.js';
2
2
  // # sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/events",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce app events",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable import/prefer-default-export */
2
- import './init';
2
+ import './init.js';
3
3
  import functions from 'firebase-functions';
4
4
  import config from './config.js';
5
5
  import checkStoreEvents from './handlers/check-store-events.js';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/firebase",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce on Firebase",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/modules",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce modules API",
6
6
  "main": "lib/index.cjs",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/passport",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce customers authentication (passport) API",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/ssr",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce storefront SSR",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/storefront",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce storefront with Astro",
6
6
  "main": "src/index.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "0.0.60",
4
+ "version": "0.0.61",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {