cloudcommerce 0.23.3 → 0.24.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.
Files changed (166) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  3. package/ecomplus-stores/barra-doce/functions/ssr/content/layout.json +0 -6
  4. package/ecomplus-stores/barra-doce/functions/ssr/content/settings.json +17 -0
  5. package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
  6. package/ecomplus-stores/barra-doce/functions/ssr/public/robots.txt +2 -4
  7. package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountMenu.vue +1 -10
  8. package/ecomplus-stores/barra-doce/functions/ssr/src/components/Banner.vue +4 -6
  9. package/ecomplus-stores/barra-doce/functions/ssr/src/components/PitchBar.vue +2 -3
  10. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductCard.vue +4 -5
  11. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductShelf.vue +1 -4
  12. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeader.vue +2 -7
  13. package/ecomplus-stores/barra-doce/functions/ssr/tailwind.config.cjs +1 -1
  14. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  15. package/ecomplus-stores/barra-doce/package.json +2 -2
  16. package/ecomplus-stores/iluminim/functions/many/package.json +3 -3
  17. package/ecomplus-stores/iluminim/functions/ssr/content/layout.json +0 -6
  18. package/ecomplus-stores/iluminim/functions/ssr/content/settings.json +16 -0
  19. package/ecomplus-stores/iluminim/functions/ssr/package.json +6 -6
  20. package/ecomplus-stores/iluminim/functions/ssr/public/robots.txt +2 -4
  21. package/ecomplus-stores/iluminim/functions/ssr/src/components/AccountMenu.vue +1 -10
  22. package/ecomplus-stores/iluminim/functions/ssr/src/components/Banner.vue +4 -6
  23. package/ecomplus-stores/iluminim/functions/ssr/src/components/PitchBar.vue +2 -3
  24. package/ecomplus-stores/iluminim/functions/ssr/src/components/ProductCard.vue +4 -5
  25. package/ecomplus-stores/iluminim/functions/ssr/src/components/ProductShelf.vue +1 -4
  26. package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeader.vue +2 -7
  27. package/ecomplus-stores/iluminim/functions/ssr/tailwind.config.cjs +1 -1
  28. package/ecomplus-stores/iluminim/functions/with-apps/package.json +3 -3
  29. package/ecomplus-stores/iluminim/package.json +2 -2
  30. package/package.json +8 -8
  31. package/packages/api/package.json +1 -1
  32. package/packages/api/tests/index.test.ts +0 -2
  33. package/packages/apps/affilate-program/package.json +1 -1
  34. package/packages/apps/correios/package.json +1 -1
  35. package/packages/apps/custom-payment/lib/custom-payment-create-transaction.js +1 -1
  36. package/packages/apps/custom-payment/lib/custom-payment-list-payments.js +1 -1
  37. package/packages/apps/custom-payment/package.json +1 -1
  38. package/packages/apps/custom-shipping/package.json +1 -1
  39. package/packages/apps/datafrete/package.json +1 -1
  40. package/packages/apps/discounts/package.json +1 -1
  41. package/packages/apps/emails/package.json +1 -1
  42. package/packages/apps/fb-conversions/package.json +2 -2
  43. package/packages/apps/flash-courier/package.json +1 -1
  44. package/packages/apps/frenet/package.json +1 -1
  45. package/packages/apps/galaxpay/lib/galaxpay-create-transaction.js +1 -1
  46. package/packages/apps/galaxpay/lib/galaxpay-list-payments.js +1 -1
  47. package/packages/apps/galaxpay/package.json +1 -1
  48. package/packages/apps/google-analytics/package.json +1 -1
  49. package/packages/apps/jadlog/package.json +1 -1
  50. package/packages/apps/loyalty-points/lib/loyalty-create-transaction.js +1 -1
  51. package/packages/apps/loyalty-points/lib/loyalty-list-payments.js +1 -1
  52. package/packages/apps/loyalty-points/package.json +1 -1
  53. package/packages/apps/melhor-envio/package.json +1 -1
  54. package/packages/apps/mercadopago/lib/mp-create-transaction.js +1 -1
  55. package/packages/apps/mercadopago/lib/mp-list-payments.js +1 -1
  56. package/packages/apps/mercadopago/package.json +1 -1
  57. package/packages/apps/pagarme/lib/pagarme-create-transaction.js +1 -1
  58. package/packages/apps/pagarme/lib/pagarme-list-payments.js +1 -1
  59. package/packages/apps/pagarme/package.json +1 -1
  60. package/packages/apps/paghiper/lib/paghiper-create-transaction.js +1 -1
  61. package/packages/apps/paghiper/lib/paghiper-list-payments.js +1 -1
  62. package/packages/apps/paghiper/package.json +1 -1
  63. package/packages/apps/pix/lib/pix-create-transaction.js +1 -1
  64. package/packages/apps/pix/lib/pix-list-payments.js +1 -1
  65. package/packages/apps/pix/package.json +1 -1
  66. package/packages/apps/tiny-erp/package.json +1 -1
  67. package/packages/apps/webhooks/package.json +1 -1
  68. package/packages/cli/package.json +1 -1
  69. package/packages/config/package.json +1 -1
  70. package/packages/emails/package.json +1 -1
  71. package/packages/emails/tests/sendgrid.test.ts +0 -1
  72. package/packages/emails/tests/smtp.test.ts +0 -1
  73. package/packages/eslint/base.eslintrc.cjs +23 -0
  74. package/packages/eslint/package.json +5 -5
  75. package/packages/events/package.json +1 -1
  76. package/packages/feeds/package.json +1 -1
  77. package/packages/firebase/package.json +1 -1
  78. package/packages/i18n/package.json +1 -1
  79. package/packages/modules/package.json +1 -1
  80. package/packages/passport/package.json +1 -1
  81. package/packages/ssr/cloudflare/swr-worker.js +92 -16
  82. package/packages/ssr/lib/firebase/serve-storefront.js +2 -2
  83. package/packages/ssr/lib/firebase/serve-storefront.js.map +1 -1
  84. package/packages/ssr/package.json +4 -4
  85. package/packages/ssr/src/cloudflare/swr-worker.ts +97 -16
  86. package/packages/ssr/src/firebase/serve-storefront.ts +2 -2
  87. package/packages/storefront/config/storefront.tailwind.cjs +41 -27
  88. package/packages/storefront/config/storefront.unocss.cjs +9 -23
  89. package/packages/storefront/dist/client/_astro/{_...slug_.07c1fa58.css → _...slug_.a786e016.css} +1 -1
  90. package/packages/storefront/dist/client/_astro/ecom-icon_CDmhA.png +0 -0
  91. package/packages/storefront/dist/client/_astro/ecom-icon_Z27EX9f.png +0 -0
  92. package/packages/storefront/dist/client/_astro/ecom-icon_Zo1CLq.png +0 -0
  93. package/packages/storefront/dist/client/_astro/headphone_22qtrt.avif +0 -0
  94. package/packages/storefront/dist/client/_astro/headphone_247ud8.avif +0 -0
  95. package/packages/storefront/dist/client/_astro/headphone_Z1hoMcQ.webp +0 -0
  96. package/packages/storefront/dist/client/_astro/headphone_Z1j5MXv.webp +0 -0
  97. package/packages/storefront/dist/client/_astro/logo_144owC.webp +0 -0
  98. package/packages/storefront/dist/client/_astro/logo_1ug3XF.png +0 -0
  99. package/packages/storefront/dist/client/_astro/logo_Z1EIN1I.avif +0 -0
  100. package/packages/storefront/dist/client/_astro/passion_29BEzB.webp +0 -0
  101. package/packages/storefront/dist/client/_astro/passion_2sykkb.avif +0 -0
  102. package/packages/storefront/dist/client/_astro/passion_HYj6i.webp +0 -0
  103. package/packages/storefront/dist/client/_astro/passion_Z18ANwS.avif +0 -0
  104. package/packages/storefront/dist/client/_astro/passion_ZK2FPz.webp +0 -0
  105. package/packages/storefront/dist/client/_astro/passion_pVNbE.avif +0 -0
  106. package/packages/storefront/dist/client/_astro/rect8589_1EUYOa.webp +0 -0
  107. package/packages/storefront/dist/client/_astro/rect8589_1Sqf3x.png +0 -0
  108. package/packages/storefront/dist/client/_astro/rect8589_1VeSii.avif +0 -0
  109. package/packages/storefront/dist/client/_astro/rect8589_2wFECM.png +0 -0
  110. package/packages/storefront/dist/client/_astro/rect8589_7mg8W.png +0 -0
  111. package/packages/storefront/dist/client/_astro/rect8589_Kv492.webp +0 -0
  112. package/packages/storefront/dist/client/_astro/rect8589_Z1DNkkN.webp +0 -0
  113. package/packages/storefront/dist/client/_astro/rect8589_Z1IS4wy.avif +0 -0
  114. package/packages/storefront/dist/client/_astro/rect8589_Zt4vbx.avif +0 -0
  115. package/packages/storefront/dist/client/_astro/rect859_1Bqr36.webp +0 -0
  116. package/packages/storefront/dist/client/_astro/rect859_1pj5UP.png +0 -0
  117. package/packages/storefront/dist/client/_astro/rect859_2dVuzq.avif +0 -0
  118. package/packages/storefront/dist/client/_astro/rect859_HaXay.png +0 -0
  119. package/packages/storefront/dist/client/_astro/rect859_Z100iy0.png +0 -0
  120. package/packages/storefront/dist/client/_astro/rect859_Z2i1RBz.avif +0 -0
  121. package/packages/storefront/dist/client/_astro/rect859_ZMRWqJ.webp +0 -0
  122. package/packages/storefront/dist/client/_astro/rect859_mPQHw.avif +0 -0
  123. package/packages/storefront/dist/client/_astro/rect859_xyq7d.webp +0 -0
  124. package/packages/storefront/dist/client/_astro/rect89_1DkX0O.webp +0 -0
  125. package/packages/storefront/dist/client/_astro/rect89_2uIqYp.avif +0 -0
  126. package/packages/storefront/dist/client/_astro/rect89_Z1rGPGT.webp +0 -0
  127. package/packages/storefront/dist/client/_astro/rect89_ZAjmIj.avif +0 -0
  128. package/packages/storefront/dist/client/robots.txt +2 -4
  129. package/packages/storefront/dist/client/sw.js +1 -1
  130. package/packages/storefront/dist/client/~fallback.html +98 -0
  131. package/packages/storefront/dist/client/~index.html +134 -0
  132. package/packages/storefront/dist/server/chunks/{_...c5a36021.mjs → _...5323ec5a.mjs} +4 -11
  133. package/packages/storefront/dist/server/chunks/{account@_@astro.3e90f29a.mjs → account@_@astro.a02ffb0b.mjs} +4 -11
  134. package/packages/storefront/dist/server/chunks/{astro.6adaff02.mjs → astro.a7611b51.mjs} +11 -18
  135. package/packages/storefront/dist/server/chunks/{index@_@astro.66b84ac2.mjs → index@_@astro.42c693b9.mjs} +4 -11
  136. package/packages/storefront/dist/server/chunks/{index@_@astro.0221a7bd.mjs → index@_@astro.d898498a.mjs} +4 -11
  137. package/packages/storefront/dist/server/chunks/pages/{_...slug_.astro.501582b9.mjs → _...slug_.astro.0f33557e.mjs} +103 -309
  138. package/packages/storefront/dist/server/chunks/pages/{account.astro.53400a42.mjs → account.astro.9325adb2.mjs} +1 -1
  139. package/packages/storefront/dist/server/chunks/pages/{index.astro.f1104ab2.mjs → index.astro.0f31fa39.mjs} +8 -27
  140. package/packages/storefront/dist/server/chunks/pages/{fallback.astro.8d1c6076.mjs → ~fallback.astro.bd93f01e.mjs} +15 -32
  141. package/packages/storefront/dist/server/chunks/{fallback@_@astro.9f73db0f.mjs → ~fallback@_@astro.d17419ae.mjs} +4 -11
  142. package/packages/storefront/dist/server/entry.mjs +47 -16
  143. package/packages/storefront/dist/server/images.dist.csv +38 -0
  144. package/packages/storefront/dist/server/images.src.csv +11 -0
  145. package/packages/storefront/dist/server/renderers.mjs +3 -10
  146. package/packages/storefront/dist/server/stylesheets.csv +1 -0
  147. package/packages/storefront/package.json +7 -6
  148. package/packages/storefront/scripts/build-prod.sh +2 -0
  149. package/packages/storefront/src/env.d.ts +0 -2
  150. package/packages/storefront/src/helpers/server-data.ts +9 -2
  151. package/packages/storefront/src/lib/components/BannerPictures.astro +2 -2
  152. package/packages/storefront/src/lib/components/Drawer.vue +1 -1
  153. package/packages/storefront/src/lib/components/PaymentMethodFlag.vue +36 -0
  154. package/packages/storefront/src/lib/components/SocialNetworkIcon.vue +1 -0
  155. package/packages/storefront/src/lib/components/globals/ALink.vue +5 -3
  156. package/packages/storefront/src/lib/composables/use-sticky-header.ts +1 -1
  157. package/packages/storefront/src/lib/layouts/BaseHead.astro +1 -1
  158. package/packages/storefront/src/lib/layouts/use-page-header.ts +2 -9
  159. package/packages/storefront/src/lib/ssr-context.ts +31 -25
  160. package/packages/storefront/src/vue-globals.d.ts +0 -1
  161. package/packages/types/index.ts +16 -0
  162. package/packages/types/package.json +1 -1
  163. package/packages/storefront/dist/server/chunks/endpoint@_@js.b79eed3b.mjs +0 -34
  164. package/packages/storefront/dist/server/chunks/pages/endpoint.js.4c130895.mjs +0 -119
  165. /package/ecomplus-stores/barra-doce/functions/ssr/src/pages/{fallback.astro → ~fallback.astro} +0 -0
  166. /package/ecomplus-stores/iluminim/functions/ssr/src/pages/{fallback.astro → ~fallback.astro} +0 -0
@@ -53,23 +53,92 @@ const toCacheRes = (response, cacheControl, staleAt) => {
53
53
  vary: null,
54
54
  });
55
55
  };
56
- const swr = async (event) => {
57
- if (event.request.method !== 'GET') {
58
- return fetch(event.request);
56
+ const checkToKvCache = (newCacheRes) => {
57
+ return newCacheRes.status === 200
58
+ && newCacheRes.headers.get('Content-Type')?.includes('text/html');
59
+ };
60
+ const putKvCache = async (kv, kvKey, newCacheRes) => {
61
+ const newKvRes = new Response(newCacheRes.clone().body, { status: 200 });
62
+ const body = await newKvRes.text();
63
+ const headers = {};
64
+ newCacheRes.headers.forEach((value, key) => {
65
+ headers[key] = value;
66
+ });
67
+ const kvValue = JSON.stringify({ body, headers });
68
+ return kv.put(kvKey, kvValue, { expirationTtl: 3600 * 24 * 30 });
69
+ };
70
+ const swr = async (_request, env, ctx) => {
71
+ const url = new URL(_request.url);
72
+ const { hostname, pathname } = url;
73
+ const hostOverride = env[`OVERRIDE_${hostname}`];
74
+ if (hostOverride) {
75
+ url.hostname = hostOverride;
76
+ }
77
+ const bypassEarly = () => {
78
+ return !hostOverride
79
+ ? fetch(_request)
80
+ : fetch(new Request(url.href, _request));
81
+ };
82
+ if (_request.method !== 'GET') {
83
+ return bypassEarly();
59
84
  }
60
- const { pathname } = new URL(event.request.url);
61
85
  if (pathname === '/_image'
62
86
  || pathname.startsWith('/~')
63
87
  || pathname.startsWith('/api/')
64
88
  || pathname.startsWith('/_feeds/')) {
65
- return fetch(event.request);
89
+ return bypassEarly();
66
90
  }
67
- const [uri] = event.request.url.split('?', 2);
68
- const request = new Request(`${uri}?t=${Date.now()}`, event.request);
69
- const cacheKey = new Request(`${uri}?v=30`, {
70
- method: event.request.method,
91
+ const [uri] = url.href.split('?', 2);
92
+ const request = new Request(`${uri}?t=${Date.now()}`, _request);
93
+ const v = 38;
94
+ const cacheKey = new Request(`${uri}?v=${(v + 1)}`, {
95
+ method: _request.method,
71
96
  });
72
- const cachedRes = await caches.default.match(cacheKey);
97
+ const kvKey = `${v}${uri.replace('https:/', '')}`;
98
+ const kv = env.PERMA_CACHE;
99
+ let cachedRes;
100
+ let edgeSource = '';
101
+ try {
102
+ const gettingCache = caches.default.match(cacheKey);
103
+ let kvStoredRes;
104
+ const gettingKv = kv
105
+ ? kv.get(kvKey, { type: 'json' }).then((value) => {
106
+ if (value) {
107
+ const { body, headers } = value;
108
+ kvStoredRes = new Response(body, { headers, status: 200 });
109
+ return kvStoredRes;
110
+ }
111
+ kvStoredRes = null;
112
+ return undefined;
113
+ })
114
+ : Promise.resolve(undefined);
115
+ cachedRes = await Promise.race([
116
+ new Promise((resolve) => {
117
+ gettingCache.then((fromCache) => {
118
+ if (fromCache) {
119
+ edgeSource = 'cache';
120
+ resolve(fromCache);
121
+ } else if (kvStoredRes !== undefined) {
122
+ resolve(kvStoredRes);
123
+ } else {
124
+ gettingKv.finally(() => resolve(kvStoredRes));
125
+ }
126
+ });
127
+ }),
128
+ new Promise((resolve) => {
129
+ gettingKv.then((fromKv) => {
130
+ if (fromKv) {
131
+ edgeSource = 'kv';
132
+ resolve(fromKv);
133
+ } else {
134
+ gettingCache.then((fromCache) => resolve(fromCache));
135
+ }
136
+ });
137
+ }),
138
+ ]);
139
+ } catch {
140
+ //
141
+ }
73
142
  let edgeState = 'miss';
74
143
  if (cachedRes) {
75
144
  const cachedStaleAt = Number(cachedRes.headers.get(HEADER_STALE_AT));
@@ -77,8 +146,11 @@ const swr = async (event) => {
77
146
  edgeState = 'bypass';
78
147
  } else if (Date.now() > cachedStaleAt) {
79
148
  edgeState = 'stale';
80
- event.waitUntil((async () => {
149
+ ctx.waitUntil((async () => {
81
150
  const newCacheRes = toCacheRes(await fetch(request));
151
+ if (kv && checkToKvCache(newCacheRes)) {
152
+ ctx.waitUntil(putKvCache(kv, kvKey, newCacheRes));
153
+ }
82
154
  return caches.default.put(cacheKey, newCacheRes);
83
155
  })());
84
156
  } else {
@@ -89,14 +161,18 @@ const swr = async (event) => {
89
161
  const { cacheControl, staleAt } = resolveCacheControl(response);
90
162
  if (!cachedRes && response.ok) {
91
163
  const newCacheRes = toCacheRes(response, cacheControl, staleAt);
92
- event.waitUntil(caches.default.put(cacheKey, newCacheRes));
164
+ ctx.waitUntil(caches.default.put(cacheKey, newCacheRes));
165
+ if (kv && checkToKvCache(newCacheRes)) {
166
+ ctx.waitUntil(putKvCache(kv, kvKey, newCacheRes));
167
+ }
93
168
  }
94
169
  return addHeaders(response, {
95
170
  [HEADER_CACHE_CONTROL]: cacheControl,
96
171
  'x-edge-state': edgeState,
172
+ 'x-edge-src': edgeSource,
97
173
  });
98
174
  };
99
- // eslint-disable-next-line no-restricted-globals
100
- addEventListener('fetch', (event) => {
101
- event.respondWith(swr(event));
102
- });
175
+
176
+ export default {
177
+ fetch: swr,
178
+ };
@@ -118,11 +118,11 @@ export default async (req, res) => {
118
118
  .set('Cache-Control', cacheControl);
119
119
  };
120
120
  const fallback = (err, status = 500) => {
121
- if (url !== '/fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
121
+ if (url !== '/~fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
122
122
  setStatusAndCache(status, 'public, max-age=120')
123
123
  .send('<html><head>'
124
124
  + '<meta http-equiv="refresh" content="0; '
125
- + `url=/fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
125
+ + `url=/~fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
126
126
  + `</head><body>${err.toString()}</body></html>`);
127
127
  } else {
128
128
  setStatusAndCache(status, 'public, max-age=120, s-maxage=600')
@@ -1 +1 @@
1
- {"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/firebase/serve-storefront.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/firebase/serve-storefront.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/ssr",
3
3
  "type": "module",
4
- "version": "0.23.3",
4
+ "version": "0.24.0",
5
5
  "description": "E-Com Plus Cloud Commerce storefront SSR",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -24,21 +24,21 @@
24
24
  "build:workers": "npx tsc -p src/cloudflare --outDir cloudflare && npx eslint --ext .js cloudflare --fix"
25
25
  },
26
26
  "dependencies": {
27
- "@astrojs/node": "5.3.2",
27
+ "@astrojs/node": "5.3.4",
28
28
  "@cloudcommerce/api": "workspace:*",
29
29
  "@cloudcommerce/firebase": "workspace:*",
30
30
  "@cloudcommerce/i18n": "workspace:*",
31
31
  "@ecomplus/utils": "1.5.0-rc.5",
32
32
  "@headlessui/vue": "^1.7.15",
33
33
  "@vueuse/core": "10.3.0",
34
- "astro": "2.10.1",
34
+ "astro": "2.10.9",
35
35
  "firebase-admin": "^11.10.1",
36
36
  "firebase-functions": "^4.4.1",
37
37
  "vue": "^3.3.4"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@cloudcommerce/types": "workspace:*",
41
- "@cloudflare/workers-types": "^4.20230801.0",
41
+ "@cloudflare/workers-types": "^4.20230807.0",
42
42
  "@firebase/app-types": "^0.9.0"
43
43
  }
44
44
  }
@@ -68,25 +68,100 @@ const toCacheRes = (response: Response, cacheControl?: string | null, staleAt?:
68
68
  });
69
69
  };
70
70
 
71
- const swr = async (event: FetchEvent) => {
72
- if (event.request.method !== 'GET') {
73
- return fetch(event.request);
71
+ const checkToKvCache = (newCacheRes: Response) => {
72
+ return newCacheRes.status === 200
73
+ && newCacheRes.headers.get('Content-Type')?.includes('text/html');
74
+ };
75
+
76
+ const putKvCache = async (kv: KVNamespace, kvKey: string, newCacheRes: Response) => {
77
+ const newKvRes = new Response(newCacheRes.clone().body, { status: 200 });
78
+ const body = await newKvRes.text();
79
+ const headers: Record<string, string> = {};
80
+ newCacheRes.headers.forEach((value, key) => {
81
+ headers[key] = value;
82
+ });
83
+ const kvValue = JSON.stringify({ body, headers });
84
+ return kv.put(kvKey, kvValue, { expirationTtl: 3600 * 24 * 30 });
85
+ };
86
+
87
+ export type Env = Record<`OVERRIDE_${string}`, string | undefined> & {
88
+ PERMA_CACHE: KVNamespace | undefined;
89
+ };
90
+
91
+ const swr = async (_request: Request, env: Env, ctx: ExecutionContext) => {
92
+ const url = new URL(_request.url);
93
+ const { hostname, pathname } = url;
94
+ const hostOverride = env[`OVERRIDE_${hostname}`];
95
+ if (hostOverride) {
96
+ url.hostname = hostOverride;
97
+ }
98
+ const bypassEarly = () => {
99
+ return !hostOverride
100
+ ? fetch(_request)
101
+ : fetch(new Request(url.href, _request));
102
+ };
103
+ if (_request.method !== 'GET') {
104
+ return bypassEarly();
74
105
  }
75
- const { pathname } = new URL(event.request.url);
76
106
  if (
77
107
  pathname === '/_image'
78
108
  || pathname.startsWith('/~')
79
109
  || pathname.startsWith('/api/')
80
110
  || pathname.startsWith('/_feeds/')
81
111
  ) {
82
- return fetch(event.request);
112
+ return bypassEarly();
83
113
  }
84
- const [uri] = event.request.url.split('?', 2);
85
- const request = new Request(`${uri}?t=${Date.now()}`, event.request);
86
- const cacheKey = new Request(`${uri}?v=30`, {
87
- method: event.request.method,
114
+ const [uri] = url.href.split('?', 2);
115
+ const request = new Request(`${uri}?t=${Date.now()}`, _request);
116
+ const v = 38;
117
+ const cacheKey = new Request(`${uri}?v=${(v + 1)}`, {
118
+ method: _request.method,
88
119
  });
89
- const cachedRes = await caches.default.match(cacheKey);
120
+ const kvKey = `${v}${uri.replace('https:/', '')}`;
121
+ const kv = env.PERMA_CACHE;
122
+ let cachedRes: Response | null | undefined;
123
+ let edgeSource = '';
124
+ try {
125
+ const gettingCache = caches.default.match(cacheKey);
126
+ let kvStoredRes: typeof cachedRes;
127
+ const gettingKv = kv
128
+ ? kv.get(kvKey, { type: 'json' }).then((value: any) => {
129
+ if (value) {
130
+ const { body, headers } = value as { body: string, headers: Record<string, string> };
131
+ kvStoredRes = new Response(body, { headers, status: 200 });
132
+ return kvStoredRes;
133
+ }
134
+ kvStoredRes = null;
135
+ return undefined;
136
+ })
137
+ : Promise.resolve(undefined);
138
+ cachedRes = await Promise.race([
139
+ new Promise((resolve) => {
140
+ gettingCache.then((fromCache) => {
141
+ if (fromCache) {
142
+ edgeSource = 'cache';
143
+ resolve(fromCache);
144
+ } else if (kvStoredRes !== undefined) {
145
+ resolve(kvStoredRes);
146
+ } else {
147
+ gettingKv.finally(() => resolve(kvStoredRes));
148
+ }
149
+ });
150
+ }) as Promise<typeof cachedRes>,
151
+ new Promise((resolve) => {
152
+ gettingKv.then((fromKv) => {
153
+ if (fromKv) {
154
+ edgeSource = 'kv';
155
+ resolve(fromKv);
156
+ } else {
157
+ gettingCache.then((fromCache) => resolve(fromCache));
158
+ }
159
+ });
160
+ }) as Promise<typeof cachedRes>,
161
+ ]);
162
+ } catch {
163
+ //
164
+ }
90
165
  let edgeState = 'miss';
91
166
  if (cachedRes) {
92
167
  const cachedStaleAt = Number(cachedRes.headers.get(HEADER_STALE_AT));
@@ -94,8 +169,11 @@ const swr = async (event: FetchEvent) => {
94
169
  edgeState = 'bypass';
95
170
  } else if (Date.now() > cachedStaleAt) {
96
171
  edgeState = 'stale';
97
- event.waitUntil((async () => {
172
+ ctx.waitUntil((async () => {
98
173
  const newCacheRes = toCacheRes(await fetch(request));
174
+ if (kv && checkToKvCache(newCacheRes)) {
175
+ ctx.waitUntil(putKvCache(kv, kvKey, newCacheRes));
176
+ }
99
177
  return caches.default.put(cacheKey, newCacheRes);
100
178
  })());
101
179
  } else {
@@ -106,15 +184,18 @@ const swr = async (event: FetchEvent) => {
106
184
  const { cacheControl, staleAt } = resolveCacheControl(response);
107
185
  if (!cachedRes && response.ok) {
108
186
  const newCacheRes = toCacheRes(response, cacheControl, staleAt);
109
- event.waitUntil(caches.default.put(cacheKey, newCacheRes));
187
+ ctx.waitUntil(caches.default.put(cacheKey, newCacheRes));
188
+ if (kv && checkToKvCache(newCacheRes)) {
189
+ ctx.waitUntil(putKvCache(kv, kvKey, newCacheRes));
190
+ }
110
191
  }
111
192
  return addHeaders(response, {
112
193
  [HEADER_CACHE_CONTROL]: cacheControl,
113
194
  'x-edge-state': edgeState,
195
+ 'x-edge-src': edgeSource,
114
196
  });
115
197
  };
116
198
 
117
- // eslint-disable-next-line no-restricted-globals
118
- addEventListener('fetch', (event) => {
119
- event.respondWith(swr(event));
120
- });
199
+ export default {
200
+ fetch: swr,
201
+ };
@@ -143,11 +143,11 @@ export default async (req: Request, res: Response) => {
143
143
  };
144
144
 
145
145
  const fallback = (err: any, status = 500) => {
146
- if (url !== '/fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
146
+ if (url !== '/~fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
147
147
  setStatusAndCache(status, 'public, max-age=120')
148
148
  .send('<html><head>'
149
149
  + '<meta http-equiv="refresh" content="0; '
150
- + `url=/fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
150
+ + `url=/~fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
151
151
  + `</head><body>${err.toString()}</body></html>`);
152
152
  } else {
153
153
  setStatusAndCache(status, 'public, max-age=120, s-maxage=600')
@@ -11,8 +11,8 @@ let defaultThemeOptions = {
11
11
  warningColor: 'amber',
12
12
  dangerColor: 'rose',
13
13
  // IntelliSense for UnoCSS icons
14
- brandIcons: 'fa6-brands',
15
- brandIconsShortcuts: [
14
+ brandIconSets: ['fa6-brands'],
15
+ brandIconShortcuts: [
16
16
  'facebook',
17
17
  'twitter',
18
18
  'instagram',
@@ -27,8 +27,8 @@ let defaultThemeOptions = {
27
27
  'messenger',
28
28
  'pix',
29
29
  ],
30
- brandLogos: 'logos',
31
- brandLogosShortcuts: [
30
+ logoIconSets: ['logos'],
31
+ logoIconShortcuts: [
32
32
  'visa',
33
33
  'mastercard',
34
34
  'paypal',
@@ -38,8 +38,9 @@ let defaultThemeOptions = {
38
38
  'elo',
39
39
  'hipercard',
40
40
  'dinersclub',
41
+ 'discover',
41
42
  ],
42
- generalIcons: 'heroicons',
43
+ generalIconSets: ['heroicons'],
43
44
  iconAliases: {
44
45
  close: 'x-mark',
45
46
  'chevron-right': 'chevron-right',
@@ -118,15 +119,15 @@ Object.keys(brandColors).forEach((colorName) => {
118
119
 
119
120
  const genTailwindConfig = (themeOptions = {}) => {
120
121
  const {
121
- brandIcons,
122
- brandIconsShortcuts,
123
- brandLogos,
124
- brandLogosShortcuts,
125
- generalIcons,
126
122
  baseColor,
127
123
  successColor,
128
124
  warningColor,
129
125
  dangerColor,
126
+ brandIconSets,
127
+ brandIconShortcuts,
128
+ logoIconSets,
129
+ logoIconShortcuts,
130
+ generalIconSets,
130
131
  iconAliases,
131
132
  } = deepmerge(defaultThemeOptions, themeOptions);
132
133
  const config = {
@@ -161,15 +162,21 @@ const genTailwindConfig = (themeOptions = {}) => {
161
162
  };
162
163
  return utilities;
163
164
  }, {}),
164
- ...[{
165
- iconset: generalIcons,
166
- }, {
167
- iconset: brandIcons,
168
- shortcuts: brandIconsShortcuts,
169
- }, {
170
- iconset: brandLogos,
171
- shortcuts: brandLogosShortcuts,
172
- }].reduce((utilities, { iconset, shortcuts }) => {
165
+ ...[
166
+ /* Reverse because custom icon sets are pushed to arrays after
167
+ default theme ones on `deepmerge`, we want custom icon sets first */
168
+ ...generalIconSets.reverse().map((iconset) => {
169
+ return typeof iconset === 'string' ? { iconset } : iconset;
170
+ }),
171
+ ...brandIconSets.reverse().map((iconset) => ({
172
+ iconset,
173
+ shortcuts: brandIconShortcuts,
174
+ })),
175
+ ...logoIconSets.reverse().map((iconset) => ({
176
+ iconset,
177
+ shortcuts: logoIconShortcuts,
178
+ })),
179
+ ].reduce((utilities, { iconset, shortcuts }) => {
173
180
  if (iconset) {
174
181
  if (!shortcuts) {
175
182
  const { icons } = require(`@iconify-json/${iconset}`);
@@ -181,17 +188,24 @@ const genTailwindConfig = (themeOptions = {}) => {
181
188
  });
182
189
  }
183
190
  shortcuts.forEach((shortcut) => {
191
+ let selector;
192
+ let icon;
184
193
  if (typeof shortcut === 'string') {
185
- utilities[`.i-${shortcut}`] = {
186
- '--iconify': iconset,
187
- '--icon': `"${shortcut}"`,
188
- };
194
+ selector = `.i-${shortcut}`;
195
+ icon = shortcut;
189
196
  } else {
190
- utilities[`.i-${shortcut[0]}`] = {
191
- '--iconify': iconset,
192
- '--icon': `"${shortcut[1]}"`,
193
- };
197
+ selector = `.i-${shortcut[0]}`;
198
+ icon = shortcut[1];
194
199
  }
200
+ if (utilities[selector]) {
201
+ // Same shortcut from previous icon set
202
+ return;
203
+ }
204
+ utilities[selector] = {
205
+ '--collection': iconset,
206
+ '--icon': icon,
207
+ '--view': `"https://icones.js.org/collection/${iconset}?s=${icon}"`,
208
+ };
195
209
  });
196
210
  }
197
211
  return utilities;
@@ -46,12 +46,6 @@ Object.keys(onBrandColors).forEach((colorLabel) => {
46
46
  const genUnoCSSConfig = (_tailwindConfig) => {
47
47
  const themeOptions = _tailwindConfig?.themeOptions || {};
48
48
  const {
49
- brandIcons,
50
- brandIconsShortcuts,
51
- brandLogos,
52
- brandLogosShortcuts,
53
- generalIcons,
54
- iconAliases,
55
49
  preflights = [{
56
50
  getCSS: () => {
57
51
  const strCSSVars = Object.entries(colorCSSVars)
@@ -63,13 +57,20 @@ const genUnoCSSConfig = (_tailwindConfig) => {
63
57
  } = deepmerge(defaultThemeOptions, themeOptions);
64
58
  const tailwindConfig = _tailwindConfig || genTailwindConfig(themeOptions);
65
59
  const rules = [];
60
+ const shortcuts = [];
66
61
  tailwindConfig.plugins?.forEach((plugin) => {
67
62
  plugin({
68
63
  addUtilities: (utilities) => {
69
64
  Object.keys(utilities).forEach((s) => {
70
65
  /* Skip icons, custom UI and prose selectors
71
66
  added on tailwind.config.cjs only for IntelliSense */
72
- if (!s.startsWith('.i-') && !s.startsWith('.ui-') && !s.includes('prose')) {
67
+ if (s.startsWith('.i-')) {
68
+ const {
69
+ '--collection': iconset,
70
+ '--icon': icon,
71
+ } = utilities[s];
72
+ shortcuts.push({ [`i-${icon}`]: `i-${iconset}:${icon}` });
73
+ } else if (!s.startsWith('.ui-') && !s.includes('prose')) {
73
74
  rules.push([s.replace('.', ''), utilities[s]]);
74
75
  }
75
76
  });
@@ -80,22 +81,7 @@ const genUnoCSSConfig = (_tailwindConfig) => {
80
81
  return defineConfig({
81
82
  preflights,
82
83
  rules,
83
- shortcuts: [
84
- [/^i-([^:]+)$/, ([, icon]) => `i-${generalIcons}:${icon}`],
85
- ...brandIconsShortcuts.map((brand) => {
86
- return typeof brand === 'string'
87
- ? { [`i-${brand}`]: `i-${brandIcons}:${brand}` }
88
- : { [`i-${brand[0]}`]: `i-${brandIcons}:${brand[1]}` };
89
- }),
90
- ...brandLogosShortcuts.map((brand) => {
91
- return typeof brand === 'string'
92
- ? { [`i-${brand}`]: `i-${brandLogos}:${brand}` }
93
- : { [`i-${brand[0]}`]: `i-${brandLogos}:${brand[1]}` };
94
- }),
95
- ...Object.keys(iconAliases).map((alias) => {
96
- return { [`i-${alias}`]: `i-${generalIcons}:${iconAliases[alias]}` };
97
- }),
98
- ],
84
+ shortcuts,
99
85
  theme: {
100
86
  ...theme,
101
87
  colors: {