From dfbbaed9c180ec8e85d0410e763a86fe490b6167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Thu, 4 Aug 2022 18:23:22 +0200 Subject: [PATCH] Writes a PnP spec (#4671) * Writes a PnP spec * Formalizes the algorithms * Updates the PnP header * Addresses feedbacks from https://github.com/evanw/esbuild/pull/1985 * Starts writing reusable tests * More tests, clarifications on FIND_PNP_MANIFEST * Updates style for code segments * Adds tests for aliases * Fixes inadvertent default setting change * Fixes tests * Versions --- .pnp.cjs | 50 ++- ...nderer-npm-1.3.5-5891d32b72-aa58d9c871.zip | Bin 0 -> 127069 bytes ...on-doc-npm-2.1.0-b819def1a3-03ee329d39.zip | Bin 0 -> 5473 bytes .yarn/versions/48b3857e.yml | 28 ++ packages/gatsby/content/advanced/pnp-data.md | 298 +++++++++++++++++ packages/gatsby/package.json | 2 + packages/gatsby/src/components/markdown.js | 7 +- packages/gatsby/static/configuration/pnp.json | 181 ++++++++++ .../sources/tools/getPluginConfiguration.ts | 1 - .../sources/generateSerializedState.ts | 4 +- packages/yarnpkg-pnp/sources/hydratePnpApi.ts | 8 +- .../tests/pnpStandardRunner.test.ts | 46 +++ .../yarnpkg-pnp/tests/testExpectations.json | 311 ++++++++++++++++++ tsconfig.json | 1 + yarn.lock | 20 ++ 15 files changed, 942 insertions(+), 15 deletions(-) create mode 100644 .yarn/cache/prism-react-renderer-npm-1.3.5-5891d32b72-aa58d9c871.zip create mode 100644 .yarn/cache/react-json-doc-npm-2.1.0-b819def1a3-03ee329d39.zip create mode 100644 .yarn/versions/48b3857e.yml create mode 100644 packages/gatsby/content/advanced/pnp-data.md create mode 100644 packages/gatsby/static/configuration/pnp.json create mode 100644 packages/yarnpkg-pnp/tests/pnpStandardRunner.test.ts create mode 100644 packages/yarnpkg-pnp/tests/testExpectations.json diff --git a/.pnp.cjs b/.pnp.cjs index bcd5ddd44759..6632d8403ade 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -6,9 +6,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { return hydrateRuntimeState(JSON.parse('{\ "__info": [\ "This file is automatically generated. Do not touch it, or risk",\ - "your modifications being lost. We also recommend you not to read",\ - "it either without using the @yarnpkg/pnp package, as the data layout",\ - "is entirely unspecified and WILL change from a version to another."\ + "your modifications being lost."\ ],\ "dependencyTreeRoots": [\ {\ @@ -10563,6 +10561,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["monaco-editor", "npm:0.24.0"],\ ["monaco-editor-webpack-plugin", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:3.1.0"],\ ["pify", "npm:4.0.1"],\ + ["prism-react-renderer", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:1.3.5"],\ ["prismjs", "npm:1.23.0"],\ ["prop-types", "npm:15.7.2"],\ ["qs", "npm:6.10.1"],\ @@ -10573,6 +10572,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["react-helmet", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:6.1.0"],\ ["react-icons", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:3.11.0"],\ ["react-instantsearch-dom", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:6.6.0"],\ + ["react-json-doc", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:2.1.0"],\ ["react-monaco-editor", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:0.36.0"],\ ["react-responsive-carousel", "npm:3.2.22"],\ ["react-scroll-into-view-if-needed", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:2.1.7"],\ @@ -33702,6 +33702,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["prism-react-renderer", [\ + ["npm:1.3.5", {\ + "packageLocation": "./.yarn/cache/prism-react-renderer-npm-1.3.5-5891d32b72-aa58d9c871.zip/node_modules/prism-react-renderer/",\ + "packageDependencies": [\ + ["prism-react-renderer", "npm:1.3.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:1.3.5", {\ + "packageLocation": "./.yarn/__virtual__/prism-react-renderer-virtual-ccb828411b/0/cache/prism-react-renderer-npm-1.3.5-5891d32b72-aa58d9c871.zip/node_modules/prism-react-renderer/",\ + "packageDependencies": [\ + ["prism-react-renderer", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:1.3.5"],\ + ["@types/react", "npm:16.9.2"],\ + ["react", "npm:16.13.1"]\ + ],\ + "packagePeers": [\ + "@types/react",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["prismjs", [\ ["npm:1.23.0", {\ "packageLocation": "./.yarn/cache/prismjs-npm-1.23.0-3781560845-8c3cf69150.zip/node_modules/prismjs/",\ @@ -34751,6 +34773,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["react-json-doc", [\ + ["npm:2.1.0", {\ + "packageLocation": "./.yarn/cache/react-json-doc-npm-2.1.0-b819def1a3-03ee329d39.zip/node_modules/react-json-doc/",\ + "packageDependencies": [\ + ["react-json-doc", "npm:2.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:2.1.0", {\ + "packageLocation": "./.yarn/__virtual__/react-json-doc-virtual-a616080193/0/cache/react-json-doc-npm-2.1.0-b819def1a3-03ee329d39.zip/node_modules/react-json-doc/",\ + "packageDependencies": [\ + ["react-json-doc", "virtual:118b26a6cee620b5aa3e7e8d8b8e34cd9e486f75b92701001168da9be550fadd8c9d9b12643c642e2d528c2624fd8fe7e128eec9d715340efac44400432a0e0c#npm:2.1.0"],\ + ["@types/react", "npm:16.9.2"],\ + ["react", "npm:16.13.1"]\ + ],\ + "packagePeers": [\ + "@types/react",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["react-lifecycles-compat", [\ ["npm:3.0.4", {\ "packageLocation": "./.yarn/cache/react-lifecycles-compat-npm-3.0.4-d5e285a39e-a904b0fc0a.zip/node_modules/react-lifecycles-compat/",\ diff --git a/.yarn/cache/prism-react-renderer-npm-1.3.5-5891d32b72-aa58d9c871.zip b/.yarn/cache/prism-react-renderer-npm-1.3.5-5891d32b72-aa58d9c871.zip new file mode 100644 index 0000000000000000000000000000000000000000..69b7ef073163089652c9754befad656f09f7335f GIT binary patch literal 127069 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%0D)=%8xLmT((?cQpZ`<)_y7D~IQW16&;KdFjm`(n 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/react-json-doc-npm-2.1.0-b819def1a3-03ee329d39.zip b/.yarn/cache/react-json-doc-npm-2.1.0-b819def1a3-03ee329d39.zip new file mode 100644 index 0000000000000000000000000000000000000000..3c81c1b463eff11daacf2234cc1251ccaa22c36f GIT binary patch literal 5473 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 R0RXgz3xo^+&=URr^grBZq;&uQ literal 0 HcmV?d00001 diff --git a/.yarn/versions/48b3857e.yml b/.yarn/versions/48b3857e.yml new file mode 100644 index 000000000000..d6c94c7ecc03 --- /dev/null +++ b/.yarn/versions/48b3857e.yml @@ -0,0 +1,28 @@ +releases: + "@yarnpkg/cli": patch + "@yarnpkg/pnp": patch + +declined: + - "@yarnpkg/esbuild-plugin-pnp" + - "@yarnpkg/plugin-compat" + - "@yarnpkg/plugin-constraints" + - "@yarnpkg/plugin-dlx" + - "@yarnpkg/plugin-essentials" + - "@yarnpkg/plugin-init" + - "@yarnpkg/plugin-interactive-tools" + - "@yarnpkg/plugin-nm" + - "@yarnpkg/plugin-npm-cli" + - "@yarnpkg/plugin-pack" + - "@yarnpkg/plugin-patch" + - "@yarnpkg/plugin-pnp" + - "@yarnpkg/plugin-pnpm" + - "@yarnpkg/plugin-stage" + - "@yarnpkg/plugin-typescript" + - "@yarnpkg/plugin-version" + - "@yarnpkg/plugin-workspace-tools" + - "@yarnpkg/builder" + - "@yarnpkg/core" + - "@yarnpkg/doctor" + - "@yarnpkg/nm" + - "@yarnpkg/pnpify" + - "@yarnpkg/sdks" diff --git a/packages/gatsby/content/advanced/pnp-data.md b/packages/gatsby/content/advanced/pnp-data.md new file mode 100644 index 000000000000..dba6537afe12 --- /dev/null +++ b/packages/gatsby/content/advanced/pnp-data.md @@ -0,0 +1,298 @@ +--- +category: advanced +path: /advanced/pnp-spec +title: "PnP Specification" +description: In-depth documentation of the PnP spec. +--- + +```toc +# This code block gets replaced with the Table of Contents +``` + +## About this document + +To make interoperability easier for third-party projects, this document describes the specification we follow when installing files on disk under the [Plug'n'Play install strategy](/features/pnp). It also means: + +- any change we make to this document will follow semver rules +- we'll do our best to preserve backward compatibility +- new features will be intended to gracefully degrade + +## High-level idea + +Plug'n'Play works by keeping in memory a table of all packages part of the dependency tree, in such a way that we can easily answer two different questions: + +- Given a path, what package does it belong to? +- Given a package, where are the dependencies it can access? + +Resolving a package import thus becomes a matter of interlacing those two operations: + +- First, locate which package is requesting the resolution +- Then retrieve its dependencies, check if the requested package is amongst them +- If it is, then retrieve the dependency information, and return its location + +Extra features can then be designed, but are optional. For example, Yarn leverages the information it knows about the project to throw semantic errors when a dependency cannot be resolved: since we know the state of the whole dependency tree, we also know why a package may be missing. + +## Basic concepts + +All packages are uniquely referenced by **locators**. A locator is a combination of a **package ident**, which includes its scope if relevant, and a **package reference**, which can be seen as a unique ID used to distinguish different instances (or versions) of a same package. The package references should be treated as an opaque value: it doesn't matter from a resolution algorithm perspective that they start with `workspace:`, `virtual:`, `npm:`, or any other protocol. + +## Fallback + +For improved compatibility with legacy codebases, Plug'n'Play supports a feature we call "fallback". The fallback triggers when a package makes a resolution request to a dependency it doesn't list in its dependencies. In normal circumstances the resolver would throw, but when the fallback is enabled the resolver should first try to find the dependency packages amongst the dependencies of a set of special packages. If it finds it, it then returns it transparently. + +In a sense, the fallback can be seen as a limited and safer form of hoisting. While hoisting allows unconstrainted access through multiple levels of dependencies, the fallback requires to explicitly define a fallback package - usually the top-level one. + +## Package locations + +While the Plug'n'Play specification doesn't by itself require runtimes to support anything else than the regular filesystem when accessing package files, producers may rely on more complex data storage mechanisms. For instance, Yarn itself requires the two following extensions which we strongly recommend to support: + +### Zip access + +Files named `*.zip` must be treated as folders for the purpose of file access. For instance, `/foo/bar.zip/package.json` requires to access the `package.json` file located within the `/foo/bar.zip` zip archive. + +If writing a JS tool, the [`@yarnpkg/fslib`](https://yarnpkg.com/package/@yarnpkg/fslib) package may be of assistance, providing a zip-aware filesystem layer called `ZipOpenFS`. + +### Virtual folders + +In order to properly represent packages listing peer dependencies, Yarn relies on a concept called [Virtual Packages](/advanced/lexicon#virtual-package). Their most notable property is that they all have different paths (so that Node.js instantiates them as many times as needed), while still being baked by the same concrete folder on disk. + +This is done by adding path support for the following scheme: + +``` +/path/to/some/folder/__virtual__///subpath/to/file.dat +``` + +When this pattern is found, the `__virtual__//` part must be removed, the `hash` ignored, and the `dirname` operation applied `n` times to the `/path/to/some/folder` part. Some examples: + +``` +/path/to/some/folder/__virtual__/a0b1c2d3/0/subpath/to/file.dat +/path/to/some/folder/subpath/to/file.dat + +/path/to/some/folder/__virtual__/e4f5a0b1/0/subpath/to/file.dat +/path/to/some/folder/subpath/to/file.dat (different hash, same result) + +/path/to/some/folder/__virtual__/a0b1c2d3/1/subpath/to/file.dat +/path/to/some/subpath/to/file.dat + +/path/to/some/folder/__virtual__/a0b1c2d3/3/subpath/to/file.dat +/path/subpath/to/file.dat +``` + +If writing a JS tool, the [`@yarnpkg/fslib`](https://yarnpkg.com/package/@yarnpkg/fslib) package may be of assistance, providing a virtual-aware filesystem layer called `VirtualFS`. + +## Manifest reference + +When [`pnpEnableInlining`](/configuration/yarnrc#pnpEnableInlining) is explicitly set to `false`, Yarn will generate an additional `.pnp.data.json` file containing the following fields. + +This document only covers the data file itself - you should define your own in-memory data structures, populated at runtime with the information from the manifest. For example, Yarn turns the `packageRegistryData` table into two separate memory tables: one that maps a path to a package, and another that maps a package to a path. + +> **Note:** You may notice that various places use arrays of tuples in place of maps. This is mostly intended to make it easier to hydrate ES6 maps, but also sometimes to have non-string keys (for instance `packageRegistryData` will have a `null` key in one particular case). + +import pnpSchema from '@yarnpkg/gatsby/static/configuration/pnp.json'; +import theme from 'prism-react-renderer/themes/vsDark'; +import {JsonDoc} from 'react-json-doc'; + + + +## Resolution algorithm + +> **Note:** for simplicity, this algorithm doesn't mention all the Node.js features that allow mapping a module to another, such as [`imports`](https://nodejs.org/api/packages.html#imports), [`exports`](https://nodejs.org/api/packages.html#exports), or other vendor-specific features. + +### NM_RESOLVE(`specifier`, `parentURL`) + +1. This function is specified in the [Node.js documentation](https://nodejs.org/api/esm.html#resolver-algorithm-specification) + +### PNP_RESOLVE(`specifier`, `parentURL`) + +1. Let `resolved` be **undefined** + +2. If `specifier` is a Node.js builtin, then + + 1. Set `resolved` to `specifier` itself and return it + +3. Otherwise, if `specifier` starts with "/", "./", or "../", then + + 1. Set `resolved` to **NM_RESOLVE**(`specifier`, `parentURL`) and return it + +4. Otherwise, + + 1. Note: `specifier` is now a bare identifier + + 2. Let `unqualified` be **RESOLVE_TO_UNQUALIFIED**(`specifier`, `parentURL`) + + 3. Set `resolved` to **NM_RESOLVE**(`unqualified`, `parentURL`) + +### RESOLVE_TO_UNQUALIFIED(`specifier`, `parentURL`) + +1. Let `resolved` be **undefined** + +2. Let `ident` and `modulePath` be the result of **PARSE_BARE_IDENTIFIER**(`specifier`) + +3. Let `manifest` be **FIND_PNP_MANIFEST**(`parentURL`) + +4. If `manifest` is null, then + + 1. Set `resolved` to **NM_RESOLVE**(`specifier`, `parentURL`) and return it + +5. Let `parentLocator` be **FIND_LOCATOR**(`manifest`, `parentURL`) + +6. If `parentLocator` is null, then + + 1. Set `resolved` to **NM_RESOLVE**(`specifier`, `parentURL`) and return it + +7. Let `parentPkg` be **GET_PACKAGE**(`manifest`, `parentLocator`) + +8. Let `referenceOrAlias` be the entry from `parentPkg.packageDependencies` referenced by `ident` + +9. If `referenceOrAlias` is **undefined**, then + + 1. If `manifest.enableTopLevelFallback` is **true**, then + + 1. If `parentLocator` **isn't** in `manifest.fallbackExclusionList`, then + + 1. Set `referenceOrAlias` to **RESOLVE_VIA_FALLBACK**(`manifest`, `ident`) + +10. If `referenceOrAlias` is still **undefined**, then + + 1. Throw a resolution error + +11. If `referenceOrAlias` is **null**, then + + 1. Note: It means that `parentPkg` has an unfulfilled peer dependency on `ident` + + 2. Throw a resolution error + +12. Otherwise, if `referenceOrAlias` is an array, then + + 1. Let `alias` be `referenceOrAlias` + + 2. Let `dependencyPkg` be **GET_PACKAGE**(`manifest`, `alias`) + + 3. Return `dependencyPkg.packageLocation` concatenated with `modulePath` + +13. Otherwise, + + 1. Let `reference` be `referenceOrAlias` + + 2. Let `dependencyPkg` be **GET_PACKAGE**(`manifest`, {`ident`, `reference`}) + + 3. Return `dependencyPkg.packageLocation` concatenated with `modulePath` + +### GET_PACKAGE(`manifest`, `locator`) + +1. Let `referenceMap` be the entry from `parentPkg.packageRegistryData` referenced by `locator.ident` + +2. Let `pkg` be the entry from `referenceMap` referenced by `locator.reference` + +3. Return `pkg` + + 1. Note: `pkg` cannot be **undefined** here; all packages referenced in any of the Plug'n'Play data tables **MUST** have a corresponding entry inside `packageRegistryData`. + +### FIND_LOCATOR(`manifest`, `moduleUrl`) + +Note: The algorithm described here is quite inefficient. You should make sure to prepare data structure more suited for this task when you read the manifest. + +1. Let `bestLength` be **0** + +2. Let `bestLocator` be **null** + +3. Let `relativeUrl` be the relative path between `manifest` and `moduleUrl` + + 1. Note: Make sure it always starts with a `./` or `../` + +4. If `relativeUrl` matches `manifest.ignorePatternData`, then + + 1. Return **null** + +5. For each `referenceMap` value in `manifest.packageRegistryData` + + 1. For each `registryPkg` value in `referenceMap` + + 1. If `registryPkg.discardFromLookup` **isn't true**, then + + 1. If `registryPkg.packageLocation.length` is greater than `bestLength`, then + + 1. If `relativeUrl` starts with `registryPkg.packageLocation`, then + + 1. Set `bestLength` to `registryPkg.packageLocation.length` + + 2. Set `bestLocator` to the current `registryPkg` locator + +6. Return `bestLocator` + +### RESOLVE_VIA_FALLBACK(`manifest`, `specifier`) + +1. Let `topLevelPkg` be **GET_PACKAGE**(`manifest`, {**null**, **null**}) + +2. Let `referenceOrAlias` be the entry from `topLevelPkg.packageDependencies` referenced by `ident` + +3. If `referenceOrAlias` is defined, then + + 1. Return it immediately + +4. Otherwise, + + 1. Let `referenceOrAlias` be the entry from `manifest.fallbackPool` referenced by `ident` + + 2. Return it immediatly, whether it's defined or not + +### FIND_PNP_MANIFEST(`url`) + +Finding the right PnP manifest to use for a resolution isn't always trivial. There are two main options: + +- Assume that there is a single PnP manifest covering the whole project. This is the most common case, as even when referencing third-party projects (for example via the [`portal:` protocol](/features/protocols#whats-the-difference-between-link-and-portal)) their dependency trees are stored in the same manifest as the main project. + + To do that, call **FIND_CLOSEST_PNP_MANIFEST**(`require.main.filename`) once at the start of the process, cache its result, and return it for each call to **FIND_PNP_MANIFEST** (if you're running in Node.js, you can even use `require.resolve('pnpapi')` which will do this work for you). + +- Try to operate within a multi-project world. **This is rarely required**. We support it inside the Node.js PnP loader, but only because of "project generator" tools like `create-react-app` which are run via `yarn create react-app` and require two different projects (the generator one `and` the generated one) to cooperate within the same Node.js process. + + Supporting this use case is difficult, as it requires a bookkeeping mechanism to track the manifests used to access modules, reusing them as much as possible and only looking for a new one when the chain breaks. + +### FIND_CLOSEST_PNP_MANIFEST(`url`) + +1. Let `manifest` be **null** + +2. Let `directoryPath` be the directory for `url` + +3. Let `pnpPath` be `directoryPath` concatenated with `/.pnp.cjs` + +4. If `pnpPath` exists on the filesystem, then + + 1. Let `pnpDataPath` be `directoryPath` concatenated with `/.pnp.data.json` + + 2. Set `manifest` to `JSON.parse(readFile(pnpDataPath))` and return it + +5. Otherwise, if `directoryPath` is `/`, then + + 1. Return **null** + +6. Otherwise, + + 1. Return **FIND_PNP_MANIFEST**(`directoryPath`) + +### PARSE_BARE_IDENTIFIER(`specifier`) + +1. If `specifier` starts with "@", then + + 1. If `specifier` doesn't contain a "/" separator, then + + 1. Throw an error + + 2. Otherwise, + + 1. Set `ident` to the substring of `specifier` until the second "/" separator or the end of string, whatever happens first + +2. Otherwise, + + 1. Set `ident` to the substring of `specifier` until the first "/" separator or the end of string, whatever happens first + +3. Set `modulePath` to the substring of `specifier` starting from `ident.length` + +4. Return {`ident`, `modulePath`} diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index e7be9c41330c..ee7be0caea5c 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -61,6 +61,7 @@ "monaco-editor": "^0.24.0", "monaco-editor-webpack-plugin": "^3.1.0", "pify": "^4.0.1", + "prism-react-renderer": "^1.3.5", "prismjs": "^1.23.0", "prop-types": "^15.7.2", "qs": "^6.7.0", @@ -71,6 +72,7 @@ "react-helmet": "^6.1.0", "react-icons": "^3.10.0", "react-instantsearch-dom": "^6.6.0", + "react-json-doc": "^2.1.0", "react-monaco-editor": "^0.36.0", "react-responsive-carousel": "^3.2.22", "react-scroll-into-view-if-needed": "^2.1.7", diff --git a/packages/gatsby/src/components/markdown.js b/packages/gatsby/src/components/markdown.js index 27f9f0841f41..241567fdb1b4 100644 --- a/packages/gatsby/src/components/markdown.js +++ b/packages/gatsby/src/components/markdown.js @@ -36,8 +36,7 @@ const EditLink = styled.a` const Content = styled.div` blockquote { - margin-left: 0; - margin-right: 0; + margin: 1.5em 0; border-left: 5px solid #859daf; @@ -57,6 +56,10 @@ const Content = styled.div` margin: 0; } + blockquote > p + p { + margin-top: 1.5em; + } + a:not(.anchor) { border-bottom: 1px solid; diff --git a/packages/gatsby/static/configuration/pnp.json b/packages/gatsby/static/configuration/pnp.json new file mode 100644 index 000000000000..cfb878b1ecf4 --- /dev/null +++ b/packages/gatsby/static/configuration/pnp.json @@ -0,0 +1,181 @@ +{ + "title": "JSON Schema for Node.js Plug'n'Play data files", + "$schema": "https://json-schema.org/draft/2019-09/schema#", + "description": "The Plug'n'Play data files contains the set of packages used within a project, and their dependencies.", + "__info": [ + "The following document describes the content of the .pnp.data.json files Yarn generates", + "when the `pnpEnableInlining` setting is set to `false`." + ], + "type": "object", + "properties": { + "__info": { + "description": "An array of arbitrary strings; only used as a header field to give some context to Yarn users.", + "type": "array", + "items": { + "type": "string" + }, + "exampleItems": [ + "This file is automatically generated. Do not touch it, or risk", + "your modifications being lost." + ] + }, + "dependencyTreeRoots": { + "description": "A list of package locators that are roots of the dependency tree. There will typically be one entry for each workspace in the project (always at least one, as the top-level package is a workspace by itself).", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^(?:@([^/]+?)/)?([^/]+?)$", + "examples": ["@app/name"] + }, + "reference": { + "type": "string", + "examples": ["workspace:."] + } + } + }, + "exampleItems": [ + {"name": "@app/monorepo", "reference": "workspace:."}, + {"name": "@app/website", "reference": "workspace:website"} + ] + }, + "ignorePatternData": { + "description": "A nullable regexp. If set, all project-relative importer paths should be matched against it. If the match succeeds, the resolution should follow the classic Node.js resolution algorithm rather than the Plug'n'Play one. Note that unlike other paths in the manifest, the one checked against this regexp won't begin by `./`.", + "type": "string", + "examples": ["^examples(/|$)"] + }, + "enableTopLevelFallback": { + "description": "If true, should a dependency resolution fail for an importer that isn't explicitly listed in `fallbackExclusionList`, the runtime must first check whether the resolution would succeed for any of the packages in `fallbackPool`; if it would, transparently return this resolution. Note that all dependencies from the top-level package are implicitly part of the fallback pool, even if not listed here.", + "type": "boolean", + "examples": [true] + }, + "fallbackPool": { + "description": "A map of locators that all packages are allowed to access, regardless whether they list them in their dependencies or not.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^(?:@([^/]+?)/)?([^/]+?)$", + "examples": ["@app/name"] + }, + "reference": { + "type": "string", + "examples": ["workspace:."] + } + } + }, + "exampleItems": [ + {"name": "@app/monorepo", "reference": "workspace:."} + ] + }, + "fallbackExclusionList": { + "description": "A map of packages that must never use the fallback logic, even when enabled. Keys are the package idents, values are sets of references. Combining the ident with each individual reference yields the set of affected locators.", + "type": "array", + "items": { + "type": "array", + "prefixItems": [{ + "type": "string" + }, { + "type": "array", + "foldStyle": false, + "items": { + "type": "string" + } + }] + }, + "exampleItems": [ + ["@app/server", ["workspace:sources/server"]] + ] + }, + "packageRegistryData": { + "description": "This is the main part of the PnP data file. This table contains the list of all packages, first keyed by package ident then by package reference. One entry will have `null` in both fields and represents the absolute top-level package.", + "type": "array", + "foldStyle": true, + "items": { + "type": "array", + "foldStyle": false, + "prefixItems": [{ + "type": "string" + }, { + "type": "array", + "foldStyle": true, + "items": { + "type": "array", + "foldStyle": false, + "prefixItems": [{ + "type": "string" + }, { + "type": "object", + "properties": { + "packageLocation": { + "description": "The location of the package on disk, relative to the Plug'n'Play manifest. This path must begin by either `./` or `../`, and must end with a trailing `/`.", + "type": "string" + }, + "packageDependencies": { + "description": "The set of dependencies that the package is allowed to access. Each entry is a tuple where the first key is a package name, and the value a package reference. Note that this reference may be null! This only happens when a peer dependency is missing.", + "type": "array", + "foldStyle": true, + "items": { + "type": "array", + "foldStyle": false, + "prefixItems": [{ + "type": "string" + }, { + "type": "string" + }] + } + }, + "linkType": { + "description": "Can be either SOFT, or HARD. Hard package links are the most common, and mean that the target location is fully owned by the package manager. Soft links, on the other hand, typically point to arbitrary user-defined locations on disk.\nThe link type shouldn't matter much for most implementors - it's only needed because of some subtleties involved in turning a Plug'n'Play tree into a node_modules one.", + "type": "string", + "enum": ["SOFT", "HARD"] + }, + "discardFromLookup": { + "description": "If true, this optional field indicates that the package must not be considered when the Plug'n'Play runtime tries to figure out the package that contains a given path. This is for instance what we use when using the `link:` protocol, as they often point to subfolders of a package, not to other packages.", + "type": "boolean" + }, + "packagePeers": { + "description": "A list of packages that are peer dependencies. Just like `linkType`, this field isn't used by the Plug'n'Play runtime itself, but only by tools that may want to leverage the data file to create a node_modules folder.", + "type": "array", + "items": { + "type": "string" + } + } + } + }] + } + }] + }, + "exampleItems": [ + [null, [ + [null, { + "packageLocation": "./", + "packageDependencies": [ + ["react", "npm:18.0.0"] + ], + "packagePeers": [], + "linkType": "SOFT", + "discardFromLookup": false + }] + ]], + ["react", [ + ["npm:18.0.0", { + "packageLocation": "./.yarn/cache/react-npm-18.0.0-a0b1c2d3.zip", + "packageDependencies": [ + ["react-dom", null] + ], + "packagePeers": [ + "react-dom" + ], + "linkType": "HARD", + "discardFromLookup": false + }] + ]] + ] + } + } +} diff --git a/packages/yarnpkg-cli/sources/tools/getPluginConfiguration.ts b/packages/yarnpkg-cli/sources/tools/getPluginConfiguration.ts index ea588d853a39..95bba319091b 100644 --- a/packages/yarnpkg-cli/sources/tools/getPluginConfiguration.ts +++ b/packages/yarnpkg-cli/sources/tools/getPluginConfiguration.ts @@ -1,4 +1,3 @@ -// @ts-expect-error import packageJson from '@yarnpkg/cli/package.json'; import {PluginConfiguration} from '@yarnpkg/core'; diff --git a/packages/yarnpkg-pnp/sources/generateSerializedState.ts b/packages/yarnpkg-pnp/sources/generateSerializedState.ts index 44c23c310138..081cadb4a9ed 100644 --- a/packages/yarnpkg-pnp/sources/generateSerializedState.ts +++ b/packages/yarnpkg-pnp/sources/generateSerializedState.ts @@ -101,9 +101,7 @@ export function generateSerializedState(settings: PnpSettings): SerializedState // @eslint-ignore-next-line @typescript-eslint/naming-convention __info: [ `This file is automatically generated. Do not touch it, or risk`, - `your modifications being lost. We also recommend you not to read`, - `it either without using the @yarnpkg/pnp package, as the data layout`, - `is entirely unspecified and WILL change from a version to another.`, + `your modifications being lost.`, ], dependencyTreeRoots: settings.dependencyTreeRoots, diff --git a/packages/yarnpkg-pnp/sources/hydratePnpApi.ts b/packages/yarnpkg-pnp/sources/hydratePnpApi.ts index 102acc114d5b..73517cc1d784 100644 --- a/packages/yarnpkg-pnp/sources/hydratePnpApi.ts +++ b/packages/yarnpkg-pnp/sources/hydratePnpApi.ts @@ -1,14 +1,10 @@ import {FakeFS, PortablePath} from '@yarnpkg/fslib'; -import {readFile} from 'fs'; import {dirname} from 'path'; -import {promisify} from 'util'; import {hydrateRuntimeState} from './loader/hydrateRuntimeState'; import {makeApi} from './loader/makeApi'; import {SerializedState} from './types'; -const readFileP = promisify(readFile); - // Note that using those functions is typically NOT needed! The PnP API is // designed to be consumed directly from within Node - meaning that depending // on your situation you probably should use one of those two alternatives @@ -28,8 +24,8 @@ const readFileP = promisify(readFile); // real use case is to access the PnP API without running the risk of executing // third-party Javascript code. -export async function hydratePnpFile(location: string, {fakeFs, pnpapiResolution}: {fakeFs: FakeFS, pnpapiResolution: string}) { - const source = await readFileP(location, `utf8`); +export async function hydratePnpFile(location: PortablePath, {fakeFs, pnpapiResolution}: {fakeFs: FakeFS, pnpapiResolution: string}) { + const source = await fakeFs.readFilePromise(location, `utf8`); return hydratePnpSource(source, { basePath: dirname(location), diff --git a/packages/yarnpkg-pnp/tests/pnpStandardRunner.test.ts b/packages/yarnpkg-pnp/tests/pnpStandardRunner.test.ts new file mode 100644 index 000000000000..fa7bffff98b0 --- /dev/null +++ b/packages/yarnpkg-pnp/tests/pnpStandardRunner.test.ts @@ -0,0 +1,46 @@ +import {Filename, npath, PortablePath, ppath, ZipFS} from '@yarnpkg/fslib'; +import {getLibzipSync} from '@yarnpkg/libzip'; + +import {hydratePnpFile} from '../sources'; + +import expectations from './testExpectations.json'; + +const projectRoot = `/path/to/project` as PortablePath; + +process.env.PNP_DEBUG_LEVEL = `0`; + +for (const {manifest, tests} of expectations) { + const fakeFs = new ZipFS(null, { + libzip: getLibzipSync(), + }); + + fakeFs.mkdirSync(projectRoot, {recursive: true}); + + const pnpApiFile = ppath.join(projectRoot, `.pnp.cjs` as Filename); + fakeFs.writeFileSync(pnpApiFile, `/* something */`); + + const pnpDataFile = ppath.join(projectRoot, `.pnp.data.json` as Filename); + fakeFs.writeJsonSync(pnpDataFile, manifest); + + for (const test of tests) { + it(test.it, async () => { + const pnpApi = await hydratePnpFile(pnpDataFile, {fakeFs, pnpapiResolution: pnpApiFile}); + + const imported = test.imported; + const importer = npath.fromPortablePath(test.importer); + + if (test.expected === `error!`) { + expect(() => { + pnpApi.resolveToUnqualified(imported, importer); + }).toThrow(); + } else { + const resolution = pnpApi.resolveToUnqualified(imported, importer); + const expectation = test.expected !== null + ? npath.fromPortablePath(test.expected as PortablePath) + : null; + + expect(resolution).toEqual(expectation); + } + }); + } +} diff --git a/packages/yarnpkg-pnp/tests/testExpectations.json b/packages/yarnpkg-pnp/tests/testExpectations.json new file mode 100644 index 000000000000..7a44b4339f16 --- /dev/null +++ b/packages/yarnpkg-pnp/tests/testExpectations.json @@ -0,0 +1,311 @@ +[{ + "manifest": { + "__info": [], + "dependencyTreeRoots": [{ + "name": "root", + "reference": "workspace:." + }], + "ignorePatternData": null, + "enableTopLevelFallback": false, + "fallbackPool": [], + "fallbackExclusionList": [], + "packageRegistryData": [ + [null, [ + [null, { + "packageLocation": "./", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["root", [ + ["workspace:.", { + "packageLocation": "./", + "packageDependencies": [["test", "npm:1.0.0"]], + "linkType": "SOFT" + }] + ]], + ["workspace-alias-dependency", [ + ["workspace:workspace-alias-dependency", { + "packageLocation": "./workspace-alias-dependency/", + "packageDependencies": [["alias", ["test", "npm:1.0.0"]]], + "linkType": "SOFT" + }] + ]], + ["workspace-self-dependency", [ + ["workspace:workspace-self-dependency", { + "packageLocation": "./workspace-self-dependency/", + "packageDependencies": [["workspace-self-dependency", "workspace:workspace-self-dependency"]], + "linkType": "SOFT" + }] + ]], + ["workspace-unfulfilled-peer-dependency", [ + ["workspace:workspace-unfulfilled-peer-dependency", { + "packageLocation": "./workspace-unfulfilled-peer-dependency/", + "packageDependencies": [["test", null]], + "linkType": "SOFT" + }] + ]], + ["longer", [ + ["workspace:longer", { + "packageLocation": "./longer/", + "packageDependencies": [["test", "npm:2.0.0"]], + "linkType": "SOFT" + }] + ]], + ["long", [ + ["workspace:long", { + "packageLocation": "./long/", + "packageDependencies": [["test", "npm:1.0.0"]], + "linkType": "SOFT" + }] + ]], + ["longerer", [ + ["workspace:longerer", { + "packageLocation": "./longerer/", + "packageDependencies": [["test", "npm:3.0.0"]], + "linkType": "SOFT" + }] + ]], + ["test", [ + ["npm:1.0.0", { + "packageLocation": "./test-1.0.0/", + "packageDependencies": [], + "linkType": "HARD" + }], + ["npm:2.0.0", { + "packageLocation": "./test-2.0.0/", + "packageDependencies": [], + "linkType": "HARD" + }], + ["npm:3.0.0", { + "packageLocation": "./test-3.0.0/", + "packageDependencies": [], + "linkType": "HARD" + }] + ]] + ] + }, + "tests": [{ + "it": "should allow a package to import one of its dependencies", + "imported": "test", + "importer": "/path/to/project/", + "expected": "/path/to/project/test-1.0.0/" + }, { + "it": "should allow a package to import itself, if specified in its own dependencies", + "imported": "workspace-self-dependency", + "importer": "/path/to/project/workspace-self-dependency/", + "expected": "/path/to/project/workspace-self-dependency/" + }, { + "it": "should allow a package to import an aliased dependency", + "imported": "alias", + "importer": "/path/to/project/workspace-alias-dependency/", + "expected": "/path/to/project/test-1.0.0/" + }, { + "it": "shouldn't allow a package to import something that isn't one of its dependencies", + "imported": "missing-dependency", + "importer": "/path/to/project/", + "expected": "error!" + }, { + "it": "shouldn't accidentally discard the trailing slash from the package locations", + "imported": "test", + "importer": "/path/to/project/long/", + "expected": "/path/to/project/test-1.0.0/" + }, { + "it": "should throw an exception when trying to access an unfulfilled peer dependency", + "imported": "test", + "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", + "expected": "error!" + }] +}, { + "manifest": { + "__info": [], + "dependencyTreeRoots": [{ + "name": "root", + "reference": "workspace:." + }], + "ignorePatternData": null, + "enableTopLevelFallback": true, + "fallbackPool": [ + ["test-2", "npm:1.0.0"], + ["alias", ["test-1", "npm:1.0.0"]] + ], + "fallbackExclusionList": [[ + "workspace-no-fallbacks", + ["workspace:workspace-no-fallbacks"] + ]], + "packageRegistryData": [ + [null, [ + [null, { + "packageLocation": "./", + "packageDependencies": [["test-1", "npm:1.0.0"]], + "linkType": "SOFT" + }] + ]], + ["root", [ + ["workspace:.", { + "packageLocation": "./", + "packageDependencies": [["test-1", "npm:1.0.0"]], + "linkType": "SOFT" + }] + ]], + ["workspace-no-fallbacks", [ + ["workspace:workspace-no-fallbacks", { + "packageLocation": "./workspace-no-fallbacks/", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["workspace-with-fallbacks", [ + ["workspace:workspace-with-fallbacks", { + "packageLocation": "./workspace-with-fallbacks/", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["workspace-unfulfilled-peer-dependency", [ + ["workspace:workspace-unfulfilled-peer-dependency", { + "packageLocation": "./workspace-unfulfilled-peer-dependency/", + "packageDependencies": [ + ["test-1", null], + ["test-2", null] + ], + "linkType": "SOFT" + }] + ]], + ["test-1", [ + ["npm:1.0.0", { + "packageLocation": "./test-1/", + "packageDependencies": [], + "linkType": "HARD" + }] + ]], + ["test-2", [ + ["npm:1.0.0", { + "packageLocation": "./test-2/", + "packageDependencies": [], + "linkType": "HARD" + }] + ]] + ] + }, + "tests": [{ + "it": "should allow resolution coming from the fallback pool if enableTopLevelFallback is set to true", + "imported": "test-1", + "importer": "/path/to/project/", + "expected": "/path/to/project/test-1/" + }, { + "it": "should allow the fallback pool to contain aliases", + "imported": "alias", + "importer": "/path/to/project/", + "expected": "/path/to/project/test-1/" + }, { + "it": "shouldn't use the fallback pool when the importer package is listed in fallbackExclusionList", + "imported": "test-1", + "importer": "/path/to/project/workspace-no-fallbacks/", + "expected": "error!" + }, { + "it": "should implicitly use the top-level package dependencies as part of the fallback pool", + "imported": "test-2", + "importer": "/path/to/project/workspace-with-fallbacks/", + "expected": "/path/to/project/test-2/" + }, { + "it": "should throw an error if a resolution isn't in in the package dependencies, nor inside the fallback pool", + "imported": "test-3", + "importer": "/path/to/project/workspace-with-fallbacks/", + "expected": "error!" + }, { + "it": "should use the top-level fallback if a dependency is missing because of an unfulfilled peer dependency", + "imported": "test-1", + "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", + "expected": "/path/to/project/test-1/" + }, { + "it": "should use the fallback pool if a dependency is missing because of an unfulfilled peer dependency", + "imported": "test-2", + "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", + "expected": "/path/to/project/test-2/" + }] +}, { + "manifest": { + "__info": [], + "dependencyTreeRoots": [{ + "name": "root", + "reference": "workspace:." + }], + "ignorePatternData": null, + "enableTopLevelFallback": false, + "fallbackPool": [ + ["test", "npm:1.0.0"] + ], + "fallbackExclusionList": [], + "packageRegistryData": [ + [null, [ + [null, { + "packageLocation": "./", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["root", [ + ["workspace:.", { + "packageLocation": "./", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["test", [ + ["npm:1.0.0", { + "packageLocation": "./test-1/", + "packageDependencies": [], + "linkType": "HARD" + }] + ]] + ] + }, + "tests": [{ + "it": "should ignore the fallback pool if enableTopLevelFallback is set to false", + "imported": "test", + "importer": "/path/to/project/", + "expected": "error!" + }] +}, { + "manifest": { + "__info": [], + "dependencyTreeRoots": [{ + "name": "root", + "reference": "workspace:." + }], + "ignorePatternData": "^not-a-workspace(/|$)", + "enableTopLevelFallback": false, + "fallbackPool": [], + "fallbackExclusionList": [], + "packageRegistryData": [ + [null, [ + [null, { + "packageLocation": "./", + "packageDependencies": [], + "linkType": "SOFT" + }] + ]], + ["root", [ + ["workspace:.", { + "packageLocation": "./", + "packageDependencies": [["test", "npm:1.0.0"]], + "linkType": "SOFT" + }] + ]], + ["test", [ + ["npm:1.0.0", { + "packageLocation": "./test/", + "packageDependencies": [], + "linkType": "HARD" + }] + ]] + ] + }, + "tests": [{ + "it": "shouldn't go through PnP when trying to resolve dependencies from packages covered by ignorePatternData", + "imported": "test", + "importer": "/path/to/project/not-a-workspace/", + "expected": "error!" + }] +}] diff --git a/tsconfig.json b/tsconfig.json index 33d1d85eae3f..b84e15dca5a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ "lib": ["ES2019"], "module": "commonjs", "noImplicitReturns": true, + "resolveJsonModule": true, "strict": true, "alwaysStrict": false, "target": "ES2019", diff --git a/yarn.lock b/yarn.lock index 8250124de115..06e50069de3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5710,6 +5710,7 @@ __metadata: monaco-editor: ^0.24.0 monaco-editor-webpack-plugin: ^3.1.0 pify: ^4.0.1 + prism-react-renderer: ^1.3.5 prismjs: ^1.23.0 prop-types: ^15.7.2 qs: ^6.7.0 @@ -5720,6 +5721,7 @@ __metadata: react-helmet: ^6.1.0 react-icons: ^3.10.0 react-instantsearch-dom: ^6.6.0 + react-json-doc: ^2.1.0 react-monaco-editor: ^0.36.0 react-responsive-carousel: ^3.2.22 react-scroll-into-view-if-needed: ^2.1.7 @@ -21563,6 +21565,15 @@ pem@dexus/pem: languageName: node linkType: hard +"prism-react-renderer@npm:^1.3.5": + version: 1.3.5 + resolution: "prism-react-renderer@npm:1.3.5" + peerDependencies: + react: ">=0.14.9" + checksum: aa58d9c8711961b9a9684e2d6bba18e79a8e6e46901de9304209e73f671dc6953e7f4383248d2ba82cf8003d1f6ad0f79e23b94efe11b813504b51d3e45626e3 + languageName: node + linkType: hard + "prismjs@npm:^1.23.0": version: 1.23.0 resolution: "prismjs@npm:1.23.0" @@ -22305,6 +22316,15 @@ pem@dexus/pem: languageName: node linkType: hard +"react-json-doc@npm:^2.1.0": + version: 2.1.0 + resolution: "react-json-doc@npm:2.1.0" + peerDependencies: + react: "*" + checksum: 03ee329d39ee71fb4803ca14b2def82b9c082fce2461b5062f41ad2e07a13cb7401fb0ebe3dedfb95ca55d335319acc309f0debb5f5c1db525625c6d8f919d1e + languageName: node + linkType: hard + "react-lifecycles-compat@npm:^3.0.4": version: 3.0.4 resolution: "react-lifecycles-compat@npm:3.0.4"