Enforce latest yarn in CI (#161)

* yarn set version stable

* WIP

* WIP

* add packageManager

* Add nodelinker

* Add engines.node

* Remove node-version

* WIP

* WIP

* Clean up
This commit is contained in:
Pierre Jacquier
2023-05-16 20:49:11 -04:00
committed by GitHub
parent 28eb6ec3f3
commit 56f936484d
5 changed files with 193 additions and 175 deletions

View File

@ -20,10 +20,12 @@ jobs:
- uses: actions/setup-node@v3.6.0
with:
node-version: '18'
cache: 'yarn'
cache: 'yarn'
- run: yarn install
- name: Setup yarn
run: |
yarn set version stable
yarn install --immutable
- run: yarn build

277
.pnp.cjs generated
View File

@ -68,7 +68,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["styled-components", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:5.3.10"],\
["three", "npm:0.152.2"],\
["three-mesh-bvh", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.5.23"],\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76"],\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587"],\
["vite", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:4.3.5"],\
["vite-plugin-node-polyfills", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.8.2"],\
["vitest", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.31.0"]\
@ -3913,7 +3913,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["styled-components", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:5.3.10"],\
["three", "npm:0.152.2"],\
["three-mesh-bvh", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.5.23"],\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76"],\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587"],\
["vite", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:4.3.5"],\
["vite-plugin-node-polyfills", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.8.2"],\
["vitest", "virtual:ff5ad3439f8ec237c0c86796b437c422a681ce7f1211bc52c84c467fd5c19025673469e4b3bd047db74cf4144d670522e4013a081fcd63cc449dbcb3b5b92460#npm:0.31.0"]\
@ -8553,10 +8553,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["typescript", [\
["patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76", {\
"packageLocation": "./.yarn/cache/typescript-patch-72dc6f164f-ab417a2f39.zip/node_modules/typescript/",\
["patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587", {\
"packageLocation": "./.yarn/cache/typescript-patch-f8edcd7439-1f8f3b6aae.zip/node_modules/typescript/",\
"packageDependencies": [\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76"]\
["typescript", "patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587"]\
],\
"linkType": "HARD"\
}]\
@ -18303,118 +18303,6 @@ function hydrateRuntimeState(data, { basePath }) {
};
}
/**
* @param {object} exports
* @param {Set<string>} keys
*/
function loop(exports, keys) {
if (typeof exports === 'string') {
return exports;
}
if (exports) {
let idx, tmp;
if (Array.isArray(exports)) {
for (idx=0; idx < exports.length; idx++) {
if (tmp = loop(exports[idx], keys)) return tmp;
}
} else {
for (idx in exports) {
if (keys.has(idx)) {
return loop(exports[idx], keys);
}
}
}
}
}
/**
* @param {string} name The package name
* @param {string} entry The target entry, eg "."
* @param {number} [condition] Unmatched condition?
*/
function bail(name, entry, condition) {
throw new Error(
condition
? `No known conditions for "${entry}" entry in "${name}" package`
: `Missing "${entry}" export in "${name}" package`
);
}
/**
* @param {string} name the package name
* @param {string} entry the target path/import
*/
function toName(name, entry) {
return entry === name ? '.'
: entry[0] === '.' ? entry
: entry.replace(new RegExp('^' + name + '\/'), './');
}
/**
* @param {object} pkg package.json contents
* @param {string} [entry] entry name or import path
* @param {object} [options]
* @param {boolean} [options.browser]
* @param {boolean} [options.require]
* @param {string[]} [options.conditions]
* @param {boolean} [options.unsafe]
*/
function resolve(pkg, entry='.', options={}) {
let { name, exports } = pkg;
if (exports) {
let { browser, require, unsafe, conditions=[] } = options;
let target = toName(name, entry);
if (target[0] !== '.') target = './' + target;
if (typeof exports === 'string') {
return target === '.' ? exports : bail(name, target);
}
let allows = new Set(['default', ...conditions]);
unsafe || allows.add(require ? 'require' : 'import');
unsafe || allows.add(browser ? 'browser' : 'node');
let key, tmp, isSingle=false;
for (key in exports) {
isSingle = key[0] !== '.';
break;
}
if (isSingle) {
return target === '.'
? loop(exports, allows) || bail(name, target, 1)
: bail(name, target);
}
if (tmp = exports[target]) {
return loop(tmp, allows) || bail(name, target, 1);
}
for (key in exports) {
tmp = key[key.length - 1];
if (tmp === '/' && target.startsWith(key)) {
return (tmp = loop(exports[key], allows))
? (tmp + target.substring(key.length))
: bail(name, target, 1);
}
if (tmp === '*' && target.startsWith(key.slice(0, -1))) {
// do not trigger if no *content* to inject
if (target.substring(key.length - 1).length > 0) {
return (tmp = loop(exports[key], allows))
? tmp.replace('*', target.substring(key.length - 1))
: bail(name, target, 1);
}
}
}
return bail(name, target);
}
}
const ArrayIsArray = Array.isArray;
const JSONStringify = JSON.stringify;
const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;
@ -18475,6 +18363,15 @@ const ERR_INVALID_PACKAGE_CONFIG = createErrorType(
},
Error
);
const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType(
"ERR_PACKAGE_PATH_NOT_EXPORTED",
(pkgPath, subpath, base = void 0) => {
if (subpath === ".")
return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`;
return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`;
},
Error
);
function filterOwnProperties(source, keys) {
const filtered = /* @__PURE__ */ Object.create(null);
@ -18794,12 +18691,121 @@ function patternKeyCompare(a, b) {
return 1;
return 0;
}
function packageImportsResolve({
name,
function isConditionalExportsMainSugar(exports, packageJSONUrl, base) {
if (typeof exports === "string" || ArrayIsArray(exports))
return true;
if (typeof exports !== "object" || exports === null)
return false;
const keys = ObjectGetOwnPropertyNames(exports);
let isConditionalSugar = false;
let i = 0;
for (let j = 0; j < keys.length; j++) {
const key = keys[j];
const curIsConditionalSugar = key === "" || key[0] !== ".";
if (i++ === 0) {
isConditionalSugar = curIsConditionalSugar;
} else if (isConditionalSugar !== curIsConditionalSugar) {
throw new ERR_INVALID_PACKAGE_CONFIG(
url.fileURLToPath(packageJSONUrl),
base,
`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`
);
}
}
return isConditionalSugar;
}
function throwExportsNotFound(subpath, packageJSONUrl, base) {
throw new ERR_PACKAGE_PATH_NOT_EXPORTED(
url.fileURLToPath(new URL(".", packageJSONUrl)),
subpath,
base && url.fileURLToPath(base)
);
}
const emittedPackageWarnings = /* @__PURE__ */ new Set();
function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) {
const pjsonPath = url.fileURLToPath(pjsonUrl);
if (emittedPackageWarnings.has(pjsonPath + "|" + match))
return;
emittedPackageWarnings.add(pjsonPath + "|" + match);
process.emitWarning(
`Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`,
"DeprecationWarning",
"DEP0155"
);
}
function packageExportsResolve({
packageJSONUrl,
packageSubpath,
exports,
base,
conditions,
readFileSyncFn
conditions
}) {
if (isConditionalExportsMainSugar(exports, packageJSONUrl, base))
exports = { ".": exports };
if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) {
const target = exports[packageSubpath];
const resolveResult = resolvePackageTarget(
packageJSONUrl,
target,
"",
packageSubpath,
base,
false,
false,
conditions
);
if (resolveResult == null) {
throwExportsNotFound(packageSubpath, packageJSONUrl, base);
}
return resolveResult;
}
let bestMatch = "";
let bestMatchSubpath;
const keys = ObjectGetOwnPropertyNames(exports);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const patternIndex = StringPrototypeIndexOf(key, "*");
if (patternIndex !== -1 && StringPrototypeStartsWith(
packageSubpath,
StringPrototypeSlice(key, 0, patternIndex)
)) {
if (StringPrototypeEndsWith(packageSubpath, "/"))
emitTrailingSlashPatternDeprecation(
packageSubpath,
packageJSONUrl,
base
);
const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
bestMatch = key;
bestMatchSubpath = StringPrototypeSlice(
packageSubpath,
patternIndex,
packageSubpath.length - patternTrailer.length
);
}
}
}
if (bestMatch) {
const target = exports[bestMatch];
const resolveResult = resolvePackageTarget(
packageJSONUrl,
target,
bestMatchSubpath,
bestMatch,
base,
true,
false,
conditions
);
if (resolveResult == null) {
throwExportsNotFound(packageSubpath, packageJSONUrl, base);
}
return resolveResult;
}
throwExportsNotFound(packageSubpath, packageJSONUrl, base);
}
function packageImportsResolve({ name, base, conditions, readFileSyncFn }) {
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
const reason = "is not a valid internal imports specifier name";
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base));
@ -19267,12 +19273,11 @@ function makeApi(runtimeState, opts) {
return false;
}
const defaultExportsConditions = /* @__PURE__ */ new Set([
`default`,
`node`,
`require`,
...getOptionValue(`--conditions`)
]);
function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions) {
function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) {
const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), {
resolveIgnored: true,
includeDiscardFromLookup: true
@ -19288,6 +19293,8 @@ function makeApi(runtimeState, opts) {
if (!opts.fakeFs.existsSync(manifestPath))
return null;
const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`));
if (pkgJson.exports == null)
return null;
let subpath = ppath.contains(packageLocation, unqualifiedPath);
if (subpath === null) {
throw makeError(
@ -19295,25 +19302,25 @@ function makeApi(runtimeState, opts) {
`unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)`
);
}
if (!isRelativeRegexp.test(subpath))
if (subpath !== `.` && !isRelativeRegexp.test(subpath))
subpath = `./${subpath}`;
let resolvedExport;
try {
resolvedExport = resolve(pkgJson, ppath.normalize(subpath), {
conditions,
unsafe: true
const resolvedExport = packageExportsResolve({
packageJSONUrl: url.pathToFileURL(npath.fromPortablePath(manifestPath)),
packageSubpath: subpath,
exports: pkgJson.exports,
base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null,
conditions
});
return npath.toPortablePath(url.fileURLToPath(resolvedExport));
} catch (error) {
throw makeError(
ErrorCode.EXPORTS_RESOLUTION_FAILED,
error.message,
{ unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions },
`ERR_PACKAGE_PATH_NOT_EXPORTED`
error.code
);
}
if (typeof resolvedExport === `string`)
return ppath.join(packageLocation, resolvedExport);
return null;
}
function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) {
let stat;
@ -19690,10 +19697,10 @@ Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDi
}
return ppath.normalize(unqualifiedPath);
}
function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions) {
function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) {
if (isStrictRegExp.test(request))
return unqualifiedPath;
const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions);
const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer);
if (unqualifiedExportPath) {
return ppath.normalize(unqualifiedExportPath);
} else {
@ -19780,7 +19787,7 @@ ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)}
if (unqualifiedPath === null)
return null;
const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false;
const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions) : unqualifiedPath;
const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath;
return resolveUnqualified(remappedPath, { extensions });
} catch (error) {
if (Object.prototype.hasOwnProperty.call(error, `pnpCode`))

75
.pnp.loader.mjs generated
View File

@ -1333,6 +1333,7 @@ const HAS_CONSOLIDATED_HOOKS = major > 16 || major === 16 && minor >= 12;
const HAS_UNFLAGGED_JSON_MODULES = major > 17 || major === 17 && minor >= 5 || major === 16 && minor >= 15;
const HAS_JSON_IMPORT_ASSERTION_REQUIREMENT = major > 17 || major === 17 && minor >= 1 || major === 16 && minor > 14;
const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13;
const HAS_LAZY_LOADED_TRANSLATORS = major > 19 || major === 19 && minor >= 3;
const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`)));
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
@ -1854,12 +1855,7 @@ function patternKeyCompare(a, b) {
return 1;
return 0;
}
function packageImportsResolve({
name,
base,
conditions,
readFileSyncFn
}) {
function packageImportsResolve({ name, base, conditions, readFileSyncFn }) {
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
const reason = "is not a valid internal imports specifier name";
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base));
@ -1988,10 +1984,17 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
}
}
}
const result = pnpapi.resolveRequest(specifier, issuer, {
conditions: new Set(conditions),
extensions: allowLegacyResolve ? void 0 : []
});
let result;
try {
result = pnpapi.resolveRequest(specifier, issuer, {
conditions: new Set(conditions),
extensions: allowLegacyResolve ? void 0 : []
});
} catch (err) {
if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`)
err.code = `ERR_MODULE_NOT_FOUND`;
throw err;
}
if (!result)
throw new Error(`Resolving '${specifier}' from '${issuer}' failed`);
const resultURL = pathToFileURL(result);
@ -2007,32 +2010,34 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
};
}
const binding = process.binding(`fs`);
const originalfstat = binding.fstat;
const ZIP_MASK = 4278190080;
const ZIP_MAGIC = 704643072;
binding.fstat = function(...args) {
const [fd, useBigint, req] = args;
if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) {
try {
const stats = fs.fstatSync(fd);
return new Float64Array([
stats.dev,
stats.mode,
stats.nlink,
stats.uid,
stats.gid,
stats.rdev,
stats.blksize,
stats.ino,
stats.size,
stats.blocks
]);
} catch {
if (!HAS_LAZY_LOADED_TRANSLATORS) {
const binding = process.binding(`fs`);
const originalfstat = binding.fstat;
const ZIP_MASK = 4278190080;
const ZIP_MAGIC = 704643072;
binding.fstat = function(...args) {
const [fd, useBigint, req] = args;
if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) {
try {
const stats = fs.fstatSync(fd);
return new Float64Array([
stats.dev,
stats.mode,
stats.nlink,
stats.uid,
stats.gid,
stats.rdev,
stats.blksize,
stats.ino,
stats.size,
stats.blocks
]);
} catch {
}
}
}
return originalfstat.apply(this, args);
};
return originalfstat.apply(this, args);
};
}
const resolve = resolve$1;
const getFormat = HAS_CONSOLIDATED_HOOKS ? void 0 : getFormat$1;

View File

@ -85,5 +85,9 @@
"vite": "^4.3.5",
"vite-plugin-node-polyfills": "^0.8.2",
"vitest": "^0.31.0"
},
"packageManager": "yarn@3.5.1",
"engines": {
"node": ">=18.0.0"
}
}

View File

@ -7094,11 +7094,11 @@ __metadata:
"typescript@patch:typescript@^4.9.5#~builtin<compat/typescript>":
version: 4.9.5
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76"
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d
checksum: 1f8f3b6aaea19f0f67cba79057674ba580438a7db55057eb89cc06950483c5d632115c14077f6663ea76fd09fce3c190e6414bb98582ec80aa5a4eaf345d5b68
languageName: node
linkType: hard