Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 63 additions & 48 deletions .pnpmfile.cjs
Original file line number Diff line number Diff line change
@@ -1,33 +1,57 @@
// Packages we need to copy versions from for `@wordpress/dataviews/wp`.
const wpPkgs = {
'@wordpress/components': [
'change-case',
'colord',
'date-fns',
'deepmerge',
'@emotion/cache',
'@emotion/css',
'@emotion/react',
'@emotion/styled',
'@emotion/utils',
'fast-deep-equal',
'@floating-ui/react-dom',
'framer-motion',
'highlight-words-core',
'is-plain-object',
'memize',
'@use-gesture/react',
'uuid',
'@wordpress/date',
'@wordpress/hooks',
'react-colorful',
'react-day-picker',
],
'@wordpress/element': [ 'react-dom' ],
'@wordpress/data': [ 'use-memo-one' ],
'@wordpress/ui': [ '@base-ui/react' ],
};
const wpPkgs = [
[ '@wordpress/components', 'change-case' ],
[ '@wordpress/components', 'colord' ],
[ '@wordpress/components', 'date-fns' ],
[ '@wordpress/components', 'deepmerge' ],
[ '@wordpress/components', '@emotion/cache' ],
[ '@wordpress/components', '@emotion/css' ],
[ '@wordpress/components', '@emotion/react' ],
[ '@wordpress/components', '@emotion/styled' ],
[ '@wordpress/components', '@emotion/utils' ],
[ '@wordpress/components', 'fast-deep-equal' ],
[ '@wordpress/components', '@floating-ui/react-dom' ],
[ '@wordpress/components', 'framer-motion' ],
[ '@wordpress/components', 'highlight-words-core' ],
[ '@wordpress/components', 'is-plain-object' ],
[ '@wordpress/components', 'memize' ],
[ '@wordpress/components', '@use-gesture/react' ],
[ '@wordpress/components', 'uuid' ],
[ '@wordpress/components', '@wordpress/date' ],
[ '@wordpress/components', '@wordpress/hooks' ],
[ '@wordpress/components', 'react-colorful' ],
[ '@wordpress/components', 'react-day-picker' ],
[ '@wordpress/element', 'react-dom' ],
[ '@wordpress/data', 'use-memo-one' ],
[ '@wordpress/ui', '@base-ui/react' ],
[ '@wordpress/ui', '@wordpress/theme', 'colorjs.io' ],
];
const wpPkgFetches = {};
const addWpPkgDep = async ( pkg, fromPkg, ver, deplist ) => {
const [ dep, ...rest ] = deplist;

if ( ! wpPkgFetches[ fromPkg ] ) {
wpPkgFetches[ fromPkg ] = fetch( `https://registry.npmjs.org/${ fromPkg }` ).then( r =>
r.json()
);
}
const deps = ( await wpPkgFetches[ fromPkg ] ).versions[ ver ].dependencies;

if ( rest.length > 0 ) {
if ( deps[ dep ] === undefined ) {
// Old version of package lacks a new dep? We'll check in afterAllResolved for it being an old dep instead.
return;
}
const ver2 = deps[ dep ].replace( /^\^/, '' ).replace( /\+[0-9a-f]+$/, '' );
await addWpPkgDep( pkg, dep, ver2, rest );
} else {
if ( deps[ dep ] === undefined ) {
// prettier-ignore
throw new Error( `pnpmfile hack needs updating, ${ fromPkg } ${ ver } doesn't depend on ${ dep } anymore?` );
}
pkg.optionalDependencies[ dep ] = deps[ dep ];
}
};

/**
* Fix package dependencies.
Expand Down Expand Up @@ -88,26 +112,14 @@ async function fixDeps( pkg ) {
// the build fails when using pnpm with hoisting.
// @see https://github.com/WordPress/gutenberg/issues/67864
if ( pkg.name === '@wordpress/dataviews' ) {
for ( const fromPkg of Object.keys( wpPkgs ) ) {
for ( const deplist of wpPkgs ) {
const [ fromPkg, ...rest ] = deplist;
if ( ! pkg.dependencies[ fromPkg ] ) {
// Old version of dataviews lacks a new dep? We'll check in afterAllResolved for it being an old dep instead.
continue;
}

if ( ! wpPkgFetches[ fromPkg ] ) {
wpPkgFetches[ fromPkg ] = fetch( `https://registry.npmjs.org/${ fromPkg }` ).then( r =>
r.json()
);
}
const ver = pkg.dependencies[ fromPkg ].replace( /^\^/, '' ).replace( /\+[0-9a-f]+$/, '' );
const deps = ( await wpPkgFetches[ fromPkg ] ).versions[ ver ].dependencies;
for ( const dep of wpPkgs[ fromPkg ] ) {
if ( deps[ dep ] === undefined ) {
// prettier-ignore
throw new Error( `pnpmfile hack needs updating, ${ fromPkg } ${ ver } doesn't depend on ${ dep } anymore?` );
}
pkg.optionalDependencies[ dep ] = deps[ dep ];
}
await addWpPkgDep( pkg, fromPkg, ver, rest );
}
}

Expand Down Expand Up @@ -499,11 +511,14 @@ function afterAllResolved( lockfile, context ) {
}
}

for ( const fromPkg of Object.keys( wpPkgs ) ) {
if ( ! wpPkgFetches[ fromPkg ] ) {
context.log(
`pnpmfile hack needs updating: wpPkgs['${ fromPkg }'] was not used. Is it obsolete?`
);
for ( const deplist of wpPkgs ) {
for ( const dep of deplist.slice( 0, deplist.length - 1 ) ) {
if ( ! wpPkgFetches[ dep ] ) {
context.log(
// prettier-ignore
`pnpmfile hack needs updating: wpPkgs entry [ ${ deplist.join( ', ' ) } ] was not used. Is it obsolete?`
);
}
}
}

Expand Down
Loading
Loading