@epic-web/workshop-app 4.2.1 → 4.2.3

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 (41) hide show
  1. package/build/client/assets/{_exerciseNumber-B_VU-pG1.js → _exerciseNumber-s_qbmGEJ.js} +2 -2
  2. package/build/client/assets/{_exerciseNumber-B_VU-pG1.js.map → _exerciseNumber-s_qbmGEJ.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber_.finished-DldgXnJy.js → _exerciseNumber_.finished-DJgT9oaU.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber_.finished-DldgXnJy.js.map → _exerciseNumber_.finished-DJgT9oaU.js.map} +1 -1
  5. package/build/client/assets/{_layout-CGXamJB4.js → _layout-49l6Rvwp.js} +2 -2
  6. package/build/client/assets/_layout-49l6Rvwp.js.map +1 -0
  7. package/build/client/assets/{_layout-CPxDcKGb.js → _layout-D7Qo_r0X.js} +2 -2
  8. package/build/client/assets/{_layout-CPxDcKGb.js.map → _layout-D7Qo_r0X.js.map} +1 -1
  9. package/build/client/assets/client-hints-KnbHFIgn.js +36 -0
  10. package/build/client/assets/client-hints-KnbHFIgn.js.map +1 -0
  11. package/build/client/assets/{diff-Blb5EPiO.js → diff-CLRdJhCn.js} +2 -2
  12. package/build/client/assets/{diff-Blb5EPiO.js.map → diff-CLRdJhCn.js.map} +1 -1
  13. package/build/client/assets/{diff-MSYB00VZ.js → diff-CT3-9rtW.js} +2 -2
  14. package/build/client/assets/{diff-MSYB00VZ.js.map → diff-CT3-9rtW.js.map} +1 -1
  15. package/build/client/assets/{epic-video-BwJwnV_j.js → epic-video-Df7qGSN7.js} +2 -2
  16. package/build/client/assets/{epic-video-BwJwnV_j.js.map → epic-video-Df7qGSN7.js.map} +1 -1
  17. package/build/client/assets/{finished-CGll5TOI.js → finished-Dw3SJA8A.js} +2 -2
  18. package/build/client/assets/{finished-CGll5TOI.js.map → finished-Dw3SJA8A.js.map} +1 -1
  19. package/build/client/assets/{index-zG3_j9lj.js → index-CLnz0tXz.js} +2 -2
  20. package/build/client/assets/{index-zG3_j9lj.js.map → index-CLnz0tXz.js.map} +1 -1
  21. package/build/client/assets/{index-DqBktlAI.js → index-YgRENgjt.js} +2 -2
  22. package/build/client/assets/{index-DqBktlAI.js.map → index-YgRENgjt.js.map} +1 -1
  23. package/build/client/assets/{loading-CaagEELb.js → loading-D-DClzm1.js} +2 -2
  24. package/build/client/assets/{loading-CaagEELb.js.map → loading-D-DClzm1.js.map} +1 -1
  25. package/build/client/assets/{login-2BiFV7_R.js → login-CjvZj820.js} +2 -2
  26. package/build/client/assets/{login-2BiFV7_R.js.map → login-CjvZj820.js.map} +1 -1
  27. package/build/client/assets/{manifest-5e8d103b.js → manifest-50f87ab0.js} +1 -1
  28. package/build/client/assets/{mdx-DdywIxB6.js → mdx-ytg-y2nh.js} +2 -2
  29. package/build/client/assets/{mdx-DdywIxB6.js.map → mdx-ytg-y2nh.js.map} +1 -1
  30. package/build/client/assets/{onboarding-eFvyCmxD.js → onboarding-BxcIdiGj.js} +2 -2
  31. package/build/client/assets/{onboarding-eFvyCmxD.js.map → onboarding-BxcIdiGj.js.map} +1 -1
  32. package/build/client/assets/{root-D_snSGY7.js → root-B02acrJe.js} +2 -2
  33. package/build/client/assets/{root-D_snSGY7.js.map → root-B02acrJe.js.map} +1 -1
  34. package/build/server/index.js +2 -2
  35. package/build/server/index.js.map +1 -1
  36. package/node_modules/@epic-web/client-hints/dist/index.js +32 -20
  37. package/node_modules/@epic-web/client-hints/package.json +1 -1
  38. package/package.json +4 -4
  39. package/build/client/assets/_layout-CGXamJB4.js.map +0 -1
  40. package/build/client/assets/client-hints-BHTHvBjk.js +0 -24
  41. package/build/client/assets/client-hints-BHTHvBjk.js.map +0 -1
@@ -36,32 +36,44 @@ export function getHintUtils(hints) {
36
36
  */
37
37
  function getClientHintCheckScript() {
38
38
  return `
39
- const cookies = document.cookie.split(';').map(c => c.trim()).reduce((acc, cur) => {
40
- const [key, value] = cur.split('=');
41
- acc[key] = value;
42
- return acc;
43
- }, {});
44
- let cookieChanged = false;
45
- const hints = [
46
- ${Object.values(hints)
39
+ // This block of code allows us to check if the client hints have changed and
40
+ // force a reload of the page with updated hints if they have so you don't get
41
+ // a flash of incorrect content.
42
+ function checkClientHints() {
43
+ if (!navigator.cookieEnabled) return;
44
+
45
+ // set a short-lived cookie to make sure we can set cookies
46
+ document.cookie = "canSetCookies=1; Max-Age=60; SameSite=Lax";
47
+ const canSetCookies = document.cookie.includes("canSetCookies=1");
48
+ document.cookie = "canSetCookies=; Max-Age=-1; path=/";
49
+ if (!canSetCookies) return;
50
+
51
+ const cookies = document.cookie.split(';').map(c => c.trim()).reduce((acc, cur) => {
52
+ const [key, value] = cur.split('=');
53
+ acc[key] = value;
54
+ return acc;
55
+ }, {});
56
+
57
+ let cookieChanged = false;
58
+ const hints = [
59
+ ${Object.values(hints)
47
60
  .map((hint) => {
48
61
  const cookieName = JSON.stringify(hint.cookieName);
49
- return `{ name: ${cookieName}, actual: String(${hint.getValueCode}), value: cookies[${cookieName}] ?? encodeURIComponent("${hint.fallback}") }`;
62
+ return `{ name: ${cookieName}, actual: String(${hint.getValueCode}), value: cookies[${cookieName}] != null ? cookies[${cookieName}] : encodeURIComponent("${hint.fallback}") }`;
50
63
  })
51
64
  .join(',\n')}
52
- ];
53
- for (const hint of hints) {
54
- document.cookie = encodeURIComponent(hint.name) + '=' + encodeURIComponent(hint.actual) + '; Max-Age=31536000; path=/';
55
- if (decodeURIComponent(hint.value) !== hint.actual) {
56
- cookieChanged = true;
65
+ ];
66
+ for (const hint of hints) {
67
+ document.cookie = encodeURIComponent(hint.name) + '=' + encodeURIComponent(hint.actual) + '; Max-Age=31536000; path=/';
68
+ if (decodeURIComponent(hint.value) !== hint.actual) {
69
+ cookieChanged = true;
70
+ }
57
71
  }
72
+ if (cookieChanged) window.location.reload();
58
73
  }
59
- // if the cookie changed, reload the page, unless the browser doesn't support
60
- // cookies (in which case we would enter an infinite loop of reloads)
61
- if (cookieChanged && navigator.cookieEnabled) {
62
- window.location.reload();
63
- }
64
- `;
74
+
75
+ checkClientHints();
76
+ `;
65
77
  }
66
78
  return { getHints, getClientHintCheckScript };
67
79
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/client-hints",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Server-render browser-based user preferences (like theme preference and timezone).",
5
5
  "publishConfig": {
6
6
  "access": "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-app",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -38,12 +38,12 @@
38
38
  "@conform-to/react": "^1.0.3",
39
39
  "@conform-to/zod": "^1.0.3",
40
40
  "@epic-web/cachified": "^5.1.2",
41
- "@epic-web/client-hints": "^1.3.0",
41
+ "@epic-web/client-hints": "^1.3.2",
42
42
  "@epic-web/invariant": "^1.0.0",
43
43
  "@epic-web/remember": "^1.0.2",
44
44
  "@epic-web/restore-scroll": "^1.0.1",
45
- "@epic-web/workshop-presence": "4.2.1",
46
- "@epic-web/workshop-utils": "4.2.1",
45
+ "@epic-web/workshop-presence": "4.2.3",
46
+ "@epic-web/workshop-utils": "4.2.3",
47
47
  "@mdx-js/mdx": "^3.0.1",
48
48
  "@mux/mux-player-react": "^2.3.3",
49
49
  "@paralleldrive/cuid2": "^2.2.2",