cloudcommerce 0.0.65 → 0.0.68

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 (71) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/package.json +8 -8
  3. package/packages/api/lib/api.js +8 -8
  4. package/packages/api/lib/api.js.map +1 -1
  5. package/packages/api/package.json +1 -1
  6. package/packages/api/src/api.ts +8 -8
  7. package/packages/apps/correios/package.json +3 -3
  8. package/packages/apps/custom-shipping/package.json +3 -3
  9. package/packages/apps/discounts/package.json +1 -1
  10. package/packages/apps/tiny-erp/package.json +2 -2
  11. package/packages/cli/config/firebase.json +6 -6
  12. package/packages/cli/package.json +1 -1
  13. package/packages/config/CHANGELOG.md +1 -0
  14. package/packages/config/README.md +1 -0
  15. package/packages/config/lib/config.d.ts +13 -0
  16. package/packages/config/lib/config.js +33 -0
  17. package/packages/config/lib/config.js.map +1 -0
  18. package/packages/{firebase → config}/lib/defaults.d.ts +0 -0
  19. package/packages/{firebase → config}/lib/defaults.js +0 -0
  20. package/packages/{firebase → config}/lib/defaults.js.map +0 -0
  21. package/packages/config/lib/env.d.ts +11 -0
  22. package/packages/config/lib/env.js +33 -0
  23. package/packages/config/lib/env.js.map +1 -0
  24. package/packages/config/package.json +33 -0
  25. package/packages/config/src/config.ts +47 -0
  26. package/packages/{firebase → config}/src/defaults.ts +0 -0
  27. package/packages/config/src/env.ts +46 -0
  28. package/packages/config/tsconfig.json +6 -0
  29. package/packages/events/package.json +2 -2
  30. package/packages/firebase/lib/config.d.ts +21 -24
  31. package/packages/firebase/lib/config.js +20 -44
  32. package/packages/firebase/lib/config.js.map +1 -1
  33. package/packages/firebase/lib/env.d.ts +2 -10
  34. package/packages/firebase/lib/env.js +3 -27
  35. package/packages/firebase/lib/env.js.map +1 -1
  36. package/packages/firebase/lib/handlers/check-store-events.js +17 -8
  37. package/packages/firebase/lib/handlers/check-store-events.js.map +1 -1
  38. package/packages/firebase/package.json +3 -3
  39. package/packages/firebase/src/config.ts +23 -48
  40. package/packages/firebase/src/env.ts +2 -38
  41. package/packages/firebase/src/handlers/check-store-events.ts +18 -9
  42. package/packages/modules/package.json +2 -2
  43. package/packages/passport/package.json +2 -2
  44. package/packages/ssr/lib/firebase/serve-storefront.js +67 -0
  45. package/packages/ssr/lib/firebase/serve-storefront.js.map +1 -0
  46. package/packages/ssr/lib/firebase.js +4 -3
  47. package/packages/ssr/lib/firebase.js.map +1 -1
  48. package/packages/ssr/lib/index.js +3 -0
  49. package/packages/ssr/lib/index.js.map +1 -1
  50. package/packages/ssr/package.json +2 -3
  51. package/packages/ssr/src/firebase/serve-storefront.ts +78 -0
  52. package/packages/ssr/src/firebase.ts +4 -3
  53. package/packages/ssr/src/index.ts +3 -0
  54. package/packages/storefront/.eslintrc.cjs +6 -0
  55. package/packages/storefront/dist/client/assets/{_...d4aa8aff.css → 404-_...d4aa8aff.css} +0 -0
  56. package/packages/storefront/dist/client/assets/404-index.d9230d24.css +1 -0
  57. package/packages/storefront/dist/client/assets/{_...0b5ebd52.css → 404.530428e5.css} +1 -1
  58. package/packages/storefront/dist/client/assets/_...fae19676.css +1 -0
  59. package/packages/storefront/dist/client/assets/index.53a3a3e0.css +1 -0
  60. package/packages/storefront/dist/client/client.6d48c590.js +1 -0
  61. package/packages/storefront/dist/server/entry.mjs +272 -135
  62. package/packages/storefront/example.env +2 -0
  63. package/packages/storefront/package.json +10 -7
  64. package/packages/storefront/src/pages/404.astro +74 -0
  65. package/packages/storefront/src/pages/[...slug].astro +11 -5
  66. package/packages/{ssr/src/firebase/.gitkeep → storefront/src/pages/app/index.astro} +0 -0
  67. package/packages/storefront/src/pages/index.astro +2 -2
  68. package/packages/storefront/src/storefront-config.ts +39 -0
  69. package/packages/types/package.json +1 -1
  70. package/packages/storefront/dist/client/assets/index.5608ba47.css +0 -1
  71. package/packages/storefront/dist/client/client.dbac84dd.js +0 -1
@@ -1,31 +1,28 @@
1
1
  import type { ApiEventName } from '@cloudcommerce/types';
2
- declare const _default: {
3
- get(): {
4
- hello: string;
5
- lang: string;
6
- currency: string;
7
- currencySymbol: string;
8
- countryCode: string;
9
- storeId: number;
10
- httpsFunctionOptions: {
11
- region: string;
2
+ import { BaseConfig } from '@cloudcommerce/config';
3
+ declare const mergeConfig: {
4
+ hello: string;
5
+ httpsFunctionOptions: {
6
+ region: string;
7
+ };
8
+ apps: {
9
+ discounts: {
10
+ appId: number;
11
+ };
12
+ correios: {
13
+ appId: number;
12
14
  };
13
- apps: {
14
- discounts: {
15
- appId: number;
16
- };
17
- correios: {
18
- appId: number;
19
- };
20
- customShipping: {
21
- appId: number;
22
- };
23
- tinyErp: {
24
- appId: number;
25
- events: ApiEventName[];
26
- };
15
+ customShipping: {
16
+ appId: number;
17
+ };
18
+ tinyErp: {
19
+ appId: number;
20
+ events: ApiEventName[];
27
21
  };
28
22
  };
23
+ };
24
+ declare const _default: {
25
+ get(): BaseConfig & typeof mergeConfig;
29
26
  set(config: any): void;
30
27
  };
31
28
  export default _default;
@@ -1,57 +1,33 @@
1
- import Deepmerge from '@fastify/deepmerge';
2
- import {
3
- DEFAULT_LANG, DEFAULT_CURRENCY, DEFAULT_CURRENCY_SYMBOL, DEFAULT_COUNTRY_CODE,
4
- } from './defaults.js';
1
+ import config from '@cloudcommerce/config';
5
2
 
6
- // @ts-ignore
7
- const env = (typeof process === 'object' && process?.env)
8
- || (typeof window === 'object' && window)
9
- || {};
10
- const deepmerge = Deepmerge();
11
3
  const tinyErpEvents = [
12
4
  'orders-anyStatusSet',
13
5
  'products-new',
14
6
  'products-priceSet',
15
7
  'applications-dataSet',
16
8
  ];
17
- const self = {
18
- __config: {
19
- hello: 'from @cloudcommerce/firebase',
20
- lang: env.ECOM_LANG || DEFAULT_LANG,
21
- currency: env.ECOM_CURRENCY || DEFAULT_CURRENCY,
22
- currencySymbol: env.ECOM_CURRENCY_SYMBOL || DEFAULT_CURRENCY_SYMBOL,
23
- countryCode: env.ECOM_COUNTRY_CODE || DEFAULT_COUNTRY_CODE,
24
- storeId: Number(env.ECOM_STORE_ID),
25
- httpsFunctionOptions: {
26
- region: env.DEPLOY_REGION || 'southamerica-east1',
9
+ const mergeConfig = {
10
+ hello: 'from @cloudcommerce/firebase',
11
+ httpsFunctionOptions: {
12
+ region: process.env.DEPLOY_REGION || 'southamerica-east1',
13
+ },
14
+ apps: {
15
+ discounts: {
16
+ appId: 1252,
17
+ },
18
+ correios: {
19
+ appId: 1248,
20
+ },
21
+ customShipping: {
22
+ appId: 1253,
27
23
  },
28
- apps: {
29
- discounts: {
30
- appId: 1252,
31
- },
32
- correios: {
33
- appId: 1248,
34
- },
35
- customShipping: {
36
- appId: 1253,
37
- },
38
- tinyErp: {
39
- appId: 105922,
40
- events: tinyErpEvents,
41
- },
24
+ tinyErp: {
25
+ appId: 105922,
26
+ events: tinyErpEvents,
42
27
  },
43
28
  },
44
29
  };
30
+ config.set(mergeConfig);
45
31
 
46
- export default {
47
- get() {
48
- return self.__config;
49
- },
50
- set(config) {
51
- self.__config = deepmerge(self.__config, config);
52
- if (config.storeId) {
53
- env.ECOM_STORE_ID = config.storeId;
54
- }
55
- },
56
- };
32
+ export default config;
57
33
  // # sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,aAAa;AACb,MAAM,GAAG,GAA8B,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,GAAG,CAAC;OAC/E,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;OACtC,EAAE,CAAC;AAER,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;AAE9B,MAAM,aAAa,GAAmB;IACpC,qBAAqB;IACrB,cAAc;IACd,mBAAmB;IACnB,sBAAsB;CACvB,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,QAAQ,EAAE;QACR,KAAK,EAAE,8BAA8B;QACrC,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,YAAY;QACnC,QAAQ,EAAE,GAAG,CAAC,aAAa,IAAI,gBAAgB;QAC/C,cAAc,EAAE,GAAG,CAAC,oBAAoB,IAAI,uBAAuB;QACnE,WAAW,EAAE,GAAG,CAAC,iBAAiB,IAAI,oBAAoB;QAC1D,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QAClC,oBAAoB,EAAE;YACpB,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,oBAAoB;SAClD;QACD,IAAI,EAAE;YACJ,SAAS,EAAE;gBACT,KAAK,EAAE,IAAI;aACZ;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI;aACZ;YACD,cAAc,EAAE;gBACd,KAAK,EAAE,IAAI;aACZ;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,aAAa;aACtB;SACF;KACF;CACF,CAAC;AAEF,eAAe;IACb,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,GAAG,CAAC,MAAM;QACR,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;SACpC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,MAAsB,MAAM,uBAAuB,CAAC;AAE3D,MAAM,aAAa,GAAmB;IACpC,qBAAqB;IACrB,cAAc;IACd,mBAAmB;IACnB,sBAAsB;CACvB,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,8BAA8B;IACrC,oBAAoB,EAAE;QACpB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,oBAAoB;KAC1D;IACD,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,KAAK,EAAE,IAAI;SACZ;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,IAAI;SACZ;QACD,cAAc,EAAE;YACd,KAAK,EAAE,IAAI;SACZ;QACD,OAAO,EAAE;YACP,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,aAAa;SACtB;KACF;CACF,CAAC;AACF,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAExB,eAAe,MAId,CAAC"}
@@ -1,11 +1,3 @@
1
- declare type Env = {
2
- storeId: number;
3
- apiAuth: {
4
- authenticationId: string;
5
- apiKey: string;
6
- };
7
- githubToken?: string;
8
- };
9
- declare const _default: () => Env;
10
- export default _default;
1
+ import getEnv, { Env } from '@cloudcommerce/config/lib/env';
2
+ export default getEnv;
11
3
  export type { Env };
@@ -1,28 +1,4 @@
1
- export default () => {
2
- const {
3
- ECOM_STORE_ID, ECOM_AUTHENTICATION_ID, ECOM_API_KEY, GITHUB_TOKEN,
4
- } = process.env;
5
- const storeId = ECOM_STORE_ID && parseInt(ECOM_STORE_ID, 10);
6
- if (!storeId) {
7
- throw new Error('ECOM_STORE_ID is not set or not a number');
8
- }
9
- if (!ECOM_AUTHENTICATION_ID) {
10
- throw new Error('ECOM_AUTHENTICATION_ID is not set');
11
- }
12
- if (!ECOM_API_KEY) {
13
- throw new Error('ECOM_API_KEY is not set');
14
- }
15
- const authenticationId = ECOM_AUTHENTICATION_ID;
16
- const apiKey = ECOM_API_KEY;
17
- const githubToken = GITHUB_TOKEN;
18
- const env = {
19
- storeId,
20
- apiAuth: {
21
- authenticationId,
22
- apiKey,
23
- },
24
- githubToken,
25
- };
26
- return env;
27
- };
1
+ import getEnv from '@cloudcommerce/config/lib/env';
2
+
3
+ export default getEnv;
28
4
  // # sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AASA,eAAe,GAAG,EAAE;IAClB,MAAM,EACJ,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACb,GAAG,OAAO,CAAC,GAAG,CAAC;IAChB,MAAM,OAAO,GAAG,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC7D;IACD,IAAI,CAAC,sBAAsB,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACtD;IACD,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IACD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,MAAM,WAAW,GAAG,YAAY,CAAC;IACjC,MAAM,GAAG,GAAQ;QACf,OAAO;QACP,OAAO,EAAE;YACP,gBAAgB;YAChB,MAAM;SACP;QACD,WAAW;KACZ,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAe,MAAM,+BAA+B,CAAC;AAE5D,eAAe,MAAM,CAAC"}
@@ -8,10 +8,8 @@ import { EVENT_SKIP_FLAG, GET_PUBSUB_TOPIC } from '../const.js';
8
8
 
9
9
  const parseEventName = (evName, baseApiEventsFilter) => {
10
10
  const [resource, actionName] = evName.split('-');
11
- const params = {
12
- 'flag!': EVENT_SKIP_FLAG,
13
- };
14
- const bodySet = { ...baseApiEventsFilter };
11
+ const params = { ...baseApiEventsFilter };
12
+ const bodySet = {};
15
13
  if (actionName === 'new') {
16
14
  params.action = 'create';
17
15
  } else {
@@ -76,9 +74,13 @@ const tryPubSubPublish = (topicName, messageObj, retries = 0) => {
76
74
  export default async () => {
77
75
  const timestamp = Date.now();
78
76
  const documentRef = getFirestore().doc('storeEvents/last');
79
- const lastRunTimestamp = (await documentRef.get()).get('timestamp')
77
+ const documentSnapshot = await documentRef.get();
78
+ const lastRunTimestamp = documentSnapshot.get('timestamp')
80
79
  || Date.now() - 1000 * 60 * 5;
80
+ const lastNonOrdersTimestamp = documentSnapshot.get('nonOrdersTimestamp')
81
+ || 0;
81
82
  const baseApiEventsFilter = {
83
+ 'flag!': EVENT_SKIP_FLAG,
82
84
  'timestamp>': new Date(lastRunTimestamp - 1).toISOString(),
83
85
  'timestamp<': new Date(timestamp).toISOString(),
84
86
  };
@@ -107,11 +109,17 @@ export default async () => {
107
109
  });
108
110
  }
109
111
  });
112
+ // Some resource events are not listened to every minute
113
+ const isOrdersOnly = Boolean(new Date().getMinutes() % 5);
110
114
  listenedEvents.forEach(async (listenedEventName) => {
111
115
  const { resource, params } = parseEventName(listenedEventName, baseApiEventsFilter);
112
- if (resource !== 'orders' && resource !== 'carts' && new Date().getMinutes() % 5) {
113
- // Other resource events are not listened to every minute
114
- return;
116
+ if (resource !== 'orders') {
117
+ if (isOrdersOnly) {
118
+ return;
119
+ }
120
+ if (lastNonOrdersTimestamp) {
121
+ params['timestamp>'] = new Date(lastNonOrdersTimestamp).toISOString();
122
+ }
115
123
  }
116
124
  let { data: { result } } = await api.get(`events/${resource}`, {
117
125
  params,
@@ -163,6 +171,7 @@ export default async () => {
163
171
  });
164
172
  return documentRef.set({
165
173
  timestamp,
174
+ nonOrdersTimestamp: isOrdersOnly ? lastNonOrdersTimestamp : timestamp,
166
175
  activeApps,
167
176
  listenedEvents,
168
177
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check-store-events.js","sourceRoot":"","sources":["../../src/handlers/check-store-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-store-events.js","sourceRoot":"","sources":["../../src/handlers/check-store-events.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/firebase",
3
3
  "type": "module",
4
- "version": "0.0.65",
4
+ "version": "0.0.68",
5
5
  "description": "E-Com Plus Cloud Commerce on Firebase",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -30,10 +30,10 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@cloudcommerce/api": "workspace:*",
33
- "@fastify/deepmerge": "^1.1.0",
33
+ "@cloudcommerce/config": "workspace:*",
34
34
  "@google-cloud/pubsub": "^3.1.0",
35
35
  "firebase-admin": "^11.0.1",
36
- "firebase-functions": "^3.22.0",
36
+ "firebase-functions": "^3.23.0",
37
37
  "node-fetch": "^3.2.10",
38
38
  "source-map-support": "^0.5.21"
39
39
  },
@@ -1,18 +1,5 @@
1
1
  import type { ApiEventName } from '@cloudcommerce/types';
2
- import Deepmerge from '@fastify/deepmerge';
3
- import {
4
- DEFAULT_LANG,
5
- DEFAULT_CURRENCY,
6
- DEFAULT_CURRENCY_SYMBOL,
7
- DEFAULT_COUNTRY_CODE,
8
- } from './defaults';
9
-
10
- // @ts-ignore
11
- const env: { [key: string]: string } = (typeof process === 'object' && process?.env)
12
- || (typeof window === 'object' && window)
13
- || {};
14
-
15
- const deepmerge = Deepmerge();
2
+ import config, { BaseConfig } from '@cloudcommerce/config';
16
3
 
17
4
  const tinyErpEvents: ApiEventName[] = [
18
5
  'orders-anyStatusSet',
@@ -21,43 +8,31 @@ const tinyErpEvents: ApiEventName[] = [
21
8
  'applications-dataSet',
22
9
  ];
23
10
 
24
- const self = {
25
- __config: {
26
- hello: 'from @cloudcommerce/firebase',
27
- lang: env.ECOM_LANG || DEFAULT_LANG,
28
- currency: env.ECOM_CURRENCY || DEFAULT_CURRENCY,
29
- currencySymbol: env.ECOM_CURRENCY_SYMBOL || DEFAULT_CURRENCY_SYMBOL,
30
- countryCode: env.ECOM_COUNTRY_CODE || DEFAULT_COUNTRY_CODE,
31
- storeId: Number(env.ECOM_STORE_ID),
32
- httpsFunctionOptions: {
33
- region: env.DEPLOY_REGION || 'southamerica-east1',
11
+ const mergeConfig = {
12
+ hello: 'from @cloudcommerce/firebase',
13
+ httpsFunctionOptions: {
14
+ region: process.env.DEPLOY_REGION || 'southamerica-east1',
15
+ },
16
+ apps: {
17
+ discounts: {
18
+ appId: 1252,
19
+ },
20
+ correios: {
21
+ appId: 1248,
34
22
  },
35
- apps: {
36
- discounts: {
37
- appId: 1252,
38
- },
39
- correios: {
40
- appId: 1248,
41
- },
42
- customShipping: {
43
- appId: 1253,
44
- },
45
- tinyErp: {
46
- appId: 105922,
47
- events: tinyErpEvents,
48
- },
23
+ customShipping: {
24
+ appId: 1253,
25
+ },
26
+ tinyErp: {
27
+ appId: 105922,
28
+ events: tinyErpEvents,
49
29
  },
50
30
  },
51
31
  };
32
+ config.set(mergeConfig);
52
33
 
53
- export default {
54
- get() {
55
- return self.__config;
56
- },
57
- set(config) {
58
- self.__config = deepmerge(self.__config, config);
59
- if (config.storeId) {
60
- env.ECOM_STORE_ID = config.storeId;
61
- }
62
- },
34
+ export default config as {
35
+ get(): BaseConfig & typeof mergeConfig;
36
+ // eslint-disable-next-line
37
+ set(config: any): void;
63
38
  };
@@ -1,41 +1,5 @@
1
- type Env = {
2
- storeId: number;
3
- apiAuth: {
4
- authenticationId: string;
5
- apiKey: string;
6
- },
7
- githubToken?: string;
8
- };
1
+ import getEnv, { Env } from '@cloudcommerce/config/lib/env';
9
2
 
10
- export default () => {
11
- const {
12
- ECOM_STORE_ID,
13
- ECOM_AUTHENTICATION_ID,
14
- ECOM_API_KEY,
15
- GITHUB_TOKEN,
16
- } = process.env;
17
- const storeId = ECOM_STORE_ID && parseInt(ECOM_STORE_ID, 10);
18
- if (!storeId) {
19
- throw new Error('ECOM_STORE_ID is not set or not a number');
20
- }
21
- if (!ECOM_AUTHENTICATION_ID) {
22
- throw new Error('ECOM_AUTHENTICATION_ID is not set');
23
- }
24
- if (!ECOM_API_KEY) {
25
- throw new Error('ECOM_API_KEY is not set');
26
- }
27
- const authenticationId = ECOM_AUTHENTICATION_ID;
28
- const apiKey = ECOM_API_KEY;
29
- const githubToken = GITHUB_TOKEN;
30
- const env: Env = {
31
- storeId,
32
- apiAuth: {
33
- authenticationId,
34
- apiKey,
35
- },
36
- githubToken,
37
- };
38
- return env;
39
- };
3
+ export default getEnv;
40
4
 
41
5
  export type { Env };
@@ -12,10 +12,8 @@ const parseEventName = (
12
12
  baseApiEventsFilter: Record<string, string>,
13
13
  ) => {
14
14
  const [resource, actionName] = evName.split('-');
15
- const params: ApiConfig['params'] = {
16
- 'flag!': EVENT_SKIP_FLAG,
17
- };
18
- const bodySet: { [key: string]: any } = { ...baseApiEventsFilter };
15
+ const params: ApiConfig['params'] = { ...baseApiEventsFilter };
16
+ const bodySet: { [key: string]: any } = {};
19
17
  if (actionName === 'new') {
20
18
  params.action = 'create';
21
19
  } else {
@@ -62,7 +60,7 @@ const parseEventName = (
62
60
  });
63
61
  return { resource, params } as {
64
62
  resource: Resource,
65
- params: ApiConfig['params'],
63
+ params: Exclude<ApiConfig['params'], undefined>,
66
64
  };
67
65
  };
68
66
 
@@ -88,9 +86,13 @@ const tryPubSubPublish = (
88
86
  export default async () => {
89
87
  const timestamp = Date.now();
90
88
  const documentRef = getFirestore().doc('storeEvents/last');
91
- const lastRunTimestamp: number = (await documentRef.get()).get('timestamp')
89
+ const documentSnapshot = await documentRef.get();
90
+ const lastRunTimestamp: number = documentSnapshot.get('timestamp')
92
91
  || Date.now() - 1000 * 60 * 5;
92
+ const lastNonOrdersTimestamp: number = documentSnapshot.get('nonOrdersTimestamp')
93
+ || 0;
93
94
  const baseApiEventsFilter = {
95
+ 'flag!': EVENT_SKIP_FLAG,
94
96
  'timestamp>': new Date(lastRunTimestamp - 1).toISOString(),
95
97
  'timestamp<': new Date(timestamp).toISOString(),
96
98
  };
@@ -119,11 +121,17 @@ export default async () => {
119
121
  });
120
122
  }
121
123
  });
124
+ // Some resource events are not listened to every minute
125
+ const isOrdersOnly = Boolean(new Date().getMinutes() % 5);
122
126
  listenedEvents.forEach(async (listenedEventName) => {
123
127
  const { resource, params } = parseEventName(listenedEventName, baseApiEventsFilter);
124
- if (resource !== 'orders' && resource !== 'carts' && new Date().getMinutes() % 5) {
125
- // Other resource events are not listened to every minute
126
- return;
128
+ if (resource !== 'orders') {
129
+ if (isOrdersOnly) {
130
+ return;
131
+ }
132
+ if (lastNonOrdersTimestamp) {
133
+ params['timestamp>'] = new Date(lastNonOrdersTimestamp).toISOString();
134
+ }
127
135
  }
128
136
  let { data: { result } } = await api.get(`events/${resource}`, {
129
137
  params,
@@ -175,6 +183,7 @@ export default async () => {
175
183
  });
176
184
  return documentRef.set({
177
185
  timestamp,
186
+ nonOrdersTimestamp: isOrdersOnly ? lastNonOrdersTimestamp : timestamp,
178
187
  activeApps,
179
188
  listenedEvents,
180
189
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/modules",
3
3
  "type": "module",
4
- "version": "0.0.65",
4
+ "version": "0.0.68",
5
5
  "description": "E-Com Plus Cloud Commerce modules API",
6
6
  "main": "lib/index.cjs",
7
7
  "exports": {
@@ -32,7 +32,7 @@
32
32
  "ajv": "^8.11.0",
33
33
  "axios": "^0.27.2",
34
34
  "firebase-admin": "^11.0.1",
35
- "firebase-functions": "^3.22.0",
35
+ "firebase-functions": "^3.23.0",
36
36
  "source-map-support": "^0.5.21"
37
37
  },
38
38
  "devDependencies": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/passport",
3
3
  "type": "module",
4
- "version": "0.0.65",
4
+ "version": "0.0.68",
5
5
  "description": "E-Com Plus Cloud Commerce customers authentication (passport) API",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -26,7 +26,7 @@
26
26
  "@cloudcommerce/api": "workspace:*",
27
27
  "@cloudcommerce/firebase": "workspace:*",
28
28
  "firebase-admin": "^11.0.1",
29
- "firebase-functions": "^3.22.0",
29
+ "firebase-functions": "^3.23.0",
30
30
  "source-map-support": "^0.5.21"
31
31
  },
32
32
  "devDependencies": {
@@ -0,0 +1,67 @@
1
+ import { join as joinPath } from 'path';
2
+ import { readFile } from 'fs/promises';
3
+
4
+ const { STOREFRONT_BASE_DIR, STOREFRONT_LONG_CACHE } = process.env;
5
+ const baseDir = STOREFRONT_BASE_DIR || process.cwd();
6
+ const clientRoot = new URL(joinPath(baseDir, 'dist/client/'), import.meta.url);
7
+ const isLongCache = String(STOREFRONT_LONG_CACHE).toLowerCase() === 'true';
8
+
9
+ export default (req, res) => {
10
+ const url = req.url.replace(/\?.*$/, '').replace(/\.html$/, '');
11
+ const setStatusAndCache = (status, defaultCache) => {
12
+ return res.status(status)
13
+ .set('X-SSR-ID', `v1/${Math.random()}`)
14
+ .set('Cache-Control', (typeof global.cache_control === 'function' && global.cache_control(status))
15
+ || defaultCache);
16
+ };
17
+ const redirect = (toUrl, status = 302) => {
18
+ let sMaxAge = status === 301 ? 360 : 12;
19
+ if (isLongCache) {
20
+ sMaxAge *= 10;
21
+ }
22
+ let cacheControl = `public, max-age=30, s-maxage=${sMaxAge}`;
23
+ if (status === 302) {
24
+ cacheControl += ', proxy-revalidate';
25
+ }
26
+ setStatusAndCache(status, cacheControl)
27
+ .set('Location', toUrl).end();
28
+ };
29
+ const fallback = (status = 404) => {
30
+ if (url.slice(-1) === '/') {
31
+ redirect(url.slice(0, -1));
32
+ } else if (url !== '/404' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
33
+ setStatusAndCache(status, `public, max-age=${(isLongCache ? 120 : 30)}`)
34
+ .send('<html><head>'
35
+ + `<meta http-equiv="refresh" content="0; url=/404?url=${encodeURIComponent(url)}"/>`
36
+ + '</head><body></body></html>');
37
+ } else {
38
+ setStatusAndCache(status, isLongCache
39
+ ? 'public, max-age=60, s-maxage=86400'
40
+ : 'public, max-age=60, s-maxage=300')
41
+ .end();
42
+ }
43
+ };
44
+ /*
45
+ https://github.com/withastro/astro/blob/main/examples/ssr/server/server.mjs
46
+ import { handler as ssrHandler } from '../dist/server/entry.mjs';
47
+ global.ssr_handler = ssrHandler;
48
+ */
49
+ global.ssr_handler(req, res, async (err) => {
50
+ if (err) {
51
+ res.set('X-SSR-ERROR', err.stack);
52
+ fallback(500);
53
+ return;
54
+ }
55
+ const local = new URL(`.${url}`, clientRoot);
56
+ try {
57
+ const data = await readFile(local);
58
+ setStatusAndCache(200, isLongCache
59
+ ? 'public, max-age=60, s-maxage=604800'
60
+ : 'public, max-age=60, s-maxage=600, stale-while-revalidate=2592000')
61
+ .send(data);
62
+ } catch {
63
+ fallback();
64
+ }
65
+ });
66
+ };
67
+ // # sourceMappingURL=serve-storefront.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/firebase/serve-storefront.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@ import '@cloudcommerce/firebase/lib/init';
3
3
  // eslint-disable-next-line import/no-unresolved
4
4
  import { onRequest } from 'firebase-functions/v2/https';
5
5
  import config from '@cloudcommerce/firebase/lib/config';
6
+ import serveStorefront from './firebase/serve-storefront.js';
6
7
 
7
- const options = config.get().httpsFunctionOptions;
8
+ const { httpsFunctionOptions } = config.get();
8
9
 
9
- export const ssr = onRequest(options, (request, response) => {
10
- response.send('<h1>Hello SSR!</h1>');
10
+ export const ssr = onRequest(httpsFunctionOptions, (req, res) => {
11
+ serveStorefront(req, res);
11
12
  });
12
13
  // # sourceMappingURL=firebase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,kCAAkC,CAAC;AAC1C,gDAAgD;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AAExD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;IAC1D,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,kCAAkC,CAAC;AAC1C,gDAAgD;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9D,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
@@ -1 +1,4 @@
1
+ import serveStorefront from './firebase/serve-storefront.js';
2
+
3
+ export default serveStorefront;
1
4
  // # sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,eAAe,eAAe,CAAC"}