mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-19 18:18:27 -05:00
fix: replace unpkg w/ jsdelivr & cdnjs (#59291)
Co-authored-by: Mrugesh Mohapatra <1884376+raisedadead@users.noreply.github.com> Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
This commit is contained in:
@@ -231,7 +231,7 @@ export async function buildDOMChallenge(
|
|||||||
const isMultifile = challengeFiles.length > 1;
|
const isMultifile = challengeFiles.length > 1;
|
||||||
|
|
||||||
const requiresReact16 = required.some(({ src }) =>
|
const requiresReact16 = required.some(({ src }) =>
|
||||||
src?.includes('https://unpkg.com/react@16')
|
src?.includes('https://cdnjs.cloudflare.com/ajax/libs/react/16.')
|
||||||
);
|
);
|
||||||
|
|
||||||
// I'm reasonably sure this is fine, but we need to migrate transformers to
|
// I'm reasonably sure this is fine, but we need to migrate transformers to
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
"template": "<body><div id='root'></div>${ source || '' }</body>",
|
"template": "<body><div id='root'></div>${ source || '' }</body>",
|
||||||
"required": [
|
"required": [
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react@16.4.0/umd/react.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react/16.4.0/umd/react.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom-test-utils.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom-test-utils.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom-server.browser.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom-server.browser.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://cdnjs.cloudflare.com/ajax/libs/redux/3.7.2/redux.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/redux/3.7.2/redux.min.js"
|
||||||
@@ -69,4 +69,4 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"blockLayout": "legacy-challenge-list"
|
"blockLayout": "legacy-challenge-list"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
"template": "<body><div id='root'></div><div id='challenge-node'></div>${ source || '' }</body>",
|
"template": "<body><div id='root'></div><div id='challenge-node'></div>${ source || '' }</body>",
|
||||||
"required": [
|
"required": [
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react@16.4.0/umd/react.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react/16.4.0/umd/react.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom-test-utils.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom-test-utils.production.min.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https://unpkg.com/react-dom@16.4.0/umd/react-dom-server.browser.production.min.js"
|
"src": "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.0/umd/react-dom-server.browser.production.min.js"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"superBlock": "front-end-development-libraries",
|
"superBlock": "front-end-development-libraries",
|
||||||
@@ -211,4 +211,4 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"blockLayout": "legacy-challenge-list"
|
"blockLayout": "legacy-challenge-list"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,9 +144,9 @@ assert.exists(moodBoard);
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Mood Board</title>
|
<title>Mood Board</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
@@ -231,9 +231,9 @@ body {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Mood Board</title>
|
<title>Mood Board</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -104,9 +104,9 @@ links.forEach(link => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Footer Component</title>
|
<title>Reusable Footer Component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
@@ -146,9 +146,9 @@ export const Footer = () => {};
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Footer Component</title>
|
<title>Reusable Footer Component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -50,10 +50,10 @@ assert.match(code, /export\s+(const|function)\s+Navbar\s*(=\s*)?\(\)\s*(=>\s*)?\
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ assert.equal(document.querySelector('nav')?.getAttribute('class'), 'navbar');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ assert.lengthOf(document.querySelectorAll('ul li'), 3);
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ assert(document.querySelectorAll('ul li')[2]?.classList.contains('nav-item'));
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ assert.equal(document.querySelector('a')?.textContent, 'Dashboard');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ assert.equal(document.querySelectorAll('a')[1]?.textContent, 'Widgets');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -41,10 +41,10 @@ assert.equal(document.querySelector('li button')?.textContent, 'Apps');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ assert.equal(document.querySelector('li ul')?.getAttribute('aria-label'), 'Apps'
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ assert.lengthOf(document.querySelectorAll('.sub-menu li'), 3);
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ assert.equal(document.querySelectorAll('li a')[4]?.getAttribute('href'), '#');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -41,10 +41,10 @@ assert.equal(document.querySelectorAll('li a')[4]?.textContent, 'Email');
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
@@ -193,10 +193,10 @@ export const Navbar = () => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Navbar</title>
|
<title>Reusable Navbar</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ assert.match(functionDefinition, /\{[^{]*bio[^{]*\}/);
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ async () => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -78,10 +78,10 @@ async () => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ async() => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -50,10 +50,10 @@ async () => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -61,10 +61,10 @@ async () => {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -59,10 +59,10 @@ assert.equal(secondCard.querySelector('p:last-child').textContent, 'I have been
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
@@ -161,10 +161,10 @@ export function App() {
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Reusable Card component</title>
|
<title>Reusable Card component</title>
|
||||||
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.js"></script>
|
||||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.3/babel.min.js"></script>
|
||||||
<script
|
<script
|
||||||
data-plugins="transform-modules-umd"
|
data-plugins="transform-modules-umd"
|
||||||
type="text/babel"
|
type="text/babel"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://unpkg.com/knip@5/schema.json",
|
"$schema": "https://cdn.jsdelivr.net/npm/knip@5/schema.json",
|
||||||
"ignoreBinaries": ["create:shared", "install-puppeteer", "pm2"],
|
"ignoreBinaries": ["create:shared", "install-puppeteer", "pm2"],
|
||||||
"ignoreWorkspaces": ["api-server"], // Ignored based on https://github.com/freeCodeCamp/freeCodeCamp/pull/52330#issuecomment-1807917235
|
"ignoreWorkspaces": ["api-server"], // Ignored based on https://github.com/freeCodeCamp/freeCodeCamp/pull/52330#issuecomment-1807917235
|
||||||
"workspaces": {
|
"workspaces": {
|
||||||
|
|||||||
@@ -39,18 +39,23 @@ interface CancelEvent extends MessageEvent {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const TS_VERSION = '5'; // hardcoding for now, in the future this may be dynamic
|
// Pin at the latest TS version available as cdnjs doesn't support version range.
|
||||||
|
const TS_VERSION = '5.7.3';
|
||||||
|
|
||||||
let tsEnv: VirtualTypeScriptEnvironment | null = null;
|
let tsEnv: VirtualTypeScriptEnvironment | null = null;
|
||||||
let compilerHost: CompilerHost | null = null;
|
let compilerHost: CompilerHost | null = null;
|
||||||
let cachedVersion: string | null = null;
|
let cachedVersion: string | null = null;
|
||||||
|
|
||||||
// NOTE: vfs.globals must only be imported once, otherwise it will throw.
|
// NOTE: vfs.globals must only be imported once, otherwise it will throw.
|
||||||
importScripts('https://unpkg.com/@typescript/vfs@1.6.0/dist/vfs.globals.js');
|
importScripts(
|
||||||
|
'https://cdn.jsdelivr.net/npm/@typescript/vfs@1.6.0/dist/vfs.globals.js'
|
||||||
|
);
|
||||||
|
|
||||||
function importTS(version: string) {
|
function importTS(version: string) {
|
||||||
if (cachedVersion == version) return;
|
if (cachedVersion == version) return;
|
||||||
importScripts('https://unpkg.com/typescript@' + version);
|
importScripts(
|
||||||
|
`https://cdnjs.cloudflare.com/ajax/libs/typescript/${version}/typescript.min.js`
|
||||||
|
);
|
||||||
cachedVersion = version;
|
cachedVersion = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user