@mdn/fred 2.4.2 → 2.5.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 (84) hide show
  1. package/.nvmrc +1 -1
  2. package/CHANGELOG.md +39 -0
  3. package/README.md +2 -0
  4. package/components/baseline-indicator/server.js +86 -32
  5. package/components/compat-section/server.js +45 -0
  6. package/components/compat-table/utils.js +10 -0
  7. package/components/compat-table-lazy/element.js +2 -5
  8. package/components/content-section/server.js +4 -22
  9. package/components/curriculum/sidebar.css +1 -1
  10. package/components/env/index.js +1 -1
  11. package/components/left-sidebar/server.css +1 -1
  12. package/components/media/index.css +5 -5
  13. package/components/menu/missing-docs.json +0 -1
  14. package/components/outer-layout/server.js +3 -3
  15. package/components/server/index.js +4 -0
  16. package/components/sidebar-filter/sidebar-filterer.js +4 -2
  17. package/components/specifications-list/server.js +72 -0
  18. package/out/service-worker.js +1 -1
  19. package/out/static/client/{251.db6a4b10ef58ad3a.js → 251.f498960ce719d884.js} +6 -6
  20. package/out/static/client/251.f498960ce719d884.js.map +1 -0
  21. package/out/static/client/{3259.767db1f79a406e65.js → 3259.ac8a5539251c647a.js} +2 -2
  22. package/out/static/client/{3259.767db1f79a406e65.js.map → 3259.ac8a5539251c647a.js.map} +1 -1
  23. package/out/static/client/{5408.a0622390fa1726dc.css → 5408.77c9b71d6a5df982.css} +2 -2
  24. package/out/static/client/{5408.a0622390fa1726dc.css.map → 5408.77c9b71d6a5df982.css.map} +1 -1
  25. package/out/static/client/6002.60280d36f6ea71ff.js +167 -0
  26. package/out/static/client/6002.60280d36f6ea71ff.js.map +1 -0
  27. package/out/static/client/6216.2a29b5ce2a1bf6f6.js +2 -0
  28. package/out/static/client/6216.2a29b5ce2a1bf6f6.js.map +1 -0
  29. package/out/static/client/{9127.4debc5342015b0ec.js → 9127.08c4f752c4186007.js} +2 -2
  30. package/out/static/client/{9127.4debc5342015b0ec.js.map → 9127.08c4f752c4186007.js.map} +1 -1
  31. package/out/static/client/{9204.515db9110e143075.js → 9204.f8aa5d9f8a79f3d4.js} +2 -2
  32. package/out/static/client/{9204.515db9110e143075.js.map → 9204.f8aa5d9f8a79f3d4.js.map} +1 -1
  33. package/out/static/client/9324.61778c81f15bcebc.js +26 -0
  34. package/out/static/client/9324.61778c81f15bcebc.js.map +1 -0
  35. package/out/static/client/{9326.6a60853854f7ec9b.css → 9326.431ef0e548c5f096.css} +2 -2
  36. package/out/static/client/{9326.6a60853854f7ec9b.css.map → 9326.431ef0e548c5f096.css.map} +1 -1
  37. package/out/static/client/{index.2d8f328c434a5768.js → index.ae68bec0e2489b62.js} +4 -4
  38. package/out/static/client/index.ae68bec0e2489b62.js.map +1 -0
  39. package/out/static/client/{runtime.fa41b0d4fa762325.js → runtime.5a92d4f860d6d798.js} +2 -2
  40. package/out/static/client/{runtime.fa41b0d4fa762325.js.map → runtime.5a92d4f860d6d798.js.map} +1 -1
  41. package/out/static/client/stats.json +143 -143
  42. package/out/static/client/{styles-blog-post.c03ec8a22f8d4ff6.css → styles-blog-post.d0b92f36d3ccd2ae.css} +2 -2
  43. package/out/static/client/{styles-blog-post.c03ec8a22f8d4ff6.css.map → styles-blog-post.d0b92f36d3ccd2ae.css.map} +1 -1
  44. package/out/static/client/{styles-curriculum-landing.6700bec8f414e4d9.css → styles-curriculum-landing.9b5fbdd11a9d6c5b.css} +2 -2
  45. package/out/static/client/{styles-curriculum-landing.6700bec8f414e4d9.css.map → styles-curriculum-landing.9b5fbdd11a9d6c5b.css.map} +1 -1
  46. package/out/static/client/{styles-featured-articles.b4ecc71ab736bd5b.css → styles-featured-articles.a2c1f1fd278c9256.css} +2 -2
  47. package/out/static/client/{styles-featured-articles.b4ecc71ab736bd5b.css.map → styles-featured-articles.a2c1f1fd278c9256.css.map} +1 -1
  48. package/out/static/client/{styles-generic-about.8fb97dff70bba559.css → styles-generic-about.8856856e6f4b7e46.css} +2 -2
  49. package/out/static/client/{styles-generic-about.8fb97dff70bba559.css.map → styles-generic-about.8856856e6f4b7e46.css.map} +1 -1
  50. package/out/static/client/styles-global.274bf4a7ba3e88ae.css +2 -0
  51. package/out/static/client/{styles-global.356d25ef0f954fc4.css.map → styles-global.274bf4a7ba3e88ae.css.map} +1 -1
  52. package/out/static/client/{styles-global.8b4b213c704a703e.js → styles-global.64aa0c760d2688b4.js} +1 -1
  53. package/out/static/client/{styles-homepage-contributor-spotlight.2bcbb1476c70410c.css → styles-homepage-contributor-spotlight.5dc97e2f6ae1056d.css} +2 -2
  54. package/out/static/client/{styles-homepage-contributor-spotlight.2bcbb1476c70410c.css.map → styles-homepage-contributor-spotlight.5dc97e2f6ae1056d.css.map} +1 -1
  55. package/out/static/client/{styles-latest-news.ef3b9e57333a87bc.css → styles-latest-news.afe0cccaa067269f.css} +2 -2
  56. package/out/static/client/{styles-latest-news.ef3b9e57333a87bc.css.map → styles-latest-news.afe0cccaa067269f.css.map} +1 -1
  57. package/out/static/client/{styles-left-sidebar.6f954e8939555f77.css → styles-left-sidebar.517b9efefbdeed1d.css} +2 -2
  58. package/out/static/client/{styles-left-sidebar.6f954e8939555f77.css.map → styles-left-sidebar.517b9efefbdeed1d.css.map} +1 -1
  59. package/out/static/legacy/6753.072394f4f09652a0.js +27 -0
  60. package/out/static/legacy/6753.072394f4f09652a0.js.map +1 -0
  61. package/out/static/legacy/asset-manifest.json +5 -5
  62. package/out/static/legacy/{index.85161ba7fe682ee8.html → index.c05c933009dda5b3.html} +1 -1
  63. package/out/static/legacy/stats.json +9 -9
  64. package/out/static/legacy/{yari.01d97d56e30935ec.js → yari.e457418f21984506.js} +3 -3
  65. package/out/static/legacy/{yari.01d97d56e30935ec.js.map → yari.e457418f21984506.js.map} +1 -1
  66. package/out/static/ssr/index.js +160 -144
  67. package/out/static/ssr/index.js.map +1 -1
  68. package/out/static/ssr/stats.json +4 -4
  69. package/package.json +16 -10
  70. package/components/specifications-list/index.js +0 -60
  71. package/out/static/client/251.db6a4b10ef58ad3a.js.map +0 -1
  72. package/out/static/client/6216.f526aaf8b3dedd72.js +0 -2
  73. package/out/static/client/6216.f526aaf8b3dedd72.js.map +0 -1
  74. package/out/static/client/718.071765b571e2315c.js +0 -167
  75. package/out/static/client/718.071765b571e2315c.js.map +0 -1
  76. package/out/static/client/9324.9bb064ea7377127e.js +0 -26
  77. package/out/static/client/9324.9bb064ea7377127e.js.map +0 -1
  78. package/out/static/client/index.2d8f328c434a5768.js.map +0 -1
  79. package/out/static/client/styles-global.356d25ef0f954fc4.css +0 -2
  80. package/out/static/legacy/6753.811fcf40c897d487.js +0 -27
  81. package/out/static/legacy/6753.811fcf40c897d487.js.map +0 -1
  82. /package/out/static/client/{index.2d8f328c434a5768.js.LICENSE.txt → index.ae68bec0e2489b62.js.LICENSE.txt} +0 -0
  83. /package/out/static/legacy/{6753.811fcf40c897d487.js.LICENSE.txt → 6753.072394f4f09652a0.js.LICENSE.txt} +0 -0
  84. /package/out/static/legacy/{yari.01d97d56e30935ec.js.LICENSE.txt → yari.e457418f21984506.js.LICENSE.txt} +0 -0
@@ -9,11 +9,11 @@
9
9
  "assets": [
10
10
  {
11
11
  "name": "index.js",
12
- "size": 1427930
12
+ "size": 1429673
13
13
  }
14
14
  ],
15
15
  "filteredAssets": 0,
16
- "assetsSize": 1427930,
16
+ "assetsSize": 1429673,
17
17
  "auxiliaryAssets": [
18
18
  {
19
19
  "name": "desktop-saving-page.bbb8eedefb3e848f.png",
@@ -317,7 +317,7 @@
317
317
  },
318
318
  {
319
319
  "name": "index.js.map",
320
- "size": 4283319
320
+ "size": 4287986
321
321
  },
322
322
  {
323
323
  "name": "deno.aed70d20abbf1067.svg",
@@ -512,7 +512,7 @@
512
512
  "size": 135602
513
513
  }
514
514
  ],
515
- "auxiliaryAssetsSize": 8746320,
515
+ "auxiliaryAssetsSize": 8750987,
516
516
  "children": {},
517
517
  "childAssets": {}
518
518
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdn/fred",
3
- "version": "2.4.2",
3
+ "version": "2.5.0",
4
4
  "repository": "https://github.com/mdn/fred",
5
5
  "license": "MPL-2.0",
6
6
  "author": "MDN Web Docs",
@@ -44,7 +44,7 @@
44
44
  "@lit-labs/ssr": "^4.0.0",
45
45
  "@lit-labs/ssr-client": "^1.1.8",
46
46
  "@lit/task": "^1.0.3",
47
- "@mdn/rari": "0.2.17",
47
+ "@mdn/rari": "0.2.20",
48
48
  "@mdn/watify": "^1.1.9",
49
49
  "@mozilla/glean": "^5.0.8",
50
50
  "codemirror": "^6.0.1",
@@ -68,14 +68,14 @@
68
68
  "@codemirror/commands": "^6.10.3",
69
69
  "@codemirror/language": "^6.12.3",
70
70
  "@codemirror/lint": "^6.9.5",
71
- "@codemirror/view": "^6.41.0",
71
+ "@codemirror/view": "^6.41.1",
72
72
  "@csstools/postcss-global-data": "^4.0.0",
73
73
  "@eslint/compat": "^2.0.5",
74
74
  "@eslint/js": "^9.39.4",
75
75
  "@fluent/syntax": "^0.19.0",
76
76
  "@jackolope/lit-analyzer": "^3.2.0",
77
77
  "@jackolope/ts-lit-plugin": "^3.1.6",
78
- "@mdn/browser-compat-data": "^7.3.11",
78
+ "@mdn/browser-compat-data": "^7.3.12",
79
79
  "@mdn/yari": "^5.1.2",
80
80
  "@rsdoctor/rspack-plugin": "^1.5.0",
81
81
  "@rspack/cli": "^1.7.11",
@@ -110,8 +110,8 @@
110
110
  "eslint-plugin-unicorn": "^64.0.0",
111
111
  "eslint-plugin-wc": "^3.1.0",
112
112
  "globals": "^17.5.0",
113
- "lefthook": "^2.1.5",
114
- "postcss": "^8.5.9",
113
+ "lefthook": "^2.1.6",
114
+ "postcss": "^8.5.10",
115
115
  "postcss-custom-media": "^12.0.1",
116
116
  "postcss-loader": "^8.2.1",
117
117
  "postcss-mixins": "^12.1.2",
@@ -122,13 +122,13 @@
122
122
  "sass-embedded": "^1.99.0",
123
123
  "sass-loader": "^16.0.7",
124
124
  "spdy": "^4.0.2",
125
- "stylelint": "^17.7.0",
125
+ "stylelint": "^17.9.0",
126
126
  "stylelint-config-recess-order": "^7.7.0",
127
127
  "stylelint-config-standard": "^40.0.0",
128
128
  "svgo-loader": "^5.0.0",
129
129
  "ts-morph": "^28.0.0",
130
- "typescript": "^6.0.2",
131
- "typescript-eslint": "^8.58.2",
130
+ "typescript": "^6.0.3",
131
+ "typescript-eslint": "^8.59.0",
132
132
  "webpack-dev-middleware": "^8.0.3",
133
133
  "webpack-hot-middleware": "^2.26.1",
134
134
  "webpack-merge": "^6.0.1",
@@ -140,8 +140,14 @@
140
140
  "stylelint-order": ">=7.0.1",
141
141
  "tmp": ">=0.2.4"
142
142
  },
143
- "packageManager": "npm@11.6.2",
143
+ "packageManager": "npm@11.12.1",
144
144
  "engines": {
145
145
  "node": ">=24"
146
+ },
147
+ "devEngines": {
148
+ "packageManager": {
149
+ "name": "npm",
150
+ "version": ">=11.8.0"
151
+ }
146
152
  }
147
153
  }
@@ -1,60 +0,0 @@
1
- import { html } from "lit";
2
- import { join } from "lit/directives/join.js";
3
-
4
- /**
5
- * @param {import("@fred").Context} context
6
- * @param {import("@rari").Specification[]} specifications
7
- */
8
- export function SpecificationsList(context, specifications) {
9
- if (specifications.length === 0) {
10
- return html`${context.l10n(
11
- "specifications-list-this-feature-does-not-appear-to",
12
- )`This feature does not appear to be defined in any specification.`}`;
13
- }
14
-
15
- /** @type {Map<string, string[]>} */
16
- const urlsByTitle = new Map();
17
- for (const { title, bcdSpecificationURL: url } of specifications) {
18
- const urls = urlsByTitle.get(title) ?? [];
19
- urls.push(url);
20
- urlsByTitle.set(title, urls);
21
- }
22
-
23
- return html`<table>
24
- <thead>
25
- <tr>
26
- <th scope="col">
27
- ${context.l10n("specifications-list-specification")`Specification`}
28
- </th>
29
- </tr>
30
- </thead>
31
- <tbody>
32
- ${urlsByTitle.entries().map(([title, urls]) =>
33
- urls.map(
34
- (url) =>
35
- html`<tr>
36
- <td>${SpecificationLink(url, title)}</td>
37
- </tr>`,
38
- ),
39
- )}
40
- </tbody>
41
- </table>`;
42
- }
43
-
44
- /**
45
- * @param {string} url
46
- * @param {string} [title]
47
- */
48
- function SpecificationLink(url, title) {
49
- const hash = url.split("#")[1];
50
-
51
- const label = [
52
- title && html`${title}`,
53
- title && hash && html`<br />`,
54
- hash && html`# ${hash}`,
55
- ].filter(Boolean);
56
-
57
- return html`<a class="external" href=${url} rel="noopener" target="_blank"
58
- >${join(label, "")}</a
59
- >`;
60
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"251.db6a4b10ef58ad3a.js","sources":["webpack://@mdn/fred/./components/compat-table-lazy/element.css","webpack://@mdn/fred/./components/global/global.css?1b68","webpack://@mdn/fred/./components/compat-table-lazy/element.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { Task } from \"@lit/task\";\nimport { LitElement, html } from \"lit\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\n\nimport \"../compat-table/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport {\n DEFAULT_LOCALE,\n ISSUE_METADATA_TEMPLATE,\n} from \"../compat-table/constants.js\";\nimport { BCD_BASE_URL } from \"../env/index.js\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * @typedef {{data: import(\"@bcd\").Identifier, browsers: import(\"@bcd\").Browsers}} Compat\n */\n\nexport class MDNCompatTableLazy extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n query: {},\n locale: {},\n };\n\n constructor() {\n super();\n this.query = \"\";\n this.locale = DEFAULT_LOCALE;\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n get _issueUrl() {\n const url = \"https://github.com/mdn/browser-compat-data/issues/new\";\n const sp = new URLSearchParams();\n const metadata = ISSUE_METADATA_TEMPLATE.replaceAll(\n \"$DATE\",\n new Date().toISOString(),\n )\n .replaceAll(\"$QUERY_ID\", this.query)\n .trim();\n sp.set(\n \"mdn-url\",\n `https://developer.mozilla.org${globalThis.location.pathname}`,\n );\n sp.set(\"metadata\", metadata);\n sp.set(\"title\", `${this.query} - Missing compatibility data`);\n sp.set(\"template\", \"data-problem.yml\");\n\n return `${url}?${sp.toString()}`;\n }\n\n get _issueLink() {\n const onClick = (/** @type {MouseEvent} */ event) => {\n event.preventDefault();\n window.open(this._issueUrl, \"_blank\", \"noopener,noreferrer\");\n };\n\n return html`<a\n class=\"bc-github-link external external-icon\"\n href=\"#\"\n @click=${onClick}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=${this.l10n(\n \"compat-link-report-missing-title\",\n )`Report missing compatibility data`}\n >${this.l10n(\"compat-link-report-missing\")`Report this issue`}</a\n >`;\n }\n\n _dataTask = new Task(this, {\n args: () => [this.query],\n task: async ([query], { signal }) => {\n const response = await fetch(\n `${BCD_BASE_URL}/bcd/api/v0/current/${query}.json`,\n { signal },\n );\n if (!response.ok) {\n console.error(\"Failed to fetch BCD data:\", response);\n\n if (response.status === 404) {\n throw html`No compatibility data found for <code>${query}</code>.\n (${this._issueLink})`;\n }\n\n throw html`Got HTTP ${response.status} when fetching browser\n compatibility data for <code>${query}</code>`;\n }\n return /** @type {Promise<Compat>} */ response.json();\n },\n });\n\n render() {\n const noScript = unsafeHTML(\n `<noscript>${this.l10n(\"compat-js-required\")`Enable JavaScript to view this browser compatibility table.`}</noscript>`,\n );\n return this._dataTask.render({\n initial: () => html`<p>${noScript}</p>`,\n pending: () => html`<p>${this.l10n(\"compat-loading\")`Loading…`}</p>`,\n\n complete:\n /**\n * @param {Compat} compat\n */\n (compat) =>\n compat\n ? html`<mdn-compat-table\n query=${this.query}\n locale=${this.locale}\n .data=${compat.data}\n .browserInfo=${compat.browsers}\n ></mdn-compat-table>`\n : html`<p>No compatibility data found</p>`,\n error: (error) => html`<p>${error}</p>`,\n });\n }\n}\n\ncustomElements.define(\"mdn-compat-table-lazy\", MDNCompatTableLazy);\n"],"names":["MDNCompatTableLazy","URLSearchParams","Date","globalThis","window","fetch","console","customElements"],"mappings":"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"}