Skip to content

Commit

Permalink
build(yarn): migrate from v1.2.17 to v3.6.0
Browse files Browse the repository at this point in the history
We hope to solve issues with this that were plaguing contributors due to
bugs in the much older Yarn 1.x versions that we had to use because Yarn V3
had it's own set of problems when it came to linking the .bin folders for
child packages in a monorepo.

1. We've moved from hoisting by default to NOT hoisting by default for
all packages which results in slightly slower installs for the dependencies
when setting up the project build but it does have the beneficial effect
of much easier fixes for compiler errors because each package can be
provided with their own version of whatever dependencies they need.
2. The "pre" and "post" npm scripts are no longer supported by Yarn
which was an annoying breaking change so we had to restructure some of the
scripts which had pre and post scripts of their own to get equal behavior.
3. Upgraded to Yarn v3.6.0
4. packages/cactus-api-client/src/main/typescript/socketio-api-client.ts
has a line where the Typescript compiler has been disabled and an issue
opened for the same: https://github.com/hyperledger/cacti/issues/2523
5. Added several missing dependencies to the individual package.json
files of the packages. These were resolving fine earlier because of hoisting
but the problem of undeclared dependencies went undetected because of this
convenience feature of the NodeJS module resolution algorithm. Now,
instead of having to catch these problems in production, we can fix them
up-front at development time which is great because there were dozens of
them!
6. Migrated from `import` to `import type` in a few places in the code
where it was applicable and useful: when you only import a dependency
via `import type` then it's safe to move it to "devDependencies" because
at runtime the `import type` syntax is completely omitted by the compiler.
7. Refactored the importing of "internal-ip" in a couple of test cases
because the newer version does not export `v4` and `v6` but instead
`internalIpV4`.

Fixes #1142

Signed-off-by: Peter Somogyvari <peter.somogyvari@accenture.com>
  • Loading branch information
petermetz committed Jul 7, 2023
1 parent 6d012c7 commit c48c0f4
Show file tree
Hide file tree
Showing 74 changed files with 44,304 additions and 622,007 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ site/

.build-cache/*.tsbuildinfo

.pnp.*
.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*

!packages/cactus-plugin-ledger-connector-*-socketio/src/main/typescript/common/core/bin

Expand Down
35 changes: 35 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-exec.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* eslint-disable */
//prettier-ignore
module.exports = {
name: "@yarnpkg/plugin-exec",
factory: function (require) {
var plugin=(()=>{var q=Object.create,g=Object.defineProperty,V=Object.defineProperties,_=Object.getOwnPropertyDescriptor,G=Object.getOwnPropertyDescriptors,z=Object.getOwnPropertyNames,M=Object.getOwnPropertySymbols,J=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable;var S=(r,e,t)=>e in r?g(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,d=(r,e)=>{for(var t in e||(e={}))j.call(e,t)&&S(r,t,e[t]);if(M)for(var t of M(e))Y.call(e,t)&&S(r,t,e[t]);return r},U=(r,e)=>V(r,G(e)),B=r=>g(r,"__esModule",{value:!0});var C=(r,e)=>{for(var t in e)g(r,t,{get:e[t],enumerable:!0})},K=(r,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of z(e))!j.call(r,o)&&o!=="default"&&g(r,o,{get:()=>e[o],enumerable:!(t=_(e,o))||t.enumerable});return r},h=r=>K(B(g(r!=null?q(J(r)):{},"default",r&&r.__esModule&&"default"in r?{get:()=>r.default,enumerable:!0}:{value:r,enumerable:!0})),r);var X={};C(X,{default:()=>ee,execUtils:()=>y});var l=h(require("@yarnpkg/core")),n=h(require("@yarnpkg/fslib"));var p="exec:";var y={};C(y,{loadGeneratorFile:()=>P,makeLocator:()=>x,makeSpec:()=>T,parseSpec:()=>v});var u=h(require("@yarnpkg/core")),c=h(require("@yarnpkg/fslib"));function v(r){let{params:e,selector:t}=u.structUtils.parseRange(r),o=c.npath.toPortablePath(t);return{parentLocator:e&&typeof e.locator=="string"?u.structUtils.parseLocator(e.locator):null,path:o}}function T({parentLocator:r,path:e,generatorHash:t,protocol:o}){let a=r!==null?{locator:u.structUtils.stringifyLocator(r)}:{},s=typeof t!="undefined"?{hash:t}:{};return u.structUtils.makeRange({protocol:o,source:e,selector:e,params:d(d({},s),a)})}function x(r,{parentLocator:e,path:t,generatorHash:o,protocol:a}){return u.structUtils.makeLocator(r,T({parentLocator:e,path:t,generatorHash:o,protocol:a}))}async function P(r,e,t){let{parentLocator:o,path:a}=u.structUtils.parseFileStyleRange(r,{protocol:e}),s=c.ppath.isAbsolute(a)?{packageFs:new c.CwdFS(c.PortablePath.root),prefixPath:c.PortablePath.dot,localPath:c.PortablePath.root}:await t.fetcher.fetch(o,t),i=s.localPath?{packageFs:new c.CwdFS(c.PortablePath.root),prefixPath:c.ppath.relative(c.PortablePath.root,s.localPath)}:s;s!==i&&s.releaseFs&&s.releaseFs();let f=i.packageFs,b=c.ppath.join(i.prefixPath,a);return await f.readFilePromise(b,"utf8")}var O=class{supports(e,t){return!!e.reference.startsWith(p)}getLocalPath(e,t){let{parentLocator:o,path:a}=l.structUtils.parseFileStyleRange(e.reference,{protocol:p});if(n.ppath.isAbsolute(a))return a;let s=t.fetcher.getLocalPath(o,t);return s===null?null:n.ppath.resolve(s,a)}async fetch(e,t){let o=t.checksums.get(e.locatorHash)||null,[a,s,i]=await t.cache.fetchPackageFromCache(e,o,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:a,releaseFs:s,prefixPath:l.structUtils.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:i}}async fetchFromDisk(e,t){let o=await P(e.reference,p,t);return n.xfs.mktempPromise(async a=>{let s=n.ppath.join(a,"generator.js");return await n.xfs.writeFilePromise(s,o),n.xfs.mktempPromise(async i=>{if(await this.generatePackage(i,e,s,t),!n.xfs.existsSync(n.ppath.join(i,"build")))throw new Error("The script should have generated a build directory");return await l.tgzUtils.makeArchiveFromDirectory(n.ppath.join(i,"build"),{prefixPath:l.structUtils.getIdentVendorPath(e),compressionLevel:t.project.configuration.get("compressionLevel")})})})}async generatePackage(e,t,o,a){return await n.xfs.mktempPromise(async s=>{let i=await l.scriptUtils.makeScriptEnv({project:a.project,binFolder:s}),f=n.ppath.join(e,"runtime.js");return await n.xfs.mktempPromise(async b=>{let w=n.ppath.join(b,"buildfile.log"),H=null,F=n.xfs.createWriteStream(w),I=F,E=n.ppath.join(e,"generator"),R=n.ppath.join(e,"build");await n.xfs.mkdirPromise(E),await n.xfs.mkdirPromise(R);let W={tempDir:n.npath.fromPortablePath(E),buildDir:n.npath.fromPortablePath(R),locator:l.structUtils.stringifyLocator(t)};await n.xfs.writeFilePromise(f,`
// Expose 'Module' as a global variable
Object.defineProperty(global, 'Module', {
get: () => require('module'),
configurable: true,
enumerable: false,
});
// Expose non-hidden built-in modules as global variables
for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {
Object.defineProperty(global, name, {
get: () => require(name),
configurable: true,
enumerable: false,
});
}
// Expose the 'execEnv' global variable
Object.defineProperty(global, 'execEnv', {
value: {
...${JSON.stringify(W)},
},
enumerable: true,
});
`);let k=i.NODE_OPTIONS||"",$=/\s*--require\s+\S*\.pnp\.c?js\s*/g;k=k.replace($," ").trim(),i.NODE_OPTIONS=k,F.write(`# This file contains the result of Yarn generating a package (${l.structUtils.stringifyLocator(t)})
`),F.write(`
`);let{code:D}=await l.execUtils.pipevp(process.execPath,["--require",n.npath.fromPortablePath(f),n.npath.fromPortablePath(o),l.structUtils.stringifyIdent(t)],{cwd:e,env:i,stdin:H,stdout:F,stderr:I});if(D!==0)throw n.xfs.detachTemp(b),new Error(`Package generation failed (exit code ${D}, logs can be found here: ${w})`)})})}};var N=h(require("@yarnpkg/core")),A=h(require("@yarnpkg/core")),m=h(require("@yarnpkg/core"));var Q=1,L=class{supportsDescriptor(e,t){return!!e.range.startsWith(p)}supportsLocator(e,t){return!!e.reference.startsWith(p)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,o){return m.structUtils.bindDescriptor(e,{locator:m.structUtils.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:s}=v(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let i=await P(m.structUtils.makeRange({protocol:p,source:a,selector:a,params:{locator:m.structUtils.stringifyLocator(s)}}),p,o.fetchOptions),f=m.hashUtils.makeHash(`${Q}`,i).slice(0,6);return[x(e,{parentLocator:s,path:a,generatorHash:f,protocol:p})]}async getSatisfying(e,t,o){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),a=await m.miscUtils.releaseAfterUseAsync(async()=>await N.Manifest.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return U(d({},e),{version:a.version||"0.0.0",languageName:a.languageName||t.project.configuration.get("defaultLanguageName"),linkType:A.LinkType.HARD,dependencies:a.dependencies,peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin})}};var Z={fetchers:[O],resolvers:[L]},ee=Z;return X;})();
return plugin;
}
};
9 changes: 9 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-typescript.cjs

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs

Large diffs are not rendered by default.

Loading

0 comments on commit c48c0f4

Please sign in to comment.