@sentry/wizard 3.31.0 → 3.33.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/CHANGELOG.md +13 -0
- package/README.md +19 -24
- package/bin.ts +71 -21
- package/dist/bin.js +97 -52
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/jest.config.d.ts +15 -0
- package/dist/e2e-tests/jest.config.js +17 -0
- package/dist/e2e-tests/jest.config.js.map +1 -0
- package/dist/e2e-tests/tests/remix.test.d.ts +1 -0
- package/dist/e2e-tests/tests/remix.test.js +187 -0
- package/dist/e2e-tests/tests/remix.test.js.map +1 -0
- package/dist/e2e-tests/utils/index.d.ts +117 -0
- package/dist/e2e-tests/utils/index.js +353 -0
- package/dist/e2e-tests/utils/index.js.map +1 -0
- package/dist/lib/Steps/SentryProjectSelector.js +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/package.json +7 -3
- package/dist/src/remix/sdk-example.js +5 -1
- package/dist/src/remix/sdk-example.js.map +1 -1
- package/dist/src/run.d.ts +13 -1
- package/dist/src/run.js +34 -7
- package/dist/src/run.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.d.ts +2 -2
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/remix.d.ts +2 -2
- package/dist/src/sourcemaps/tools/remix.js.map +1 -1
- package/dist/src/telemetry.js +1 -0
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/clack-utils.js +29 -19
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/types.d.ts +11 -14
- package/dist/src/utils/types.js.map +1 -1
- package/e2e-tests/jest.config.ts +14 -0
- package/e2e-tests/test-applications/remix-test-app/app/entry.client.tsx +18 -0
- package/e2e-tests/test-applications/remix-test-app/app/entry.server.tsx +140 -0
- package/e2e-tests/test-applications/remix-test-app/app/root.tsx +30 -0
- package/e2e-tests/test-applications/remix-test-app/app/routes/_index.tsx +48 -0
- package/e2e-tests/test-applications/remix-test-app/app/tailwind.css +3 -0
- package/e2e-tests/test-applications/remix-test-app/package.json +37 -0
- package/e2e-tests/test-applications/remix-test-app/postcss.config.js +6 -0
- package/e2e-tests/test-applications/remix-test-app/tailwind.config.ts +9 -0
- package/e2e-tests/test-applications/remix-test-app/vite.config.ts +16 -0
- package/e2e-tests/tests/remix.test.ts +163 -0
- package/e2e-tests/utils/index.ts +302 -0
- package/lib/Steps/SentryProjectSelector.ts +1 -1
- package/package.json +7 -3
- package/src/remix/sdk-example.ts +6 -0
- package/src/run.ts +53 -11
- package/src/sourcemaps/sourcemaps-wizard.ts +4 -3
- package/src/sourcemaps/tools/remix.ts +2 -2
- package/src/telemetry.ts +1 -0
- package/src/utils/clack-utils.ts +28 -10
- package/src/utils/types.ts +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.33.0
|
|
4
|
+
|
|
5
|
+
- feat: Only format changed files with Prettier ([#670](https://github.com/getsentry/sentry-wizard/pull/670))
|
|
6
|
+
- ref(remix): Use recursive true in error example creation ([#681](https://github.com/getsentry/sentry-wizard/pull/681))
|
|
7
|
+
- ref(remix): Fix creation sentry example when no routes folder ([#680](https://github.com/getsentry/sentry-wizard/pull/680))
|
|
8
|
+
- build(deps): bump axios from 1.6.0 to 1.7.4 ([#655](https://github.com/getsentry/sentry-wizard/pull/655))
|
|
9
|
+
- build(deps): bump micromatch from 4.0.5 to 4.0.8 ([#654](https://github.com/getsentry/sentry-wizard/pull/654))
|
|
10
|
+
|
|
11
|
+
## 3.32.0
|
|
12
|
+
|
|
13
|
+
- feat: Add `--saas` CLI arg to skip self-hosted or SaaS selection step (#678)
|
|
14
|
+
- ref: Add `--project` and `--org` args to help message and update readme (#679)
|
|
15
|
+
|
|
3
16
|
## 3.31.0
|
|
4
17
|
|
|
5
18
|
- fix(sveltekit): Create bundler plugin env file instead of sentryclirc (#675)
|
package/README.md
CHANGED
|
@@ -49,33 +49,28 @@ yarn sentry-wizard
|
|
|
49
49
|
npx @sentry/wizard
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
At the current moment, the wizard is meant to be used for React Native, Cordova, Electron
|
|
52
|
+
At the current moment, the wizard is meant to be used for React Native, Cordova, Electron, Next.js, Remix and Sveltekit. If you have other platforms you would like the wizard to support, please open a [GitHub issue](https://github.com/getsentry/sentry-wizard/issues)!
|
|
53
53
|
|
|
54
54
|
# Options
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
-u, --url The url to your Sentry installation
|
|
75
|
-
env: SENTRY_WIZARD_URL [default: "https://sentry.io/"]
|
|
76
|
-
-s, --signup Redirect to signup page if not logged in
|
|
77
|
-
Use if don't have a Sentry account [boolean]
|
|
78
|
-
```
|
|
56
|
+
The following CLI arguments are available:
|
|
57
|
+
|
|
58
|
+
| Option | Description | Type | Default | Choices | Environment Variable |
|
|
59
|
+
| --------------------- | ----------------------------------------------------------------- | ------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------- |
|
|
60
|
+
| `--help` | Show help | boolean | | | |
|
|
61
|
+
| `--version` | Show version number | boolean | | | |
|
|
62
|
+
| `--debug` | Enable verbose logging | boolean | `false` | | `SENTRY_WIZARD_DEBUG` |
|
|
63
|
+
| `--uninstall` | Revert project setup process. Not available for all integrations. | boolean | `false` | | `SENTRY_WIZARD_UNINSTALL` |
|
|
64
|
+
| `--skip-connect` | Skips the connection to the server | boolean | `false` | | `SENTRY_WIZARD_SKIP_CONNECT` |
|
|
65
|
+
| `--quiet` | Do not fallback to prompting user asking questions | boolean | `false` | | `SENTRY_WIZARD_QUIET` |
|
|
66
|
+
| `-i, --integration` | Choose the integration to setup | choices | Select integration during setup | "reactNative", "ios", "android", "cordova", "electron", "nextjs", "remix", "sveltekit", "sourcemaps" | `SENTRY_WIZARD_INTEGRATION` |
|
|
67
|
+
| `-p, --platform` | Choose platform(s) | array | Select platform(s) during setup | "ios", "android" | `SENTRY_WIZARD_PLATFORM` |
|
|
68
|
+
| `-u, --url` | The URL to your Sentry installation | string | `https://sentry.io` | | `SENTRY_WIZARD_URL` |
|
|
69
|
+
| `--project` | The Sentry project slug to use | string | Select project during setup | | |
|
|
70
|
+
| `--org` | The Sentry org slug to use | string | Select org during setup | | |
|
|
71
|
+
| `--saas` | Skip the self-hosted or SaaS URL selection process | boolean | Select self-hosted or SaaS during setup | | |
|
|
72
|
+
| `-s, --signup` | Redirect to signup page if not logged in | boolean | `false` | | |
|
|
73
|
+
| `--disable-telemetry` | Don't send telemetry data to Sentry | boolean | `false` | | |
|
|
79
74
|
|
|
80
75
|
## Resources
|
|
81
76
|
|
package/bin.ts
CHANGED
|
@@ -21,61 +21,111 @@ import { run } from './src/run';
|
|
|
21
21
|
|
|
22
22
|
export * from './lib/Setup';
|
|
23
23
|
|
|
24
|
+
const PRESELECTED_PROJECT_OPTIONS = {
|
|
25
|
+
'preSelectedProject.authToken': {
|
|
26
|
+
describe: 'Preselected project auth token',
|
|
27
|
+
},
|
|
28
|
+
'preSelectedProject.selfHosted': {
|
|
29
|
+
describe: 'Preselected project is self-hosted',
|
|
30
|
+
},
|
|
31
|
+
'preSelectedProject.dsn': {
|
|
32
|
+
describe: 'Preselected project DSN',
|
|
33
|
+
},
|
|
34
|
+
'preSelectedProject.id': {
|
|
35
|
+
describe: 'Preselected project id',
|
|
36
|
+
},
|
|
37
|
+
'preSelectedProject.projectSlug': {
|
|
38
|
+
describe: 'Preselected project slug',
|
|
39
|
+
},
|
|
40
|
+
'preSelectedProject.projectName': {
|
|
41
|
+
describe: 'Preselected project name',
|
|
42
|
+
},
|
|
43
|
+
'preSelectedProject.orgId': {
|
|
44
|
+
describe: 'Preselected organization id',
|
|
45
|
+
},
|
|
46
|
+
'preSelectedProject.orgName': {
|
|
47
|
+
describe: 'Preselected organization name',
|
|
48
|
+
},
|
|
49
|
+
'preSelectedProject.orgSlug': {
|
|
50
|
+
describe: 'Preselected organization slug',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
24
54
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
|
25
|
-
const argv = yargs(hideBin(process.argv))
|
|
26
|
-
|
|
55
|
+
const argv = yargs(hideBin(process.argv)).options({
|
|
56
|
+
debug: {
|
|
27
57
|
default: false,
|
|
28
58
|
describe: 'Enable verbose logging\nenv: SENTRY_WIZARD_DEBUG',
|
|
29
59
|
type: 'boolean',
|
|
30
|
-
}
|
|
31
|
-
|
|
60
|
+
},
|
|
61
|
+
uninstall: {
|
|
32
62
|
default: false,
|
|
33
63
|
describe: 'Revert project setup process\nenv: SENTRY_WIZARD_UNINSTALL',
|
|
34
64
|
type: 'boolean',
|
|
35
|
-
}
|
|
36
|
-
|
|
65
|
+
},
|
|
66
|
+
'skip-connect': {
|
|
37
67
|
default: false,
|
|
38
68
|
describe:
|
|
39
69
|
'Skips the connection to the server\nenv: SENTRY_WIZARD_SKIP_CONNECT',
|
|
40
70
|
type: 'boolean',
|
|
41
|
-
}
|
|
42
|
-
|
|
71
|
+
},
|
|
72
|
+
quiet: {
|
|
43
73
|
default: false,
|
|
44
74
|
describe:
|
|
45
75
|
'Do not fallback to prompting user asking questions\nenv: SENTRY_WIZARD_QUIET',
|
|
46
76
|
type: 'boolean',
|
|
47
|
-
}
|
|
48
|
-
|
|
77
|
+
},
|
|
78
|
+
i: {
|
|
49
79
|
alias: 'integration',
|
|
50
80
|
choices: Object.keys(Integration),
|
|
51
81
|
describe: 'Choose the integration to setup\nenv: SENTRY_WIZARD_INTEGRATION',
|
|
52
|
-
}
|
|
53
|
-
|
|
82
|
+
},
|
|
83
|
+
p: {
|
|
54
84
|
alias: 'platform',
|
|
55
85
|
choices: Object.keys(Platform),
|
|
56
86
|
describe: 'Choose platform(s)\nenv: SENTRY_WIZARD_PLATFORM',
|
|
57
87
|
type: 'array',
|
|
58
|
-
}
|
|
59
|
-
|
|
88
|
+
},
|
|
89
|
+
u: {
|
|
60
90
|
alias: 'url',
|
|
61
91
|
describe: 'The url to your Sentry installation\nenv: SENTRY_WIZARD_URL',
|
|
62
|
-
}
|
|
63
|
-
|
|
92
|
+
},
|
|
93
|
+
project: {
|
|
94
|
+
type: 'string',
|
|
95
|
+
describe: 'The Sentry project slug to use',
|
|
96
|
+
defaultDescription: 'Select project during setup',
|
|
97
|
+
default: undefined,
|
|
98
|
+
},
|
|
99
|
+
org: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
describe: 'The Sentry org slug to use',
|
|
102
|
+
defaultDescription: 'Select org during setup',
|
|
103
|
+
default: undefined,
|
|
104
|
+
},
|
|
105
|
+
saas: {
|
|
106
|
+
default: false,
|
|
107
|
+
describe: 'Skip the self-hosted or SaaS URL selection process',
|
|
108
|
+
defaultDescription: 'Select self-hosted or SaaS during setup',
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
},
|
|
111
|
+
s: {
|
|
64
112
|
alias: 'signup',
|
|
65
113
|
default: false,
|
|
66
114
|
describe: 'Redirect to signup page if not logged in',
|
|
67
115
|
type: 'boolean',
|
|
68
|
-
}
|
|
69
|
-
|
|
116
|
+
},
|
|
117
|
+
'disable-telemetry': {
|
|
70
118
|
default: false,
|
|
71
119
|
describe: "Don't send telemetry data to Sentry",
|
|
72
120
|
type: 'boolean',
|
|
73
|
-
}
|
|
74
|
-
|
|
121
|
+
},
|
|
122
|
+
'promo-code': {
|
|
75
123
|
alias: 'promo-code',
|
|
76
124
|
describe: 'A promo code that will be applied during signup',
|
|
77
125
|
type: 'string',
|
|
78
|
-
}
|
|
126
|
+
},
|
|
127
|
+
...PRESELECTED_PROJECT_OPTIONS,
|
|
128
|
+
}).argv;
|
|
79
129
|
|
|
80
130
|
// @ts-expect-error - for some reason TS doesn't recognize the aliases as valid properties
|
|
81
131
|
// meaning it only knows e.g. u but not url. Maybe a bug in this old version of yargs?
|
package/dist/bin.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
3
14
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
15
|
if (k2 === undefined) k2 = k;
|
|
5
16
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -32,59 +43,93 @@ if (!(0, semver_1.satisfies)(process.version, NODE_VERSION_RANGE)) {
|
|
|
32
43
|
var Constants_1 = require("./lib/Constants");
|
|
33
44
|
var run_1 = require("./src/run");
|
|
34
45
|
__exportStar(require("./lib/Setup"), exports);
|
|
46
|
+
var PRESELECTED_PROJECT_OPTIONS = {
|
|
47
|
+
'preSelectedProject.authToken': {
|
|
48
|
+
describe: 'Preselected project auth token',
|
|
49
|
+
},
|
|
50
|
+
'preSelectedProject.selfHosted': {
|
|
51
|
+
describe: 'Preselected project is self-hosted',
|
|
52
|
+
},
|
|
53
|
+
'preSelectedProject.dsn': {
|
|
54
|
+
describe: 'Preselected project DSN',
|
|
55
|
+
},
|
|
56
|
+
'preSelectedProject.id': {
|
|
57
|
+
describe: 'Preselected project id',
|
|
58
|
+
},
|
|
59
|
+
'preSelectedProject.projectSlug': {
|
|
60
|
+
describe: 'Preselected project slug',
|
|
61
|
+
},
|
|
62
|
+
'preSelectedProject.projectName': {
|
|
63
|
+
describe: 'Preselected project name',
|
|
64
|
+
},
|
|
65
|
+
'preSelectedProject.orgId': {
|
|
66
|
+
describe: 'Preselected organization id',
|
|
67
|
+
},
|
|
68
|
+
'preSelectedProject.orgName': {
|
|
69
|
+
describe: 'Preselected organization name',
|
|
70
|
+
},
|
|
71
|
+
'preSelectedProject.orgSlug': {
|
|
72
|
+
describe: 'Preselected organization slug',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
35
75
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
|
36
|
-
var argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
var argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)).options(__assign({ debug: {
|
|
77
|
+
default: false,
|
|
78
|
+
describe: 'Enable verbose logging\nenv: SENTRY_WIZARD_DEBUG',
|
|
79
|
+
type: 'boolean',
|
|
80
|
+
}, uninstall: {
|
|
81
|
+
default: false,
|
|
82
|
+
describe: 'Revert project setup process\nenv: SENTRY_WIZARD_UNINSTALL',
|
|
83
|
+
type: 'boolean',
|
|
84
|
+
}, 'skip-connect': {
|
|
85
|
+
default: false,
|
|
86
|
+
describe: 'Skips the connection to the server\nenv: SENTRY_WIZARD_SKIP_CONNECT',
|
|
87
|
+
type: 'boolean',
|
|
88
|
+
}, quiet: {
|
|
89
|
+
default: false,
|
|
90
|
+
describe: 'Do not fallback to prompting user asking questions\nenv: SENTRY_WIZARD_QUIET',
|
|
91
|
+
type: 'boolean',
|
|
92
|
+
}, i: {
|
|
93
|
+
alias: 'integration',
|
|
94
|
+
choices: Object.keys(Constants_1.Integration),
|
|
95
|
+
describe: 'Choose the integration to setup\nenv: SENTRY_WIZARD_INTEGRATION',
|
|
96
|
+
}, p: {
|
|
97
|
+
alias: 'platform',
|
|
98
|
+
choices: Object.keys(Constants_1.Platform),
|
|
99
|
+
describe: 'Choose platform(s)\nenv: SENTRY_WIZARD_PLATFORM',
|
|
100
|
+
type: 'array',
|
|
101
|
+
}, u: {
|
|
102
|
+
alias: 'url',
|
|
103
|
+
describe: 'The url to your Sentry installation\nenv: SENTRY_WIZARD_URL',
|
|
104
|
+
}, project: {
|
|
105
|
+
type: 'string',
|
|
106
|
+
describe: 'The Sentry project slug to use',
|
|
107
|
+
defaultDescription: 'Select project during setup',
|
|
108
|
+
default: undefined,
|
|
109
|
+
}, org: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
describe: 'The Sentry org slug to use',
|
|
112
|
+
defaultDescription: 'Select org during setup',
|
|
113
|
+
default: undefined,
|
|
114
|
+
}, saas: {
|
|
115
|
+
default: false,
|
|
116
|
+
describe: 'Skip the self-hosted or SaaS URL selection process',
|
|
117
|
+
defaultDescription: 'Select self-hosted or SaaS during setup',
|
|
118
|
+
type: 'boolean',
|
|
119
|
+
}, s: {
|
|
120
|
+
alias: 'signup',
|
|
121
|
+
default: false,
|
|
122
|
+
describe: 'Redirect to signup page if not logged in',
|
|
123
|
+
type: 'boolean',
|
|
124
|
+
}, 'disable-telemetry': {
|
|
125
|
+
default: false,
|
|
126
|
+
describe: "Don't send telemetry data to Sentry",
|
|
127
|
+
type: 'boolean',
|
|
128
|
+
}, 'promo-code': {
|
|
129
|
+
alias: 'promo-code',
|
|
130
|
+
describe: 'A promo code that will be applied during signup',
|
|
131
|
+
type: 'string',
|
|
132
|
+
} }, PRESELECTED_PROJECT_OPTIONS)).argv;
|
|
88
133
|
// @ts-expect-error - for some reason TS doesn't recognize the aliases as valid properties
|
|
89
134
|
// meaning it only knows e.g. u but not url. Maybe a bug in this old version of yargs?
|
|
90
135
|
// Can't upgrade yargs though without dropping support for Node 14.
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { satisfies } from 'semver';\nimport { red } from './lib/Helper/Logging';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nconst NODE_VERSION_RANGE = '>=14.18.0';\n\n// Have to run this above the other imports because they are importing clack that\n// has the problematic imports.\nif (!satisfies(process.version, NODE_VERSION_RANGE)) {\n red(\n `Sentry wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`,\n );\n process.exit(1);\n}\n\nimport { Integration, Platform } from './lib/Constants';\nimport { run } from './src/run';\n\nexport * from './lib/Setup';\n\nconst PRESELECTED_PROJECT_OPTIONS = {\n 'preSelectedProject.authToken': {\n describe: 'Preselected project auth token',\n },\n 'preSelectedProject.selfHosted': {\n describe: 'Preselected project is self-hosted',\n },\n 'preSelectedProject.dsn': {\n describe: 'Preselected project DSN',\n },\n 'preSelectedProject.id': {\n describe: 'Preselected project id',\n },\n 'preSelectedProject.projectSlug': {\n describe: 'Preselected project slug',\n },\n 'preSelectedProject.projectName': {\n describe: 'Preselected project name',\n },\n 'preSelectedProject.orgId': {\n describe: 'Preselected organization id',\n },\n 'preSelectedProject.orgName': {\n describe: 'Preselected organization name',\n },\n 'preSelectedProject.orgSlug': {\n describe: 'Preselected organization slug',\n },\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\nconst argv = yargs(hideBin(process.argv)).options({\n debug: {\n default: false,\n describe: 'Enable verbose logging\\nenv: SENTRY_WIZARD_DEBUG',\n type: 'boolean',\n },\n uninstall: {\n default: false,\n describe: 'Revert project setup process\\nenv: SENTRY_WIZARD_UNINSTALL',\n type: 'boolean',\n },\n 'skip-connect': {\n default: false,\n describe:\n 'Skips the connection to the server\\nenv: SENTRY_WIZARD_SKIP_CONNECT',\n type: 'boolean',\n },\n quiet: {\n default: false,\n describe:\n 'Do not fallback to prompting user asking questions\\nenv: SENTRY_WIZARD_QUIET',\n type: 'boolean',\n },\n i: {\n alias: 'integration',\n choices: Object.keys(Integration),\n describe: 'Choose the integration to setup\\nenv: SENTRY_WIZARD_INTEGRATION',\n },\n p: {\n alias: 'platform',\n choices: Object.keys(Platform),\n describe: 'Choose platform(s)\\nenv: SENTRY_WIZARD_PLATFORM',\n type: 'array',\n },\n u: {\n alias: 'url',\n describe: 'The url to your Sentry installation\\nenv: SENTRY_WIZARD_URL',\n },\n project: {\n type: 'string',\n describe: 'The Sentry project slug to use',\n defaultDescription: 'Select project during setup',\n default: undefined,\n },\n org: {\n type: 'string',\n describe: 'The Sentry org slug to use',\n defaultDescription: 'Select org during setup',\n default: undefined,\n },\n saas: {\n default: false,\n describe: 'Skip the self-hosted or SaaS URL selection process',\n defaultDescription: 'Select self-hosted or SaaS during setup',\n type: 'boolean',\n },\n s: {\n alias: 'signup',\n default: false,\n describe: 'Redirect to signup page if not logged in',\n type: 'boolean',\n },\n 'disable-telemetry': {\n default: false,\n describe: \"Don't send telemetry data to Sentry\",\n type: 'boolean',\n },\n 'promo-code': {\n alias: 'promo-code',\n describe: 'A promo code that will be applied during signup',\n type: 'string',\n },\n ...PRESELECTED_PROJECT_OPTIONS,\n}).argv;\n\n// @ts-expect-error - for some reason TS doesn't recognize the aliases as valid properties\n// meaning it only knows e.g. u but not url. Maybe a bug in this old version of yargs?\n// Can't upgrade yargs though without dropping support for Node 14.\nvoid run(argv);\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
testTimeout: number;
|
|
3
|
+
testEnvironment: string;
|
|
4
|
+
testMatch: string[];
|
|
5
|
+
transform: {
|
|
6
|
+
'^.+\\.tsx?$': string;
|
|
7
|
+
};
|
|
8
|
+
moduleFileExtensions: string[];
|
|
9
|
+
globals: {
|
|
10
|
+
'ts-jest': {
|
|
11
|
+
tsconfig: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = {
|
|
4
|
+
testTimeout: 360000,
|
|
5
|
+
testEnvironment: 'node',
|
|
6
|
+
testMatch: ['**/*.test.ts'],
|
|
7
|
+
transform: {
|
|
8
|
+
'^.+\\.tsx?$': 'ts-jest',
|
|
9
|
+
},
|
|
10
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
11
|
+
globals: {
|
|
12
|
+
'ts-jest': {
|
|
13
|
+
tsconfig: 'tsconfig.json',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=jest.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../../e2e-tests/jest.config.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,SAAS,EAAE,CAAC,cAAc,CAAC;IAC3B,SAAS,EAAE;QACT,aAAa,EAAE,SAAS;KACzB;IACD,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAChE,OAAO,EAAE;QACP,SAAS,EAAE;YACT,QAAQ,EAAE,eAAe;SAC1B;KACF;CACF,CAAA","sourcesContent":["export default {\n testTimeout: 360000,\n testEnvironment: 'node',\n testMatch: ['**/*.test.ts'],\n transform: {\n '^.+\\\\.tsx?$': 'ts-jest',\n },\n moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],\n globals: {\n 'ts-jest': {\n tsconfig: 'tsconfig.json',\n },\n },\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
/* eslint-disable jest/expect-expect */
|
|
63
|
+
var Constants_1 = require("../../lib/Constants");
|
|
64
|
+
var utils_1 = require("../utils");
|
|
65
|
+
var utils_2 = require("../utils");
|
|
66
|
+
var utils_3 = require("../utils");
|
|
67
|
+
var path = __importStar(require("path"));
|
|
68
|
+
describe('Remix', function () {
|
|
69
|
+
var integration = Constants_1.Integration.remix;
|
|
70
|
+
var projectDir = path.resolve(__dirname, '../test-applications/remix-test-app');
|
|
71
|
+
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
72
|
+
var wizardInstance, packageManagerPrompted, tracingOptionPrompted, replayOptionPrompted, examplePagePrompted;
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
wizardInstance = (0, utils_2.startWizardInstance)(integration, projectDir);
|
|
77
|
+
return [4 /*yield*/, wizardInstance.waitForOutput('Please select your package manager.')];
|
|
78
|
+
case 1:
|
|
79
|
+
packageManagerPrompted = _a.sent();
|
|
80
|
+
if (packageManagerPrompted) {
|
|
81
|
+
// Selecting `yarn` as the package manager
|
|
82
|
+
wizardInstance.sendStdin(utils_1.KEYS.DOWN);
|
|
83
|
+
wizardInstance.sendStdin(utils_1.KEYS.ENTER);
|
|
84
|
+
}
|
|
85
|
+
return [4 /*yield*/, wizardInstance.waitForOutput('Do you want to enable Tracing', {
|
|
86
|
+
timeout: 240000,
|
|
87
|
+
})];
|
|
88
|
+
case 2:
|
|
89
|
+
tracingOptionPrompted = _a.sent();
|
|
90
|
+
if (tracingOptionPrompted) {
|
|
91
|
+
wizardInstance.sendStdin(utils_1.KEYS.ENTER);
|
|
92
|
+
}
|
|
93
|
+
return [4 /*yield*/, wizardInstance.waitForOutput('Do you want to enable Sentry Session Replay')];
|
|
94
|
+
case 3:
|
|
95
|
+
replayOptionPrompted = _a.sent();
|
|
96
|
+
if (replayOptionPrompted) {
|
|
97
|
+
wizardInstance.sendStdin(utils_1.KEYS.ENTER);
|
|
98
|
+
}
|
|
99
|
+
return [4 /*yield*/, wizardInstance.waitForOutput('Do you want to create an example page', {
|
|
100
|
+
optional: true,
|
|
101
|
+
})];
|
|
102
|
+
case 4:
|
|
103
|
+
examplePagePrompted = _a.sent();
|
|
104
|
+
if (examplePagePrompted) {
|
|
105
|
+
wizardInstance.sendStdin(utils_1.KEYS.ENTER);
|
|
106
|
+
wizardInstance.sendStdin(utils_1.KEYS.ENTER);
|
|
107
|
+
}
|
|
108
|
+
return [4 /*yield*/, wizardInstance.waitForOutput('Sentry has been successfully configured for your Remix project')];
|
|
109
|
+
case 5:
|
|
110
|
+
_a.sent();
|
|
111
|
+
wizardInstance.kill();
|
|
112
|
+
return [2 /*return*/];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}); });
|
|
116
|
+
afterAll(function () {
|
|
117
|
+
(0, utils_1.revertLocalChanges)(projectDir);
|
|
118
|
+
(0, utils_1.cleanupGit)(projectDir);
|
|
119
|
+
});
|
|
120
|
+
test('package.json is updated correctly', function () {
|
|
121
|
+
(0, utils_3.checkPackageJson)(projectDir, integration);
|
|
122
|
+
});
|
|
123
|
+
test('.env-sentry-build-plugin is created and contains the auth token', function () {
|
|
124
|
+
(0, utils_1.checkEnvBuildPlugin)(projectDir);
|
|
125
|
+
});
|
|
126
|
+
test('example page exists', function () {
|
|
127
|
+
(0, utils_3.checkFileExists)("".concat(projectDir, "/app/routes/sentry-example-page.tsx"));
|
|
128
|
+
});
|
|
129
|
+
test('instrumentation.server file exists', function () {
|
|
130
|
+
(0, utils_3.checkFileExists)("".concat(projectDir, "/instrumentation.server.mjs"));
|
|
131
|
+
});
|
|
132
|
+
test('entry.client file contains Sentry initialization', function () {
|
|
133
|
+
(0, utils_3.checkFileContents)("".concat(projectDir, "/app/entry.client.tsx"), [
|
|
134
|
+
'import * as Sentry from "@sentry/remix";',
|
|
135
|
+
"Sentry.init({\n dsn: \"".concat(utils_3.TEST_ARGS.PROJECT_DSN, "\",\n tracesSampleRate: 1,\n\n integrations: [Sentry.browserTracingIntegration({\n useEffect,\n useLocation,\n useMatches\n }), Sentry.replayIntegration({\n maskAllText: true,\n blockAllMedia: true\n })],\n\n replaysSessionSampleRate: 0.1,\n replaysOnErrorSampleRate: 1\n})"),
|
|
136
|
+
]);
|
|
137
|
+
});
|
|
138
|
+
test('entry.server file contains Sentry code', function () {
|
|
139
|
+
(0, utils_3.checkFileContents)("".concat(projectDir, "/app/entry.server.tsx"), [
|
|
140
|
+
'import * as Sentry from "@sentry/remix";',
|
|
141
|
+
"export const handleError = Sentry.wrapHandleErrorWithSentry((error, { request }) => {\n // Custom handleError implementation\n});",
|
|
142
|
+
]);
|
|
143
|
+
});
|
|
144
|
+
test('instrumentation.server file contains Sentry initialization', function () {
|
|
145
|
+
(0, utils_3.checkFileContents)("".concat(projectDir, "/instrumentation.server.mjs"), [
|
|
146
|
+
'import * as Sentry from "@sentry/remix";',
|
|
147
|
+
"Sentry.init({\n dsn: \"".concat(utils_3.TEST_ARGS.PROJECT_DSN, "\",\n tracesSampleRate: 1,\n autoInstrumentRemix: true\n})"),
|
|
148
|
+
]);
|
|
149
|
+
});
|
|
150
|
+
test('root file contains Sentry ErrorBoundary', function () {
|
|
151
|
+
(0, utils_3.checkFileContents)("".concat(projectDir, "/app/root.tsx"), [
|
|
152
|
+
'import { captureRemixErrorBoundaryError } from "@sentry/remix";',
|
|
153
|
+
"export const ErrorBoundary = () => {\n const error = useRouteError();\n captureRemixErrorBoundaryError(error);\n return <div>Something went wrong</div>;\n};",
|
|
154
|
+
]);
|
|
155
|
+
});
|
|
156
|
+
test('builds correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
157
|
+
return __generator(this, function (_a) {
|
|
158
|
+
switch (_a.label) {
|
|
159
|
+
case 0: return [4 /*yield*/, (0, utils_3.checkIfBuilds)(projectDir, 'built')];
|
|
160
|
+
case 1:
|
|
161
|
+
_a.sent();
|
|
162
|
+
return [2 /*return*/];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}); });
|
|
166
|
+
test('runs on dev mode correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
167
|
+
return __generator(this, function (_a) {
|
|
168
|
+
switch (_a.label) {
|
|
169
|
+
case 0: return [4 /*yield*/, (0, utils_3.checkIfRunsOnDevMode)(projectDir, 'to expose')];
|
|
170
|
+
case 1:
|
|
171
|
+
_a.sent();
|
|
172
|
+
return [2 /*return*/];
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}); });
|
|
176
|
+
test('runs on prod mode correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
switch (_a.label) {
|
|
179
|
+
case 0: return [4 /*yield*/, (0, utils_3.checkIfRunsOnProdMode)(projectDir, '[remix-serve]')];
|
|
180
|
+
case 1:
|
|
181
|
+
_a.sent();
|
|
182
|
+
return [2 /*return*/];
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}); });
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=remix.test.js.map
|