cloudcommerce 0.0.59 → 0.0.60

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 (135) hide show
  1. package/.eslintrc.cjs +2 -0
  2. package/CHANGELOG.md +23 -0
  3. package/package.json +9 -8
  4. package/packages/api/lib/api.d.ts +5036 -0
  5. package/packages/api/lib/{index.js → api.js} +16 -10
  6. package/packages/api/lib/api.js.map +1 -0
  7. package/packages/api/lib/types.d.ts +1 -0
  8. package/packages/api/package.json +3 -3
  9. package/packages/api/src/{index.ts → api.ts} +21 -17
  10. package/packages/api/src/types.ts +1 -0
  11. package/packages/api/tests/index.test.ts +2 -2
  12. package/packages/apps/discounts/lib/discounts.js +1 -1
  13. package/packages/apps/discounts/lib/discounts.js.map +1 -1
  14. package/packages/apps/discounts/{lib-cjs/apply-discount.cjs → lib-mjs/apply-discount.mjs} +7 -9
  15. package/packages/apps/discounts/{lib-cjs/helpers.cjs → lib-mjs/helpers.mjs} +2 -2
  16. package/packages/apps/discounts/package.json +1 -1
  17. package/packages/apps/discounts/src/discounts.ts +1 -1
  18. package/packages/apps/tiny-erp/lib/event-to-tiny.js +111 -0
  19. package/packages/apps/tiny-erp/lib/event-to-tiny.js.map +1 -0
  20. package/packages/apps/tiny-erp/lib/index.js +2 -0
  21. package/packages/apps/tiny-erp/lib/index.js.map +1 -0
  22. package/packages/apps/tiny-erp/lib/integration/after-tiny-queue.js +79 -0
  23. package/packages/apps/tiny-erp/lib/integration/after-tiny-queue.js.map +1 -0
  24. package/packages/apps/tiny-erp/lib/integration/export-order-to-tiny.js +81 -0
  25. package/packages/apps/tiny-erp/lib/integration/export-order-to-tiny.js.map +1 -0
  26. package/packages/apps/tiny-erp/lib/integration/export-product-to-tiny.js +58 -0
  27. package/packages/apps/tiny-erp/lib/integration/export-product-to-tiny.js.map +1 -0
  28. package/packages/apps/tiny-erp/lib/integration/helpers/format-tiny-date.js +7 -0
  29. package/packages/apps/tiny-erp/lib/integration/helpers/format-tiny-date.js.map +1 -0
  30. package/packages/apps/tiny-erp/lib/integration/import-order-from-tiny.js +94 -0
  31. package/packages/apps/tiny-erp/lib/integration/import-order-from-tiny.js.map +1 -0
  32. package/packages/apps/tiny-erp/lib/integration/import-product-from-tiny.js +169 -0
  33. package/packages/apps/tiny-erp/lib/integration/import-product-from-tiny.js.map +1 -0
  34. package/packages/apps/tiny-erp/lib/integration/parsers/order-from-tiny.js +46 -0
  35. package/packages/apps/tiny-erp/lib/integration/parsers/order-from-tiny.js.map +1 -0
  36. package/packages/apps/tiny-erp/lib/integration/parsers/order-to-tiny.js +193 -0
  37. package/packages/apps/tiny-erp/lib/integration/parsers/order-to-tiny.js.map +1 -0
  38. package/packages/apps/tiny-erp/lib/integration/parsers/product-from-tiny.js +199 -0
  39. package/packages/apps/tiny-erp/lib/integration/parsers/product-from-tiny.js.map +1 -0
  40. package/packages/apps/tiny-erp/lib/integration/parsers/product-to-tiny.js +129 -0
  41. package/packages/apps/tiny-erp/lib/integration/parsers/product-to-tiny.js.map +1 -0
  42. package/packages/apps/tiny-erp/lib/integration/parsers/status-from-tiny.js +34 -0
  43. package/packages/apps/tiny-erp/lib/integration/parsers/status-from-tiny.js.map +1 -0
  44. package/packages/apps/tiny-erp/lib/integration/parsers/status-to-tiny.js +39 -0
  45. package/packages/apps/tiny-erp/lib/integration/parsers/status-to-tiny.js.map +1 -0
  46. package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js +47 -0
  47. package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js.map +1 -0
  48. package/packages/apps/tiny-erp/lib/tiny-erp.js +17 -0
  49. package/packages/apps/tiny-erp/lib/tiny-erp.js.map +1 -0
  50. package/packages/apps/tiny-erp/lib/tiny-webhook.js +135 -0
  51. package/packages/apps/tiny-erp/lib/tiny-webhook.js.map +1 -0
  52. package/packages/apps/tiny-erp/package.json +13 -6
  53. package/packages/apps/tiny-erp/src/event-to-tiny.ts +129 -0
  54. package/packages/apps/tiny-erp/src/index.ts +1 -0
  55. package/packages/apps/tiny-erp/src/integration/after-tiny-queue.ts +80 -0
  56. package/packages/apps/tiny-erp/src/integration/export-order-to-tiny.ts +86 -0
  57. package/packages/apps/tiny-erp/src/integration/export-product-to-tiny.ts +60 -0
  58. package/packages/apps/tiny-erp/src/integration/helpers/format-tiny-date.ts +6 -0
  59. package/packages/apps/tiny-erp/src/integration/import-order-from-tiny.ts +104 -0
  60. package/packages/apps/tiny-erp/src/integration/import-product-from-tiny.ts +174 -0
  61. package/packages/apps/tiny-erp/src/integration/parsers/order-from-tiny.ts +49 -0
  62. package/packages/apps/tiny-erp/src/integration/parsers/order-to-tiny.ts +205 -0
  63. package/packages/apps/tiny-erp/src/integration/parsers/product-from-tiny.ts +215 -0
  64. package/packages/apps/tiny-erp/src/integration/parsers/product-to-tiny.ts +138 -0
  65. package/packages/apps/tiny-erp/src/integration/parsers/status-from-tiny.ts +35 -0
  66. package/packages/apps/tiny-erp/src/integration/parsers/status-to-tiny.ts +42 -0
  67. package/packages/apps/tiny-erp/src/integration/post-tiny-erp.ts +52 -0
  68. package/packages/apps/tiny-erp/src/tiny-erp.ts +23 -0
  69. package/packages/apps/tiny-erp/src/tiny-webhook.ts +143 -0
  70. package/packages/cli/package.json +1 -1
  71. package/packages/events/lib/firebase.js +2 -26
  72. package/packages/events/lib/firebase.js.map +1 -1
  73. package/packages/events/lib/index.js +1 -1
  74. package/packages/events/lib/index.js.map +1 -1
  75. package/packages/events/package.json +1 -1
  76. package/packages/events/src/firebase.ts +2 -28
  77. package/packages/events/src/index.ts +1 -1
  78. package/packages/firebase/lib/config.d.ts +2 -2
  79. package/packages/firebase/lib/config.js +7 -5
  80. package/packages/firebase/lib/config.js.map +1 -1
  81. package/packages/firebase/lib/const.d.ts +2 -0
  82. package/packages/firebase/lib/const.js +6 -0
  83. package/packages/firebase/lib/const.js.map +1 -0
  84. package/packages/firebase/lib/handlers/check-store-events.js +50 -27
  85. package/packages/firebase/lib/handlers/check-store-events.js.map +1 -1
  86. package/packages/firebase/lib/helpers/pubsub.d.ts +9 -0
  87. package/packages/firebase/lib/helpers/pubsub.js +32 -0
  88. package/packages/firebase/lib/helpers/pubsub.js.map +1 -0
  89. package/packages/firebase/lib/helpers/update-app-data.d.ts +9 -0
  90. package/packages/firebase/lib/helpers/update-app-data.js +45 -0
  91. package/packages/firebase/lib/helpers/update-app-data.js.map +1 -0
  92. package/packages/firebase/lib/index.d.ts +1 -2
  93. package/packages/firebase/lib/index.js +1 -6
  94. package/packages/firebase/lib/index.js.map +1 -1
  95. package/packages/firebase/lib/init.d.ts +2 -0
  96. package/packages/firebase/lib/init.js +9 -0
  97. package/packages/firebase/lib/init.js.map +1 -0
  98. package/packages/firebase/package.json +5 -2
  99. package/packages/firebase/src/config.ts +9 -6
  100. package/packages/firebase/src/const.ts +5 -0
  101. package/packages/firebase/src/handlers/check-store-events.ts +56 -33
  102. package/packages/firebase/src/helpers/pubsub.ts +52 -0
  103. package/packages/firebase/src/helpers/update-app-data.ts +49 -0
  104. package/packages/firebase/src/index.ts +1 -7
  105. package/packages/firebase/src/init.ts +9 -0
  106. package/packages/modules/lib/firebase/handle-module.js +4 -5
  107. package/packages/modules/lib/firebase/handle-module.js.map +1 -1
  108. package/packages/modules/lib/firebase/serve-modules-api.js +2 -2
  109. package/packages/modules/lib/firebase/serve-modules-api.js.map +1 -1
  110. package/packages/modules/lib/firebase.js +2 -7
  111. package/packages/modules/lib/firebase.js.map +1 -1
  112. package/packages/modules/package.json +1 -1
  113. package/packages/modules/src/firebase/handle-module.ts +2 -5
  114. package/packages/modules/src/firebase/serve-modules-api.ts +2 -6
  115. package/packages/modules/src/firebase.ts +2 -7
  116. package/packages/passport/lib/firebase/handle-passport.js +12 -10
  117. package/packages/passport/lib/firebase/handle-passport.js.map +1 -1
  118. package/packages/passport/lib/firebase/serve-passport-api.js +2 -2
  119. package/packages/passport/lib/firebase/serve-passport-api.js.map +1 -1
  120. package/packages/passport/lib/firebase.js +2 -7
  121. package/packages/passport/lib/firebase.js.map +1 -1
  122. package/packages/passport/package.json +1 -1
  123. package/packages/passport/src/firebase/handle-passport.ts +10 -19
  124. package/packages/passport/src/firebase/serve-passport-api.ts +0 -2
  125. package/packages/passport/src/firebase.ts +1 -7
  126. package/packages/ssr/lib/firebase.js +1 -4
  127. package/packages/ssr/lib/firebase.js.map +1 -1
  128. package/packages/ssr/package.json +1 -1
  129. package/packages/ssr/src/firebase.ts +1 -4
  130. package/packages/storefront/package.json +4 -4
  131. package/packages/types/index.ts +18 -3
  132. package/packages/types/package.json +1 -1
  133. package/packages/api/lib/index.d.ts +0 -9974
  134. package/packages/api/lib/index.js.map +0 -1
  135. package/packages/apps/tiny-erp/src/firebase.ts +0 -0
@@ -19,15 +19,21 @@ class ApiError extends Error {
19
19
  const def = {
20
20
  middleware(config) {
21
21
  const headers = { ...config.headers };
22
- if (config.accessToken) {
23
- // eslint-disable-next-line dot-notation
24
- headers['Authorization'] = `Bearer ${config.accessToken}`;
25
- } else if (config.authenticationId && config.apiKey) {
26
- const rawAuth = `${config.authenticationId}:${config.apiKey}`;
27
- const base64Auth = typeof Buffer === 'function'
28
- ? Buffer.from(rawAuth).toString('base64') : btoa(rawAuth);
29
- // eslint-disable-next-line dot-notation
30
- headers['Authorization'] = `Basic ${base64Auth}`;
22
+ if (!config.isNoAuth) {
23
+ if (config.accessToken) {
24
+ // eslint-disable-next-line dot-notation
25
+ headers['Authorization'] = `Bearer ${config.accessToken}`;
26
+ } else {
27
+ const authenticationId = config.authenticationId || env.ECOM_AUTHENTICATION_ID;
28
+ const apiKey = config.apiKey || env.ECOM_API_KEY;
29
+ if (authenticationId && apiKey) {
30
+ const rawAuth = `${authenticationId}:${apiKey}`;
31
+ const base64Auth = typeof Buffer === 'function'
32
+ ? Buffer.from(rawAuth).toString('base64') : btoa(rawAuth);
33
+ // eslint-disable-next-line dot-notation
34
+ headers['Authorization'] = `Basic ${base64Auth}`;
35
+ }
36
+ }
31
37
  }
32
38
  let url = config.baseUrl || env.API_BASE_URL || 'https://ecomplus.io/v2';
33
39
  const { endpoint, params } = config;
@@ -160,4 +166,4 @@ export default api;
160
166
  export {
161
167
  setMiddleware, get, post, put, patch, del, ApiError,
162
168
  };
163
- // # sourceMappingURL=index.js.map
169
+ // # sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ declare type Config = {
24
24
  accessToken?: string;
25
25
  authenticationId?: string;
26
26
  apiKey?: string;
27
+ isNoAuth?: boolean;
27
28
  lang?: string;
28
29
  method?: Method;
29
30
  endpoint: Endpoint;
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "0.0.59",
4
+ "version": "0.0.60",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
- "main": "lib/index.js",
7
- "types": "lib/index.d.ts",
6
+ "main": "lib/api.js",
7
+ "types": "lib/api.d.ts",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/ecomplus/cloud-commerce.git",
@@ -40,15 +40,21 @@ class ApiError extends Error {
40
40
  const def = {
41
41
  middleware(config: Config) {
42
42
  const headers: Headers | Record<string, string> = { ...config.headers };
43
- if (config.accessToken) {
44
- // eslint-disable-next-line dot-notation
45
- headers['Authorization'] = `Bearer ${config.accessToken}`;
46
- } else if (config.authenticationId && config.apiKey) {
47
- const rawAuth = `${config.authenticationId}:${config.apiKey}`;
48
- const base64Auth = typeof Buffer === 'function'
49
- ? Buffer.from(rawAuth).toString('base64') : btoa(rawAuth);
50
- // eslint-disable-next-line dot-notation
51
- headers['Authorization'] = `Basic ${base64Auth}`;
43
+ if (!config.isNoAuth) {
44
+ if (config.accessToken) {
45
+ // eslint-disable-next-line dot-notation
46
+ headers['Authorization'] = `Bearer ${config.accessToken}`;
47
+ } else {
48
+ const authenticationId = config.authenticationId || env.ECOM_AUTHENTICATION_ID;
49
+ const apiKey = config.apiKey || env.ECOM_API_KEY;
50
+ if (authenticationId && apiKey) {
51
+ const rawAuth = `${authenticationId}:${apiKey}`;
52
+ const base64Auth = typeof Buffer === 'function'
53
+ ? Buffer.from(rawAuth).toString('base64') : btoa(rawAuth);
54
+ // eslint-disable-next-line dot-notation
55
+ headers['Authorization'] = `Basic ${base64Auth}`;
56
+ }
57
+ }
52
58
  }
53
59
  let url = config.baseUrl || env.API_BASE_URL || 'https://ecomplus.io/v2';
54
60
  const { endpoint, params } = config;
@@ -161,8 +167,6 @@ Promise<Response & {
161
167
  };
162
168
 
163
169
  type AbstractedConfig = Omit<Config, 'endpoint' | 'method'>;
164
- type AbstractedAuthConfig = AbstractedConfig & { accessToken: string }
165
- | AbstractedConfig & { authenticationId: string, apiKey: string };
166
170
 
167
171
  const get = <E extends Endpoint, C extends AbstractedConfig>(
168
172
  endpoint: E,
@@ -172,10 +176,10 @@ const get = <E extends Endpoint, C extends AbstractedConfig>(
172
176
  data: ResponseBody<{ endpoint: E }>,
173
177
  }> => api({ ...config, endpoint });
174
178
 
175
- const post = <E extends Endpoint, C extends AbstractedAuthConfig>(
179
+ const post = <E extends Endpoint, C extends AbstractedConfig>(
176
180
  endpoint: E,
177
181
  body: RequestBody<{ endpoint: E, method: 'post' }>,
178
- config: E extends 'login' | 'authenticate' ? AbstractedConfig : C,
182
+ config?: E extends 'login' | 'authenticate' ? AbstractedConfig : C,
179
183
  ) => api({
180
184
  ...config,
181
185
  method: 'post',
@@ -183,10 +187,10 @@ const post = <E extends Endpoint, C extends AbstractedAuthConfig>(
183
187
  body,
184
188
  });
185
189
 
186
- const put = <E extends Exclude<Endpoint, ResourceOpQuery>, C extends AbstractedAuthConfig>(
190
+ const put = <E extends Exclude<Endpoint, ResourceOpQuery>, C extends AbstractedConfig>(
187
191
  endpoint: E,
188
192
  body: RequestBody<{ endpoint: E, method: 'put' }>,
189
- config: C,
193
+ config?: C,
190
194
  ) => api({
191
195
  ...config,
192
196
  method: 'put',
@@ -194,14 +198,14 @@ const put = <E extends Exclude<Endpoint, ResourceOpQuery>, C extends AbstractedA
194
198
  body,
195
199
  });
196
200
 
197
- const patch = (endpoint: Endpoint, body: any, config: AbstractedAuthConfig) => api({
201
+ const patch = (endpoint: Endpoint, body: any, config?: AbstractedConfig) => api({
198
202
  ...config,
199
203
  method: 'patch',
200
204
  endpoint,
201
205
  body,
202
206
  });
203
207
 
204
- const del = (endpoint: Endpoint, config: AbstractedAuthConfig) => api({
208
+ const del = (endpoint: Endpoint, config?: AbstractedConfig) => api({
205
209
  ...config,
206
210
  method: 'delete',
207
211
  endpoint,
@@ -53,6 +53,7 @@ type Config = {
53
53
  accessToken?: string,
54
54
  authenticationId?: string,
55
55
  apiKey?: string,
56
+ isNoAuth?: boolean,
56
57
  lang?: string,
57
58
  method?: Method,
58
59
  endpoint: Endpoint,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { test, expect } from 'vitest';
4
4
  import '../fetch-polyfill';
5
- import api, { ApiError } from '../src/index';
5
+ import api, { ApiError } from '../src/api';
6
6
 
7
7
  const productId = '618041aa239b7206d3fc06de';
8
8
  test('Read product and typecheck SKU', async () => {
@@ -32,7 +32,7 @@ test('404 with different Store ID from env', async () => {
32
32
 
33
33
  test('List categories and typecheck result', async () => {
34
34
  const { data } = await api.get('categories');
35
- if (data.result === []) {
35
+ if (!data.result.length) {
36
36
  console.log('Any category found');
37
37
  }
38
38
  expect(Array.isArray(data.result)).toBe(true);
@@ -1,4 +1,4 @@
1
- import * as handleApplyDiscount from '../lib-cjs/apply-discount.cjs';
1
+ import handleApplyDiscount from '../lib-mjs/apply-discount.mjs';
2
2
 
3
3
  export const applyDiscount = async (modBody) => {
4
4
  return handleApplyDiscount(modBody);
@@ -1 +1 @@
1
- {"version":3,"file":"discounts.js","sourceRoot":"","sources":["../src/discounts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAsB,EAAE,EAAE;IAC5D,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC"}
1
+ {"version":3,"file":"discounts.js","sourceRoot":"","sources":["../src/discounts.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAEhE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAsB,EAAE,EAAE;IAC5D,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC"}
@@ -1,17 +1,15 @@
1
- const ecomUtils = require('@ecomplus/utils');
2
- const api = require('@cloudcommerce/api');
3
- const getEnv = require('@cloudcommerce/firebase/lib/env');
4
-
5
- const {
1
+ import ecomUtils from '@ecomplus/utils';
2
+ import api from '@cloudcommerce/api';
3
+ import {
6
4
  validateDateRange,
7
5
  validateCustomerId,
8
6
  checkOpenPromotion,
9
7
  getValidDiscountRules,
10
8
  matchDiscountRule,
11
9
  checkCampaignProducts,
12
- } = require('./helpers.cjs');
10
+ } from './helpers.mjs';
13
11
 
14
- module.exports = async ({ params, application }) => {
12
+ export default async ({ params, application }) => {
15
13
  // app configured options
16
14
  const config = {
17
15
  ...application.data,
@@ -295,14 +293,14 @@ module.exports = async ({ params, application }) => {
295
293
  query: '',
296
294
  max: discountRule.total_usage_limit,
297
295
  }];
298
- const { apiAuth } = getEnv();
299
296
  for (let i = 0; i < usageLimits.length; i++) {
300
297
  const { query, max } = usageLimits[i];
301
298
  if (max) {
302
299
  let countOrders;
303
300
  try {
304
301
  // send Store API request to list orders with filters
305
- const { data } = await api.get(`${endpoint}${query}`, { apiAuth });
302
+ // eslint-disable-next-line no-await-in-loop
303
+ const { data } = await api.get(`${endpoint}${query}`);
306
304
  countOrders = data.result.length;
307
305
  } catch (e) {
308
306
  countOrders = max;
@@ -1,4 +1,4 @@
1
- const ecomUtils = require('@ecomplus/utils');
1
+ import ecomUtils from '@ecomplus/utils';
2
2
 
3
3
  const validateDateRange = (rule) => {
4
4
  // filter campaings by date
@@ -157,7 +157,7 @@ const checkCampaignProducts = (campaignProducts, params) => {
157
157
  return true;
158
158
  };
159
159
 
160
- module.exports = {
160
+ export {
161
161
  validateDateRange,
162
162
  validateCustomerId,
163
163
  checkOpenPromotion,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.0.59",
4
+ "version": "0.0.60",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "repository": {
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable import/prefer-default-export */
2
2
  import type { AppModuleBody } from '@cloudcommerce/types';
3
- import * as handleApplyDiscount from '../lib-cjs/apply-discount.cjs';
3
+ import handleApplyDiscount from '../lib-mjs/apply-discount.mjs';
4
4
 
5
5
  export const applyDiscount = async (modBody: AppModuleBody) => {
6
6
  return handleApplyDiscount(modBody);
@@ -0,0 +1,111 @@
1
+ import logger from 'firebase-functions/lib/logger';
2
+ import exportProduct from './integration/export-product-to-tiny.js';
3
+ import exportOrder from './integration/export-order-to-tiny.js';
4
+ import importProduct from './integration/import-product-from-tiny.js';
5
+ import importOrder from './integration/import-order-from-tiny.js';
6
+ import afterQueue from './integration/after-tiny-queue.js';
7
+
8
+ // Async integration handlers
9
+ const integrationHandlers = {
10
+ exportation: {
11
+ product_ids: exportProduct,
12
+ order_ids: exportOrder,
13
+ },
14
+ importation: {
15
+ skus: importProduct,
16
+ order_numbers: importOrder,
17
+ },
18
+ };
19
+ const handleApiEvent = async ({
20
+ evName, apiEvent, apiDoc, app,
21
+ }) => {
22
+ const resourceId = apiEvent.resource_id;
23
+ logger.info('>> ', resourceId, ' - Action: ', apiEvent.action);
24
+ const key = `${evName}_${resourceId}`;
25
+ const appData = { ...app.data, ...app.hidden_data };
26
+ if (Array.isArray(appData.ignore_events)
27
+ && appData.ignore_events.includes(evName)) {
28
+ logger.info('>> ', key, ' - Ignored event');
29
+ return null;
30
+ }
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;
35
+ let integrationConfig;
36
+ let canCreateNew = false;
37
+ if (evName === 'applications-dataSet') {
38
+ integrationConfig = appData;
39
+ canCreateNew = true;
40
+ } else if (evName === 'orders-anyStatusSet') {
41
+ canCreateNew = Boolean(appData.new_orders);
42
+ integrationConfig = {
43
+ _exportation: {
44
+ order_ids: [resourceId],
45
+ },
46
+ };
47
+ } else {
48
+ if (evName === 'products-new') {
49
+ if (!appData.new_products) {
50
+ return null;
51
+ }
52
+ } else if (!appData.update_price) {
53
+ return null;
54
+ }
55
+ integrationConfig = {
56
+ _exportation: {
57
+ product_ids: [resourceId],
58
+ },
59
+ };
60
+ }
61
+ if (integrationConfig) {
62
+ const actions = Object.keys(integrationHandlers);
63
+ actions.forEach((action) => {
64
+ for (let i = 1; i <= 3; i++) {
65
+ actions.push(`${('_'.repeat(i))}${action}`);
66
+ }
67
+ });
68
+ for (let i = 0; i < actions.length; i++) {
69
+ const action = actions[i];
70
+ const actionQueues = integrationConfig[action];
71
+ if (typeof actionQueues === 'object' && actionQueues) {
72
+ // eslint-disable-next-line guard-for-in, no-restricted-syntax
73
+ for (const queue in actionQueues) {
74
+ const ids = actionQueues[queue];
75
+ if (Array.isArray(ids) && ids.length) {
76
+ const isHiddenQueue = action.charAt(0) === '_';
77
+ const mustUpdateAppQueue = evName === 'applications-dataSet';
78
+ const handlerName = action.replace(/^_+/, '');
79
+ const handler = integrationHandlers[handlerName][queue.toLowerCase()];
80
+ const nextId = ids[0];
81
+ if (typeof nextId === 'string'
82
+ && nextId.length
83
+ && handler) {
84
+ const debugFlag = `#${action}/${queue}/${nextId}`;
85
+ logger.info(`> Starting ${debugFlag}`);
86
+ const queueEntry = {
87
+ action,
88
+ queue,
89
+ nextId,
90
+ key,
91
+ mustUpdateAppQueue,
92
+ app,
93
+ };
94
+ return handler(apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue).then((payload) => {
95
+ return afterQueue(queueEntry, appData, app, payload);
96
+ }).catch((err) => {
97
+ return afterQueue(queueEntry, appData, app, err);
98
+ });
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ // Nothing to do
107
+ return null;
108
+ };
109
+
110
+ export default handleApiEvent;
111
+ // # sourceMappingURL=event-to-tiny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-to-tiny.js","sourceRoot":"","sources":["../src/event-to-tiny.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './tiny-erp';
2
+ // # sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,79 @@
1
+ import logger from 'firebase-functions/lib/logger';
2
+ import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
3
+
4
+ export default async (queueEntry, appData, application, payload) => {
5
+ const isError = payload instanceof Error;
6
+ const isImportation = queueEntry.action.endsWith('importation');
7
+ const logs = appData.logs || [];
8
+ const logEntry = {
9
+ resource: /order/i.test(queueEntry.queue) ? 'orders' : 'products',
10
+ [(isImportation ? 'tiny_id' : 'resource_id')]: queueEntry.nextId,
11
+ success: !isError,
12
+ imestamp: new Date().toISOString(),
13
+ };
14
+ let notes;
15
+ if (payload) {
16
+ if (!isError) {
17
+ // payload = response
18
+ const { data, status, config } = payload;
19
+ if (data && data._id) {
20
+ logEntry.resource_id = data._id;
21
+ }
22
+ notes = `Status ${status}`;
23
+ if (config) {
24
+ notes += ` [${config.url}]`;
25
+ }
26
+ } else {
27
+ const { config, response } = payload;
28
+ if (response) {
29
+ const { data, status } = response;
30
+ notes = `Error: Status ${status} \n${JSON.stringify(data)}`;
31
+ if (!status || status === 429 || status >= 500) {
32
+ return setTimeout(() => {
33
+ throw payload;
34
+ }, 2000);
35
+ }
36
+ if (config) {
37
+ const { url, method, data } = config;
38
+ notes += `\n\n-- Request -- \n${method} ${url} \n${JSON.stringify(data)}`;
39
+ }
40
+ // @ts-ignore
41
+ } else if (payload.isConfigError === true) {
42
+ notes = payload.message;
43
+ } else {
44
+ notes = payload.stack;
45
+ }
46
+ }
47
+ }
48
+ if (notes) {
49
+ logEntry.notes = notes.substring(0, 5000);
50
+ }
51
+ if (isError || !isImportation) {
52
+ logs.unshift(logEntry);
53
+ await updateAppData(application, {
54
+ logs: logs.slice(0, 200),
55
+ }, {
56
+ isHiddenData: true,
57
+ canSendPubSub: false,
58
+ });
59
+ }
60
+ const { action, queue, nextId } = queueEntry;
61
+ let queueList = appData[action][queue];
62
+ if (Array.isArray(queueList)) {
63
+ const idIndex = queueList.indexOf(nextId);
64
+ if (idIndex > -1) {
65
+ queueList.splice(idIndex, 1);
66
+ }
67
+ } else {
68
+ queueList = [];
69
+ }
70
+ const data = {
71
+ [action]: {
72
+ ...appData[action],
73
+ [queue]: queueList,
74
+ },
75
+ };
76
+ logger.info(JSON.stringify(data));
77
+ return updateAppData(application, data);
78
+ };
79
+ // # sourceMappingURL=after-tiny-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"after-tiny-queue.js","sourceRoot":"","sources":["../../src/integration/after-tiny-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import logger from 'firebase-functions/lib/logger';
2
+ import api from '@cloudcommerce/api';
3
+ import postTiny from './post-tiny-erp.js';
4
+ import parseStatus from './parsers/status-to-tiny.js';
5
+ import parseOrder from './parsers/order-to-tiny.js';
6
+
7
+ export default async (apiDoc, queueEntry, appData, canCreateNew) => {
8
+ const orderId = queueEntry.nextId;
9
+ let order;
10
+ if (orderId === apiDoc._id) {
11
+ order = apiDoc;
12
+ } else {
13
+ try {
14
+ order = (await api.get(`orders/${orderId}`)).data;
15
+ } catch (err) {
16
+ if (err.statusCode === 404) {
17
+ const msg = `O pedido ${orderId} não existe (:${err.statusCode})`;
18
+ const error = new Error(msg);
19
+ error.isConfigError = true;
20
+ return error;
21
+ }
22
+ throw err;
23
+ }
24
+ }
25
+ if (!order.financial_status) {
26
+ logger.info(`${orderId} skipped with no financial status`);
27
+ return null;
28
+ }
29
+ logger.info(`${orderId} searching order ${order.number}`);
30
+ let tinyData;
31
+ try {
32
+ tinyData = await postTiny('/pedidos.pesquisa.php', {
33
+ numeroEcommerce: String(order.number),
34
+ });
35
+ } catch (err) {
36
+ const status = err.response && err.response.status;
37
+ if (status === 404) {
38
+ tinyData = {};
39
+ } else {
40
+ logger.info(`${orderId} search on tiny ends with status ${status}`);
41
+ throw err;
42
+ }
43
+ }
44
+ const { pedidos } = tinyData;
45
+ const tinyStatus = parseStatus(order);
46
+ let originalTinyOrder;
47
+ if (Array.isArray(pedidos)) {
48
+ originalTinyOrder = pedidos.find(({ pedido }) => {
49
+ return order.number === Number(pedido.numero_ecommerce);
50
+ });
51
+ if (originalTinyOrder) {
52
+ originalTinyOrder = originalTinyOrder.pedido;
53
+ }
54
+ }
55
+ if (!originalTinyOrder) {
56
+ if (!canCreateNew) {
57
+ return null;
58
+ }
59
+ if (appData.approved_orders_only
60
+ && (tinyStatus === 'aberto' || tinyStatus === 'cancelado')) {
61
+ logger.info(`${orderId} skipped with status "${tinyStatus}"`);
62
+ return null;
63
+ }
64
+ const tinyOrder = parseOrder(order, appData);
65
+ logger.info(`${orderId} ${JSON.stringify(tinyOrder)}`);
66
+ return postTiny('/pedido.incluir.php', {
67
+ pedido: {
68
+ pedido: tinyOrder,
69
+ },
70
+ });
71
+ }
72
+ logger.info(`${orderId} found with tiny status ${tinyStatus}`);
73
+ if (tinyStatus) {
74
+ return postTiny('/pedido.alterar.situacao', {
75
+ id: originalTinyOrder.id,
76
+ situacao: tinyStatus,
77
+ });
78
+ }
79
+ return null;
80
+ };
81
+ // # sourceMappingURL=export-order-to-tiny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-order-to-tiny.js","sourceRoot":"","sources":["../../src/integration/export-order-to-tiny.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import api from '@cloudcommerce/api';
2
+ import postTiny from './post-tiny-erp.js';
3
+ import parseProduct from './parsers/product-to-tiny.js';
4
+
5
+ export default async (apiDoc, queueEntry, appData, canCreateNew) => {
6
+ const productId = queueEntry.nextId;
7
+ let product;
8
+ if (productId === apiDoc._id) {
9
+ product = apiDoc;
10
+ } else {
11
+ try {
12
+ product = (await api.get(`products/${productId}`)).data;
13
+ } catch (err) {
14
+ if (err.statusCode === 404) {
15
+ const msg = `O produto ${productId} não existe (:${err.statusCode})`;
16
+ const error = new Error(msg);
17
+ error.isConfigError = true;
18
+ return error;
19
+ }
20
+ throw err;
21
+ }
22
+ }
23
+ let tinyData;
24
+ try {
25
+ tinyData = await postTiny('/produtos.pesquisa.php', {
26
+ pesquisa: product.sku,
27
+ });
28
+ } catch (err) {
29
+ if (err.response && err.response.status === 404) {
30
+ tinyData = {};
31
+ } else {
32
+ throw err;
33
+ }
34
+ }
35
+ const { produtos } = tinyData;
36
+ let originalTinyProduct;
37
+ if (Array.isArray(produtos)) {
38
+ originalTinyProduct = produtos.find(({ produto }) => {
39
+ return product.sku === String(produto.codigo);
40
+ });
41
+ if (originalTinyProduct) {
42
+ originalTinyProduct = originalTinyProduct.produto;
43
+ } else if (!canCreateNew) {
44
+ return null;
45
+ }
46
+ }
47
+ const tinyProduct = parseProduct(product, originalTinyProduct, appData);
48
+ return tinyProduct
49
+ ? postTiny(originalTinyProduct ? '/produto.alterar.php' : '/produto.incluir.php', {
50
+ produto: {
51
+ produtos: [{
52
+ produto: tinyProduct,
53
+ }],
54
+ },
55
+ })
56
+ : null;
57
+ };
58
+ // # sourceMappingURL=export-product-to-tiny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-product-to-tiny.js","sourceRoot":"","sources":["../../src/integration/export-product-to-tiny.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,eAAe,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;IACjE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;IACpC,IAAI,OAAiB,CAAC;IACtB,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,EAAE;QAC5B,OAAO,GAAG,MAAM,CAAC;KAClB;SAAM;QACL,IAAI;YACF,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACzD;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,MAAM,GAAG,GAAG,aAAa,SAAS,iBAAiB,GAAG,CAAC,UAAU,GAAG,CAAC;gBACrE,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC3B,OAAO,KAAK,CAAC;aACd;YACD,MAAM,GAAG,CAAC;SACX;KACF;IAED,IAAI,QAA4B,CAAC;IACjC,IAAI;QACF,QAAQ,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE;YAClD,QAAQ,EAAE,OAAO,CAAC,GAAG;SACtB,CAAC,CAAC;KACJ;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC/C,QAAQ,GAAG,EAAE,CAAC;SACf;aAAM;YACL,MAAM,GAAG,CAAC;SACX;KACF;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAI,mBAAmB,CAAC;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClD,OAAO,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,IAAI,mBAAmB,EAAE;YACvB,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC;SACnD;aAAM,IAAI,CAAC,YAAY,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;KACF;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,WAAW;QAChB,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,EAAE;YAChF,OAAO,EAAE;gBACP,QAAQ,EAAE,CAAC;wBACT,OAAO,EAAE,WAAW;qBACrB,CAAC;aACH;SACF,CAAC;QACF,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export default (d) => {
2
+ /* eslint-disable prefer-template */
3
+ return d.getDate().toString().padStart(2, '0') + '/'
4
+ + (d.getMonth() + 1).toString().padStart(2, '0') + '/'
5
+ + d.getFullYear();
6
+ };
7
+ // # sourceMappingURL=format-tiny-date.js.map