@pnpm/lockfile.utils
Advanced tools
@@ -9,4 +9,4 @@ "use strict"; | ||
| const dependency_path_1 = require("@pnpm/dependency-path"); | ||
| const packageIdFromSnapshot_1 = require("./packageIdFromSnapshot"); | ||
| const nameVerFromPkgSnapshot_1 = require("./nameVerFromPkgSnapshot"); | ||
| const packageIdFromSnapshot_js_1 = require("./packageIdFromSnapshot.js"); | ||
| const nameVerFromPkgSnapshot_js_1 = require("./nameVerFromPkgSnapshot.js"); | ||
| function extendProjectsWithTargetDirs(projects, lockfile, ctx) { | ||
@@ -20,4 +20,4 @@ const getLocalLocations = ctx.pkgLocationsByDepPath != null | ||
| continue; | ||
| const pkgId = (0, packageIdFromSnapshot_1.packageIdFromSnapshot)(depPath, pkg); | ||
| const { name: pkgName } = (0, nameVerFromPkgSnapshot_1.nameVerFromPkgSnapshot)(depPath, pkg); | ||
| const pkgId = (0, packageIdFromSnapshot_js_1.packageIdFromSnapshot)(depPath, pkg); | ||
| const { name: pkgName } = (0, nameVerFromPkgSnapshot_js_1.nameVerFromPkgSnapshot)(depPath, pkg); | ||
| const importerId = pkgId.replace(/^file:/, ''); | ||
@@ -24,0 +24,0 @@ if (projectsById[importerId] == null) |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"extendProjectsWithTargetDirs.js","sourceRoot":"","sources":["../src/extendProjectsWithTargetDirs.ts"],"names":[],"mappings":";;;;;AASA,oEA0BC;AAnCD,gDAAuB;AAEvB,2DAAyD;AAEzD,mEAA+D;AAC/D,qEAAiE;AAIjE,SAAgB,4BAA4B,CAC1C,QAAsC,EACtC,QAAwB,EACxB,GAIC;IAED,MAAM,iBAAiB,GAAsB,GAAG,CAAC,qBAAqB,IAAI,IAAI;QAC5E,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAsB,CAAC,OAAO,CAAC;QAC3D,CAAC,CAAC,CAAC,OAAgB,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAA,mCAAiB,EAAC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9J,MAAM,YAAY,GAChB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAc,EAAE,CAAC,CAAC,CAAC,CAAA;IACzG,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAK,GAAG,CAAC,UAAgC,EAAE,IAAI,KAAK,WAAW;YAAE,SAAQ;QACzE,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,OAAkB,EAAE,GAAG,CAAC,CAAA;QAC5D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,+CAAsB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAc,CAAA;QAC3D,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI;YAAE,SAAQ;QAC9C,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAkB,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,CAAC,cAAc;YAAE,SAAQ;QAC7B,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;QAC3D,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAyE,CAAA;AAC5G,CAAC"} | ||
| {"version":3,"file":"extendProjectsWithTargetDirs.js","sourceRoot":"","sources":["../src/extendProjectsWithTargetDirs.ts"],"names":[],"mappings":";;;;;AASA,oEA0BC;AAnCD,gDAAuB;AAEvB,2DAAyD;AAEzD,yEAAkE;AAClE,2EAAoE;AAIpE,SAAgB,4BAA4B,CAC1C,QAAsC,EACtC,QAAwB,EACxB,GAIC;IAED,MAAM,iBAAiB,GAAsB,GAAG,CAAC,qBAAqB,IAAI,IAAI;QAC5E,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAsB,CAAC,OAAO,CAAC;QAC3D,CAAC,CAAC,CAAC,OAAgB,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAA,mCAAiB,EAAC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9J,MAAM,YAAY,GAChB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAc,EAAE,CAAC,CAAC,CAAC,CAAA;IACzG,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAK,GAAG,CAAC,UAAgC,EAAE,IAAI,KAAK,WAAW;YAAE,SAAQ;QACzE,MAAM,KAAK,GAAG,IAAA,gDAAqB,EAAC,OAAkB,EAAE,GAAG,CAAC,CAAA;QAC5D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,kDAAsB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAc,CAAA;QAC3D,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI;YAAE,SAAQ;QAC9C,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAkB,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,CAAC,cAAc;YAAE,SAAQ;QAC7B,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;QAC3D,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAyE,CAAA;AAC5G,CAAC"} |
+6
-6
| import { refToRelative } from '@pnpm/dependency-path'; | ||
| export { extendProjectsWithTargetDirs } from './extendProjectsWithTargetDirs'; | ||
| export { nameVerFromPkgSnapshot } from './nameVerFromPkgSnapshot'; | ||
| export { packageIdFromSnapshot } from './packageIdFromSnapshot'; | ||
| export { packageIsIndependent } from './packageIsIndependent'; | ||
| export { pkgSnapshotToResolution } from './pkgSnapshotToResolution'; | ||
| export { refIsLocalTarball, refIsLocalDirectory } from './refIsLocalTarball'; | ||
| export { extendProjectsWithTargetDirs } from './extendProjectsWithTargetDirs.js'; | ||
| export { nameVerFromPkgSnapshot } from './nameVerFromPkgSnapshot.js'; | ||
| export { packageIdFromSnapshot } from './packageIdFromSnapshot.js'; | ||
| export { packageIsIndependent } from './packageIsIndependent.js'; | ||
| export { pkgSnapshotToResolution } from './pkgSnapshotToResolution.js'; | ||
| export { refIsLocalTarball, refIsLocalDirectory } from './refIsLocalTarball.js'; | ||
| export * from '@pnpm/lockfile.types'; | ||
| export declare const getPkgShortId: typeof refToRelative; |
+13
-13
@@ -19,15 +19,15 @@ "use strict"; | ||
| const dependency_path_1 = require("@pnpm/dependency-path"); | ||
| var extendProjectsWithTargetDirs_1 = require("./extendProjectsWithTargetDirs"); | ||
| Object.defineProperty(exports, "extendProjectsWithTargetDirs", { enumerable: true, get: function () { return extendProjectsWithTargetDirs_1.extendProjectsWithTargetDirs; } }); | ||
| var nameVerFromPkgSnapshot_1 = require("./nameVerFromPkgSnapshot"); | ||
| Object.defineProperty(exports, "nameVerFromPkgSnapshot", { enumerable: true, get: function () { return nameVerFromPkgSnapshot_1.nameVerFromPkgSnapshot; } }); | ||
| var packageIdFromSnapshot_1 = require("./packageIdFromSnapshot"); | ||
| Object.defineProperty(exports, "packageIdFromSnapshot", { enumerable: true, get: function () { return packageIdFromSnapshot_1.packageIdFromSnapshot; } }); | ||
| var packageIsIndependent_1 = require("./packageIsIndependent"); | ||
| Object.defineProperty(exports, "packageIsIndependent", { enumerable: true, get: function () { return packageIsIndependent_1.packageIsIndependent; } }); | ||
| var pkgSnapshotToResolution_1 = require("./pkgSnapshotToResolution"); | ||
| Object.defineProperty(exports, "pkgSnapshotToResolution", { enumerable: true, get: function () { return pkgSnapshotToResolution_1.pkgSnapshotToResolution; } }); | ||
| var refIsLocalTarball_1 = require("./refIsLocalTarball"); | ||
| Object.defineProperty(exports, "refIsLocalTarball", { enumerable: true, get: function () { return refIsLocalTarball_1.refIsLocalTarball; } }); | ||
| Object.defineProperty(exports, "refIsLocalDirectory", { enumerable: true, get: function () { return refIsLocalTarball_1.refIsLocalDirectory; } }); | ||
| var extendProjectsWithTargetDirs_js_1 = require("./extendProjectsWithTargetDirs.js"); | ||
| Object.defineProperty(exports, "extendProjectsWithTargetDirs", { enumerable: true, get: function () { return extendProjectsWithTargetDirs_js_1.extendProjectsWithTargetDirs; } }); | ||
| var nameVerFromPkgSnapshot_js_1 = require("./nameVerFromPkgSnapshot.js"); | ||
| Object.defineProperty(exports, "nameVerFromPkgSnapshot", { enumerable: true, get: function () { return nameVerFromPkgSnapshot_js_1.nameVerFromPkgSnapshot; } }); | ||
| var packageIdFromSnapshot_js_1 = require("./packageIdFromSnapshot.js"); | ||
| Object.defineProperty(exports, "packageIdFromSnapshot", { enumerable: true, get: function () { return packageIdFromSnapshot_js_1.packageIdFromSnapshot; } }); | ||
| var packageIsIndependent_js_1 = require("./packageIsIndependent.js"); | ||
| Object.defineProperty(exports, "packageIsIndependent", { enumerable: true, get: function () { return packageIsIndependent_js_1.packageIsIndependent; } }); | ||
| var pkgSnapshotToResolution_js_1 = require("./pkgSnapshotToResolution.js"); | ||
| Object.defineProperty(exports, "pkgSnapshotToResolution", { enumerable: true, get: function () { return pkgSnapshotToResolution_js_1.pkgSnapshotToResolution; } }); | ||
| var refIsLocalTarball_js_1 = require("./refIsLocalTarball.js"); | ||
| Object.defineProperty(exports, "refIsLocalTarball", { enumerable: true, get: function () { return refIsLocalTarball_js_1.refIsLocalTarball; } }); | ||
| Object.defineProperty(exports, "refIsLocalDirectory", { enumerable: true, get: function () { return refIsLocalTarball_js_1.refIsLocalDirectory; } }); | ||
| __exportStar(require("@pnpm/lockfile.types"), exports); | ||
@@ -34,0 +34,0 @@ // for backward compatibility |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqD;AAErD,+EAA6E;AAApE,4IAAA,4BAA4B,OAAA;AACrC,mEAAiE;AAAxD,gIAAA,sBAAsB,OAAA;AAC/B,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,+DAA6D;AAApD,4HAAA,oBAAoB,OAAA;AAC7B,qEAAmE;AAA1D,kIAAA,uBAAuB,OAAA;AAChC,yDAA4E;AAAnE,sHAAA,iBAAiB,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AAC/C,uDAAoC;AAEpC,6BAA6B;AAChB,QAAA,aAAa,GAAG,+BAAa,CAAA"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqD;AAErD,qFAAgF;AAAvE,+IAAA,4BAA4B,OAAA;AACrC,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,qEAAgE;AAAvD,+HAAA,oBAAoB,OAAA;AAC7B,2EAAsE;AAA7D,qIAAA,uBAAuB,OAAA;AAChC,+DAA+E;AAAtE,yHAAA,iBAAiB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAC/C,uDAAoC;AAEpC,6BAA6B;AAChB,QAAA,aAAa,GAAG,+BAAa,CAAA"} |
@@ -10,3 +10,3 @@ "use strict"; | ||
| const pick_fetcher_1 = require("@pnpm/pick-fetcher"); | ||
| const nameVerFromPkgSnapshot_1 = require("./nameVerFromPkgSnapshot"); | ||
| const nameVerFromPkgSnapshot_js_1 = require("./nameVerFromPkgSnapshot.js"); | ||
| function pkgSnapshotToResolution(depPath, pkgSnapshot, registries) { | ||
@@ -18,6 +18,6 @@ if (Boolean(pkgSnapshot.resolution.type) || | ||
| } | ||
| const { name, version } = (0, nameVerFromPkgSnapshot_1.nameVerFromPkgSnapshot)(depPath, pkgSnapshot); | ||
| const { name, version } = (0, nameVerFromPkgSnapshot_js_1.nameVerFromPkgSnapshot)(depPath, pkgSnapshot); | ||
| let registry = ''; | ||
| if (name != null) { | ||
| if (name.startsWith('@')) { | ||
| if (name[0] === '@') { | ||
| registry = registries[name.split('/')[0]]; | ||
@@ -24,0 +24,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"pkgSnapshotToResolution.js","sourceRoot":"","sources":["../src/pkgSnapshotToResolution.ts"],"names":[],"mappings":";;;;;AAQA,0DAyCC;AAjDD,8CAAqB;AAIrB,8EAAkD;AAClD,qDAAsD;AACtD,qEAAiE;AAEjE,SAAgB,uBAAuB,CACrC,OAAe,EACf,WAA4B,EAC5B,UAAsB;IAEtB,IACE,OAAO,CAAE,WAAW,CAAC,UAAgC,CAAC,IAAI,CAAC;QAC1D,WAAW,CAAC,UAAgC,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1E,IAAA,gCAAiB,EAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,IAAI,EAAE,CAAC,EAC9E,CAAC;QACD,OAAO,WAAW,CAAC,UAAwB,CAAA;IAC7C,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,+CAAsB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACtE,IAAI,QAAQ,GAAW,EAAE,CAAA;IACzB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAA;IAC/B,CAAC;IACD,IAAI,OAAgB,CAAA;IACpB,IAAI,CAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,EAAE,CAAC;QAC3D,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,aAAG,CAAC,GAAG,CAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,EACzE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CACnD,CAAC,QAAQ,EAAE,CAAA;IACd,CAAC;IACD,OAAO;QACL,GAAG,WAAW,CAAC,UAAU;QACzB,OAAO;KACM,CAAA;IAEf,SAAS,UAAU,CAAE,QAAgB;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,OAAO,IAAA,6BAAgB,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;AACH,CAAC"} | ||
| {"version":3,"file":"pkgSnapshotToResolution.js","sourceRoot":"","sources":["../src/pkgSnapshotToResolution.ts"],"names":[],"mappings":";;;;;AAQA,0DAyCC;AAjDD,8CAAqB;AAIrB,8EAAkD;AAClD,qDAAsD;AACtD,2EAAoE;AAEpE,SAAgB,uBAAuB,CACrC,OAAe,EACf,WAA4B,EAC5B,UAAsB;IAEtB,IACE,OAAO,CAAE,WAAW,CAAC,UAAgC,CAAC,IAAI,CAAC;QAC1D,WAAW,CAAC,UAAgC,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1E,IAAA,gCAAiB,EAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,IAAI,EAAE,CAAC,EAC9E,CAAC;QACD,OAAO,WAAW,CAAC,UAAwB,CAAA;IAC7C,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,kDAAsB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACtE,IAAI,QAAQ,GAAW,EAAE,CAAA;IACzB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAA;IAC/B,CAAC;IACD,IAAI,OAAgB,CAAA;IACpB,IAAI,CAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,EAAE,CAAC;QAC3D,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,aAAG,CAAC,GAAG,CAAE,WAAW,CAAC,UAAgC,CAAC,OAAO,EACzE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CACnD,CAAC,QAAQ,EAAE,CAAA;IACd,CAAC;IACD,OAAO;QACL,GAAG,WAAW,CAAC,UAAU;QACzB,OAAO;KACM,CAAA;IAEf,SAAS,UAAU,CAAE,QAAgB;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,OAAO,IAAA,6BAAgB,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;AACH,CAAC"} |
+6
-6
| { | ||
| "name": "@pnpm/lockfile.utils", | ||
| "version": "1003.0.0", | ||
| "version": "1003.0.1", | ||
| "description": "Utils for dealing with pnpm-lock.yaml", | ||
@@ -31,7 +31,7 @@ "keywords": [ | ||
| "ramda": "npm:@pnpm/ramda@0.28.1", | ||
| "@pnpm/dependency-path": "1001.1.0", | ||
| "@pnpm/lockfile.types": "1002.0.0", | ||
| "@pnpm/dependency-path": "1001.1.1", | ||
| "@pnpm/lockfile.types": "1002.0.1", | ||
| "@pnpm/pick-fetcher": "1001.0.0", | ||
| "@pnpm/resolver-base": "1005.0.0", | ||
| "@pnpm/types": "1000.7.0" | ||
| "@pnpm/resolver-base": "1005.0.1", | ||
| "@pnpm/types": "1000.8.0" | ||
| }, | ||
@@ -43,3 +43,3 @@ "devDependencies": { | ||
| "yaml-tag": "1.1.0", | ||
| "@pnpm/lockfile.utils": "1003.0.0" | ||
| "@pnpm/lockfile.utils": "1003.0.1" | ||
| }, | ||
@@ -46,0 +46,0 @@ "engines": { |
20251
0.48%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
Updated
Updated