wrangler 0.0.0-e2a26a0 → 0.0.0-e322475
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/Cloudflare_CA.pem +18 -0
- package/README.md +27 -14
- package/bin/wrangler.js +49 -5
- package/kv-asset-handler.js +1 -0
- package/miniflare-dist/index.mjs +4886 -0
- package/package.json +54 -27
- package/pages/functions/buildPlugin.ts +105 -0
- package/pages/functions/buildWorker.ts +93 -4
- package/pages/functions/filepath-routing.test.ts +223 -36
- package/pages/functions/filepath-routing.ts +78 -120
- package/pages/functions/routes.ts +13 -17
- package/pages/functions/template-plugin.ts +147 -0
- package/pages/functions/template-worker.ts +24 -17
- package/src/__tests__/config-cache.test.ts +36 -0
- package/src/__tests__/configuration.test.ts +3548 -0
- package/src/__tests__/dev.test.tsx +1049 -65
- package/src/__tests__/guess-worker-format.test.ts +85 -0
- package/src/__tests__/helpers/faye-websocket.d.ts +6 -0
- package/src/__tests__/helpers/mock-account-id.ts +26 -8
- package/src/__tests__/helpers/mock-bin.ts +4 -1
- package/src/__tests__/helpers/mock-cfetch.ts +12 -8
- package/src/__tests__/helpers/mock-console.ts +49 -8
- package/src/__tests__/helpers/mock-dialogs.ts +99 -11
- package/src/__tests__/helpers/mock-http-server.ts +46 -0
- package/src/__tests__/helpers/mock-istty.ts +27 -0
- package/src/__tests__/helpers/mock-kv.ts +9 -16
- package/src/__tests__/helpers/mock-oauth-flow.ts +255 -0
- package/src/__tests__/helpers/mock-process.ts +24 -0
- package/src/__tests__/helpers/mock-stdin.ts +103 -0
- package/src/__tests__/helpers/mock-web-socket.ts +29 -0
- package/src/__tests__/helpers/run-in-tmp.ts +10 -0
- package/src/__tests__/helpers/run-wrangler.ts +5 -3
- package/src/__tests__/helpers/write-worker-source.ts +31 -0
- package/src/__tests__/helpers/write-wrangler-toml.ts +17 -0
- package/src/__tests__/https-options.test.ts +130 -0
- package/src/__tests__/index.test.ts +150 -435
- package/src/__tests__/init.test.ts +1992 -0
- package/src/__tests__/jest.setup.ts +75 -5
- package/src/__tests__/kv.test.ts +634 -253
- package/src/__tests__/logger.test.ts +141 -0
- package/src/__tests__/package-manager.test.ts +156 -9
- package/src/__tests__/pages.test.ts +754 -0
- package/src/__tests__/parse.test.ts +330 -0
- package/src/__tests__/publish.test.ts +5895 -961
- package/src/__tests__/r2.test.ts +233 -0
- package/src/__tests__/route.test.ts +45 -0
- package/src/__tests__/secret.test.ts +362 -91
- package/src/__tests__/tail.test.ts +690 -0
- package/src/__tests__/user.test.ts +132 -0
- package/src/__tests__/whoami.test.tsx +60 -7
- package/src/abort.d.ts +3 -0
- package/src/bundle-reporter.tsx +29 -0
- package/src/bundle.ts +204 -0
- package/src/cfetch/index.ts +27 -8
- package/src/cfetch/internal.ts +75 -34
- package/src/cli.ts +6 -2
- package/src/config/README.md +107 -0
- package/src/config/config.ts +243 -0
- package/src/config/diagnostics.ts +80 -0
- package/src/config/environment.ts +420 -0
- package/src/config/index.ts +225 -0
- package/src/config/validation-helpers.ts +584 -0
- package/src/config/validation.ts +1580 -0
- package/src/config-cache.ts +45 -0
- package/src/create-worker-preview.ts +185 -0
- package/src/create-worker-upload-form.ts +254 -0
- package/src/dev/dev-vars.ts +36 -0
- package/src/dev/dev.tsx +399 -0
- package/src/dev/local.tsx +321 -0
- package/src/dev/remote.tsx +249 -0
- package/src/dev/use-esbuild.ts +112 -0
- package/src/dialogs.tsx +64 -6
- package/src/durable.ts +102 -0
- package/src/entry.ts +328 -0
- package/src/environment-variables.ts +35 -0
- package/src/errors.ts +11 -0
- package/src/generate-auth-url.ts +33 -0
- package/src/generate-random-state.ts +16 -0
- package/src/git-client.ts +42 -0
- package/src/https-options.ts +123 -0
- package/src/index.tsx +1804 -1009
- package/src/inspect.ts +80 -14
- package/src/intl-polyfill.d.ts +139 -0
- package/src/{kv.tsx → kv.ts} +193 -69
- package/src/logger.ts +73 -0
- package/src/miniflare-cli/README.md +30 -0
- package/src/miniflare-cli/enum-keys.ts +17 -0
- package/src/miniflare-cli/index.ts +41 -0
- package/src/miniflare-cli/request-context.ts +40 -0
- package/src/module-collection.ts +226 -31
- package/src/open-in-browser.ts +17 -0
- package/src/package-manager.ts +79 -25
- package/src/pages.tsx +1131 -84
- package/src/parse.ts +222 -0
- package/src/proxy.ts +176 -70
- package/src/publish.ts +637 -308
- package/src/r2.ts +50 -0
- package/src/selfsigned.d.ts +29 -0
- package/src/sites.tsx +185 -57
- package/src/tail/filters.ts +279 -0
- package/src/tail/index.ts +299 -0
- package/src/tail/printing.ts +67 -0
- package/src/update-check.ts +19 -0
- package/src/user.tsx +349 -166
- package/src/whoami.tsx +5 -3
- package/src/{api/worker.ts → worker.ts} +65 -39
- package/src/zones.ts +73 -0
- package/templates/gitignore +171 -0
- package/templates/new-worker-scheduled.js +17 -0
- package/templates/new-worker-scheduled.ts +32 -0
- package/templates/new-worker.js +1 -1
- package/templates/new-worker.ts +17 -2
- package/templates/no-op-worker.js +10 -0
- package/templates/static-asset-facade.js +3 -7
- package/templates/tsconfig.json +105 -0
- package/wrangler-dist/cli.js +77463 -75999
- package/src/__tests__/helpers/mock-user.ts +0 -27
- package/src/__tests__/logout.test.ts +0 -50
- package/src/api/form_data.ts +0 -134
- package/src/api/preview.ts +0 -128
- package/src/config.ts +0 -641
- package/src/dev.tsx +0 -834
- package/src/tail.tsx +0 -73
- package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
- package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
- package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
- package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
- package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
- package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
- package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
- package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
- package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
- package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
- package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
- package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
- package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
- package/vendor/wrangler-mime/CHANGELOG.md +0 -289
- package/vendor/wrangler-mime/LICENSE +0 -21
- package/vendor/wrangler-mime/Mime.js +0 -97
- package/vendor/wrangler-mime/README.md +0 -187
- package/vendor/wrangler-mime/cli.js +0 -46
- package/vendor/wrangler-mime/index.js +0 -4
- package/vendor/wrangler-mime/lite.js +0 -4
- package/vendor/wrangler-mime/package.json +0 -52
- package/vendor/wrangler-mime/types/other.js +0 -1
- package/vendor/wrangler-mime/types/standard.js +0 -1
- package/wrangler-dist/cli.js.map +0 -7
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { logger } from "../logger";
|
|
2
|
+
import { mockConsoleMethods } from "./helpers/mock-console";
|
|
3
|
+
|
|
4
|
+
describe("logger", () => {
|
|
5
|
+
const std = mockConsoleMethods();
|
|
6
|
+
|
|
7
|
+
it("should add colored markers to error and warning messages", () => {
|
|
8
|
+
logger.loggerLevel = "debug";
|
|
9
|
+
logger.debug("This is a debug message");
|
|
10
|
+
logger.log("This is a log message");
|
|
11
|
+
logger.warn("This is a warn message");
|
|
12
|
+
logger.error("This is a error message");
|
|
13
|
+
|
|
14
|
+
expect(std.debug).toMatchInlineSnapshot(`"This is a debug message"`);
|
|
15
|
+
expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
|
|
16
|
+
expect(std.warn).toMatchInlineSnapshot(`
|
|
17
|
+
"[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThis is a warn message[0m
|
|
18
|
+
|
|
19
|
+
"
|
|
20
|
+
`);
|
|
21
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
22
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
23
|
+
|
|
24
|
+
"
|
|
25
|
+
`);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
describe("loggerLevel=debug", () => {
|
|
29
|
+
it("should render messages that are at or above the log level set in the logger", () => {
|
|
30
|
+
logger.loggerLevel = "debug";
|
|
31
|
+
logger.debug("This is a debug message");
|
|
32
|
+
logger.log("This is a log message");
|
|
33
|
+
logger.warn("This is a warn message");
|
|
34
|
+
logger.error("This is a error message");
|
|
35
|
+
|
|
36
|
+
expect(std.debug).toMatchInlineSnapshot(`"This is a debug message"`);
|
|
37
|
+
expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
|
|
38
|
+
expect(std.warn).toMatchInlineSnapshot(`
|
|
39
|
+
"[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThis is a warn message[0m
|
|
40
|
+
|
|
41
|
+
"
|
|
42
|
+
`);
|
|
43
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
44
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
45
|
+
|
|
46
|
+
"
|
|
47
|
+
`);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe("loggerLevel=log", () => {
|
|
52
|
+
it("should render messages that are at or above the log level set in the logger", () => {
|
|
53
|
+
logger.loggerLevel = "log";
|
|
54
|
+
logger.debug("This is a debug message");
|
|
55
|
+
logger.log("This is a log message");
|
|
56
|
+
logger.warn("This is a warn message");
|
|
57
|
+
logger.error("This is a error message");
|
|
58
|
+
|
|
59
|
+
expect(std.debug).toMatchInlineSnapshot(`""`);
|
|
60
|
+
expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
|
|
61
|
+
expect(std.warn).toMatchInlineSnapshot(`
|
|
62
|
+
"[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThis is a warn message[0m
|
|
63
|
+
|
|
64
|
+
"
|
|
65
|
+
`);
|
|
66
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
67
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
68
|
+
|
|
69
|
+
"
|
|
70
|
+
`);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe("loggerLevel=warn", () => {
|
|
75
|
+
it("should render messages that are at or above the log level set in the logger", () => {
|
|
76
|
+
logger.loggerLevel = "warn";
|
|
77
|
+
logger.debug("This is a debug message");
|
|
78
|
+
logger.log("This is a log message");
|
|
79
|
+
logger.warn("This is a warn message");
|
|
80
|
+
logger.error("This is a error message");
|
|
81
|
+
|
|
82
|
+
expect(std.debug).toMatchInlineSnapshot(`""`);
|
|
83
|
+
expect(std.out).toMatchInlineSnapshot(`""`);
|
|
84
|
+
expect(std.warn).toMatchInlineSnapshot(`
|
|
85
|
+
"[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThis is a warn message[0m
|
|
86
|
+
|
|
87
|
+
"
|
|
88
|
+
`);
|
|
89
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
90
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
91
|
+
|
|
92
|
+
"
|
|
93
|
+
`);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
describe("loggerLevel=error", () => {
|
|
98
|
+
it("should render messages that are at or above the log level set in the logger", () => {
|
|
99
|
+
logger.loggerLevel = "error";
|
|
100
|
+
logger.debug("This is a debug message");
|
|
101
|
+
logger.log("This is a log message");
|
|
102
|
+
logger.warn("This is a warn message");
|
|
103
|
+
logger.error("This is a error message");
|
|
104
|
+
|
|
105
|
+
expect(std.debug).toMatchInlineSnapshot(`""`);
|
|
106
|
+
expect(std.out).toMatchInlineSnapshot(`""`);
|
|
107
|
+
expect(std.warn).toMatchInlineSnapshot(`""`);
|
|
108
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
109
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
110
|
+
|
|
111
|
+
"
|
|
112
|
+
`);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
describe("loggerLevelFromEnvVar=error", () => {
|
|
117
|
+
beforeEach(() => {
|
|
118
|
+
process.env.WRANGLER_LOG = "error";
|
|
119
|
+
});
|
|
120
|
+
afterEach(() => {
|
|
121
|
+
process.env.WRANGLER_LOG = undefined;
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("should render messages that are at or above the log level set in the env var", () => {
|
|
125
|
+
logger.loggerLevel = "error";
|
|
126
|
+
logger.debug("This is a debug message");
|
|
127
|
+
logger.log("This is a log message");
|
|
128
|
+
logger.warn("This is a warn message");
|
|
129
|
+
logger.error("This is a error message");
|
|
130
|
+
|
|
131
|
+
expect(std.debug).toMatchInlineSnapshot(`""`);
|
|
132
|
+
expect(std.out).toMatchInlineSnapshot(`""`);
|
|
133
|
+
expect(std.warn).toMatchInlineSnapshot(`""`);
|
|
134
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
135
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mThis is a error message[0m
|
|
136
|
+
|
|
137
|
+
"
|
|
138
|
+
`);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
@@ -7,100 +7,210 @@ const { getPackageManager, getPackageManagerName } =
|
|
|
7
7
|
jest.requireActual("../package-manager");
|
|
8
8
|
interface TestCase {
|
|
9
9
|
npm: boolean;
|
|
10
|
+
pnpm: boolean;
|
|
10
11
|
yarn: boolean;
|
|
11
12
|
npmLockFile: boolean;
|
|
12
13
|
yarnLockFile: boolean;
|
|
14
|
+
pnpmLockFile: boolean;
|
|
13
15
|
expectedPackageManager: string;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
const testCases: TestCase[] = [
|
|
17
|
-
// npm binary
|
|
19
|
+
// npm binary only
|
|
18
20
|
{
|
|
19
21
|
npm: true,
|
|
20
22
|
yarn: false,
|
|
23
|
+
pnpm: false,
|
|
21
24
|
npmLockFile: false,
|
|
22
25
|
yarnLockFile: false,
|
|
26
|
+
pnpmLockFile: false,
|
|
23
27
|
expectedPackageManager: "npm",
|
|
24
28
|
},
|
|
25
29
|
{
|
|
26
30
|
npm: true,
|
|
27
31
|
yarn: false,
|
|
32
|
+
pnpm: false,
|
|
28
33
|
npmLockFile: true,
|
|
29
34
|
yarnLockFile: false,
|
|
35
|
+
pnpmLockFile: false,
|
|
30
36
|
expectedPackageManager: "npm",
|
|
31
37
|
},
|
|
32
38
|
{
|
|
33
39
|
npm: true,
|
|
34
40
|
yarn: false,
|
|
41
|
+
pnpm: false,
|
|
35
42
|
npmLockFile: false,
|
|
36
43
|
yarnLockFile: true,
|
|
44
|
+
pnpmLockFile: false,
|
|
37
45
|
expectedPackageManager: "npm",
|
|
38
46
|
},
|
|
39
47
|
{
|
|
40
48
|
npm: true,
|
|
41
49
|
yarn: false,
|
|
50
|
+
pnpm: false,
|
|
42
51
|
npmLockFile: true,
|
|
43
52
|
yarnLockFile: true,
|
|
53
|
+
pnpmLockFile: false,
|
|
44
54
|
expectedPackageManager: "npm",
|
|
45
55
|
},
|
|
46
56
|
|
|
47
|
-
// yarn binary
|
|
57
|
+
// yarn binary only
|
|
48
58
|
{
|
|
49
59
|
npm: false,
|
|
50
60
|
yarn: true,
|
|
61
|
+
pnpm: false,
|
|
51
62
|
npmLockFile: false,
|
|
52
63
|
yarnLockFile: false,
|
|
64
|
+
pnpmLockFile: false,
|
|
53
65
|
expectedPackageManager: "yarn",
|
|
54
66
|
},
|
|
55
67
|
{
|
|
56
68
|
npm: false,
|
|
57
69
|
yarn: true,
|
|
70
|
+
pnpm: false,
|
|
58
71
|
npmLockFile: true,
|
|
59
72
|
yarnLockFile: false,
|
|
73
|
+
pnpmLockFile: false,
|
|
60
74
|
expectedPackageManager: "yarn",
|
|
61
75
|
},
|
|
62
76
|
{
|
|
63
77
|
npm: false,
|
|
64
78
|
yarn: true,
|
|
79
|
+
pnpm: false,
|
|
65
80
|
npmLockFile: false,
|
|
66
81
|
yarnLockFile: true,
|
|
82
|
+
pnpmLockFile: false,
|
|
67
83
|
expectedPackageManager: "yarn",
|
|
68
84
|
},
|
|
69
85
|
{
|
|
70
86
|
npm: false,
|
|
71
87
|
yarn: true,
|
|
88
|
+
pnpm: false,
|
|
72
89
|
npmLockFile: true,
|
|
73
90
|
yarnLockFile: true,
|
|
91
|
+
pnpmLockFile: false,
|
|
74
92
|
expectedPackageManager: "yarn",
|
|
75
93
|
},
|
|
76
94
|
|
|
95
|
+
// pnpm binary only
|
|
96
|
+
{
|
|
97
|
+
npm: false,
|
|
98
|
+
yarn: false,
|
|
99
|
+
pnpm: true,
|
|
100
|
+
npmLockFile: false,
|
|
101
|
+
yarnLockFile: false,
|
|
102
|
+
pnpmLockFile: true,
|
|
103
|
+
expectedPackageManager: "pnpm",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
npm: false,
|
|
107
|
+
yarn: false,
|
|
108
|
+
pnpm: true,
|
|
109
|
+
npmLockFile: true,
|
|
110
|
+
yarnLockFile: false,
|
|
111
|
+
pnpmLockFile: false,
|
|
112
|
+
expectedPackageManager: "pnpm",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
npm: false,
|
|
116
|
+
yarn: false,
|
|
117
|
+
pnpm: true,
|
|
118
|
+
npmLockFile: false,
|
|
119
|
+
yarnLockFile: true,
|
|
120
|
+
pnpmLockFile: false,
|
|
121
|
+
expectedPackageManager: "pnpm",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
npm: false,
|
|
125
|
+
yarn: false,
|
|
126
|
+
pnpm: true,
|
|
127
|
+
npmLockFile: true,
|
|
128
|
+
yarnLockFile: true,
|
|
129
|
+
pnpmLockFile: true,
|
|
130
|
+
expectedPackageManager: "pnpm",
|
|
131
|
+
},
|
|
132
|
+
|
|
77
133
|
// npm and yarn binaries
|
|
78
134
|
{
|
|
79
135
|
npm: true,
|
|
80
136
|
yarn: true,
|
|
137
|
+
pnpm: false,
|
|
138
|
+
npmLockFile: false,
|
|
139
|
+
yarnLockFile: false,
|
|
140
|
+
pnpmLockFile: false,
|
|
141
|
+
expectedPackageManager: "npm",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
npm: true,
|
|
145
|
+
yarn: true,
|
|
146
|
+
pnpm: false,
|
|
147
|
+
npmLockFile: true,
|
|
148
|
+
yarnLockFile: false,
|
|
149
|
+
pnpmLockFile: false,
|
|
150
|
+
expectedPackageManager: "npm",
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
npm: true,
|
|
154
|
+
yarn: true,
|
|
155
|
+
pnpm: false,
|
|
156
|
+
npmLockFile: false,
|
|
157
|
+
yarnLockFile: true,
|
|
158
|
+
pnpmLockFile: false,
|
|
159
|
+
expectedPackageManager: "yarn",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
npm: true,
|
|
163
|
+
yarn: true,
|
|
164
|
+
pnpm: false,
|
|
165
|
+
npmLockFile: true,
|
|
166
|
+
yarnLockFile: true,
|
|
167
|
+
pnpmLockFile: false,
|
|
168
|
+
expectedPackageManager: "npm",
|
|
169
|
+
},
|
|
170
|
+
// npm, yarn and pnpm binaries
|
|
171
|
+
{
|
|
172
|
+
npm: true,
|
|
173
|
+
yarn: true,
|
|
174
|
+
pnpm: true,
|
|
81
175
|
npmLockFile: false,
|
|
82
176
|
yarnLockFile: false,
|
|
177
|
+
pnpmLockFile: false,
|
|
83
178
|
expectedPackageManager: "npm",
|
|
84
179
|
},
|
|
85
180
|
{
|
|
86
181
|
npm: true,
|
|
87
182
|
yarn: true,
|
|
183
|
+
pnpm: true,
|
|
88
184
|
npmLockFile: true,
|
|
89
185
|
yarnLockFile: false,
|
|
186
|
+
pnpmLockFile: false,
|
|
90
187
|
expectedPackageManager: "npm",
|
|
91
188
|
},
|
|
92
189
|
{
|
|
93
190
|
npm: true,
|
|
94
191
|
yarn: true,
|
|
192
|
+
pnpm: true,
|
|
95
193
|
npmLockFile: false,
|
|
96
194
|
yarnLockFile: true,
|
|
195
|
+
pnpmLockFile: false,
|
|
97
196
|
expectedPackageManager: "yarn",
|
|
98
197
|
},
|
|
99
198
|
{
|
|
100
199
|
npm: true,
|
|
101
200
|
yarn: true,
|
|
201
|
+
pnpm: true,
|
|
202
|
+
npmLockFile: false,
|
|
203
|
+
yarnLockFile: false,
|
|
204
|
+
pnpmLockFile: true,
|
|
205
|
+
expectedPackageManager: "pnpm",
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
npm: true,
|
|
209
|
+
yarn: true,
|
|
210
|
+
pnpm: true,
|
|
102
211
|
npmLockFile: true,
|
|
103
212
|
yarnLockFile: true,
|
|
213
|
+
pnpmLockFile: true,
|
|
104
214
|
expectedPackageManager: "npm",
|
|
105
215
|
},
|
|
106
216
|
];
|
|
@@ -112,12 +222,13 @@ describe("getPackageManager()", () => {
|
|
|
112
222
|
describe("no supported package manager", () => {
|
|
113
223
|
mockYarn(false);
|
|
114
224
|
mockNpm(false);
|
|
225
|
+
mockPnpm(false);
|
|
115
226
|
|
|
116
227
|
it("should throw an error", async () => {
|
|
117
228
|
await expect(() =>
|
|
118
229
|
getPackageManager(process.cwd())
|
|
119
230
|
).rejects.toThrowErrorMatchingInlineSnapshot(
|
|
120
|
-
`"Unable to find a package manager. Supported managers are: npm and
|
|
231
|
+
`"Unable to find a package manager. Supported managers are: npm, yarn, and pnpm."`
|
|
121
232
|
);
|
|
122
233
|
});
|
|
123
234
|
});
|
|
@@ -125,16 +236,26 @@ describe("getPackageManager()", () => {
|
|
|
125
236
|
for (const {
|
|
126
237
|
npm,
|
|
127
238
|
yarn,
|
|
239
|
+
pnpm,
|
|
128
240
|
npmLockFile,
|
|
129
241
|
yarnLockFile,
|
|
242
|
+
pnpmLockFile,
|
|
130
243
|
expectedPackageManager,
|
|
131
244
|
} of testCases) {
|
|
132
245
|
describe(
|
|
133
|
-
getTestCaseDescription(
|
|
246
|
+
getTestCaseDescription(
|
|
247
|
+
npm,
|
|
248
|
+
yarn,
|
|
249
|
+
pnpm,
|
|
250
|
+
npmLockFile,
|
|
251
|
+
yarnLockFile,
|
|
252
|
+
pnpmLockFile
|
|
253
|
+
),
|
|
134
254
|
() => {
|
|
135
255
|
mockYarn(yarn);
|
|
136
256
|
mockNpm(npm);
|
|
137
|
-
|
|
257
|
+
mockPnpm(pnpm);
|
|
258
|
+
mockLockFiles(npmLockFile, yarnLockFile, pnpmLockFile);
|
|
138
259
|
|
|
139
260
|
it(`should return the ${expectedPackageManager} package manager`, async () => {
|
|
140
261
|
const actualPackageManager = await getPackageManager(process.cwd());
|
|
@@ -151,7 +272,7 @@ describe("getPackageManager()", () => {
|
|
|
151
272
|
* Create a fake yarn binary
|
|
152
273
|
*/
|
|
153
274
|
function mockYarn(succeed: boolean): void {
|
|
154
|
-
let unMock;
|
|
275
|
+
let unMock: () => void;
|
|
155
276
|
beforeEach(async () => {
|
|
156
277
|
unMock = await mockBinary("yarn", `process.exit(${succeed ? 0 : 1})`);
|
|
157
278
|
});
|
|
@@ -162,17 +283,32 @@ function mockYarn(succeed: boolean): void {
|
|
|
162
283
|
* Create a fake npm binary
|
|
163
284
|
*/
|
|
164
285
|
function mockNpm(succeed: boolean): void {
|
|
165
|
-
let unMock;
|
|
286
|
+
let unMock: () => void;
|
|
166
287
|
beforeEach(async () => {
|
|
167
288
|
unMock = await mockBinary("npm", `process.exit(${succeed ? 0 : 1})`);
|
|
168
289
|
});
|
|
169
290
|
afterEach(() => unMock());
|
|
170
291
|
}
|
|
171
292
|
|
|
293
|
+
/**
|
|
294
|
+
* Create a fake pnpm binary
|
|
295
|
+
*/
|
|
296
|
+
function mockPnpm(succeed: boolean): void {
|
|
297
|
+
let unMock: () => void;
|
|
298
|
+
beforeEach(async () => {
|
|
299
|
+
unMock = await mockBinary("pnpm", `process.exit(${succeed ? 0 : 1})`);
|
|
300
|
+
});
|
|
301
|
+
afterEach(() => unMock());
|
|
302
|
+
}
|
|
303
|
+
|
|
172
304
|
/**
|
|
173
305
|
* Create a fake lock files.
|
|
174
306
|
*/
|
|
175
|
-
function mockLockFiles(
|
|
307
|
+
function mockLockFiles(
|
|
308
|
+
npmLockFile: boolean,
|
|
309
|
+
yarnLockFile: boolean,
|
|
310
|
+
pnpmLockFile: boolean
|
|
311
|
+
) {
|
|
176
312
|
beforeEach(() => {
|
|
177
313
|
if (npmLockFile) {
|
|
178
314
|
writeFileSync("package-lock.json", "");
|
|
@@ -180,14 +316,19 @@ function mockLockFiles(npmLockFile: boolean, yarnLockFile: boolean) {
|
|
|
180
316
|
if (yarnLockFile) {
|
|
181
317
|
writeFileSync("yarn.lock", "");
|
|
182
318
|
}
|
|
319
|
+
if (pnpmLockFile) {
|
|
320
|
+
writeFileSync("pnpm-lock.yaml", "");
|
|
321
|
+
}
|
|
183
322
|
});
|
|
184
323
|
}
|
|
185
324
|
|
|
186
325
|
function getTestCaseDescription(
|
|
187
326
|
npm: boolean,
|
|
188
327
|
yarn: boolean,
|
|
328
|
+
pnpm: boolean,
|
|
189
329
|
npmLockFile: boolean,
|
|
190
|
-
yarnLockFile: boolean
|
|
330
|
+
yarnLockFile: boolean,
|
|
331
|
+
pnpmLockFile: boolean
|
|
191
332
|
): string {
|
|
192
333
|
const criteria: string[] = [];
|
|
193
334
|
if (npm) {
|
|
@@ -202,5 +343,11 @@ function getTestCaseDescription(
|
|
|
202
343
|
if (yarnLockFile) {
|
|
203
344
|
criteria.push("yarn.lock");
|
|
204
345
|
}
|
|
346
|
+
if (pnpm) {
|
|
347
|
+
criteria.push("pnpm");
|
|
348
|
+
}
|
|
349
|
+
if (pnpmLockFile) {
|
|
350
|
+
criteria.push("pnpm-lock.yaml");
|
|
351
|
+
}
|
|
205
352
|
return "using " + criteria.join("; ");
|
|
206
353
|
}
|