cloudcommerce 0.0.42 → 0.0.43

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 (48) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +1 -1
  3. package/packages/api/lib/index.d.ts +9 -3
  4. package/packages/api/lib/index.js +12 -2
  5. package/packages/api/lib/index.js.map +1 -1
  6. package/packages/api/lib/types.d.ts +12 -2
  7. package/packages/api/package.json +1 -1
  8. package/packages/api/src/index.ts +28 -5
  9. package/packages/api/src/types.ts +13 -1
  10. package/packages/apps/discounts/package.json +1 -1
  11. package/packages/cli/package.json +1 -1
  12. package/packages/firebase/lib/config.js +22 -18
  13. package/packages/firebase/lib/defaults.js +4 -1
  14. package/packages/firebase/lib/env.js +17 -17
  15. package/packages/firebase/lib/handlers/check-store-events.js +24 -23
  16. package/packages/firebase/lib/index.js +4 -2
  17. package/packages/firebase/lib/types.js +1 -1
  18. package/packages/firebase/package.json +3 -2
  19. package/packages/modules/lib/firebase/ajv.js +33 -0
  20. package/packages/modules/lib/firebase/ajv.js.map +1 -0
  21. package/packages/modules/lib/firebase/call-app-module.js +70 -0
  22. package/packages/modules/lib/firebase/call-app-module.js.map +1 -0
  23. package/packages/modules/lib/firebase/checkout.js +1 -0
  24. package/packages/modules/lib/firebase/checkout.js.map +1 -0
  25. package/packages/modules/lib/firebase/handle-module.js +161 -0
  26. package/packages/modules/lib/firebase/handle-module.js.map +1 -0
  27. package/packages/modules/lib/firebase/proxy-apps.js +1 -0
  28. package/packages/modules/lib/firebase/proxy-apps.js.map +1 -0
  29. package/packages/modules/lib/firebase/serve-modules-api.js +57 -0
  30. package/packages/modules/lib/firebase/serve-modules-api.js.map +1 -0
  31. package/packages/modules/lib/firebase.js +10 -3
  32. package/packages/modules/lib/firebase.js.map +1 -1
  33. package/packages/modules/lib/index.js +11 -7
  34. package/packages/modules/lib/index.js.map +1 -1
  35. package/packages/modules/package.json +4 -1
  36. package/packages/modules/src/firebase/ajv.ts +38 -0
  37. package/packages/modules/src/firebase/call-app-module.ts +72 -0
  38. package/packages/modules/src/firebase/{.gitkeep → checkout.ts} +0 -0
  39. package/packages/modules/src/firebase/handle-module.ts +191 -0
  40. package/packages/modules/src/firebase/proxy-apps.ts +0 -0
  41. package/packages/modules/src/firebase/serve-modules-api.ts +66 -0
  42. package/packages/modules/src/firebase.ts +10 -3
  43. package/packages/modules/src/index.ts +11 -8
  44. package/packages/passport/package.json +1 -1
  45. package/packages/ssr/package.json +1 -1
  46. package/packages/storefront/package.json +1 -1
  47. package/packages/types/package.json +1 -1
  48. package/pnpm-lock.yaml +58 -13
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
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.43](https://github.com/ecomplus/cloud-commerce/compare/v0.0.42...v0.0.43) (2022-08-04)
6
+
7
+
8
+ ### Features
9
+
10
+ * **api:** Export types `ApiEndpoint` and `ApiConfig` ([056f6b4](https://github.com/ecomplus/cloud-commerce/commit/056f6b48d5add05aea7a437674b42a88061acd44))
11
+ * **api:** Parse error response and return `error.data` ([b37e561](https://github.com/ecomplus/cloud-commerce/commit/b37e56161ab5673028d4e14d5645bc64bbf9ccbd))
12
+ * **firebase:** Add `./lib/env` to pkg named exports ([31e9d0d](https://github.com/ecomplus/cloud-commerce/commit/31e9d0d0841f3e5a7e15f7e16babdeace4bf32b8))
13
+ * **modules:** Setup Modules API function ([2a58363](https://github.com/ecomplus/cloud-commerce/commit/2a58363b7e3bc0a3a4e19c1278a0d366deb6f393))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **api:** Fix config params typedef to accept booleans ([d14ca33](https://github.com/ecomplus/cloud-commerce/commit/d14ca33cc9ad66f185856fed4fa0b11d32c192f7))
19
+
5
20
  ### [0.0.42](https://github.com/ecomplus/cloud-commerce/compare/v0.0.41...v0.0.42) (2022-08-02)
6
21
 
7
22
  ### [0.0.41](https://github.com/ecomplus/cloud-commerce/compare/v0.0.40...v0.0.41) (2022-08-02)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloudcommerce",
3
3
  "type": "module",
4
- "version": "0.0.42",
4
+ "version": "0.0.43",
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,10 +1,13 @@
1
- import type { ResourceOpQuery, Endpoint, Config, ResponseBody, RequestBody } from './types';
1
+ import type { ResourceOpQuery, Endpoint, Config, ResponseBody, RequestBody, ErrorBody } from './types';
2
2
  declare class ApiError extends Error {
3
3
  config: Config;
4
- response?: Response;
4
+ response?: Response & {
5
+ data?: ErrorBody;
6
+ };
5
7
  statusCode?: number;
8
+ data?: ErrorBody;
6
9
  isTimeout: boolean;
7
- constructor(config: Config, response?: Response, msg?: string, isTimeout?: boolean);
10
+ constructor(config: Config, response?: ApiError['response'], msg?: string, isTimeout?: boolean);
8
11
  }
9
12
  declare const def: {
10
13
  middleware(config: Config): {
@@ -10030,3 +10033,6 @@ declare const del: (endpoint: Endpoint, config: AbstractedAuthConfig) => Promise
10030
10033
  }>;
10031
10034
  export default api;
10032
10035
  export { setMiddleware, get, post, put, patch, del, ApiError, };
10036
+ export declare type ApiEndpoint = Endpoint;
10037
+ export declare type ApiConfig = Config;
10038
+ export declare type ApiErrorBody = ErrorBody;
@@ -4,10 +4,15 @@ const env = (typeof window === 'object' && window)
4
4
  || {};
5
5
  class ApiError extends Error {
6
6
  constructor(config, response, msg, isTimeout = false) {
7
- super(response?.statusText || msg || 'Request error');
7
+ if (response) {
8
+ super(response.statusText);
9
+ this.data = response.data;
10
+ this.statusCode = response.status;
11
+ } else {
12
+ super(msg || 'Request error');
13
+ }
8
14
  this.config = config;
9
15
  this.response = response;
10
- this.statusCode = response?.status;
11
16
  this.isTimeout = isTimeout;
12
17
  }
13
18
  }
@@ -101,6 +106,11 @@ const api = async (config, retries = 0) => {
101
106
  });
102
107
  }
103
108
  }
109
+ try {
110
+ response.data = await response?.json();
111
+ } catch (e) {
112
+ //
113
+ }
104
114
  throw new ApiError(config, response);
105
115
  };
106
116
  const get = (endpoint, config) => api({ ...config, endpoint });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,aAAa;AACb,MAAM,GAAG,GAA8B,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;OACxE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;OACvD,EAAE,CAAC;AAER,MAAM,QAAS,SAAQ,KAAK;IAK1B,YAAY,MAAc,EAAE,QAAmB,EAAE,GAAY,EAAE,YAAqB,KAAK;QACvF,KAAK,CAAC,QAAQ,EAAE,UAAU,IAAI,GAAG,IAAI,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,GAAG,GAAG;IACV,UAAU,CAAC,MAAc;QACvB,MAAM,OAAO,GAAqC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACxE,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,wCAAwC;YACxC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,WAAW,EAAE,CAAC;SAC3D;aAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE;YACnD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9D,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,UAAU;gBAC7C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,wCAAwC;YACxC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,UAAU,EAAE,CAAC;SAClD;QACD,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,YAAY,IAAI,wBAAwB,CAAC;QACzE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACpC,IACE,QAAQ,KAAK,OAAO;eACjB,QAAQ,KAAK,cAAc;eAC3B,QAAQ,KAAK,mBAAmB;eAChC,QAAQ,KAAK,gBAAgB,EAChC;YACA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;aAC/E;YACD,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC;YAC1C,IAAI,IAAI,EAAE;gBACR,GAAG,IAAI,SAAS,IAAI,EAAE,CAAC;aACxB;SACF;QACD,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,EAAE;YACV,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC9B,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;aACrB;iBAAM;gBACL,uDAAuD;gBACvD,GAAG,IAAI,IAAI,IAAI,eAAe,CAAC,MAAgC,CAAC,EAAE,CAAC;aACpE;SACF;QACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAiC,EAAE,EAAE;IAC1D,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAiD,MAAS,EAAE,OAAO,GAAG,CAAC,EAIrF,EAAE;IACH,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,EACJ,MAAM,EACN,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,CAAC,GACf,GAAG,MAAM,CAAC;IACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IAC9C,IAAI,IAAwB,CAAC;IAC7B,IAAI,UAAU,EAAE;QACd,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACpD;IAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACZ,IAAI,QAA8B,CAAC;IACnC,IAAI;QACF,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE;YAC5C,MAAM;YACN,OAAO;YACP,IAAI;YACJ,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC,CAAC;KACJ;IAAC,OAAO,GAAQ,EAAE;QACjB,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KAC9D;IACD,YAAY,CAAC,KAAK,CAAC,CAAC;IAEpB,IAAI,QAAQ,EAAE;QACZ,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,OAAO;gBACL,GAAG,QAAQ;gBACX,MAAM;gBACN,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC5B,CAAC;SACH;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,UAAU,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE;YAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,UAAU,CAAC,GAAG,EAAE;oBACd,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC,EAAE,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;SACJ;KACF;IACD,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC,CAAC;AAMF,MAAM,GAAG,GAAG,CACV,QAAW,EACX,MAAU,EAIT,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEnC,MAAM,IAAI,GAAG,CACX,QAAW,EACX,IAAkD,EAClD,MAAiE,EACjE,EAAE,CAAC,GAAG,CAAC;IACL,GAAG,MAAM;IACT,MAAM,EAAE,MAAM;IACd,QAAQ;IACR,IAAI;CACL,CAAC,CAAC;AAEL,MAAM,GAAG,GAAG,CACV,QAAW,EACX,IAAiD,EACjD,MAAS,EACT,EAAE,CAAC,GAAG,CAAC;IACL,GAAG,MAAM;IACT,MAAM,EAAE,KAAK;IACb,QAAQ;IACR,IAAI;CACL,CAAC,CAAC;AAEL,MAAM,KAAK,GAAG,CAAC,QAAkB,EAAE,IAAS,EAAE,MAA4B,EAAE,EAAE,CAAC,GAAG,CAAC;IACjF,GAAG,MAAM;IACT,MAAM,EAAE,OAAO;IACf,QAAQ;IACR,IAAI;CACL,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,CAAC,QAAkB,EAAE,MAA4B,EAAE,EAAE,CAAC,GAAG,CAAC;IACpE,GAAG,MAAM;IACT,MAAM,EAAE,QAAQ;IAChB,QAAQ;CACT,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACd,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAChB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACd,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAClB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACd,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AAEjB,eAAe,GAAG,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,GAAG,EACH,IAAI,EACJ,GAAG,EACH,KAAK,EACL,GAAG,EACH,QAAQ,GACT,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ declare type Config = {
27
27
  lang?: string;
28
28
  method?: Method;
29
29
  endpoint: Endpoint;
30
- params?: Record<string, string | number>;
30
+ params?: Record<string, string | number | boolean>;
31
31
  headers?: Headers | Record<string, string>;
32
32
  timeout?: number;
33
33
  maxRetries?: number;
@@ -91,4 +91,14 @@ declare type ResponseBody<TConfig extends Config> = TConfig['method'] extends 'p
91
91
  declare type DocSchema<Document extends any> = Omit<Document, '_id' | 'store_id' | 'store_ids' | 'created_at' | 'updated_at'>;
92
92
  declare type SetDocEndpoint<TResource extends Resource> = TResource | `${TResource}/${ResourceId}`;
93
93
  declare type RequestBody<TConfig extends Config> = TConfig['method'] extends undefined | 'get' | 'delete' ? undefined : TConfig['method'] extends 'patch' ? any : TConfig['endpoint'] extends SetDocEndpoint<'products'> ? DocSchema<Products> : TConfig['endpoint'] extends SetDocEndpoint<'categories'> ? DocSchema<Categories> : TConfig['endpoint'] extends SetDocEndpoint<'brands'> ? DocSchema<Brands> : TConfig['endpoint'] extends SetDocEndpoint<'collections'> ? DocSchema<Collections> : TConfig['endpoint'] extends SetDocEndpoint<'grids'> ? DocSchema<Grids> : TConfig['endpoint'] extends SetDocEndpoint<'carts'> ? DocSchema<Carts> : TConfig['endpoint'] extends SetDocEndpoint<'orders'> ? DocSchema<Orders> : TConfig['endpoint'] extends SetDocEndpoint<'customers'> ? DocSchema<Customers> : TConfig['endpoint'] extends SetDocEndpoint<'stores'> ? DocSchema<Stores> : TConfig['endpoint'] extends SetDocEndpoint<'applications'> ? DocSchema<Applications> : TConfig['endpoint'] extends SetDocEndpoint<'authentications'> ? DocSchema<Authentications> : any;
94
- export type { Products, Categories, Brands, Collections, Grids, Carts, Orders, Customers, Stores, Applications, Authentications, Resource, ResourceId, ResourceAndId, ResourceOpQuery, Endpoint, Method, Config, ResourceListResult, EventsResult, ResponseBody, RequestBody, };
94
+ declare type ErrorBody = {
95
+ status: number;
96
+ error_code: number;
97
+ message: string;
98
+ user_message?: {
99
+ en_us: string;
100
+ pt_br: string;
101
+ };
102
+ more_info?: string;
103
+ };
104
+ export type { Products, Categories, Brands, Collections, Grids, Carts, Orders, Customers, Stores, Applications, Authentications, Resource, ResourceId, ResourceAndId, ResourceOpQuery, Endpoint, Method, Config, ResourceListResult, EventsResult, ResponseBody, RequestBody, ErrorBody, };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "0.0.42",
4
+ "version": "0.0.43",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -4,6 +4,7 @@ import type {
4
4
  Config,
5
5
  ResponseBody,
6
6
  RequestBody,
7
+ ErrorBody,
7
8
  } from './types';
8
9
 
9
10
  // @ts-ignore
@@ -13,14 +14,25 @@ const env: { [key: string]: string } = (typeof window === 'object' && window)
13
14
 
14
15
  class ApiError extends Error {
15
16
  config: Config;
16
- response?: Response;
17
+ response?: Response & { data?: ErrorBody };
17
18
  statusCode?: number;
19
+ data?: ErrorBody;
18
20
  isTimeout: boolean;
19
- constructor(config: Config, response?: Response, msg?: string, isTimeout: boolean = false) {
20
- super(response?.statusText || msg || 'Request error');
21
+ constructor(
22
+ config: Config,
23
+ response?: ApiError['response'],
24
+ msg?: string,
25
+ isTimeout: boolean = false,
26
+ ) {
27
+ if (response) {
28
+ super(response.statusText);
29
+ this.data = response.data;
30
+ this.statusCode = response.status;
31
+ } else {
32
+ super(msg || 'Request error');
33
+ }
21
34
  this.config = config;
22
35
  this.response = response;
23
- this.statusCode = response?.status;
24
36
  this.isTimeout = isTimeout;
25
37
  }
26
38
  }
@@ -98,7 +110,7 @@ Promise<Response & {
98
110
  abortController.abort();
99
111
  isTimeout = true;
100
112
  }, timeout);
101
- let response: Response | undefined;
113
+ let response: Response & { data?: any } | undefined;
102
114
  try {
103
115
  response = await (config.fetch || fetch)(url, {
104
116
  method,
@@ -129,6 +141,11 @@ Promise<Response & {
129
141
  });
130
142
  }
131
143
  }
144
+ try {
145
+ response.data = await response?.json() as ErrorBody;
146
+ } catch (e) {
147
+ //
148
+ }
132
149
  throw new ApiError(config, response);
133
150
  };
134
151
 
@@ -197,3 +214,9 @@ export {
197
214
  del,
198
215
  ApiError,
199
216
  };
217
+
218
+ export type ApiEndpoint = Endpoint;
219
+
220
+ export type ApiConfig = Config;
221
+
222
+ export type ApiErrorBody = ErrorBody;
@@ -56,7 +56,7 @@ type Config = {
56
56
  lang?: string,
57
57
  method?: Method,
58
58
  endpoint: Endpoint,
59
- params?: Record<string, string | number>,
59
+ params?: Record<string, string | number | boolean>,
60
60
  headers?: Headers | Record<string, string>,
61
61
  timeout?: number,
62
62
  maxRetries?: number,
@@ -171,6 +171,17 @@ type RequestBody<TConfig extends Config> =
171
171
  TConfig['endpoint'] extends SetDocEndpoint<'authentications'> ? DocSchema<Authentications> :
172
172
  any;
173
173
 
174
+ type ErrorBody = {
175
+ status: number,
176
+ error_code: number,
177
+ message: string,
178
+ user_message?: {
179
+ en_us: string,
180
+ pt_br: string,
181
+ },
182
+ more_info?: string,
183
+ };
184
+
174
185
  export type {
175
186
  Products,
176
187
  Categories,
@@ -194,4 +205,5 @@ export type {
194
205
  EventsResult,
195
206
  ResponseBody,
196
207
  RequestBody,
208
+ ErrorBody,
197
209
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.0.42",
4
+ "version": "0.0.43",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "functions/dist/index.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/cli",
3
3
  "type": "module",
4
- "version": "0.0.42",
4
+ "version": "0.0.43",
5
5
  "description": "E-Com Plus Cloud Commerce CLI tools",
6
6
  "bin": {
7
7
  "cloudcommerce": "./bin/run.mjs"
@@ -1,25 +1,29 @@
1
1
  import Deepmerge from '@fastify/deepmerge';
2
- import { DEFAULT_LANG, DEFAULT_CURRENCY, DEFAULT_CURRENCY_SYMBOL, DEFAULT_COUNTRY_CODE, } from './defaults.js';
2
+ import {
3
+ DEFAULT_LANG, DEFAULT_CURRENCY, DEFAULT_CURRENCY_SYMBOL, DEFAULT_COUNTRY_CODE,
4
+ } from './defaults.js';
5
+
3
6
  const deepmerge = Deepmerge();
4
7
  const self = {
5
- __config: {
6
- hello: 'from @cloudcommerce/firebase',
7
- lang: process.env.ECOM_LANG || DEFAULT_LANG,
8
- currency: process.env.ECOM_CURRENCY || DEFAULT_CURRENCY,
9
- currencySymbol: process.env.ECOM_CURRENCY_SYMBOL || DEFAULT_CURRENCY_SYMBOL,
10
- countryCode: process.env.ECOM_COUNTRY_CODE || DEFAULT_COUNTRY_CODE,
11
- storeId: Number(process.env.ECOM_STORE_ID),
12
- httpsFunctionOptions: {
13
- region: process.env.DEPLOY_REGION || 'us-east1',
14
- },
8
+ __config: {
9
+ hello: 'from @cloudcommerce/firebase',
10
+ lang: process.env.ECOM_LANG || DEFAULT_LANG,
11
+ currency: process.env.ECOM_CURRENCY || DEFAULT_CURRENCY,
12
+ currencySymbol: process.env.ECOM_CURRENCY_SYMBOL || DEFAULT_CURRENCY_SYMBOL,
13
+ countryCode: process.env.ECOM_COUNTRY_CODE || DEFAULT_COUNTRY_CODE,
14
+ storeId: Number(process.env.ECOM_STORE_ID),
15
+ httpsFunctionOptions: {
16
+ region: process.env.DEPLOY_REGION || 'us-east1',
15
17
  },
18
+ },
16
19
  };
20
+
17
21
  export default {
18
- get() {
19
- return self.__config;
20
- },
21
- set(config) {
22
- self.__config = deepmerge(self.__config, config);
23
- },
22
+ get() {
23
+ return self.__config;
24
+ },
25
+ set(config) {
26
+ self.__config = deepmerge(self.__config, config);
27
+ },
24
28
  };
25
- //# sourceMappingURL=config.js.map
29
+ // # sourceMappingURL=config.js.map
@@ -1,5 +1,8 @@
1
1
  export const DEFAULT_LANG = 'pt_br';
2
+
2
3
  export const DEFAULT_CURRENCY = 'BRL';
4
+
3
5
  export const DEFAULT_CURRENCY_SYMBOL = 'R$';
6
+
4
7
  export const DEFAULT_COUNTRY_CODE = 'BR';
5
- //# sourceMappingURL=defaults.js.map
8
+ // # sourceMappingURL=defaults.js.map
@@ -1,19 +1,19 @@
1
1
  export default () => {
2
- const { ECOM_AUTHENTICATION_ID, ECOM_API_KEY, GITHUB_TOKEN, } = process.env;
3
- if (!ECOM_AUTHENTICATION_ID) {
4
- throw new Error('ECOM_AUTHENTICATION_ID is not set');
5
- }
6
- if (!ECOM_API_KEY) {
7
- throw new Error('ECOM_API_KEY is not set');
8
- }
9
- const authenticationId = ECOM_AUTHENTICATION_ID;
10
- const apiKey = ECOM_API_KEY;
11
- const githubToken = GITHUB_TOKEN;
12
- const env = {
13
- authenticationId,
14
- apiKey,
15
- githubToken,
16
- };
17
- return env;
2
+ const { ECOM_AUTHENTICATION_ID, ECOM_API_KEY, GITHUB_TOKEN } = process.env;
3
+ if (!ECOM_AUTHENTICATION_ID) {
4
+ throw new Error('ECOM_AUTHENTICATION_ID is not set');
5
+ }
6
+ if (!ECOM_API_KEY) {
7
+ throw new Error('ECOM_API_KEY is not set');
8
+ }
9
+ const authenticationId = ECOM_AUTHENTICATION_ID;
10
+ const apiKey = ECOM_API_KEY;
11
+ const githubToken = GITHUB_TOKEN;
12
+ const env = {
13
+ authenticationId,
14
+ apiKey,
15
+ githubToken,
16
+ };
17
+ return env;
18
18
  };
19
- //# sourceMappingURL=env.js.map
19
+ // # sourceMappingURL=env.js.map
@@ -3,29 +3,30 @@ import { getFirestore } from 'firebase-admin/firestore';
3
3
  import { logger } from 'firebase-functions';
4
4
  import api from '@cloudcommerce/api';
5
5
  import getEnv from '../env.js';
6
+
6
7
  export default async () => {
7
- const { authenticationId, apiKey } = getEnv();
8
- const eventsSubs = await getFirestore().collection('eventsSubs').get();
9
- const listenedEvents = [];
10
- eventsSubs.forEach((doc) => {
11
- const eventSub = doc.data();
12
- if (!listenedEvents.includes(eventSub.event)) {
13
- listenedEvents.push(eventSub.event);
14
- }
8
+ const { authenticationId, apiKey } = getEnv();
9
+ const eventsSubs = await getFirestore().collection('eventsSubs').get();
10
+ const listenedEvents = [];
11
+ eventsSubs.forEach((doc) => {
12
+ const eventSub = doc.data();
13
+ if (!listenedEvents.includes(eventSub.event)) {
14
+ listenedEvents.push(eventSub.event);
15
+ }
16
+ });
17
+ logger.info({ listenedEvents });
18
+ [
19
+ 'orders',
20
+ 'products',
21
+ 'carts',
22
+ ].forEach(async (resource) => {
23
+ const { data: { result } } = await api({
24
+ authenticationId,
25
+ apiKey,
26
+ endpoint: `events/${resource}`,
15
27
  });
16
- logger.info({ listenedEvents });
17
- [
18
- 'orders',
19
- 'products',
20
- 'carts',
21
- ].forEach(async (resource) => {
22
- const { data: { result } } = await api({
23
- authenticationId,
24
- apiKey,
25
- endpoint: `events/${resource}`,
26
- });
27
- logger.info(`${resource} events: `, result);
28
- });
29
- return true;
28
+ logger.info(`${resource} events: `, result);
29
+ });
30
+ return true;
30
31
  };
31
- //# sourceMappingURL=check-store-events.js.map
32
+ // # sourceMappingURL=check-store-events.js.map
@@ -6,8 +6,10 @@ import '@cloudcommerce/api/fetch-polyfill.js';
6
6
  import { initializeApp } from 'firebase-admin/app';
7
7
  import { pubsub } from 'firebase-functions';
8
8
  import checkStoreEvents from './handlers/check-store-events.js';
9
+
9
10
  initializeApp();
11
+
10
12
  export const cronStoreEvents = pubsub.schedule('* * * * *').onRun(() => {
11
- return checkStoreEvents();
13
+ return checkStoreEvents();
12
14
  });
13
- //# sourceMappingURL=index.js.map
15
+ // # sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
2
+ // # sourceMappingURL=types.js.map
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@cloudcommerce/firebase",
3
3
  "type": "module",
4
- "version": "0.0.42",
4
+ "version": "0.0.43",
5
5
  "description": "E-Com Plus Cloud Commerce on Firebase",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "exports": {
9
9
  ".": "./lib/index.js",
10
10
  "./config": "./config.js",
11
- "./lib/config": "./lib/config.js"
11
+ "./lib/config": "./lib/config.js",
12
+ "./lib/env": "./lib/env.js"
12
13
  },
13
14
  "repository": {
14
15
  "type": "git",
@@ -0,0 +1,33 @@
1
+ import Ajv from 'ajv';
2
+
3
+ const ajvOptions = {
4
+ coerceTypes: false,
5
+ useDefaults: true,
6
+ removeAdditional: true,
7
+ // Explicitly set `allErrors` to false, when set to true a DoS attack is possible
8
+ allErrors: false,
9
+ multipleOfPrecision: 5,
10
+ allowMatchingProperties: true,
11
+ };
12
+ const ajv = new Ajv(ajvOptions);
13
+ const parseAjvErrors = (errors, ajvInstance = ajv) => {
14
+ return ajvInstance.errorsText(errors, { separator: '\n' });
15
+ };
16
+ const sendRequestError = (res, modName, errors) => {
17
+ res.status(400).send({
18
+ status: 400,
19
+ error_code: 'MOD901',
20
+ message: 'Bad-formatted JSON body (POST) or URL params (GET), details in `user_message`',
21
+ user_message: {
22
+ en_us: ajv.errorsText(errors, { separator: '\n' }),
23
+ },
24
+ more_info: `/${modName}/schema`,
25
+ });
26
+ };
27
+
28
+ export default ajv;
29
+
30
+ export {
31
+ ajv, ajvOptions, parseAjvErrors, sendRequestError,
32
+ };
33
+ // # sourceMappingURL=ajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../src/firebase/ajv.ts"],"names":[],"mappings":"AACA,OAAO,GAA6B,MAAM,KAAK,CAAC;AAEhD,MAAM,UAAU,GAAY;IAC1B,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,iFAAiF;IACjF,SAAS,EAAE,KAAK;IAChB,mBAAmB,EAAE,CAAC;IACtB,uBAAuB,EAAE,IAAI;CAC9B,CAAC;AACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,MAA6B,EAAE,WAAW,GAAG,GAAG,EAAE,EAAE;IAC1E,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,GAAa,EAAE,OAAe,EAAE,MAA6B,EAAE,EAAE;IACzF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,+EAA+E;QACxF,YAAY,EAAE;YACZ,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnD;QACD,SAAS,EAAE,IAAI,OAAO,SAAS;KAChC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,GAAG,CAAC;AAEnB,OAAO,EACL,GAAG,EACH,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { logger } from 'firebase-functions';
2
+ import axios from 'axios';
3
+ import config from '@cloudcommerce/firebase/lib/config';
4
+
5
+ // Blacklist urls to prevent consecultive errors
6
+ const blacklist = {};
7
+
8
+ export default async (url, data, isBigTimeout) => {
9
+ if (blacklist[url] > 2) {
10
+ logger.log(`> Skipping blacklisted ${url}`);
11
+ const err = new Error('Blacklited endpoint URL');
12
+ return Promise.reject(err);
13
+ }
14
+ const { storeId } = config.get();
15
+ const debug = (response) => {
16
+ const status = response ? response.status : 0;
17
+ if (!blacklist[url]) {
18
+ blacklist[url] = 1;
19
+ } else {
20
+ blacklist[url] += 1;
21
+ }
22
+ setTimeout(() => {
23
+ if (blacklist[url] > 1) {
24
+ blacklist[url] -= 1;
25
+ } else {
26
+ delete blacklist[url];
27
+ }
28
+ }, !status ? 180000 : 6000);
29
+ logger.info(`${url} : ${status}`);
30
+ if (status >= 400 && status < 500) {
31
+ const { data: resData } = response;
32
+ if (typeof resData === 'object' && resData !== null) {
33
+ const { error, message } = resData;
34
+ if (typeof error === 'string' && error.length && typeof message === 'string') {
35
+ logger.warn(JSON.stringify({ error, message }));
36
+ }
37
+ }
38
+ }
39
+ };
40
+ return axios({
41
+ method: 'POST',
42
+ maxRedirects: 2,
43
+ responseType: 'json',
44
+ maxContentLength: 1000000,
45
+ url,
46
+ data,
47
+ headers: {
48
+ 'X-Store-ID': storeId.toString(),
49
+ },
50
+ // Wait 10s by default and 30s in specific cases
51
+ timeout: isBigTimeout ? 30000 : 10000,
52
+ })
53
+ .then((response) => {
54
+ debug(response);
55
+ return response.data;
56
+ })
57
+ .catch((err) => {
58
+ const { response } = err;
59
+ debug(response);
60
+ if (err.message || err.code) {
61
+ let msg = `Axios error ${err.code}: ${err.message}`;
62
+ if (data) {
63
+ msg += `\n\n${JSON.stringify(data)}`;
64
+ }
65
+ logger.warn(msg);
66
+ }
67
+ throw err;
68
+ });
69
+ };
70
+ // # sourceMappingURL=call-app-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-app-module.js","sourceRoot":"","sources":["../../src/firebase/call-app-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ // # sourceMappingURL=checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/firebase/checkout.ts"],"names":[],"mappings":""}