cloudcommerce 0.40.4 → 0.41.0
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 +40 -0
- package/action.yml +4 -0
- package/package.json +4 -4
- package/packages/api/package.json +1 -1
- package/packages/apps/affilate-program/package.json +1 -1
- package/packages/apps/correios/package.json +2 -2
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +2 -2
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/fb-conversions/package.json +2 -2
- package/packages/apps/flash-courier/package.json +2 -2
- package/packages/apps/frenet/lib/frenet-events.js +1 -1
- package/packages/apps/frenet/lib/frenet-events.js.map +1 -1
- package/packages/apps/frenet/package.json +2 -2
- package/packages/apps/frenet/src/frenet-events.ts +1 -1
- package/packages/apps/galaxpay/package.json +2 -2
- package/packages/apps/google-analytics/package.json +2 -2
- package/packages/apps/jadlog/package.json +2 -2
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js.map +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/loyalty-points/src/loyalty-points-events.ts +1 -1
- package/packages/apps/mandae/package.json +2 -2
- package/packages/apps/melhor-envio/lib/melhor-envio-events.js +1 -1
- package/packages/apps/melhor-envio/lib/melhor-envio-events.js.map +1 -1
- package/packages/apps/melhor-envio/package.json +2 -2
- package/packages/apps/melhor-envio/src/melhor-envio-events.ts +1 -1
- package/packages/apps/mercadopago/package.json +2 -2
- package/packages/apps/pagarme/package.json +2 -2
- package/packages/apps/pagarme-v5/package.json +2 -2
- package/packages/apps/paghiper/package.json +2 -2
- package/packages/apps/pix/package.json +2 -2
- package/packages/apps/tiny-erp/package.json +2 -2
- package/packages/apps/webhooks/package.json +2 -2
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +3 -3
- package/packages/eslint/package.json +2 -2
- package/packages/eslint/storefront.eslintrc.cjs +2 -0
- package/packages/events/lib/firebase.js +2 -0
- package/packages/events/lib/firebase.js.map +1 -1
- package/packages/events/package.json +2 -1
- package/packages/events/src/firebase.ts +2 -0
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/lib/helpers/firestore.d.ts +2 -0
- package/packages/firebase/lib/helpers/firestore.js +24 -0
- package/packages/firebase/lib/helpers/firestore.js.map +1 -0
- package/packages/firebase/package.json +2 -1
- package/packages/firebase/src/helpers/firestore.ts +31 -0
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +2 -2
- package/packages/passport/package.json +1 -1
- package/packages/ssr/events.js +1 -0
- package/packages/ssr/lib/firebase.js +1 -1
- package/packages/ssr/lib/firebase.js.map +1 -1
- package/packages/ssr/lib/index.js +1 -1
- package/packages/ssr/lib/index.js.map +1 -1
- package/packages/ssr/lib/lib/analytics/send-to-ga4.js.map +1 -0
- package/packages/ssr/lib/lib/analytics/send-to-meta.js.map +1 -0
- package/packages/ssr/lib/lib/analytics/send-to-tiktok.js.map +1 -0
- package/packages/ssr/lib/{analytics-events.js → lib/analytics-events.js} +4 -3
- package/packages/ssr/lib/lib/analytics-events.js.map +1 -0
- package/packages/ssr/lib/lib/cron-ssr-save-views.js +57 -0
- package/packages/ssr/lib/lib/cron-ssr-save-views.js.map +1 -0
- package/packages/ssr/lib/{firebase → lib}/serve-storefront.js +1 -1
- package/packages/ssr/lib/lib/serve-storefront.js.map +1 -0
- package/packages/ssr/lib/ssr-events.js +18 -0
- package/packages/ssr/lib/ssr-events.js.map +1 -0
- package/packages/ssr/package.json +5 -4
- package/packages/ssr/src/firebase.ts +1 -1
- package/packages/ssr/src/index.ts +1 -1
- package/packages/ssr/src/{analytics-events.ts → lib/analytics-events.ts} +4 -3
- package/packages/ssr/src/lib/cron-ssr-save-views.ts +56 -0
- package/packages/ssr/src/{firebase → lib}/serve-storefront.ts +2 -2
- package/packages/ssr/src/ssr-events.ts +17 -0
- package/packages/storefront/astro.config.mjs +3 -0
- package/packages/storefront/config/storefront.cms.js +14 -7
- package/packages/storefront/config/storefront.config.mjs +14 -1
- package/packages/storefront/package.json +8 -7
- package/packages/storefront/scripts/build-prod.sh +1 -0
- package/packages/storefront/src/lib/components/AccountLink.vue +9 -3
- package/packages/storefront/src/lib/composables/use-product-shelf.ts +3 -1
- package/packages/storefront/src/lib/content.d.ts +2 -2
- package/packages/storefront/src/lib/layouts/BaseHead.astro +1 -0
- package/packages/storefront/src/lib/layouts/use-page-main.ts +48 -20
- package/packages/storefront/src/lib/ssr-context.ts +1 -3
- package/packages/storefront/src/lib/state/use-analytics.ts +5 -2
- package/packages/test-base/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/ssr/lib/analytics/send-to-ga4.js.map +0 -1
- package/packages/ssr/lib/analytics/send-to-meta.js.map +0 -1
- package/packages/ssr/lib/analytics/send-to-tiktok.js.map +0 -1
- package/packages/ssr/lib/analytics-events.js.map +0 -1
- package/packages/ssr/lib/firebase/serve-storefront.js.map +0 -1
- /package/packages/ssr/lib/{analytics → lib/analytics}/send-to-ga4.js +0 -0
- /package/packages/ssr/lib/{analytics → lib/analytics}/send-to-meta.js +0 -0
- /package/packages/ssr/lib/{analytics → lib/analytics}/send-to-tiktok.js +0 -0
- /package/packages/ssr/src/{analytics → lib/analytics}/send-to-ga4.ts +0 -0
- /package/packages/ssr/src/{analytics → lib/analytics}/send-to-meta.ts +0 -0
- /package/packages/ssr/src/{analytics → lib/analytics}/send-to-tiktok.ts +0 -0
|
@@ -12,6 +12,7 @@ module.exports = {
|
|
|
12
12
|
'comma-dangle': 'warn',
|
|
13
13
|
'consistent-return': 'warn',
|
|
14
14
|
'array-bracket-spacing': 'warn',
|
|
15
|
+
'no-restricted-syntax': 'warn',
|
|
15
16
|
'quote-props': 'off',
|
|
16
17
|
'quotes': 'off',
|
|
17
18
|
'global-require': 'off',
|
|
@@ -26,6 +27,7 @@ module.exports = {
|
|
|
26
27
|
'Skeleton',
|
|
27
28
|
'Prices',
|
|
28
29
|
'Banner',
|
|
30
|
+
'Breadcrumbs',
|
|
29
31
|
'Countdown',
|
|
30
32
|
'Collapse',
|
|
31
33
|
'Accordion',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wCAAwC,CAAC;AAEvD,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,sCAAsC,CAAC;AAErD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,wCAAwC,CAAC;AAEvD,cAAc,6BAA6B,CAAC;AAE5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,yCAAyC,CAAC;AAExD,cAAc,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,cAAc,2BAA2B,CAAC;AAE1C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wCAAwC,CAAC;AAEvD,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,sCAAsC,CAAC;AAErD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,wCAAwC,CAAC;AAEvD,cAAc,6BAA6B,CAAC;AAE5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,yCAAyC,CAAC;AAExD,cAAc,sCAAsC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/events",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.41.0",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce app events",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@cloudcommerce/app-tiny-erp": "workspace:*",
|
|
43
43
|
"@cloudcommerce/app-webhooks": "workspace:*",
|
|
44
44
|
"@cloudcommerce/firebase": "workspace:*",
|
|
45
|
+
"@cloudcommerce/ssr": "workspace:*",
|
|
45
46
|
"firebase-admin": "^11.11.1",
|
|
46
47
|
"firebase-functions": "^4.5.0",
|
|
47
48
|
"source-map-support": "^0.5.21"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const _deleteQueryBatch = async (db, query, resolve) => {
|
|
2
|
+
const snapshot = await query.get();
|
|
3
|
+
const batchSize = snapshot.size;
|
|
4
|
+
if (batchSize === 0) {
|
|
5
|
+
resolve();
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const batch = db.batch();
|
|
9
|
+
snapshot.docs.forEach((doc) => {
|
|
10
|
+
batch.delete(doc.ref);
|
|
11
|
+
});
|
|
12
|
+
await batch.commit();
|
|
13
|
+
// Recurse on the next process tick to avoid exploding the stack
|
|
14
|
+
process.nextTick(() => {
|
|
15
|
+
_deleteQueryBatch(db, query, resolve);
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const deleteQueryBatch = async (db, query) => {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
_deleteQueryBatch(db, query, resolve).catch(reject);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
// # sourceMappingURL=firestore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../src/helpers/firestore.ts"],"names":[],"mappings":"AAIA,MAAM,iBAAiB,GAAG,KAAK,EAC7B,EAAa,EACb,KAAY,EACZ,OAAiC,EACjC,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;IAChC,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,OAAO,EAAE,CAAC;QACV,OAAO;KACR;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IACrB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;QACpB,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAa,EAAE,KAAY,EAAE,EAAE;IACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/firebase",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.41.0",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce on Firebase",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"./lib/config": "./lib/config.js",
|
|
13
13
|
"./lib/env": "./lib/env.js",
|
|
14
14
|
"./lib/helpers/pubsub": "./lib/helpers/pubsub.js",
|
|
15
|
+
"./lib/helpers/firestore": "./lib/helpers/firestore.js",
|
|
15
16
|
"./lib/helpers/update-app-data": "./lib/helpers/update-app-data.js"
|
|
16
17
|
},
|
|
17
18
|
"repository": {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
// Ref.: https://firebase.google.com/docs/firestore/manage-data/delete-data
|
|
3
|
+
import type { Firestore, Query } from 'firebase-admin/firestore';
|
|
4
|
+
|
|
5
|
+
const _deleteQueryBatch = async (
|
|
6
|
+
db: Firestore,
|
|
7
|
+
query: Query,
|
|
8
|
+
resolve: (...args: any[]) => void,
|
|
9
|
+
) => {
|
|
10
|
+
const snapshot = await query.get();
|
|
11
|
+
const batchSize = snapshot.size;
|
|
12
|
+
if (batchSize === 0) {
|
|
13
|
+
resolve();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const batch = db.batch();
|
|
17
|
+
snapshot.docs.forEach((doc) => {
|
|
18
|
+
batch.delete(doc.ref);
|
|
19
|
+
});
|
|
20
|
+
await batch.commit();
|
|
21
|
+
// Recurse on the next process tick to avoid exploding the stack
|
|
22
|
+
process.nextTick(() => {
|
|
23
|
+
_deleteQueryBatch(db, query, resolve);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const deleteQueryBatch = async (db: Firestore, query: Query) => {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
_deleteQueryBatch(db, query, resolve).catch(reject);
|
|
30
|
+
});
|
|
31
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/modules",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.41.0",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce modules API",
|
|
6
6
|
"main": "lib/index.cjs",
|
|
7
7
|
"exports": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@ecomplus/utils": "1.5.0-rc.6",
|
|
48
48
|
"ajv": "^8.12.0",
|
|
49
49
|
"ajv-formats": "^2.1.1",
|
|
50
|
-
"axios": "^1.6.
|
|
50
|
+
"axios": "^1.6.3",
|
|
51
51
|
"firebase-admin": "^11.11.1",
|
|
52
52
|
"firebase-functions": "^4.5.0",
|
|
53
53
|
"source-map-support": "^0.5.21"
|
package/packages/ssr/events.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/ssr-events';
|
|
@@ -4,7 +4,7 @@ import { initializeApp } from 'firebase-admin/app';
|
|
|
4
4
|
initializeApp();
|
|
5
5
|
import { onRequest } from 'firebase-functions/v2/https';
|
|
6
6
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
7
|
-
import serveStorefront from './
|
|
7
|
+
import serveStorefront from './lib/serve-storefront.js';
|
|
8
8
|
|
|
9
9
|
const { ssrFunctionOptions } = config.get();
|
|
10
10
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,aAAa,EAAE,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,aAAa,EAAE,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,eAAe,MAAM,wBAAwB,CAAC;AAErD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,EAAE;IACf,GAAG,kBAAkB;CACtB,EAAE,eAAe,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,wBAAwB,CAAC;AAErD,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-to-ga4.js","sourceRoot":"","sources":["../../../src/lib/analytics/send-to-ga4.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,aAAa;MAC1B,eAAe,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;MAC1C,mBAAmB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;AAEvD,MAAM,SAAS,GAAG,KAAK,EACrB,MAAwB,EACxB,QAAgB,EAChB,SAAiB,EACjB,MAMI,EAAE,EACN,EAAE;IACF,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;QAC9D,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,EAAsB;SAC/B,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC9B,KAAK,CAAC,IAAI,GAAG,kBAAkB,CAAC;gBAChC,KAAK,CAAC,MAAM,GAAG;oBACb,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,UAAU,EAAE,SAAS;iBACtB,CAAC;aACH;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE;gBACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;aACxD;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxD,4CAA4C;gBAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;aAClB;SACF;KACF;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-to-meta.js","sourceRoot":"","sources":["../../../src/lib/analytics/send-to-meta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,4EAA4E;AAC5E,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,8BAA8B,OAAO,EAAE;IAChD,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS;MACjD,iBAAiB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;AAElD,MAAM,UAAU,GAAG,KAAK,EACtB,MAAwB,EACxB,YAAoB,EACpB,QAA6C,EAC7C,SAAkB,EAClB,EAAE;IACF,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;QACzD,IAAI,IAAI,GAA+B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC7B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;gBACpB,IAAI,SAAS,EAAE;oBACb,KAAK,CAAC,MAAM,GAAG;wBACb,YAAY,EAAE,SAAS;qBACxB,CAAC;iBACH;aACF;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtB,gBAAgB,EAAE,YAAY;gBAC9B,aAAa,EAAE,SAAS;gBACxB,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,KAAK,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClD,4CAA4C;gBAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,IAAI,GAAG,EAAE,CAAC;aACX;SACF;KACF;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-to-tiktok.js","sourceRoot":"","sources":["../../../src/lib/analytics/send-to-tiktok.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,kEAAkE;AAClE,kFAAkF;AAClF,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,4CAA4C,OAAO,cAAc;IAC1E,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;QAClC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;KAChD;CACF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,KAAK,EACxB,MAAwB,EACxB,YAAoB,EACpB,IAAyC,EACzC,EAAE;IACF,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;QAClE,IAAI,IAAI,GAA+B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC7B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;aACxB;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI;gBACJ,IAAI,EAAE;oBACJ,GAAG,EAAE,YAAY;iBAClB;gBACD,UAAU,EAAE,KAAK,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClD,4CAA4C;gBAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;oBACvB,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;oBAC5C,IAAI;iBACL,CAAC,CAAC;gBACH,IAAI,GAAG,EAAE,CAAC;aACX;SACF;KACF;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -23,7 +23,8 @@ const sendAnalyticsEvents = async ({ url, events }, payload = {}) => {
|
|
|
23
23
|
return name === 'page_view';
|
|
24
24
|
});
|
|
25
25
|
const productView = gaEvents.find(({ name, params }) => {
|
|
26
|
-
return name === 'view_item'
|
|
26
|
+
return name === 'view_item'
|
|
27
|
+
&& params?.items?.[0]?.item_list_id === 'product-page';
|
|
27
28
|
});
|
|
28
29
|
if (pageView || productView) {
|
|
29
30
|
const db = getFirestore();
|
|
@@ -32,8 +33,8 @@ const sendAnalyticsEvents = async ({ url, events }, payload = {}) => {
|
|
|
32
33
|
.add({ url, at: Timestamp.now() });
|
|
33
34
|
storingEvents.push(storing);
|
|
34
35
|
}
|
|
35
|
-
const productId = productView?.params?.object_id;
|
|
36
|
-
if (productId) {
|
|
36
|
+
const productId = productView?.params?.items?.[0]?.object_id;
|
|
37
|
+
if (typeof productId === 'string' && /[0-9a-f]{24}/.test(productId)) {
|
|
37
38
|
const storing = db.doc(`ssrProductViews/${productId}`)
|
|
38
39
|
.set({ countUnsaved: FieldValue.increment(1) }, { merge: true });
|
|
39
40
|
storingEvents.push(storing);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-events.js","sourceRoot":"","sources":["../../src/lib/analytics-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
2
|
+
import { error } from 'firebase-functions/logger';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import api from '@cloudcommerce/api';
|
|
5
|
+
import { deleteQueryBatch } from '@cloudcommerce/firebase/lib/helpers/firestore';
|
|
6
|
+
|
|
7
|
+
const saveViews = async () => {
|
|
8
|
+
/* eslint-disable no-await-in-loop */
|
|
9
|
+
const db = getFirestore();
|
|
10
|
+
const productViewsSnapshot = await db.collection('ssrProductViews')
|
|
11
|
+
.limit(500).get();
|
|
12
|
+
for (let i = 0; i < productViewsSnapshot.docs.length; i++) {
|
|
13
|
+
const doc = productViewsSnapshot.docs[i];
|
|
14
|
+
const { countUnsaved } = doc.data();
|
|
15
|
+
if (countUnsaved > 0) {
|
|
16
|
+
const productId = doc.id;
|
|
17
|
+
const { views } = (await api.get(`products/${productId}`)).data;
|
|
18
|
+
await api.patch(`products/${productId}`, {
|
|
19
|
+
views: countUnsaved + (views || 0),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
doc.ref.delete();
|
|
23
|
+
}
|
|
24
|
+
if (process.env.BUNNYNET_API_KEY) {
|
|
25
|
+
try {
|
|
26
|
+
const pageViewsSnapshot = await db.collection('ssrPageViews')
|
|
27
|
+
.where('at', '>', new Date(Date.now() - 1000 * 60 * 20))
|
|
28
|
+
.get();
|
|
29
|
+
const purgedUrls = [];
|
|
30
|
+
for (let i = 0; i < pageViewsSnapshot.docs.length; i++) {
|
|
31
|
+
const doc = pageViewsSnapshot.docs[i];
|
|
32
|
+
const { url } = doc.data();
|
|
33
|
+
if (url && !purgedUrls.includes(url)) {
|
|
34
|
+
await axios('https://api.bunny.net/purge', {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
params: {
|
|
37
|
+
async: 'false',
|
|
38
|
+
url,
|
|
39
|
+
},
|
|
40
|
+
headers: {
|
|
41
|
+
AccessKey: process.env.BUNNYNET_API_KEY,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
purgedUrls.push(url);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
} catch (err) {
|
|
48
|
+
error(err);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const pageViewsQuery = db.collection('ssrPageViews')
|
|
52
|
+
.where('at', '<', new Date(Date.now() - 1000 * 60 * 60 * 24 * 90));
|
|
53
|
+
await deleteQueryBatch(db, pageViewsQuery);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export default saveViews;
|
|
57
|
+
// # sourceMappingURL=cron-ssr-save-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-ssr-save-views.js","sourceRoot":"","sources":["../../src/lib/cron-ssr-save-views.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { join as joinPath } from 'node:path';
|
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import logger from 'firebase-functions/logger';
|
|
4
4
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
5
|
-
import { sendAnalyticsEvents } from '
|
|
5
|
+
import { sendAnalyticsEvents } from './analytics-events.js';
|
|
6
6
|
|
|
7
7
|
const { STOREFRONT_BASE_DIR } = process.env;
|
|
8
8
|
const baseDir = STOREFRONT_BASE_DIR || process.cwd();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/lib/serve-storefront.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
3
|
+
import config from '@cloudcommerce/firebase/lib/config';
|
|
4
|
+
import functions from 'firebase-functions';
|
|
5
|
+
import saveViews from './lib/cron-ssr-save-views.js';
|
|
6
|
+
|
|
7
|
+
const { httpsFunctionOptions: { region } } = config.get();
|
|
8
|
+
|
|
9
|
+
export const ssr = {
|
|
10
|
+
cronSaveViews: functions.region(region).runWith({
|
|
11
|
+
timeoutSeconds: 119,
|
|
12
|
+
memory: '256MB',
|
|
13
|
+
}).pubsub
|
|
14
|
+
.schedule(process.env.CRONTAB_SSR_SAVE_VIEWS
|
|
15
|
+
|| (process.env.BUNNYNET_API_KEY ? '*/2 * * * *' : '49 * * * *'))
|
|
16
|
+
.onRun(saveViews),
|
|
17
|
+
};
|
|
18
|
+
// # sourceMappingURL=ssr-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-events.js","sourceRoot":"","sources":["../src/ssr-events.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAElD,MAAM,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9C,cAAc,EAAE,GAAG;QACnB,MAAM,EAAE,OAAO;KAChB,CAAC,CAAC,MAAM;SACN,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB;WACvC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SAClE,KAAK,CAAC,SAAS,CAAC;CACpB,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/ssr",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.41.0",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce storefront SSR",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./lib/index.js",
|
|
9
9
|
"./firebase": "./lib/firebase.js",
|
|
10
|
-
"./
|
|
10
|
+
"./events": "./lib/ssr-events.js",
|
|
11
|
+
"./lib/analytics-events": "./lib/lib/analytics-events.js"
|
|
11
12
|
},
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|
|
@@ -30,10 +31,10 @@
|
|
|
30
31
|
"@cloudcommerce/firebase": "workspace:*",
|
|
31
32
|
"@cloudcommerce/i18n": "workspace:*",
|
|
32
33
|
"@ecomplus/utils": "1.5.0-rc.6",
|
|
33
|
-
"@vueuse/core": "10.7.
|
|
34
|
+
"@vueuse/core": "10.7.1",
|
|
34
35
|
"astro": "4.0.8",
|
|
35
36
|
"astro-capo": "^0.0.1",
|
|
36
|
-
"axios": "^1.6.
|
|
37
|
+
"axios": "^1.6.3",
|
|
37
38
|
"firebase-admin": "^11.11.1",
|
|
38
39
|
"firebase-functions": "^4.5.0",
|
|
39
40
|
"mitt": "^3.0.1",
|
|
@@ -5,7 +5,7 @@ initializeApp();
|
|
|
5
5
|
|
|
6
6
|
import { onRequest } from 'firebase-functions/v2/https';
|
|
7
7
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
8
|
-
import serveStorefront from './
|
|
8
|
+
import serveStorefront from './lib/serve-storefront';
|
|
9
9
|
|
|
10
10
|
const { ssrFunctionOptions } = config.get();
|
|
11
11
|
|
|
@@ -38,7 +38,8 @@ const sendAnalyticsEvents = async (
|
|
|
38
38
|
return name === 'page_view';
|
|
39
39
|
});
|
|
40
40
|
const productView = gaEvents.find(({ name, params }) => {
|
|
41
|
-
return name === 'view_item'
|
|
41
|
+
return name === 'view_item'
|
|
42
|
+
&& params?.items?.[0]?.item_list_id === 'product-page';
|
|
42
43
|
});
|
|
43
44
|
if (pageView || productView) {
|
|
44
45
|
const db = getFirestore();
|
|
@@ -47,8 +48,8 @@ const sendAnalyticsEvents = async (
|
|
|
47
48
|
.add({ url, at: Timestamp.now() });
|
|
48
49
|
storingEvents.push(storing);
|
|
49
50
|
}
|
|
50
|
-
const productId = productView?.params?.object_id;
|
|
51
|
-
if (productId) {
|
|
51
|
+
const productId = productView?.params?.items?.[0]?.object_id;
|
|
52
|
+
if (typeof productId === 'string' && /[0-9a-f]{24}/.test(productId)) {
|
|
52
53
|
const storing = db.doc(`ssrProductViews/${productId}`)
|
|
53
54
|
.set({ countUnsaved: FieldValue.increment(1) }, { merge: true });
|
|
54
55
|
storingEvents.push(storing);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
2
|
+
import { error } from 'firebase-functions/logger';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import api from '@cloudcommerce/api';
|
|
5
|
+
import { deleteQueryBatch } from '@cloudcommerce/firebase/lib/helpers/firestore';
|
|
6
|
+
|
|
7
|
+
const saveViews = async () => {
|
|
8
|
+
/* eslint-disable no-await-in-loop */
|
|
9
|
+
const db = getFirestore();
|
|
10
|
+
const productViewsSnapshot = await db.collection('ssrProductViews')
|
|
11
|
+
.limit(500).get();
|
|
12
|
+
for (let i = 0; i < productViewsSnapshot.docs.length; i++) {
|
|
13
|
+
const doc = productViewsSnapshot.docs[i];
|
|
14
|
+
const { countUnsaved } = doc.data() as { countUnsaved: number };
|
|
15
|
+
if (countUnsaved > 0) {
|
|
16
|
+
const productId = doc.id as string & { length: 24 };
|
|
17
|
+
const { views } = (await api.get(`products/${productId}`)).data;
|
|
18
|
+
await api.patch(`products/${productId}`, {
|
|
19
|
+
views: countUnsaved + (views || 0),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
doc.ref.delete();
|
|
23
|
+
}
|
|
24
|
+
if (process.env.BUNNYNET_API_KEY) {
|
|
25
|
+
try {
|
|
26
|
+
const pageViewsSnapshot = await db.collection('ssrPageViews')
|
|
27
|
+
.where('at', '>', new Date(Date.now() - 1000 * 60 * 20))
|
|
28
|
+
.get();
|
|
29
|
+
const purgedUrls: string[] = [];
|
|
30
|
+
for (let i = 0; i < pageViewsSnapshot.docs.length; i++) {
|
|
31
|
+
const doc = pageViewsSnapshot.docs[i];
|
|
32
|
+
const { url } = doc.data() as { url: string };
|
|
33
|
+
if (url && !purgedUrls.includes(url)) {
|
|
34
|
+
await axios('https://api.bunny.net/purge', {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
params: {
|
|
37
|
+
async: 'false',
|
|
38
|
+
url,
|
|
39
|
+
},
|
|
40
|
+
headers: {
|
|
41
|
+
AccessKey: process.env.BUNNYNET_API_KEY,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
purgedUrls.push(url);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
} catch (err) {
|
|
48
|
+
error(err);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const pageViewsQuery = db.collection('ssrPageViews')
|
|
52
|
+
.where('at', '<', new Date(Date.now() - 1000 * 60 * 60 * 24 * 90));
|
|
53
|
+
await deleteQueryBatch(db, pageViewsQuery);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export default saveViews;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { OutgoingHttpHeaders } from 'node:http';
|
|
2
2
|
import type { Request, Response } from 'firebase-functions';
|
|
3
|
-
import type { GroupedAnalyticsEvents } from '
|
|
3
|
+
import type { GroupedAnalyticsEvents } from './analytics-events';
|
|
4
4
|
import { join as joinPath } from 'node:path';
|
|
5
5
|
import { readFile } from 'node:fs/promises';
|
|
6
6
|
import logger from 'firebase-functions/logger';
|
|
7
7
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
8
|
-
import { sendAnalyticsEvents } from '
|
|
8
|
+
import { sendAnalyticsEvents } from './analytics-events';
|
|
9
9
|
|
|
10
10
|
declare global {
|
|
11
11
|
// eslint-disable-next-line
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
3
|
+
import config from '@cloudcommerce/firebase/lib/config';
|
|
4
|
+
import functions from 'firebase-functions';
|
|
5
|
+
import saveViews from './lib/cron-ssr-save-views';
|
|
6
|
+
|
|
7
|
+
const { httpsFunctionOptions: { region } } = config.get();
|
|
8
|
+
|
|
9
|
+
export const ssr = {
|
|
10
|
+
cronSaveViews: functions.region(region).runWith({
|
|
11
|
+
timeoutSeconds: 119,
|
|
12
|
+
memory: '256MB',
|
|
13
|
+
}).pubsub
|
|
14
|
+
.schedule(process.env.CRONTAB_SSR_SAVE_VIEWS
|
|
15
|
+
|| (process.env.BUNNYNET_API_KEY ? '*/2 * * * *' : '49 * * * *'))
|
|
16
|
+
.onRun(saveViews),
|
|
17
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
global.__storefrontCMS = (fs, resolvePath) => {
|
|
1
|
+
global.__storefrontCMS = (fs, resolvePath, _parseMatter) => {
|
|
2
2
|
const { STOREFRONT_BASE_DIR } = process.env;
|
|
3
3
|
let baseDir;
|
|
4
4
|
if (STOREFRONT_BASE_DIR) {
|
|
@@ -8,6 +8,7 @@ global.__storefrontCMS = (fs, resolvePath) => {
|
|
|
8
8
|
}
|
|
9
9
|
process.env.STOREFRONT_BASE_DIR = baseDir;
|
|
10
10
|
const dirContent = resolvePath(baseDir, 'content');
|
|
11
|
+
const resolveContent = (filename) => resolvePath(dirContent, filename);
|
|
11
12
|
|
|
12
13
|
const contentCache = {};
|
|
13
14
|
const getContent = (filename) => {
|
|
@@ -17,7 +18,7 @@ global.__storefrontCMS = (fs, resolvePath) => {
|
|
|
17
18
|
let content = contentCache[filename];
|
|
18
19
|
if (!content) {
|
|
19
20
|
if (filename.endsWith('/')) {
|
|
20
|
-
const dirColl =
|
|
21
|
+
const dirColl = resolveContent(filename);
|
|
21
22
|
return new Promise((resolve) => {
|
|
22
23
|
const slugs = fs.existsSync(dirColl)
|
|
23
24
|
? fs.readdirSync(dirColl)
|
|
@@ -27,16 +28,22 @@ global.__storefrontCMS = (fs, resolvePath) => {
|
|
|
27
28
|
resolve(slugs);
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
const jsonFilepath = resolveContent(`${filename}.json`);
|
|
32
|
+
if (fs.existsSync(jsonFilepath)) {
|
|
33
|
+
content = JSON.parse(fs.readFileSync(jsonFilepath, 'utf8'));
|
|
34
|
+
} else if (_parseMatter && fs.existsSync(resolveContent(`${filename}.md`))) {
|
|
35
|
+
const rawMd = fs.readFileSync(resolveContent(`${filename}.md`), 'utf8');
|
|
36
|
+
const { markdown, matter } = _parseMatter(rawMd);
|
|
37
|
+
content = { ...matter, markdown };
|
|
38
|
+
} else {
|
|
39
|
+
content = null;
|
|
40
|
+
}
|
|
35
41
|
if (!filename.includes('/')) {
|
|
36
42
|
// Caching root content only (not collections)
|
|
37
43
|
contentCache[filename] = content;
|
|
38
44
|
}
|
|
39
45
|
}
|
|
46
|
+
if (typeof content.then === 'function') return content;
|
|
40
47
|
return filename === 'settings'
|
|
41
48
|
? content
|
|
42
49
|
: new Promise((resolve) => { resolve(content); });
|