@microsoft/ado-npm-auth-lib 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +21 -0
- package/README.md +3 -0
- package/lib/.tsbuildinfo +1 -0
- package/lib/ado/make-ado-request.d.ts +15 -0
- package/lib/ado/make-ado-request.d.ts.map +1 -0
- package/lib/ado/make-ado-request.js +37 -0
- package/lib/ado/make-ado-request.js.map +1 -0
- package/lib/args.d.ts +9 -0
- package/lib/args.d.ts.map +1 -0
- package/lib/args.js +38 -0
- package/lib/args.js.map +1 -0
- package/lib/azureauth/ado.d.ts +26 -0
- package/lib/azureauth/ado.d.ts.map +1 -0
- package/lib/azureauth/ado.js +85 -0
- package/lib/azureauth/ado.js.map +1 -0
- package/lib/azureauth/ado.test.d.ts +2 -0
- package/lib/azureauth/ado.test.d.ts.map +1 -0
- package/lib/azureauth/ado.test.js +154 -0
- package/lib/azureauth/ado.test.js.map +1 -0
- package/lib/azureauth/azureauth-command.d.ts +11 -0
- package/lib/azureauth/azureauth-command.d.ts.map +1 -0
- package/lib/azureauth/azureauth-command.js +30 -0
- package/lib/azureauth/azureauth-command.js.map +1 -0
- package/lib/azureauth/is-azureauth-installed.d.ts +7 -0
- package/lib/azureauth/is-azureauth-installed.d.ts.map +1 -0
- package/lib/azureauth/is-azureauth-installed.js +28 -0
- package/lib/azureauth/is-azureauth-installed.js.map +1 -0
- package/lib/azureauth/is-azureauth-installed.test.d.ts +2 -0
- package/lib/azureauth/is-azureauth-installed.test.d.ts.map +1 -0
- package/lib/azureauth/is-azureauth-installed.test.js +54 -0
- package/lib/azureauth/is-azureauth-installed.test.js.map +1 -0
- package/lib/azureauth/is-supported-platform-and-architecture.d.ts +6 -0
- package/lib/azureauth/is-supported-platform-and-architecture.d.ts.map +1 -0
- package/lib/azureauth/is-supported-platform-and-architecture.js +16 -0
- package/lib/azureauth/is-supported-platform-and-architecture.js.map +1 -0
- package/lib/cli.d.ts +4 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/cli.js +125 -0
- package/lib/cli.js.map +1 -0
- package/lib/fileProvider.d.ts +35 -0
- package/lib/fileProvider.d.ts.map +1 -0
- package/lib/fileProvider.js +79 -0
- package/lib/fileProvider.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/npmrc/generate-npmrc-pat.d.ts +6 -0
- package/lib/npmrc/generate-npmrc-pat.d.ts.map +1 -0
- package/lib/npmrc/generate-npmrc-pat.js +49 -0
- package/lib/npmrc/generate-npmrc-pat.js.map +1 -0
- package/lib/npmrc/npmrcFileProvider.d.ts +13 -0
- package/lib/npmrc/npmrcFileProvider.d.ts.map +1 -0
- package/lib/npmrc/npmrcFileProvider.js +149 -0
- package/lib/npmrc/npmrcFileProvider.js.map +1 -0
- package/lib/npmrc/nugetCredentialProvider.d.ts +7 -0
- package/lib/npmrc/nugetCredentialProvider.d.ts.map +1 -0
- package/lib/npmrc/nugetCredentialProvider.js +76 -0
- package/lib/npmrc/nugetCredentialProvider.js.map +1 -0
- package/lib/telemetry/index.d.ts +20 -0
- package/lib/telemetry/index.d.ts.map +1 -0
- package/lib/telemetry/index.js +20 -0
- package/lib/telemetry/index.js.map +1 -0
- package/lib/utils/encoding.d.ts +13 -0
- package/lib/utils/encoding.d.ts.map +1 -0
- package/lib/utils/encoding.js +15 -0
- package/lib/utils/encoding.js.map +1 -0
- package/lib/utils/exec.d.ts +18 -0
- package/lib/utils/exec.d.ts.map +1 -0
- package/lib/utils/exec.js +46 -0
- package/lib/utils/exec.js.map +1 -0
- package/lib/utils/fileUtils.d.ts +2 -0
- package/lib/utils/fileUtils.d.ts.map +1 -0
- package/lib/utils/fileUtils.js +16 -0
- package/lib/utils/fileUtils.js.map +1 -0
- package/lib/utils/get-feed-without-protocol.d.ts +5 -0
- package/lib/utils/get-feed-without-protocol.d.ts.map +1 -0
- package/lib/utils/get-feed-without-protocol.js +11 -0
- package/lib/utils/get-feed-without-protocol.js.map +1 -0
- package/lib/utils/get-feed-without-protocol.test.d.ts +2 -0
- package/lib/utils/get-feed-without-protocol.test.d.ts.map +1 -0
- package/lib/utils/get-feed-without-protocol.test.js +31 -0
- package/lib/utils/get-feed-without-protocol.test.js.map +1 -0
- package/lib/utils/get-organization-from-feed-url.d.ts +8 -0
- package/lib/utils/get-organization-from-feed-url.d.ts.map +1 -0
- package/lib/utils/get-organization-from-feed-url.js +81 -0
- package/lib/utils/get-organization-from-feed-url.js.map +1 -0
- package/lib/utils/get-organization-from-feed-url.test.d.ts +2 -0
- package/lib/utils/get-organization-from-feed-url.test.d.ts.map +1 -0
- package/lib/utils/get-organization-from-feed-url.test.js +19 -0
- package/lib/utils/get-organization-from-feed-url.test.js.map +1 -0
- package/lib/utils/is-codespaces.d.ts +6 -0
- package/lib/utils/is-codespaces.d.ts.map +1 -0
- package/lib/utils/is-codespaces.js +10 -0
- package/lib/utils/is-codespaces.js.map +1 -0
- package/lib/utils/is-wsl.d.ts +6 -0
- package/lib/utils/is-wsl.d.ts.map +1 -0
- package/lib/utils/is-wsl.js +9 -0
- package/lib/utils/is-wsl.js.map +1 -0
- package/lib/utils/partition.d.ts +2 -0
- package/lib/utils/partition.d.ts.map +1 -0
- package/lib/utils/partition.js +15 -0
- package/lib/utils/partition.js.map +1 -0
- package/lib/utils/request.d.ts +15 -0
- package/lib/utils/request.d.ts.map +1 -0
- package/lib/utils/request.js +135 -0
- package/lib/utils/request.js.map +1 -0
- package/lib/yarnrc/yarnrcFileProvider.d.ts +27 -0
- package/lib/yarnrc/yarnrcFileProvider.d.ts.map +1 -0
- package/lib/yarnrc/yarnrcFileProvider.js +96 -0
- package/lib/yarnrc/yarnrcFileProvider.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { beforeEach, expect, test, vi } from "vitest";
|
|
3
|
+
import { exec } from "../utils/exec.js";
|
|
4
|
+
import * as utils from "../utils/is-wsl.js";
|
|
5
|
+
import { adoPat } from "./ado.js";
|
|
6
|
+
vi.mock("child_process", async () => {
|
|
7
|
+
return {
|
|
8
|
+
spawnSync: vi.fn(() => {
|
|
9
|
+
error: {
|
|
10
|
+
}
|
|
11
|
+
}),
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
vi.mock("./is-azureauth-installed.js", async () => {
|
|
15
|
+
return {
|
|
16
|
+
isAzureAuthInstalled: vi.fn(() => true),
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
vi.mock("../utils/exec.js", async () => {
|
|
20
|
+
return {
|
|
21
|
+
exec: vi.fn(),
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
vi.mock("../utils/is-wsl.js", async () => {
|
|
25
|
+
return {
|
|
26
|
+
isWsl: vi.fn(),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
vi.mock("./is-supported-platform-and-architecture.js", async () => {
|
|
30
|
+
return {
|
|
31
|
+
isSupportedPlatformAndArchitecture: vi.fn(() => true),
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
beforeEach(() => {
|
|
35
|
+
vi.clearAllMocks();
|
|
36
|
+
});
|
|
37
|
+
test("it should spawn azureauth", async () => {
|
|
38
|
+
vi.mocked(utils.isWsl).mockReturnValue(false);
|
|
39
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
40
|
+
stdout: '{ "token": "foobarabc123" }',
|
|
41
|
+
stderr: "",
|
|
42
|
+
}));
|
|
43
|
+
const results = (await adoPat({
|
|
44
|
+
promptHint: "hint",
|
|
45
|
+
organization: "org",
|
|
46
|
+
displayName: "test display",
|
|
47
|
+
scope: ["foobar"],
|
|
48
|
+
output: "json",
|
|
49
|
+
domain: "baz.com",
|
|
50
|
+
timeout: "200",
|
|
51
|
+
}));
|
|
52
|
+
expect(exec).toHaveBeenCalledWith('npm exec --silent --yes azureauth -- ado pat --prompt-hint "hint" --organization org --display-name test display --scope foobar --output json --domain baz.com --timeout 200', expect.anything());
|
|
53
|
+
expect(results.token).toBe("foobarabc123");
|
|
54
|
+
});
|
|
55
|
+
test("it should spawnSync azureauth on wsl", async () => {
|
|
56
|
+
vi.mocked(spawnSync).mockReturnValue({
|
|
57
|
+
status: 0,
|
|
58
|
+
stdout: '{ "token": "foobarabc123" }',
|
|
59
|
+
});
|
|
60
|
+
vi.mocked(utils.isWsl).mockReturnValue(true);
|
|
61
|
+
const results = (await adoPat({
|
|
62
|
+
promptHint: "hint",
|
|
63
|
+
organization: "org",
|
|
64
|
+
displayName: "test display",
|
|
65
|
+
scope: ["foobar"],
|
|
66
|
+
output: "json",
|
|
67
|
+
domain: "baz.com",
|
|
68
|
+
timeout: "200",
|
|
69
|
+
}));
|
|
70
|
+
expect(spawnSync).toHaveBeenCalledWith("npm", [
|
|
71
|
+
"exec",
|
|
72
|
+
"--silent",
|
|
73
|
+
"--yes",
|
|
74
|
+
"azureauth",
|
|
75
|
+
"--",
|
|
76
|
+
"ado",
|
|
77
|
+
"pat",
|
|
78
|
+
"--prompt-hint hint",
|
|
79
|
+
"--organization org",
|
|
80
|
+
"--display-name test display",
|
|
81
|
+
"--scope foobar",
|
|
82
|
+
"--output json",
|
|
83
|
+
"--domain baz.com",
|
|
84
|
+
"--timeout 200",
|
|
85
|
+
], expect.anything());
|
|
86
|
+
expect(results.token).toBe("foobarabc123");
|
|
87
|
+
});
|
|
88
|
+
test("it should handle errors on wsl if azureauth exit code is not 0", async () => {
|
|
89
|
+
vi.mocked(utils.isWsl).mockReturnValue(true);
|
|
90
|
+
vi.mocked(spawnSync).mockReturnValue({
|
|
91
|
+
status: 1,
|
|
92
|
+
stdout: "",
|
|
93
|
+
stderr: "an error",
|
|
94
|
+
});
|
|
95
|
+
await expect(adoPat({
|
|
96
|
+
promptHint: "hint",
|
|
97
|
+
organization: "org",
|
|
98
|
+
displayName: "test display",
|
|
99
|
+
scope: ["foobar"],
|
|
100
|
+
output: "json",
|
|
101
|
+
domain: "baz.com",
|
|
102
|
+
timeout: "200",
|
|
103
|
+
})).rejects.toThrowError("Failed to get Ado Pat from system AzureAuth: Azure Auth failed with exit code 1: an error");
|
|
104
|
+
});
|
|
105
|
+
test("it should handle errors on wsl if azureauth has stderr output", async () => {
|
|
106
|
+
vi.mocked(utils.isWsl).mockReturnValue(true);
|
|
107
|
+
vi.mocked(spawnSync).mockReturnValue({
|
|
108
|
+
status: 0,
|
|
109
|
+
stdout: "",
|
|
110
|
+
stderr: "an error",
|
|
111
|
+
});
|
|
112
|
+
await expect(adoPat({
|
|
113
|
+
promptHint: "hint",
|
|
114
|
+
organization: "org",
|
|
115
|
+
displayName: "test display",
|
|
116
|
+
scope: ["foobar"],
|
|
117
|
+
output: "json",
|
|
118
|
+
domain: "baz.com",
|
|
119
|
+
timeout: "200",
|
|
120
|
+
})).rejects.toThrowError("Failed to get Ado Pat from system AzureAuth: Azure Auth failed with exit code 0: an error");
|
|
121
|
+
});
|
|
122
|
+
test("it should handle json errors", async () => {
|
|
123
|
+
vi.mocked(utils.isWsl).mockReturnValue(false);
|
|
124
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
125
|
+
stdout: "an error",
|
|
126
|
+
stderr: "",
|
|
127
|
+
}));
|
|
128
|
+
await expect(adoPat({
|
|
129
|
+
promptHint: "hint",
|
|
130
|
+
organization: "org",
|
|
131
|
+
displayName: "test display",
|
|
132
|
+
scope: ["foobar"],
|
|
133
|
+
output: "json",
|
|
134
|
+
domain: "baz.com",
|
|
135
|
+
timeout: "200",
|
|
136
|
+
})).rejects.toThrowError("Failed to parse JSON output: an error");
|
|
137
|
+
});
|
|
138
|
+
test("it should handle errors from azureauth-cli", async () => {
|
|
139
|
+
vi.mocked(utils.isWsl).mockReturnValue(false);
|
|
140
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
141
|
+
stdout: "",
|
|
142
|
+
stderr: "an error",
|
|
143
|
+
}));
|
|
144
|
+
await expect(adoPat({
|
|
145
|
+
promptHint: "hint",
|
|
146
|
+
organization: "org",
|
|
147
|
+
displayName: "test display",
|
|
148
|
+
scope: ["foobar"],
|
|
149
|
+
output: "json",
|
|
150
|
+
domain: "baz.com",
|
|
151
|
+
timeout: "200",
|
|
152
|
+
})).rejects.toThrowError("Failed to get Ado Pat from npx AzureAuth: an error");
|
|
153
|
+
});
|
|
154
|
+
//# sourceMappingURL=ado.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ado.test.js","sourceRoot":"","sources":["../../src/azureauth/ado.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const clearMemo: () => void;
|
|
2
|
+
/**
|
|
3
|
+
* Get the executable path of azureauth command
|
|
4
|
+
* @returns the string of the executable command to run azureauth, and any
|
|
5
|
+
* necessary environment variables if using npx
|
|
6
|
+
*/
|
|
7
|
+
export declare const azureAuthCommand: () => {
|
|
8
|
+
command: string[];
|
|
9
|
+
env: Record<string, string>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=azureauth-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureauth-command.d.ts","sourceRoot":"","sources":["../../src/azureauth/azureauth-command.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,YAErB,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAO;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAO7B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isWsl } from "../utils/is-wsl.js";
|
|
2
|
+
let memo = undefined;
|
|
3
|
+
export const clearMemo = () => {
|
|
4
|
+
memo = void 0;
|
|
5
|
+
};
|
|
6
|
+
const npxAzureAuthCommand = [
|
|
7
|
+
"npm",
|
|
8
|
+
"exec",
|
|
9
|
+
"--silent",
|
|
10
|
+
"--yes",
|
|
11
|
+
"azureauth",
|
|
12
|
+
"--",
|
|
13
|
+
];
|
|
14
|
+
const npxEnv = {
|
|
15
|
+
...process.env,
|
|
16
|
+
// Use the version from the public registry to avoid a cycle
|
|
17
|
+
npm_config_registry: "https://registry.npmjs.org",
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Get the executable path of azureauth command
|
|
21
|
+
* @returns the string of the executable command to run azureauth, and any
|
|
22
|
+
* necessary environment variables if using npx
|
|
23
|
+
*/
|
|
24
|
+
export const azureAuthCommand = () => {
|
|
25
|
+
if (!memo) {
|
|
26
|
+
memo = isWsl() ? ["azureauth.exe"] : npxAzureAuthCommand;
|
|
27
|
+
}
|
|
28
|
+
return { command: memo, env: npxEnv };
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=azureauth-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureauth-command.js","sourceRoot":"","sources":["../../src/azureauth/azureauth-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,IAAI,IAAI,GAAyB,SAAS,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAa;IACpC,KAAK;IACL,MAAM;IACN,UAAU;IACV,OAAO;IACP,WAAW;IACX,IAAI;CACL,CAAC;AACF,MAAM,MAAM,GAAG;IACb,GAAG,OAAO,CAAC,GAAG;IACd,4DAA4D;IAC5D,mBAAmB,EAAE,4BAA4B;CAClD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAG9B,EAAE;IACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const clearMemo: () => void;
|
|
2
|
+
/**
|
|
3
|
+
* Determine if a valid version (>=0.8.0.0) is installed
|
|
4
|
+
* @returns { boolean } Whether a valid version of azureauth is installed
|
|
5
|
+
*/
|
|
6
|
+
export declare const isAzureAuthInstalled: () => Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=is-azureauth-installed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-azureauth-installed.d.ts","sourceRoot":"","sources":["../../src/azureauth/is-azureauth-installed.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,YAErB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,OAAO,CAiB5D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { exec } from "../utils/exec.js";
|
|
2
|
+
import { azureAuthCommand } from "./azureauth-command.js";
|
|
3
|
+
let memo = undefined;
|
|
4
|
+
export const clearMemo = () => {
|
|
5
|
+
memo = void 0;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Determine if a valid version (>=0.8.0.0) is installed
|
|
9
|
+
* @returns { boolean } Whether a valid version of azureauth is installed
|
|
10
|
+
*/
|
|
11
|
+
export const isAzureAuthInstalled = async () => {
|
|
12
|
+
if (memo === undefined) {
|
|
13
|
+
const { command: authCommand, env } = azureAuthCommand();
|
|
14
|
+
const command = `${authCommand.join(" ")} --version`;
|
|
15
|
+
try {
|
|
16
|
+
const result = await exec(command, { env });
|
|
17
|
+
// version must be >=0.8.0.0
|
|
18
|
+
const [, minor] = result.stdout.split(".");
|
|
19
|
+
memo = parseInt(minor) >= 8;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// azureauth not installed
|
|
23
|
+
memo = false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return memo;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=is-azureauth-installed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-azureauth-installed.js","sourceRoot":"","sources":["../../src/azureauth/is-azureauth-installed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,IAAI,IAAI,GAAwB,SAAS,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAsB,EAAE;IAC/D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,4BAA4B;YAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;YAC1B,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-azureauth-installed.test.d.ts","sourceRoot":"","sources":["../../src/azureauth/is-azureauth-installed.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { expect, test, vi, beforeEach } from "vitest";
|
|
2
|
+
import { isAzureAuthInstalled, clearMemo } from "./is-azureauth-installed.js";
|
|
3
|
+
import { clearMemo as clearAuthMemo } from "./azureauth-command.js";
|
|
4
|
+
import { exec } from "../utils/exec.js";
|
|
5
|
+
import * as utils from "../utils/is-wsl.js";
|
|
6
|
+
vi.mock("../utils/is-wsl.js", async () => {
|
|
7
|
+
return {
|
|
8
|
+
isWsl: vi.fn(),
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
vi.mock("../utils/exec.js", async () => {
|
|
12
|
+
return {
|
|
13
|
+
exec: vi.fn(),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
vi.clearAllMocks();
|
|
18
|
+
clearAuthMemo();
|
|
19
|
+
clearMemo();
|
|
20
|
+
});
|
|
21
|
+
test("when azure auth is not installed", async () => {
|
|
22
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
23
|
+
stdout: "",
|
|
24
|
+
stderr: "",
|
|
25
|
+
}));
|
|
26
|
+
vi.mocked(utils.isWsl).mockReturnValue(false);
|
|
27
|
+
const azureAuthInstalled = await isAzureAuthInstalled();
|
|
28
|
+
expect(vi.mocked(exec)).toBeCalled();
|
|
29
|
+
expect(azureAuthInstalled).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
test("when azure auth is installed", async () => {
|
|
32
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
33
|
+
stdout: "0.8.5",
|
|
34
|
+
stderr: "",
|
|
35
|
+
}));
|
|
36
|
+
vi.mocked(utils.isWsl).mockReturnValue(false);
|
|
37
|
+
const azureAuthInstalled = await isAzureAuthInstalled();
|
|
38
|
+
expect(vi.mocked(exec)).toBeCalled();
|
|
39
|
+
expect(azureAuthInstalled).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
test("when azure auth is installed on windows", async () => {
|
|
42
|
+
vi.mocked(exec).mockReturnValue(Promise.resolve({
|
|
43
|
+
stdout: "0.8.5",
|
|
44
|
+
stderr: "",
|
|
45
|
+
}));
|
|
46
|
+
vi.mocked(utils.isWsl).mockReturnValue(true);
|
|
47
|
+
const azureAuthInstalled = await isAzureAuthInstalled();
|
|
48
|
+
expect(vi.mocked(exec)).toBeCalled();
|
|
49
|
+
expect(vi.mocked(exec)).toBeCalledWith("azureauth.exe --version", {
|
|
50
|
+
env: expect.any(Object),
|
|
51
|
+
});
|
|
52
|
+
expect(azureAuthInstalled).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=is-azureauth-installed.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-azureauth-installed.test.js","sourceRoot":"","sources":["../../src/azureauth/is-azureauth-installed.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines if the currently running platform is supported by azureauth. Currently, supported platforms are Windows, Mac & WSL
|
|
3
|
+
* @returns { boolean } if the current platform is supported by azureauth
|
|
4
|
+
*/
|
|
5
|
+
export declare const isSupportedPlatformAndArchitecture: () => boolean;
|
|
6
|
+
//# sourceMappingURL=is-supported-platform-and-architecture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-supported-platform-and-architecture.d.ts","sourceRoot":"","sources":["../../src/azureauth/is-supported-platform-and-architecture.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAO,OAWrD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { arch, platform } from "node:os";
|
|
2
|
+
import { isWsl } from "../utils/is-wsl.js";
|
|
3
|
+
/**
|
|
4
|
+
* Determines if the currently running platform is supported by azureauth. Currently, supported platforms are Windows, Mac & WSL
|
|
5
|
+
* @returns { boolean } if the current platform is supported by azureauth
|
|
6
|
+
*/
|
|
7
|
+
export const isSupportedPlatformAndArchitecture = () => {
|
|
8
|
+
const supportedPlatformsAndArchitectures = {
|
|
9
|
+
win32: ["x64"],
|
|
10
|
+
darwin: ["x64", "arm64"],
|
|
11
|
+
};
|
|
12
|
+
return (isWsl() ||
|
|
13
|
+
(supportedPlatformsAndArchitectures[platform()] &&
|
|
14
|
+
supportedPlatformsAndArchitectures[platform()].includes(arch())));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=is-supported-platform-and-architecture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-supported-platform-and-architecture.js","sourceRoot":"","sources":["../../src/azureauth/is-supported-platform-and-architecture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAY,EAAE;IAC9D,MAAM,kCAAkC,GAA6B;QACnE,KAAK,EAAE,CAAC,KAAK,CAAC;QACd,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,CAAC;IAEF,OAAO,CACL,KAAK,EAAE;QACP,CAAC,kCAAkC,CAAC,QAAQ,EAAE,CAAC;YAC7C,kCAAkC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC,CAAC"}
|
package/lib/cli.d.ts
ADDED
package/lib/cli.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAStC,eAAO,MAAM,GAAG,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAqG5D,CAAC;AAcF,wBAAsB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAiC7C"}
|
package/lib/cli.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { arch, platform } from "node:os";
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import { isSupportedPlatformAndArchitecture } from "./azureauth/is-supported-platform-and-architecture.js";
|
|
4
|
+
import { isCodespaces } from "./utils/is-codespaces.js";
|
|
5
|
+
import { logTelemetry } from "./telemetry/index.js";
|
|
6
|
+
import { parseArgs } from "./args.js";
|
|
7
|
+
import { NpmrcFileProvider } from "./npmrc/npmrcFileProvider.js";
|
|
8
|
+
import { defaultEmail, defaultUser } from "./fileProvider.js";
|
|
9
|
+
import { generateNpmrcPat } from "./npmrc/generate-npmrc-pat.js";
|
|
10
|
+
import { partition } from "./utils/partition.js";
|
|
11
|
+
import { YarnRcFileProvider } from "./yarnrc/yarnrcFileProvider.js";
|
|
12
|
+
export const run = async (args) => {
|
|
13
|
+
const fileProviders = [
|
|
14
|
+
new NpmrcFileProvider(args.configFile),
|
|
15
|
+
new YarnRcFileProvider(args.configFile),
|
|
16
|
+
];
|
|
17
|
+
const validatedFeeds = [];
|
|
18
|
+
if (args.doValidCheck || args.skipAuth) {
|
|
19
|
+
for (const fileProvider of fileProviders) {
|
|
20
|
+
if (await fileProvider.isSupportedInRepo()) {
|
|
21
|
+
validatedFeeds.push(...(await fileProvider.validateAllUsedFeeds()));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Filter to feeds to only feeds that were not authenticated and are actually
|
|
26
|
+
// azure devops feeds by checking if we discovered the adoOrganization for it.
|
|
27
|
+
const invalidFeeds = validatedFeeds.filter((feed) => !feed.isValid && feed.feed.adoOrganization);
|
|
28
|
+
const invalidFeedCount = invalidFeeds.length;
|
|
29
|
+
if (args.doValidCheck && invalidFeedCount == 0) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (args.skipAuth && invalidFeedCount != 0) {
|
|
33
|
+
logTelemetry({ success: false, automaticSuccess: false, error: "invalid token(s)" }, true);
|
|
34
|
+
console.log(invalidFeedCount == 1
|
|
35
|
+
? "❌ Your token is invalid."
|
|
36
|
+
: `❌ ${invalidFeedCount} tokens are invalid.`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
console.log("🔑 Authenticating to package feed...");
|
|
41
|
+
const feedsToGetTokenFor = new Map();
|
|
42
|
+
for (const feed of invalidFeeds.map((feed) => feed.feed)) {
|
|
43
|
+
feedsToGetTokenFor.set(feed.adoOrganization, feed.registry);
|
|
44
|
+
}
|
|
45
|
+
// get a token for each feed
|
|
46
|
+
const organizationPatMap = {};
|
|
47
|
+
for (const [org, feed] of feedsToGetTokenFor) {
|
|
48
|
+
organizationPatMap[org] = await generateNpmrcPat(org, feed, false, args.azureAuthLocation);
|
|
49
|
+
}
|
|
50
|
+
// Update the pat in the invalid feeds.
|
|
51
|
+
for (const invalidFeed of invalidFeeds) {
|
|
52
|
+
const feed = invalidFeed.feed;
|
|
53
|
+
const authToken = organizationPatMap[feed.adoOrganization];
|
|
54
|
+
if (!authToken) {
|
|
55
|
+
console.log(`❌ Failed to obtain pat for ${feed.registry} via ${invalidFeed.fileProvider.id}`);
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
feed.authToken = authToken;
|
|
59
|
+
if (!feed.email) {
|
|
60
|
+
feed.email = defaultEmail;
|
|
61
|
+
}
|
|
62
|
+
if (!feed.userName) {
|
|
63
|
+
feed.userName = defaultUser;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const invalidFeedsByProvider = partition(invalidFeeds, (feed) => feed.fileProvider);
|
|
67
|
+
for (const [fileProvider, updatedFeeds] of invalidFeedsByProvider) {
|
|
68
|
+
await fileProvider.writeWorkspaceRegistries(updatedFeeds.map((updatedFeed) => updatedFeed.feed));
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
logTelemetry({
|
|
74
|
+
success: false,
|
|
75
|
+
automaticSuccess: false,
|
|
76
|
+
error: error.message,
|
|
77
|
+
}, true);
|
|
78
|
+
console.log("Encountered error while performing auth", error);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
if (isCodespaces()) {
|
|
83
|
+
// ignore codespaces setups
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
if (!isSupportedPlatformAndArchitecture()) {
|
|
87
|
+
const errorMessage = `Platform ${platform()} and architecture ${arch()} not supported for automatic authentication.`;
|
|
88
|
+
console.log(errorMessage);
|
|
89
|
+
logTelemetry({ success: false, error: errorMessage }, true);
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
export async function main() {
|
|
93
|
+
const args = parseArgs(process.argv);
|
|
94
|
+
try {
|
|
95
|
+
const result = await run(args);
|
|
96
|
+
if (result === null) {
|
|
97
|
+
// current auth is valid, do nothing
|
|
98
|
+
logTelemetry({ success: true });
|
|
99
|
+
console.log("✅ Current authentication is valid");
|
|
100
|
+
}
|
|
101
|
+
else if (result) {
|
|
102
|
+
// automatic auth was performed
|
|
103
|
+
// advertise success
|
|
104
|
+
logTelemetry({ success: true, automaticSuccess: true });
|
|
105
|
+
console.log("✅ Automatic authentication successful");
|
|
106
|
+
// if the user specified an exit code for reauthenticate, exit
|
|
107
|
+
if (args.exitCodeOnReAuthenticate !== undefined) {
|
|
108
|
+
process.exit(args.exitCodeOnReAuthenticate);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// automatic auth failed (for some reason)
|
|
113
|
+
// advertise failure and link wiki to fix
|
|
114
|
+
console.log("❌ Authentication to package feed failed.");
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(error);
|
|
120
|
+
console.log("❌ Authentication to package feed failed.");
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default user to be used in the .npmrc
|
|
3
|
+
*/
|
|
4
|
+
export declare const defaultUser = "me";
|
|
5
|
+
/**
|
|
6
|
+
* Default email to be used in the .npmrc
|
|
7
|
+
*/
|
|
8
|
+
export declare const defaultEmail = "me@example.com";
|
|
9
|
+
export type Feed = {
|
|
10
|
+
registry: string;
|
|
11
|
+
adoOrganization: string;
|
|
12
|
+
userName?: string;
|
|
13
|
+
email?: string;
|
|
14
|
+
authToken?: string;
|
|
15
|
+
};
|
|
16
|
+
export type ValidatedFeed = {
|
|
17
|
+
feed: Feed;
|
|
18
|
+
isValid: boolean;
|
|
19
|
+
fileProvider: FileProvider;
|
|
20
|
+
};
|
|
21
|
+
export declare abstract class FileProvider {
|
|
22
|
+
id: string;
|
|
23
|
+
workspaceFileName: string;
|
|
24
|
+
workspaceFilePath: string;
|
|
25
|
+
userFilePath: string;
|
|
26
|
+
feeds: Map<string, Feed>;
|
|
27
|
+
constructor(id: string, workspaceFileName: string, configFile?: string);
|
|
28
|
+
isSupportedInRepo(): Promise<boolean>;
|
|
29
|
+
validateAllUsedFeeds(): Promise<ValidatedFeed[]>;
|
|
30
|
+
abstract prepUserFile(): Promise<void>;
|
|
31
|
+
abstract getUserFeeds(): Promise<Map<string, Feed>>;
|
|
32
|
+
abstract getWorkspaceRegistries(): Promise<string[]>;
|
|
33
|
+
abstract writeWorkspaceRegistries(feedsToPatch: Iterable<Feed>): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=fileProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileProvider.d.ts","sourceRoot":"","sources":["../src/fileProvider.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,8BAAsB,YAAY;IAOvB,EAAE,EAAE,MAAM;IACV,iBAAiB,EAAE,MAAM;IAP3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAGvB,EAAE,EAAE,MAAM,EACV,iBAAiB,EAAE,MAAM,EAChC,UAAU,CAAC,EAAE,MAAM;IAiBR,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAuC7D,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,wBAAwB,CAC/B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
// Index into workspace-tools to save 100Kb in the final bundle
|
|
6
|
+
import { getWorkspaceManagerRoot } from "workspace-tools/lib/workspaces/getWorkspaceRoot.js";
|
|
7
|
+
import { getOrganizationFromFeedUrl } from "./utils/get-organization-from-feed-url.js";
|
|
8
|
+
import { makeADORequest } from "./ado/make-ado-request.js";
|
|
9
|
+
/**
|
|
10
|
+
* Default user to be used in the .npmrc
|
|
11
|
+
*/
|
|
12
|
+
export const defaultUser = "me";
|
|
13
|
+
/**
|
|
14
|
+
* Default email to be used in the .npmrc
|
|
15
|
+
*/
|
|
16
|
+
export const defaultEmail = "me@example.com";
|
|
17
|
+
export class FileProvider {
|
|
18
|
+
constructor(id, workspaceFileName, configFile) {
|
|
19
|
+
this.id = id;
|
|
20
|
+
this.workspaceFileName = workspaceFileName;
|
|
21
|
+
let workspaceFilePath = undefined;
|
|
22
|
+
if (configFile && path.basename(configFile) === this.workspaceFileName) {
|
|
23
|
+
workspaceFilePath = path.resolve(configFile);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const workspaceRoot = getWorkspaceManagerRoot(process.cwd()) || "";
|
|
27
|
+
workspaceFilePath = join(workspaceRoot, this.workspaceFileName);
|
|
28
|
+
}
|
|
29
|
+
this.workspaceFilePath = workspaceFilePath;
|
|
30
|
+
const userHome = process.env["HOME"] || process.env["USERPROFILE"] || homedir() || "";
|
|
31
|
+
this.userFilePath = join(userHome, workspaceFileName);
|
|
32
|
+
this.feeds = new Map();
|
|
33
|
+
}
|
|
34
|
+
async isSupportedInRepo() {
|
|
35
|
+
try {
|
|
36
|
+
await fs.access(this.workspaceFilePath);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
async validateAllUsedFeeds() {
|
|
44
|
+
await this.prepUserFile();
|
|
45
|
+
const result = [];
|
|
46
|
+
const workspaceRegistries = await this.getWorkspaceRegistries();
|
|
47
|
+
const userFeeds = await this.getUserFeeds();
|
|
48
|
+
// check each feed for validity
|
|
49
|
+
for (const registry of workspaceRegistries) {
|
|
50
|
+
const feed = userFeeds.get(registry);
|
|
51
|
+
if (feed) {
|
|
52
|
+
let feedIsValid = true;
|
|
53
|
+
try {
|
|
54
|
+
await makeADORequest({
|
|
55
|
+
password: feed.authToken || "",
|
|
56
|
+
organization: feed.adoOrganization,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
feedIsValid = false;
|
|
61
|
+
}
|
|
62
|
+
result.push({ feed: feed, isValid: feedIsValid, fileProvider: this });
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// No representation of the token in the users config file.
|
|
66
|
+
result.push({
|
|
67
|
+
feed: {
|
|
68
|
+
registry: registry,
|
|
69
|
+
adoOrganization: getOrganizationFromFeedUrl(registry),
|
|
70
|
+
},
|
|
71
|
+
isValid: false,
|
|
72
|
+
fileProvider: this,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=fileProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileProvider.js","sourceRoot":"","sources":["../src/fileProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,+DAA+D;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAgB7C,MAAM,OAAgB,YAAY;IAMhC,YACS,EAAU,EACV,iBAAyB,EAChC,UAAmB;QAFZ,OAAE,GAAF,EAAE,CAAQ;QACV,sBAAiB,GAAjB,iBAAiB,CAAQ;QAGhC,IAAI,iBAAiB,GAAG,SAAS,CAAC;QAClC,IAAI,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvE,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACnE,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,+BAA+B;QAC/B,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,WAAW,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,cAAc,CAAC;wBACnB,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;wBAC9B,YAAY,EAAE,IAAI,CAAC,eAAe;qBACnC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,GAAG,KAAK,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE;wBACJ,QAAQ,EAAE,QAAQ;wBAClB,eAAe,EAAE,0BAA0B,CAAC,QAAQ,CAAC;qBACtD;oBACD,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAQF"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { YarnRcFileProvider } from "./yarnrc/yarnrcFileProvider.js";
|
|
2
|
+
export { NpmrcFileProvider } from "./npmrc/npmrcFileProvider.js";
|
|
3
|
+
export type { Feed, ValidatedFeed } from "./fileProvider.js";
|
|
4
|
+
export { defaultUser, defaultEmail, FileProvider } from "./fileProvider.js";
|
|
5
|
+
export { generateNpmrcPat } from "./npmrc/generate-npmrc-pat.js";
|
|
6
|
+
export { getOrganizationFromFeedUrl } from "./utils/get-organization-from-feed-url.js";
|
|
7
|
+
export { partition } from "./utils/partition.js";
|
|
8
|
+
export { logTelemetry } from "./telemetry/index.js";
|
|
9
|
+
export { main } from "./cli.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|