|
1 | 1 | 'use strict'
|
2 | 2 |
|
3 |
| -const fs = require('fs') |
4 |
| -const jsdom = require('jsdom') |
5 |
| -const { httpGet } = require('./lib/http') |
6 |
| - |
7 |
| -main() |
8 |
| - |
9 |
| -async function main() { |
10 |
| - const [bcdJson, obsoleteHtml] = await Promise.all([ |
11 |
| - httpGet('https://unpkg.com/@mdn/browser-compat-data/data.json'), |
12 |
| - httpGet('https://html.spec.whatwg.org/multipage/obsolete.html') |
13 |
| - ]) |
14 |
| - const bcd = JSON.parse(bcdJson) |
15 |
| - |
16 |
| - updateDeprecatedHTMLElements() |
17 |
| - updateHTMLElements() |
18 |
| - updateSVGElements() |
19 |
| - |
20 |
| - // ------------------------------------------------------------------------------ |
21 |
| - // Update deprecated-html-elements.json |
22 |
| - // ------------------------------------------------------------------------------ |
23 |
| - function updateDeprecatedHTMLElements() { |
24 |
| - const DEPRECATED_HTML_ELEMENTS_PATH = require.resolve( |
25 |
| - '../lib/utils/deprecated-html-elements.json' |
26 |
| - ) |
27 |
| - const elements = new Set() |
28 |
| - |
29 |
| - const domDl = jsdom.JSDOM.fragment(obsoleteHtml).querySelector( |
30 |
| - '[id="non-conforming-features"] ~ dl' |
31 |
| - ) |
32 |
| - for (const code of domDl.querySelectorAll('dt code')) { |
33 |
| - const name = code.textContent.trim() |
34 |
| - if (name) elements.add(name) |
35 |
| - } |
36 |
| - |
37 |
| - if (elements.size === 0) { |
38 |
| - throw new Error('No deprecated HTML elements found') |
39 |
| - } |
40 |
| - |
41 |
| - fs.writeFileSync( |
42 |
| - DEPRECATED_HTML_ELEMENTS_PATH, |
43 |
| - `${JSON.stringify([...elements].sort(), null, 2)}\n`, |
44 |
| - 'utf8' |
45 |
| - ) |
46 |
| - } |
47 |
| - |
48 |
| - // ------------------------------------------------------------------------------ |
49 |
| - // Update html-elements.json |
50 |
| - // ------------------------------------------------------------------------------ |
51 |
| - function updateHTMLElements() { |
52 |
| - const HTML_ELEMENTS_PATH = require.resolve( |
53 |
| - '../lib/utils/html-elements.json' |
54 |
| - ) |
55 |
| - const elements = new Set() |
56 |
| - const deprecatedHtmlElements = new Set( |
57 |
| - require('../lib/utils/deprecated-html-elements.json') |
58 |
| - ) |
59 |
| - |
60 |
| - for (const [name, element] of Object.entries(bcd.html.elements)) { |
61 |
| - if (deprecatedHtmlElements.has(name)) { |
62 |
| - continue |
63 |
| - } |
64 |
| - if (element.__compat.status.deprecated) { |
65 |
| - continue |
66 |
| - } |
67 |
| - elements.add(name) |
68 |
| - } |
69 |
| - |
70 |
| - if (elements.size === 0) { |
71 |
| - throw new Error('No HTML elements found') |
72 |
| - } |
73 |
| - |
74 |
| - fs.writeFileSync( |
75 |
| - HTML_ELEMENTS_PATH, |
76 |
| - `${JSON.stringify([...elements].sort(), null, 2)}\n`, |
77 |
| - 'utf8' |
78 |
| - ) |
79 |
| - } |
80 |
| - |
81 |
| - // ------------------------------------------------------------------------------ |
82 |
| - // Update svg-elements.json |
83 |
| - // ------------------------------------------------------------------------------ |
84 |
| - function updateSVGElements() { |
85 |
| - const SVG_ELEMENTS_PATH = require.resolve('../lib/utils/svg-elements.json') |
86 |
| - const elements = new Set() |
87 |
| - |
88 |
| - for (const [name, element] of Object.entries(bcd.svg.elements)) { |
89 |
| - if (element.__compat.status.deprecated) { |
90 |
| - continue |
91 |
| - } |
92 |
| - elements.add(name) |
93 |
| - } |
94 |
| - |
95 |
| - if (elements.size === 0) { |
96 |
| - throw new Error('No SVG elements found') |
97 |
| - } |
98 |
| - |
99 |
| - fs.writeFileSync( |
100 |
| - SVG_ELEMENTS_PATH, |
101 |
| - `${JSON.stringify([...elements].sort(), null, 2)}\n`, |
102 |
| - 'utf8' |
103 |
| - ) |
104 |
| - } |
105 |
| -} |
| 3 | +require('./update-vue3-export-names') |
| 4 | +require('./update-html-resources') |
0 commit comments