diff --git a/src/myst.ts b/src/myst.ts index adde20a..d088c10 100644 --- a/src/myst.ts +++ b/src/myst.ts @@ -99,7 +99,6 @@ export async function processArticleMDAST( const { frontmatter: frontmatterRaw } = getFrontmatter(file, mdast); // unnestKernelSpec(rawPageFrontmatter); - console.log(JSON.stringify(frontmatterRaw)); const frontmatter = validatePageFrontmatter(frontmatterRaw, { property: 'frontmatter', messages: {} diff --git a/style/preflight.css b/style/preflight.css index f173e28..f1b111e 100644 --- a/style/preflight.css +++ b/style/preflight.css @@ -5,11 +5,6 @@ /* This is a highly simplified version of https://tailwindcss.com/docs/preflight to work with JupyterLab */ -.myst { - font-size: var(--jp-content-font-size1); - color: var(--jp-content-font-color1); -} - .myst :where(*):not( :where([class~='jp-RenderedHTMLCommon'], [class~='jp-RenderedHTMLCommon'] *) diff --git a/style/tailwind.css b/style/tailwind.css index 49f680d..78bdafe 100644 --- a/style/tailwind.css +++ b/style/tailwind.css @@ -10,3 +10,4 @@ @import url('@myst-theme/styles/block-styles.css'); @import url('@myst-theme/styles/tasklists.css'); @import url('@myst-theme/styles/hover.css'); +@import url('@myst-theme/styles/proof.css'); diff --git a/tailwind.config.js b/tailwind.config.js index 0eb310b..b2185a0 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -20,11 +20,11 @@ module.exports = { typography: theme => ({ DEFAULT: { css: { + fontSize: 'var(--jp-content-font-size1)', + color: 'var(--jp-content-font-color1)', + fontFamily: 'var(--jp-content-font-family)', + lineHeight: 'var(--jp-content-line-height)', p: { - color: 'var(--jp-content-font-color1)', - fontFamily: 'var(--jp-content-font-family)', - fontSize: 'var(--jp-content-font-size1)', - lineHeight: 'var(--jp-content-line-height)', marginTop: 0, marginBottom: '1em' }, @@ -33,8 +33,7 @@ module.exports = { fontWeight: 'var(--jp-content-heading-font-weight, 500)', fontStyle: 'normal', marginTop: 'var(--jp-content-heading-margin-top, 1.2em)', - marginBottom: 'var(--jp-content-heading-margin-bottom, 0.8em)', - color: 'var(--jp-content-font-color1)' + marginBottom: 'var(--jp-content-heading-margin-bottom, 0.8em)' }, 'h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child': { diff --git a/ui-tests/package.json b/ui-tests/package.json index 30a131b..7aaaeb0 100644 --- a/ui-tests/package.json +++ b/ui-tests/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@jupyterlab/galata": "^5.0.5", - "@playwright/test": "^1.37.0" + "@playwright/test": "^1.37.0", + "glob": "^10.3.12" } } diff --git a/ui-tests/tests/files-run.spec.ts b/ui-tests/tests/files-run.spec.ts index 8c0b278..78ec0d0 100644 --- a/ui-tests/tests/files-run.spec.ts +++ b/ui-tests/tests/files-run.spec.ts @@ -3,29 +3,34 @@ import { expect, galata, test } from '@jupyterlab/galata'; import * as path from 'path'; +import { globSync } from 'glob'; -const fileName = 'myst_tests.md'; const FACTORY = 'Markdown Preview'; // test.use({ tmpPath: 'notebook-run-test' }); -test.describe.serial('File Run', () => { - test.beforeEach(async ({ request, page, tmpPath }) => { - const contents = galata.newContentsHelper(request, page); - await contents.uploadFile( - path.resolve(__dirname, `./files/${fileName}`), - `${tmpPath}/${fileName}` - ); - }); +const files = globSync('files/*.md', { cwd: __dirname }); + +for (const file of files) { + const fileName = path.basename(file); + test.describe.serial(`File Run: ${file}`, () => { + test.beforeEach(async ({ request, page, tmpPath }) => { + const contents = galata.newContentsHelper(request, page); + await contents.uploadFile( + path.resolve(__dirname, file), + `${tmpPath}/${fileName}` + ); + }); - test('View Markdown file and render result', async ({ page, tmpPath }) => { - const filePath = `${tmpPath}/${fileName}`; - await page.filebrowser.open(filePath, FACTORY); + test('View Markdown file and render result', async ({ page, tmpPath }) => { + const filePath = `${tmpPath}/${fileName}`; + await page.filebrowser.open(filePath, FACTORY); - const name = path.basename(filePath); - await page.activity.getTab(name); + const name = path.basename(filePath); + await page.activity.getTab(name); - const panel = await page.activity.getPanel(name); + const panel = await page.activity.getPanel(name); - expect(await panel!.screenshot()).toMatchSnapshot(); + expect(await panel!.screenshot()).toMatchSnapshot(); + }); }); -}); +} diff --git a/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-View-Markdown-file-and-render-result-1-linux.png b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-View-Markdown-file-and-render-result-1-linux.png index 45c0f3e..829e46d 100644 Binary files a/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-View-Markdown-file-and-render-result-1-linux.png and b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-View-Markdown-file-and-render-result-1-linux.png differ diff --git a/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-directives-md-View-Markdown-file-and-render-result-1-linux.png b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-directives-md-View-Markdown-file-and-render-result-1-linux.png new file mode 100644 index 0000000..2d838db Binary files /dev/null and b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-directives-md-View-Markdown-file-and-render-result-1-linux.png differ diff --git a/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-typography-md-View-Markdown-file-and-render-result-1-linux.png b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-typography-md-View-Markdown-file-and-render-result-1-linux.png new file mode 100644 index 0000000..49821ba Binary files /dev/null and b/ui-tests/tests/files-run.spec.ts-snapshots/File-Run-files-typography-md-View-Markdown-file-and-render-result-1-linux.png differ diff --git a/ui-tests/tests/files/directives.md b/ui-tests/tests/files/directives.md new file mode 100644 index 0000000..7ece3ac --- /dev/null +++ b/ui-tests/tests/files/directives.md @@ -0,0 +1,46 @@ +--- +title: Directives +date: 2024-04-26 +authors: + - name: Angus Hollands + affiliations: + - 2i2c +--- + +```{note} +:class: dropdown + +This is MyST in a notebook rendered by `jupyterlab-myst`!! +``` + +:::{pull-quote} +We know what we are, but know not what we may be. +::: + +They say the owl was a baker’s daughter. Lord, we know what we are, but know not what we may be. God be at your table. + +:::{prf:proof} +:label: full-proof +Let $z$ be any other point in $S$ and use the fact that $S$ is a linear subspace to deduce + +```{math} +\| y - z \|^2 += \| (y - \hat y) + (\hat y - z) \|^2 += \| y - \hat y \|^2 + \| \hat y - z \|^2 +``` + +Hence $\| y - z \| \geq \| y - \hat y \|$, which completes the proof. +::: + +```{mermaid} +flowchart LR + A[Jupyter Notebook] --> C + B[MyST Markdown] --> C + C(mystmd) --> D{AST} + D <--> E[LaTeX] + E --> F[PDF] + D --> G[Word] + D --> H[React] + D --> I[HTML] + D <--> J[JATS] +``` diff --git a/ui-tests/tests/files/myst_tests.md b/ui-tests/tests/files/myst_tests.md deleted file mode 100644 index 88f9085..0000000 --- a/ui-tests/tests/files/myst_tests.md +++ /dev/null @@ -1,6 +0,0 @@ -# Hello - -```{note} -:class: dropdown -This is MyST in a notebook rendered by `jupyterlab-myst`!! -``` diff --git a/ui-tests/tests/files/typography.md b/ui-tests/tests/files/typography.md new file mode 100644 index 0000000..a70520d --- /dev/null +++ b/ui-tests/tests/files/typography.md @@ -0,0 +1,39 @@ +# Typography + +## Subtitle! + +- Bullet + - List + 1. Containing + 2. Some + - Numbers + +A link https://google.com and an autolink and a custom link [to anywhere!](https://wikipedia.org) + +Term 1 +: Definition + +Term 2 +: Definition + +{kbd}`Ctrl` + {kbd}`Space` + +Fleas \ +Adam \ +Had 'em. + +By Strickland Gillilan + +H{sub}`2`O, and 4{sup}`th` of July + +Well {abbr}`MyST (Markedly Structured Text)` is cool! + +Foo [^a] and Bar [^b] + +[^a]: A footnote +[^b]: Another footnote + +Foo [^c] and Bar [^d] + +[^c]: A footnote +[^d]: Another footnote diff --git a/ui-tests/tests/notebook-run.spec.ts b/ui-tests/tests/notebook-run.spec.ts index 3e5f262..ec49f88 100644 --- a/ui-tests/tests/notebook-run.spec.ts +++ b/ui-tests/tests/notebook-run.spec.ts @@ -3,28 +3,32 @@ import { expect, galata, test } from '@jupyterlab/galata'; import * as path from 'path'; - -const fileName = 'myst_tests.ipynb'; +import { globSync } from 'glob'; // test.use({ tmpPath: 'notebook-run-test' }); -test.describe.serial('Notebook Run', () => { - test.beforeEach(async ({ request, page, tmpPath }) => { - const contents = galata.newContentsHelper(request, page); - await contents.uploadFile( - path.resolve(__dirname, `./notebooks/${fileName}`), - `${tmpPath}/${fileName}` - ); - }); +const files = globSync('notebooks/*.ipynb', { cwd: __dirname }); + +for (const file of files) { + test.describe.serial(`Notebook Run: ${file}`, () => { + const fileName = path.basename(file); + test.beforeEach(async ({ request, page, tmpPath }) => { + const contents = galata.newContentsHelper(request, page); + await contents.uploadFile( + path.resolve(__dirname, file), + `${tmpPath}/${fileName}` + ); + }); - test('Run Notebook and capture cell outputs', async ({ page, tmpPath }) => { - await page.notebook.openByPath(`${tmpPath}/${fileName}`); - await page.notebook.activate(fileName); + test('Run Notebook and capture cell outputs', async ({ page, tmpPath }) => { + await page.notebook.openByPath(`${tmpPath}/${fileName}`); + await page.notebook.activate(fileName); - await page.notebook.run(); + await page.notebook.run(); - const nbPanel = await page.notebook.getNotebookInPanel(); + const nbPanel = await page.notebook.getNotebookInPanel(); - expect(await nbPanel!.screenshot()).toMatchSnapshot(); + expect(await nbPanel!.screenshot()).toMatchSnapshot(); + }); }); -}); +} diff --git a/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-Run-Notebook-and-capture-cell-outputs-1-linux.png b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-Run-Notebook-and-capture-cell-outputs-1-linux.png index d4cdad7..c7cd56d 100644 Binary files a/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-Run-Notebook-and-capture-cell-outputs-1-linux.png and b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-Run-Notebook-and-capture-cell-outputs-1-linux.png differ diff --git a/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-directives-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-directives-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png new file mode 100644 index 0000000..5884cf8 Binary files /dev/null and b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-directives-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png differ diff --git a/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-typography-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-typography-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png new file mode 100644 index 0000000..3ff1242 Binary files /dev/null and b/ui-tests/tests/notebook-run.spec.ts-snapshots/Notebook-Run-notebooks-typography-ipynb-Run-Notebook-and-capture-cell-outputs-1-linux.png differ diff --git a/ui-tests/tests/notebooks/directives.ipynb b/ui-tests/tests/notebooks/directives.ipynb new file mode 100644 index 0000000..bdce31c --- /dev/null +++ b/ui-tests/tests/notebooks/directives.ipynb @@ -0,0 +1,104 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ca08bb8d-dc60-494e-a63e-5a9a7d4be7bd", + "metadata": {}, + "source": [ + "---\n", + "title: Directives\n", + "date: 2024-04-26\n", + "authors:\n", + " - name: Angus Hollands\n", + " affiliations:\n", + " - 2i2c\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "d79b49b1-d263-4759-bfce-699f88f8c778", + "metadata": { + "tags": [] + }, + "source": [ + "```{note}\n", + ":class: dropdown\n", + "\n", + "This is MyST in a notebook rendered by `jupyterlab-myst`!!\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "aaaab279-c281-4f20-8852-dcaa08c0d07c", + "metadata": {}, + "source": [ + ":::{pull-quote}\n", + "We know what we are, but know not what we may be.\n", + ":::\n", + "\n", + "They say the owl was a baker’s daughter. Lord, we know what we are, but know not what we may be. God be at your table." + ] + }, + { + "cell_type": "markdown", + "id": "c2113213-77a9-4ffc-aec8-fe686f85c4a8", + "metadata": {}, + "source": [ + ":::{prf:proof}\n", + ":label: full-proof\n", + "Let $z$ be any other point in $S$ and use the fact that $S$ is a linear subspace to deduce\n", + "\n", + "```{math}\n", + "\\| y - z \\|^2\n", + "= \\| (y - \\hat y) + (\\hat y - z) \\|^2\n", + "= \\| y - \\hat y \\|^2 + \\| \\hat y - z \\|^2\n", + "```\n", + "\n", + "Hence $\\| y - z \\| \\geq \\| y - \\hat y \\|$, which completes the proof.\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "950ad6fc-7ae3-4eaf-a497-03aa5817cf90", + "metadata": {}, + "source": [ + "```{mermaid} \n", + "flowchart LR\n", + " A[Jupyter Notebook] --> C\n", + " B[MyST Markdown] --> C\n", + " C(mystmd) --> D{AST}\n", + " D <--> E[LaTeX]\n", + " E --> F[PDF]\n", + " D --> G[Word]\n", + " D --> H[React]\n", + " D --> I[HTML]\n", + " D <--> J[JATS]\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ui-tests/tests/notebooks/myst_tests.ipynb b/ui-tests/tests/notebooks/myst_tests.ipynb deleted file mode 100644 index bf2a4f0..0000000 --- a/ui-tests/tests/notebooks/myst_tests.ipynb +++ /dev/null @@ -1,61 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "7fd00f2c-690c-4a9d-af67-c9fde0bfc86d", - "metadata": { - "tags": [] - }, - "source": [ - "# Hello\n", - "\n", - "```{note}\n", - ":class: dropdown\n", - "\n", - "This is MyST in a notebook rendered by `jupyterlab-myst`!!\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f3cc605e-a90d-4b26-9771-8f7a27b58134", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.13" - }, - "vscode": { - "interpreter": { - "hash": "a665b5d41d17b532ea9890333293a1b812fa0b73c9c25c950b3cedf1bebd0438" - } - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/ui-tests/tests/notebooks/typography.ipynb b/ui-tests/tests/notebooks/typography.ipynb new file mode 100644 index 0000000..9ff238d --- /dev/null +++ b/ui-tests/tests/notebooks/typography.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e3ccc667-c8e6-4548-bbcb-8ece3891d6b6", + "metadata": { + "tags": [] + }, + "source": [ + "# Typography\n", + "\n", + "## Subtitle!" + ] + }, + { + "cell_type": "markdown", + "id": "70841c8a-f3a4-4979-b9bd-c663e0ed6021", + "metadata": {}, + "source": [ + "- Bullet\n", + " - List\n", + " 1. Containing\n", + " 2. Some\n", + " - Numbers" + ] + }, + { + "cell_type": "markdown", + "id": "d07b65c2-56a6-4eef-8315-a83a29bc8d89", + "metadata": {}, + "source": [ + "A link https://google.com and an autolink and a custom link [to anywhere!](https://wikipedia.org)" + ] + }, + { + "cell_type": "markdown", + "id": "e30ff2f4-b6c2-4728-bb30-1c47cc52fca4", + "metadata": {}, + "source": [ + "Term 1\n", + ": Definition\n", + "\n", + "Term 2\n", + ": Definition" + ] + }, + { + "cell_type": "markdown", + "id": "1cec76fd-466e-4583-95e5-c72a72dae0fa", + "metadata": {}, + "source": [ + "{kbd}`Ctrl` + {kbd}`Space`" + ] + }, + { + "cell_type": "markdown", + "id": "1d47e1fc-d3db-4b7f-a791-fbbf489eb66b", + "metadata": {}, + "source": [ + "Fleas \\\n", + "Adam \\\n", + "Had 'em.\n", + "\n", + "By Strickland Gillilan" + ] + }, + { + "cell_type": "markdown", + "id": "773b0abc-0466-4134-b513-605e3f31392f", + "metadata": {}, + "source": [ + "H{sub}`2`O, and 4{sup}`th` of July" + ] + }, + { + "cell_type": "markdown", + "id": "c4661b3f-918f-4a14-b1d9-4e1f8fcdfab9", + "metadata": {}, + "source": [ + "Well {abbr}`MyST (Markedly Structured Text)` is cool!" + ] + }, + { + "cell_type": "markdown", + "id": "af41d124-6565-4915-9ff4-b97746738a0b", + "metadata": {}, + "source": [ + "Foo [^a] and Bar [^b]\n", + "\n", + "[^a]: A footnote\n", + "[^b]: Another footnote" + ] + }, + { + "cell_type": "markdown", + "id": "35c3a924-acaa-4163-9edc-c1e92151cde9", + "metadata": {}, + "source": [ + "Foo [^c] and Bar [^d]\n", + "\n", + "[^c]: A footnote\n", + "[^d]: Another footnote" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + }, + "vscode": { + "interpreter": { + "hash": "a665b5d41d17b532ea9890333293a1b812fa0b73c9c25c950b3cedf1bebd0438" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ui-tests/yarn.lock b/ui-tests/yarn.lock index de49ac8..aaa7cb6 100644 --- a/ui-tests/yarn.lock +++ b/ui-tests/yarn.lock @@ -1386,13 +1386,13 @@ __metadata: linkType: hard "@playwright/test@npm:^1.32.2, @playwright/test@npm:^1.37.0": - version: 1.41.2 - resolution: "@playwright/test@npm:1.41.2" + version: 1.38.0 + resolution: "@playwright/test@npm:1.38.0" dependencies: - playwright: 1.41.2 + playwright: 1.38.0 bin: playwright: cli.js - checksum: 87d9e725106111b2af1b2dec32454cd2a2d9665ff735669dc751caa30240e6db595ecfb9422719fa65dcff6ca19dea93ac2ae70d587efddde31def0754549d4c + checksum: 0768b6b98f0993d9d8017e4bcca3a5c3fe1bf0270acaa89b141479c4319c16350d60e6d2511cbd655283942059fa409ce23fce30435f0936f5e2577834f356ba languageName: node linkType: hard @@ -2520,6 +2520,21 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.12": + version: 10.3.12 + resolution: "glob@npm:10.3.12" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.3.6 + minimatch: ^9.0.1 + minipass: ^7.0.4 + path-scurry: ^1.10.2 + bin: + glob: dist/esm/bin.mjs + checksum: 2b0949d6363021aaa561b108ac317bf5a97271b8a5d7a5fac1a176e40e8068ecdcccc992f8a7e958593d501103ac06d673de92adc1efcbdab45edefe35f8d7c6 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -2666,7 +2681,7 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": +"jackspeak@npm:^2.3.5, jackspeak@npm:^2.3.6": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" dependencies: @@ -2755,6 +2770,7 @@ __metadata: dependencies: "@jupyterlab/galata": ^5.0.5 "@playwright/test": ^1.37.0 + glob: ^10.3.12 languageName: unknown linkType: soft @@ -2816,6 +2832,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.2.1 + resolution: "lru-cache@npm:10.2.1" + checksum: ae81586eaeb92389fc9a05790d7efd424a29334daa4e513196d6e138a069d0afad1738cfa67773f05b9cb8666fb076f8af88a1b5cc4c7e569202f18a0c032a35 + languageName: node + linkType: hard + "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -2936,7 +2959,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": version: 7.0.4 resolution: "minipass@npm:7.0.4" checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 @@ -3084,6 +3107,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.10.2": + version: 1.10.2 + resolution: "path-scurry@npm:1.10.2" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 6739b4290f7d1a949c61c758b481c07ac7d1a841964c68cf5e1fa153d7e18cbde4872b37aadf9c5173c800d627f219c47945859159de36c977dd82419997b9b8 + languageName: node + linkType: hard + "path@npm:~0.12.7": version: 0.12.7 resolution: "path@npm:0.12.7" @@ -3101,27 +3134,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.41.2": - version: 1.41.2 - resolution: "playwright-core@npm:1.41.2" +"playwright-core@npm:1.38.0": + version: 1.38.0 + resolution: "playwright-core@npm:1.38.0" bin: playwright-core: cli.js - checksum: b41ede0db3fd3e3f7e0b0efbdfb2dbc4db345e113cf9c4451af21d1d5b5d9ab5e969f5662852925e37b2198ae5daab92aa48108fe3d4eb81c849ba8752aaf8cc + checksum: 9eb43fc6c3cb392d5f35b0fd0b7291b38a8cbdc3cbb944a8261f744f30d09196dfa3b5d84aa02ffc09af87d08d31b385b007b6af20d0b6cd50a29344f3b0db8d languageName: node linkType: hard -"playwright@npm:1.41.2": - version: 1.41.2 - resolution: "playwright@npm:1.41.2" +"playwright@npm:1.38.0": + version: 1.38.0 + resolution: "playwright@npm:1.38.0" dependencies: fsevents: 2.3.2 - playwright-core: 1.41.2 + playwright-core: 1.38.0 dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: acf166003ec42cd795f5fca096c5135880d78e84ec2d0a1911b2cab984cf75dc06e50d3aa24b56cbcbc5369ca8c61831e76c5f8674531a272fbd0f6e624fa387 + checksum: c5356690a391d5dd41f814d4e2694b93ba9e79381ce63de752da1c6c59b1f9c69bc6be853d973d0542d73a44a6b15f7c0081a164a64cd27b6b31207710c0ab34 languageName: node linkType: hard