[{
"manifest": {
"__info": [],
"dependencyTreeRoots": [{
"name": "root",
"reference": "workspace:."
}],
"ignorePatternData": null,
"enableTopLevelFallback": false,
"fallbackPool": [],
"fallbackExclusionList": [],
"packageRegistryData": [
[null, [
[null, {
"packageLocation": "./",
"packageDependencies": [["test", "npm:1.0.0"]],
"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!"
}]
}]