Skip to content

Commit 5c86f06

Browse files
committed
fixup! feat(yarn-plugin-ignore): Yarn plugin implementing the ignore: protocol
1 parent 2c58dea commit 5c86f06

File tree

6 files changed

+35
-48
lines changed

6 files changed

+35
-48
lines changed

docsite/yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ __metadata:
55
version: 8
66
cacheKey: 10c0
77

8-
"@algolia/autocomplete-core@ignore:::locator=%40rnx-kit%2Fdocsite%40workspace%3A.":
8+
"@algolia/autocomplete-core@ignore:":
99
version: 0.0.0-use.local
1010
resolution: "@algolia/autocomplete-core@ignore:"
1111
languageName: node
@@ -1800,7 +1800,7 @@ __metadata:
18001800
languageName: node
18011801
linkType: hard
18021802

1803-
"@docsearch/react@ignore:::locator=%40rnx-kit%2Fdocsite%40workspace%3A.":
1803+
"@docsearch/react@ignore:":
18041804
version: 0.0.0-use.local
18051805
resolution: "@docsearch/react@ignore:"
18061806
languageName: node
@@ -4381,13 +4381,13 @@ __metadata:
43814381
languageName: node
43824382
linkType: hard
43834383

4384-
"algoliasearch-helper@ignore:::locator=%40rnx-kit%2Fdocsite%40workspace%3A.":
4384+
"algoliasearch-helper@ignore:":
43854385
version: 0.0.0-use.local
43864386
resolution: "algoliasearch-helper@ignore:"
43874387
languageName: node
43884388
linkType: soft
43894389

4390-
"algoliasearch@ignore:::locator=%40rnx-kit%2Fdocsite%40workspace%3A.":
4390+
"algoliasearch@ignore:":
43914391
version: 0.0.0-use.local
43924392
resolution: "algoliasearch@ignore:"
43934393
languageName: node
@@ -9344,7 +9344,7 @@ __metadata:
93449344
languageName: node
93459345
linkType: hard
93469346

9347-
"node-gyp@ignore:::locator=%40rnx-kit%2Fdocsite%40workspace%3A.":
9347+
"node-gyp@ignore:":
93489348
version: 0.0.0-use.local
93499349
resolution: "node-gyp@ignore:"
93509350
languageName: node

incubator/yarn-plugin-ignore/dist/yarn-plugin-ignore.cjs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ var plugin = (() => {
9898

9999
// src/IgnoreResolver.ts
100100
var import_core = __require("@yarnpkg/core");
101+
var import_node_assert = __require("assert");
101102
var IgnoreResolver = class {
102103
supportsDescriptor(descriptor) {
103104
return descriptor.range.startsWith(IGNORE_PROTOCOL);
@@ -108,38 +109,32 @@ var plugin = (() => {
108109
shouldPersistResolution() {
109110
return false;
110111
}
111-
bindDescriptor(descriptor, fromLocator) {
112-
return import_core.structUtils.bindDescriptor(descriptor, {
113-
locator: import_core.structUtils.stringifyLocator(fromLocator)
114-
});
112+
bindDescriptor(descriptor, _fromLocator) {
113+
return descriptor;
115114
}
116115
getResolutionDependencies() {
117116
return {};
118117
}
119118
async getCandidates(descriptor, _dependencies, _opts) {
120119
return [import_core.structUtils.makeLocator(descriptor, IGNORE_PROTOCOL)];
121120
}
122-
async getSatisfying(descriptor, dependencies, locators, opts) {
123-
const [locator] = await this.getCandidates(descriptor, dependencies, opts);
124-
return {
125-
locators: locators.filter(
126-
(candidate) => candidate.locatorHash === locator.locatorHash
127-
),
128-
sorted: false
129-
};
121+
async getSatisfying(_descriptor, _dependencies, locators, _opts) {
122+
(0, import_node_assert.equal)(locators.length, 1, "Expected a single locator candidate");
123+
return { locators, sorted: true };
130124
}
131125
async resolve(locator, opts) {
126+
const manifest = new import_core.Manifest();
132127
return {
133128
...locator,
134129
version: "0.0.0",
135130
languageName: opts.project.configuration.get("defaultLanguageName"),
136131
linkType: import_core.LinkType.SOFT,
137132
conditions: null,
138-
dependencies: /* @__PURE__ */ new Map(),
139-
peerDependencies: /* @__PURE__ */ new Map(),
140-
dependenciesMeta: /* @__PURE__ */ new Map(),
141-
peerDependenciesMeta: /* @__PURE__ */ new Map(),
142-
bin: /* @__PURE__ */ new Map()
133+
dependencies: manifest.dependencies,
134+
peerDependencies: manifest.peerDependencies,
135+
dependenciesMeta: manifest.dependenciesMeta,
136+
peerDependenciesMeta: manifest.peerDependenciesMeta,
137+
bin: manifest.bin
143138
};
144139
}
145140
};

incubator/yarn-plugin-ignore/src/IgnoreResolver.ts

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import type {
55
Resolver,
66
ResolveOptions,
77
} from "@yarnpkg/core";
8-
import { LinkType, structUtils } from "@yarnpkg/core";
8+
import { LinkType, Manifest, structUtils } from "@yarnpkg/core";
9+
import { equal } from "node:assert";
910
import { IGNORE_PROTOCOL } from "./constants.ts";
1011

1112
export class IgnoreResolver implements Resolver {
@@ -21,10 +22,8 @@ export class IgnoreResolver implements Resolver {
2122
return false;
2223
}
2324

24-
bindDescriptor(descriptor: Descriptor, fromLocator: Locator): Descriptor {
25-
return structUtils.bindDescriptor(descriptor, {
26-
locator: structUtils.stringifyLocator(fromLocator),
27-
});
25+
bindDescriptor(descriptor: Descriptor, _fromLocator: Locator): Descriptor {
26+
return descriptor;
2827
}
2928

3029
getResolutionDependencies(): Record<string, Descriptor> {
@@ -40,21 +39,17 @@ export class IgnoreResolver implements Resolver {
4039
}
4140

4241
async getSatisfying(
43-
descriptor: Descriptor,
44-
dependencies: Record<string, Package>,
42+
_descriptor: Descriptor,
43+
_dependencies: Record<string, Package>,
4544
locators: Locator[],
46-
opts: ResolveOptions
45+
_opts: ResolveOptions
4746
): Promise<{ locators: Locator[]; sorted: boolean }> {
48-
const [locator] = await this.getCandidates(descriptor, dependencies, opts);
49-
return {
50-
locators: locators.filter(
51-
(candidate) => candidate.locatorHash === locator.locatorHash
52-
),
53-
sorted: false,
54-
};
47+
equal(locators.length, 1, "Expected a single locator candidate");
48+
return { locators, sorted: true };
5549
}
5650

5751
async resolve(locator: Locator, opts: ResolveOptions): Promise<Package> {
52+
const manifest = new Manifest();
5853
return {
5954
...locator,
6055

@@ -65,13 +60,13 @@ export class IgnoreResolver implements Resolver {
6560

6661
conditions: null,
6762

68-
dependencies: new Map(),
69-
peerDependencies: new Map(),
63+
dependencies: manifest.dependencies,
64+
peerDependencies: manifest.peerDependencies,
7065

71-
dependenciesMeta: new Map(),
72-
peerDependenciesMeta: new Map(),
66+
dependenciesMeta: manifest.dependenciesMeta,
67+
peerDependenciesMeta: manifest.peerDependenciesMeta,
7368

74-
bin: new Map(),
69+
bin: manifest.bin,
7570
};
7671
}
7772
}

incubator/yarn-plugin-ignore/test/IgnoreResolver.test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ describe("IgnoreResolver", () => {
2525

2626
equal(scope, locator.scope);
2727
equal(name, locator.name);
28-
equal(
29-
range,
30-
`${IGNORE_PROTOCOL}::locator=%40${scope}%2F${name}%40ignore%3A`
31-
);
28+
equal(range, IGNORE_PROTOCOL);
3229
});
3330

3431
it("returns no dependencies", () => {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"extends": "@rnx-kit/tsconfig/tsconfig.node.json",
33
"compilerOptions": {
4-
"rootDir": "src"
4+
"noEmit": true
55
},
66
"include": ["src"]
77
}

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14291,7 +14291,7 @@ __metadata:
1429114291
languageName: node
1429214292
linkType: hard
1429314293

14294-
"node-gyp@ignore:::locator=rnx-kit%40workspace%3A.":
14294+
"node-gyp@ignore:":
1429514295
version: 0.0.0-use.local
1429614296
resolution: "node-gyp@ignore:"
1429714297
languageName: node

0 commit comments

Comments
 (0)