@sentry/wizard 2.6.0 → 2.7.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 +12 -0
- package/dist/lib/Helper/Package.d.ts +1 -0
- package/dist/lib/Helper/Package.js +46 -0
- package/dist/lib/Helper/Package.js.map +1 -0
- package/dist/lib/Helper/PackageManager.d.ts +22 -0
- package/dist/lib/Helper/PackageManager.js +135 -0
- package/dist/lib/Helper/PackageManager.js.map +1 -0
- package/dist/lib/Helper/Wizard.js +2 -1
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +25 -14
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Steps/Integrations/NextJs.d.ts +0 -5
- package/dist/lib/Steps/Integrations/NextJs.js +6 -85
- package/dist/lib/Steps/Integrations/NextJs.js.map +1 -1
- package/dist/lib/Steps/Integrations/ReactNative.d.ts +7 -0
- package/dist/lib/Steps/Integrations/ReactNative.js +120 -51
- package/dist/lib/Steps/Integrations/ReactNative.js.map +1 -1
- package/dist/lib/Steps/Integrations/__tests__/ReactNative.js +42 -0
- package/dist/lib/Steps/Integrations/__tests__/ReactNative.js.map +1 -1
- package/dist/lib/__tests__/Setup.js +15 -0
- package/dist/lib/__tests__/Setup.js.map +1 -1
- package/lib/Helper/Package.ts +61 -0
- package/lib/Helper/PackageManager.ts +64 -0
- package/lib/Helper/Wizard.ts +1 -1
- package/lib/Helper/__tests__/MergeConfig.ts +36 -20
- package/lib/Steps/Integrations/NextJs.ts +8 -108
- package/lib/Steps/Integrations/ReactNative.ts +108 -37
- package/lib/Steps/Integrations/__tests__/ReactNative.ts +34 -0
- package/lib/__tests__/Setup.ts +23 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.7.0
|
|
4
|
+
|
|
5
|
+
- feat(rn): One line `@sentry/react-native` setup command ([#243](https://github.com/getsentry/sentry-wizard/pull/243))
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @sentry/wizard -s -i reactNative
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 2.6.1
|
|
12
|
+
|
|
13
|
+
- fix(rn): Upload debug files from `$DWARF_DSYM_FOLDER_PATH` during Xcode build ([#240](https://github.com/getsentry/sentry-wizard/pull/240))
|
|
14
|
+
|
|
3
15
|
## 2.6.0
|
|
4
16
|
|
|
5
17
|
- feat(rn): Support patching app/build.gradle RN 0.71.0 and Expo SDK 43+ bare workflow ([#229](https://github.com/getsentry/sentry-wizard/pull/229))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function checkPackageVersion(appPackage: unknown, packageName: string, acceptableVersions: string, canBeLatest: boolean): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkPackageVersion = void 0;
|
|
4
|
+
var _ = require("lodash");
|
|
5
|
+
var semver_1 = require("semver");
|
|
6
|
+
var Logging_1 = require("./Logging");
|
|
7
|
+
function checkPackageVersion(appPackage, packageName, acceptableVersions, canBeLatest) {
|
|
8
|
+
var depsVersion = _.get(appPackage, ['dependencies', packageName]);
|
|
9
|
+
var devDepsVersion = _.get(appPackage, ['devDependencies', packageName]);
|
|
10
|
+
if (!depsVersion && !devDepsVersion) {
|
|
11
|
+
Logging_1.red("\u2717 " + packageName + " isn't in your dependencies.");
|
|
12
|
+
Logging_1.red(' Please install it with yarn/npm.');
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
else if (!fulfillsVersionRange(depsVersion, acceptableVersions, canBeLatest) &&
|
|
16
|
+
!fulfillsVersionRange(devDepsVersion, acceptableVersions, canBeLatest)) {
|
|
17
|
+
Logging_1.red("\u2717 Your `package.json` specifies a version of `" + packageName + "` outside of the compatible version range " + acceptableVersions + ".\n");
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
Logging_1.green("\u2713 A compatible version of `" + packageName + "` is specified in `package.json`.");
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.checkPackageVersion = checkPackageVersion;
|
|
26
|
+
function fulfillsVersionRange(version, acceptableVersions, canBeLatest) {
|
|
27
|
+
if (version === 'latest') {
|
|
28
|
+
return canBeLatest;
|
|
29
|
+
}
|
|
30
|
+
var cleanedUserVersion, isRange;
|
|
31
|
+
if (semver_1.valid(version)) {
|
|
32
|
+
cleanedUserVersion = semver_1.valid(version);
|
|
33
|
+
isRange = false;
|
|
34
|
+
}
|
|
35
|
+
else if (semver_1.validRange(version)) {
|
|
36
|
+
cleanedUserVersion = semver_1.validRange(version);
|
|
37
|
+
isRange = true;
|
|
38
|
+
}
|
|
39
|
+
return (
|
|
40
|
+
// If the given version is a bogus format, this will still be undefined and we'll automatically reject it
|
|
41
|
+
!!cleanedUserVersion &&
|
|
42
|
+
(isRange
|
|
43
|
+
? semver_1.subset(cleanedUserVersion, acceptableVersions)
|
|
44
|
+
: semver_1.satisfies(cleanedUserVersion, acceptableVersions)));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=Package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Package.js","sourceRoot":"","sources":["../../../lib/Helper/Package.ts"],"names":[],"mappings":";;;AAAA,0BAA4B;AAC5B,iCAA8D;AAE9D,qCAAuC;AAEvC,SAAgB,mBAAmB,CACjC,UAAmB,EACnB,WAAmB,EACnB,kBAA0B,EAC1B,WAAoB;IAEpB,IAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IACrE,IAAM,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3E,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE;QACnC,aAAG,CAAC,YAAK,WAAW,iCAA8B,CAAC,CAAC;QACpD,aAAG,CAAC,oCAAoC,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;KACd;SAAM,IACL,CAAC,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,EAAE,WAAW,CAAC;QACnE,CAAC,oBAAoB,CAAC,cAAc,EAAE,kBAAkB,EAAE,WAAW,CAAC,EACtE;QACA,aAAG,CACD,wDAAoD,WAAW,kDAA8C,kBAAkB,QAAK,CACrI,CAAC;QACF,OAAO,KAAK,CAAC;KACd;SAAM;QACL,eAAK,CACH,qCAA+B,WAAW,sCAAsC,CACjF,CAAC;QACF,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AA3BD,kDA2BC;AAED,SAAS,oBAAoB,CAC3B,OAAe,EACf,kBAA0B,EAC1B,WAAoB;IAEpB,IAAI,OAAO,KAAK,QAAQ,EAAE;QACxB,OAAO,WAAW,CAAC;KACpB;IAED,IAAI,kBAAkB,EAAE,OAAO,CAAC;IAEhC,IAAI,cAAK,CAAC,OAAO,CAAC,EAAE;QAClB,kBAAkB,GAAG,cAAK,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;KACjB;SAAM,IAAI,mBAAU,CAAC,OAAO,CAAC,EAAE;QAC9B,kBAAkB,GAAG,mBAAU,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;KAChB;IAED,OAAO;IACL,yGAAyG;IACzG,CAAC,CAAC,kBAAkB;QACpB,CAAC,OAAO;YACN,CAAC,CAAC,eAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YAChD,CAAC,CAAC,kBAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC","sourcesContent":["import * as _ from 'lodash';\nimport { satisfies, subset, valid, validRange } from 'semver';\n\nimport { green, red } from './Logging';\n\nexport function checkPackageVersion(\n appPackage: unknown,\n packageName: string,\n acceptableVersions: string,\n canBeLatest: boolean,\n): boolean {\n const depsVersion = _.get(appPackage, ['dependencies', packageName]);\n const devDepsVersion = _.get(appPackage, ['devDependencies', packageName]);\n\n if (!depsVersion && !devDepsVersion) {\n red(`✗ ${packageName} isn't in your dependencies.`);\n red(' Please install it with yarn/npm.');\n return false;\n } else if (\n !fulfillsVersionRange(depsVersion, acceptableVersions, canBeLatest) &&\n !fulfillsVersionRange(devDepsVersion, acceptableVersions, canBeLatest)\n ) {\n red(\n `✗ Your \\`package.json\\` specifies a version of \\`${packageName}\\` outside of the compatible version range ${acceptableVersions}.\\n`,\n );\n return false;\n } else {\n green(\n `✓ A compatible version of \\`${packageName}\\` is specified in \\`package.json\\`.`,\n );\n return true;\n }\n}\n\nfunction fulfillsVersionRange(\n version: string,\n acceptableVersions: string,\n canBeLatest: boolean,\n): boolean {\n if (version === 'latest') {\n return canBeLatest;\n }\n\n let cleanedUserVersion, isRange;\n\n if (valid(version)) {\n cleanedUserVersion = valid(version);\n isRange = false;\n } else if (validRange(version)) {\n cleanedUserVersion = validRange(version);\n isRange = true;\n }\n\n return (\n // If the given version is a bogus format, this will still be undefined and we'll automatically reject it\n !!cleanedUserVersion &&\n (isRange\n ? subset(cleanedUserVersion, acceptableVersions)\n : satisfies(cleanedUserVersion, acceptableVersions))\n );\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare function getPackageMangerChoice(): PackageManager | null;
|
|
2
|
+
export interface PackageManager {
|
|
3
|
+
installPackage(packageName: string): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare class Npm implements PackageManager {
|
|
6
|
+
static LOCK_FILE: string;
|
|
7
|
+
static LABEL: string;
|
|
8
|
+
static INSTALL_COMMAND: string;
|
|
9
|
+
installPackage(packageName: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare class Yarn implements PackageManager {
|
|
12
|
+
static LOCK_FILE: string;
|
|
13
|
+
static LABEL: string;
|
|
14
|
+
static INSTALL_COMMAND: string;
|
|
15
|
+
installPackage(packageName: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare class Pnpm implements PackageManager {
|
|
18
|
+
static LOCK_FILE: string;
|
|
19
|
+
static LABEL: string;
|
|
20
|
+
static INSTALL_COMMAND: string;
|
|
21
|
+
installPackage(packageName: string): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Pnpm = exports.Yarn = exports.Npm = exports.getPackageMangerChoice = void 0;
|
|
40
|
+
/* eslint-disable @typescript-eslint/typedef */
|
|
41
|
+
var child_process_1 = require("child_process");
|
|
42
|
+
var fs = require("fs");
|
|
43
|
+
var path = require("path");
|
|
44
|
+
var util_1 = require("util");
|
|
45
|
+
var Logging_1 = require("./Logging");
|
|
46
|
+
function getPackageMangerChoice() {
|
|
47
|
+
if (fs.existsSync(path.join(process.cwd(), Yarn.LOCK_FILE))) {
|
|
48
|
+
return new Yarn();
|
|
49
|
+
}
|
|
50
|
+
if (fs.existsSync(path.join(process.cwd(), Pnpm.LOCK_FILE))) {
|
|
51
|
+
return new Pnpm();
|
|
52
|
+
}
|
|
53
|
+
if (fs.existsSync(path.join(process.cwd(), Npm.LOCK_FILE))) {
|
|
54
|
+
return new Npm();
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
exports.getPackageMangerChoice = getPackageMangerChoice;
|
|
59
|
+
var Npm = /** @class */ (function () {
|
|
60
|
+
function Npm() {
|
|
61
|
+
}
|
|
62
|
+
Npm.prototype.installPackage = function (packageName) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0: return [4 /*yield*/, installPackage(Npm.INSTALL_COMMAND, packageName, Npm.LABEL)];
|
|
67
|
+
case 1:
|
|
68
|
+
_a.sent();
|
|
69
|
+
return [2 /*return*/];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
Npm.LOCK_FILE = 'package-lock.json';
|
|
75
|
+
Npm.LABEL = 'npm';
|
|
76
|
+
Npm.INSTALL_COMMAND = 'npm install';
|
|
77
|
+
return Npm;
|
|
78
|
+
}());
|
|
79
|
+
exports.Npm = Npm;
|
|
80
|
+
var Yarn = /** @class */ (function () {
|
|
81
|
+
function Yarn() {
|
|
82
|
+
}
|
|
83
|
+
Yarn.prototype.installPackage = function (packageName) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0: return [4 /*yield*/, installPackage(Yarn.INSTALL_COMMAND, packageName, Yarn.LABEL)];
|
|
88
|
+
case 1:
|
|
89
|
+
_a.sent();
|
|
90
|
+
return [2 /*return*/];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
Yarn.LOCK_FILE = 'yarn.lock';
|
|
96
|
+
Yarn.LABEL = 'yarn';
|
|
97
|
+
Yarn.INSTALL_COMMAND = 'yarn add';
|
|
98
|
+
return Yarn;
|
|
99
|
+
}());
|
|
100
|
+
exports.Yarn = Yarn;
|
|
101
|
+
var Pnpm = /** @class */ (function () {
|
|
102
|
+
function Pnpm() {
|
|
103
|
+
}
|
|
104
|
+
Pnpm.prototype.installPackage = function (packageName) {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
106
|
+
return __generator(this, function (_a) {
|
|
107
|
+
switch (_a.label) {
|
|
108
|
+
case 0: return [4 /*yield*/, installPackage(Pnpm.INSTALL_COMMAND, packageName, Pnpm.LABEL)];
|
|
109
|
+
case 1:
|
|
110
|
+
_a.sent();
|
|
111
|
+
return [2 /*return*/];
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
Pnpm.LOCK_FILE = 'pnpm-lock.yaml';
|
|
117
|
+
Pnpm.LABEL = 'pnpm';
|
|
118
|
+
Pnpm.INSTALL_COMMAND = 'pnpm add';
|
|
119
|
+
return Pnpm;
|
|
120
|
+
}());
|
|
121
|
+
exports.Pnpm = Pnpm;
|
|
122
|
+
function installPackage(command, packageName, label) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
124
|
+
return __generator(this, function (_a) {
|
|
125
|
+
switch (_a.label) {
|
|
126
|
+
case 0: return [4 /*yield*/, util_1.promisify(child_process_1.exec)(command + " " + packageName)];
|
|
127
|
+
case 1:
|
|
128
|
+
_a.sent();
|
|
129
|
+
Logging_1.green("\u2713 Added `" + packageName + "` using `" + label + "`.");
|
|
130
|
+
return [2 /*return*/];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=PackageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../../lib/Helper/PackageManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+C;AAC/C,+CAAqC;AACrC,uBAAyB;AACzB,2BAA6B;AAC7B,6BAAiC;AAEjC,qCAAkC;AAElC,SAAgB,sBAAsB;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;QAC3D,OAAO,IAAI,IAAI,EAAE,CAAC;KACnB;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;QAC3D,OAAO,IAAI,IAAI,EAAE,CAAC;KACnB;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;QAC1D,OAAO,IAAI,GAAG,EAAE,CAAC;KAClB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAXD,wDAWC;AAMD;IAAA;IAQA,CAAC;IAHc,4BAAc,GAA3B,UAA4B,WAAmB;;;;4BAC7C,qBAAM,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,EAAA;;wBAAjE,SAAiE,CAAC;;;;;KACnE;IANa,aAAS,GAAG,mBAAmB,CAAC;IAChC,SAAK,GAAG,KAAK,CAAC;IACd,mBAAe,GAAG,aAAa,CAAC;IAKhD,UAAC;CAAA,AARD,IAQC;AARY,kBAAG;AAUhB;IAAA;IAQA,CAAC;IAHc,6BAAc,GAA3B,UAA4B,WAAmB;;;;4BAC7C,qBAAM,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAA;;wBAAnE,SAAmE,CAAC;;;;;KACrE;IANa,cAAS,GAAG,WAAW,CAAC;IACxB,UAAK,GAAG,MAAM,CAAC;IACf,oBAAe,GAAG,UAAU,CAAC;IAK7C,WAAC;CAAA,AARD,IAQC;AARY,oBAAI;AAUjB;IAAA;IAQA,CAAC;IAHc,6BAAc,GAA3B,UAA4B,WAAmB;;;;4BAC7C,qBAAM,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAA;;wBAAnE,SAAmE,CAAC;;;;;KACrE;IANa,cAAS,GAAG,gBAAgB,CAAC;IAC7B,UAAK,GAAG,MAAM,CAAC;IACf,oBAAe,GAAG,UAAU,CAAC;IAK7C,WAAC;CAAA,AARD,IAQC;AARY,oBAAI;AAUjB,SAAe,cAAc,CAC3B,OAAe,EACf,WAAmB,EACnB,KAAa;;;;wBAEb,qBAAM,gBAAS,CAAC,oBAAI,CAAC,CAAI,OAAO,SAAI,WAAa,CAAC,EAAA;;oBAAlD,SAAkD,CAAC;oBACnD,eAAK,CAAC,mBAAa,WAAW,iBAAc,KAAK,OAAK,CAAC,CAAC;oBACxD,sBAAO;;;;CACR","sourcesContent":["/* eslint-disable @typescript-eslint/typedef */\nimport { exec } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { promisify } from 'util';\n\nimport { green } from './Logging';\n\nexport function getPackageMangerChoice(): PackageManager | null {\n if (fs.existsSync(path.join(process.cwd(), Yarn.LOCK_FILE))) {\n return new Yarn();\n }\n if (fs.existsSync(path.join(process.cwd(), Pnpm.LOCK_FILE))) {\n return new Pnpm();\n }\n if (fs.existsSync(path.join(process.cwd(), Npm.LOCK_FILE))) {\n return new Npm();\n }\n return null;\n}\n\nexport interface PackageManager {\n installPackage(packageName: string): Promise<void>;\n}\n\nexport class Npm implements PackageManager {\n public static LOCK_FILE = 'package-lock.json';\n public static LABEL = 'npm';\n public static INSTALL_COMMAND = 'npm install';\n\n public async installPackage(packageName: string): Promise<void> {\n await installPackage(Npm.INSTALL_COMMAND, packageName, Npm.LABEL);\n }\n}\n\nexport class Yarn implements PackageManager {\n public static LOCK_FILE = 'yarn.lock';\n public static LABEL = 'yarn';\n public static INSTALL_COMMAND = 'yarn add';\n\n public async installPackage(packageName: string): Promise<void> {\n await installPackage(Yarn.INSTALL_COMMAND, packageName, Yarn.LABEL);\n }\n}\n\nexport class Pnpm implements PackageManager {\n public static LOCK_FILE = 'pnpm-lock.yaml';\n public static LABEL = 'pnpm';\n public static INSTALL_COMMAND = 'pnpm add';\n\n public async installPackage(packageName: string): Promise<void> {\n await installPackage(Pnpm.INSTALL_COMMAND, packageName, Pnpm.LABEL);\n }\n}\n\nasync function installPackage(\n command: string,\n packageName: string,\n label: string,\n): Promise<void> {\n await promisify(exec)(`${command} ${packageName}`);\n green(`✓ Added \\`${packageName}\\` using \\`${label}\\`.`);\n return;\n}\n"]}
|
|
@@ -124,7 +124,8 @@ function startWizard(argv) {
|
|
|
124
124
|
Logging_1.nl();
|
|
125
125
|
Logging_1.red('Protip: Add --debug to see whats going on');
|
|
126
126
|
Logging_1.red('OR use --help to see your options');
|
|
127
|
-
|
|
127
|
+
process.exit(1);
|
|
128
|
+
return [3 /*break*/, 3];
|
|
128
129
|
case 3: return [2 /*return*/];
|
|
129
130
|
}
|
|
130
131
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wizard.js","sourceRoot":"","sources":["../../../lib/Helper/Wizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0BAA4B;AAE5B,0CAAiD;AAGjD,yCAAwC;AACxC,qCAAgD;AAEhD,SAAS,uBAAuB,CAAC,IAAU;IACzC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,GAAG,uBAAW,CAAC;QACvB,aAAG,CAAC,kCAAgC,IAAI,CAAC,GAAK,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,aAAG,CAAC,kCAAkC,CAAC,CAAC;KACzC;IACD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;IACnB,iDAAiD;IACjD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;QACxB,iDAAiD;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,iDAAiD;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7B;IACD,iDAAiD;IACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAoB,CAAC;AAC1D,CAAC;AAFD,sDAEC;AAED,SAAsB,WAAW,CAC/B,IAAU;IACV,eAAyC;SAAzC,UAAyC,EAAzC,qBAAyC,EAAzC,IAAyC;QAAzC,8BAAyC;;;;;;;;;oBAGvC,uBAAuB,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,eAAK,CAAC,IAAI,CAAC,CAAC;qBACb;oBACD,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,aAAG,CAAC,4CAA4C,CAAC,CAAC;qBACnD;oBACM,qBAAM,KAAK;6BACf,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC;6BAC3B,MAAM,CAAC,UAAO,MAAM,EAAE,IAAI;;;;4CACN,qBAAM,MAAM,EAAA;;wCAAzB,UAAU,GAAG,SAAY;wCACf,qBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wCAArC,OAAO,GAAG,SAA2B;wCAC3C,4CAAY,UAAU,GAAK,OAAO,GAAG;;;6BACtC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAA;wBANzB,sBAAO,SAMkB,EAAC;;;oBAE1B,qBAAS,CAAC,IAAI,EAAE,CAAC;oBACjB,YAAE,EAAE,CAAC;oBACL,aAAG,CAAC,4BAA4B,CAAC,CAAC;oBAClC,aAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;oBAChC,YAAE,EAAE,CAAC;oBACL,aAAG,CAAC,2CAA2C,CAAC,CAAC;oBACjD,aAAG,CAAC,mCAAmC,CAAC,CAAC;oBACzC,
|
|
1
|
+
{"version":3,"file":"Wizard.js","sourceRoot":"","sources":["../../../lib/Helper/Wizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0BAA4B;AAE5B,0CAAiD;AAGjD,yCAAwC;AACxC,qCAAgD;AAEhD,SAAS,uBAAuB,CAAC,IAAU;IACzC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,GAAG,uBAAW,CAAC;QACvB,aAAG,CAAC,kCAAgC,IAAI,CAAC,GAAK,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,aAAG,CAAC,kCAAkC,CAAC,CAAC;KACzC;IACD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;IACnB,iDAAiD;IACjD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;QACxB,iDAAiD;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,iDAAiD;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7B;IACD,iDAAiD;IACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAoB,CAAC;AAC1D,CAAC;AAFD,sDAEC;AAED,SAAsB,WAAW,CAC/B,IAAU;IACV,eAAyC;SAAzC,UAAyC,EAAzC,qBAAyC,EAAzC,IAAyC;QAAzC,8BAAyC;;;;;;;;;oBAGvC,uBAAuB,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,eAAK,CAAC,IAAI,CAAC,CAAC;qBACb;oBACD,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,aAAG,CAAC,4CAA4C,CAAC,CAAC;qBACnD;oBACM,qBAAM,KAAK;6BACf,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC;6BAC3B,MAAM,CAAC,UAAO,MAAM,EAAE,IAAI;;;;4CACN,qBAAM,MAAM,EAAA;;wCAAzB,UAAU,GAAG,SAAY;wCACf,qBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wCAArC,OAAO,GAAG,SAA2B;wCAC3C,4CAAY,UAAU,GAAK,OAAO,GAAG;;;6BACtC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAA;wBANzB,sBAAO,SAMkB,EAAC;;;oBAE1B,qBAAS,CAAC,IAAI,EAAE,CAAC;oBACjB,YAAE,EAAE,CAAC;oBACL,aAAG,CAAC,4BAA4B,CAAC,CAAC;oBAClC,aAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;oBAChC,YAAE,EAAE,CAAC;oBACL,aAAG,CAAC,2CAA2C,CAAC,CAAC;oBACjD,aAAG,CAAC,mCAAmC,CAAC,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;;;CAEnB;AA7BD,kCA6BC","sourcesContent":["import { Answers } from 'inquirer';\nimport * as _ from 'lodash';\n\nimport { Args, DEFAULT_URL } from '../Constants';\nimport { IStep } from '../Steps/BaseStep';\nimport { BaseIntegration } from '../Steps/Integrations/BaseIntegration';\nimport { BottomBar } from './BottomBar';\nimport { debug, dim, nl, red } from './Logging';\n\nfunction sanitizeAndValidateArgs(argv: Args): void {\n if (!argv.url) {\n argv.url = DEFAULT_URL;\n dim(`no URL provided, fallback to ${argv.url}`);\n }\n if (argv.quiet === undefined) {\n argv.quiet = true;\n dim('will activate quiet mode for you');\n }\n let baseUrl = argv.url;\n baseUrl += baseUrl.endsWith('/') ? '' : '/';\n baseUrl = baseUrl.replace(/:\\/(?!\\/)/g, '://');\n argv.url = baseUrl;\n // @ts-ignore skip-connect does not exist on args\n if (argv['skip-connect']) {\n // @ts-ignore skip-connect does not exist on args\n argv.skipConnect = argv['skip-connect'];\n // @ts-ignore skip-connect does not exist on args\n delete argv['skip-connect'];\n }\n // @ts-ignore skip-connect does not exist on args\n argv.promoCode = argv['promo-code'];\n}\n\nexport function getCurrentIntegration(answers: Answers): BaseIntegration {\n return _.get(answers, 'integration') as BaseIntegration;\n}\n\nexport async function startWizard<M extends IStep>(\n argv: Args,\n ...steps: Array<{ new (debug: Args): M }>\n): Promise<Answers> {\n try {\n sanitizeAndValidateArgs(argv);\n if (argv.debug) {\n debug(argv);\n }\n if (argv.quiet) {\n dim(\"Quiet mode On, DAMA, don't ask me anything\");\n }\n return await steps\n .map(step => new step(argv))\n .reduce(async (answer, step) => {\n const prevAnswer = await answer;\n const answers = await step.emit(prevAnswer);\n return { ...prevAnswer, ...answers };\n }, Promise.resolve({}));\n } catch (e) {\n BottomBar.hide();\n nl();\n red('Sentry Wizard failed with:');\n red(argv.debug ? e : e.message);\n nl();\n red('Protip: Add --debug to see whats going on');\n red('OR use --help to see your options');\n process.exit(1);\n }\n}\n"]}
|
|
@@ -5,42 +5,53 @@ var fs = require("fs");
|
|
|
5
5
|
var path = require("path");
|
|
6
6
|
var MergeConfig_1 = require("../MergeConfig");
|
|
7
7
|
var configPath = path.join(__dirname, '..', 'test-fixtures/next.config.js');
|
|
8
|
-
var templatePath = path.join(__dirname, '..', '..', '..', 'scripts/
|
|
8
|
+
var templatePath = path.join(__dirname, '..', '..', '..', 'scripts/NextJs/configs/next.config.template.js');
|
|
9
9
|
function configFileNames(num) {
|
|
10
10
|
var sourcePath = path.join(__dirname, '..', "test-fixtures/next.config." + num + ".js");
|
|
11
11
|
var mergedPath = path.join(__dirname, '..', "test-fixtures/next.config." + num + "-merged.js");
|
|
12
12
|
return { sourcePath: sourcePath, mergedPath: mergedPath };
|
|
13
13
|
}
|
|
14
14
|
describe('Merging next.config.js', function () {
|
|
15
|
+
afterEach(function () {
|
|
16
|
+
fs.unlinkSync(configPath);
|
|
17
|
+
});
|
|
18
|
+
test('merge basic next.config.js return true', function () {
|
|
19
|
+
var sourcePath = configFileNames(1).sourcePath;
|
|
20
|
+
fs.copyFileSync(sourcePath, configPath);
|
|
21
|
+
expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(true);
|
|
22
|
+
});
|
|
15
23
|
test('merge basic next.config.js', function () {
|
|
16
24
|
var _a = configFileNames(1), sourcePath = _a.sourcePath, mergedPath = _a.mergedPath;
|
|
17
25
|
fs.copyFileSync(sourcePath, configPath);
|
|
18
|
-
|
|
19
|
-
expect(fs.readFileSync(configPath, 'utf8')
|
|
20
|
-
fs.readFileSync(mergedPath, 'utf8')).toBe(true);
|
|
21
|
-
fs.unlinkSync(configPath);
|
|
26
|
+
MergeConfig_1.mergeConfigFile(configPath, templatePath);
|
|
27
|
+
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|
|
22
28
|
});
|
|
23
|
-
test('merge invalid javascript config', function () {
|
|
29
|
+
test('merge invalid javascript config return false', function () {
|
|
24
30
|
var sourcePath = configFileNames(2).sourcePath;
|
|
25
31
|
fs.copyFileSync(sourcePath, configPath);
|
|
26
32
|
expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(false);
|
|
27
|
-
|
|
33
|
+
});
|
|
34
|
+
test('merge more complicated next.config.js return true', function () {
|
|
35
|
+
var sourcePath = configFileNames(3).sourcePath;
|
|
36
|
+
fs.copyFileSync(sourcePath, configPath);
|
|
37
|
+
expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(true);
|
|
28
38
|
});
|
|
29
39
|
test('merge more complicated next.config.js', function () {
|
|
30
40
|
var _a = configFileNames(3), sourcePath = _a.sourcePath, mergedPath = _a.mergedPath;
|
|
31
41
|
fs.copyFileSync(sourcePath, configPath);
|
|
42
|
+
MergeConfig_1.mergeConfigFile(configPath, templatePath);
|
|
43
|
+
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|
|
44
|
+
});
|
|
45
|
+
test('merge next.config.js with function return true', function () {
|
|
46
|
+
var sourcePath = configFileNames(4).sourcePath;
|
|
47
|
+
fs.copyFileSync(sourcePath, configPath);
|
|
32
48
|
expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(true);
|
|
33
|
-
expect(fs.readFileSync(configPath, 'utf8') ===
|
|
34
|
-
fs.readFileSync(mergedPath, 'utf8')).toBe(true);
|
|
35
|
-
fs.unlinkSync(configPath);
|
|
36
49
|
});
|
|
37
50
|
test('merge next.config.js with function', function () {
|
|
38
51
|
var _a = configFileNames(4), sourcePath = _a.sourcePath, mergedPath = _a.mergedPath;
|
|
39
52
|
fs.copyFileSync(sourcePath, configPath);
|
|
40
|
-
|
|
41
|
-
expect(fs.readFileSync(configPath, 'utf8')
|
|
42
|
-
fs.readFileSync(mergedPath, 'utf8')).toBe(true);
|
|
43
|
-
fs.unlinkSync(configPath);
|
|
53
|
+
MergeConfig_1.mergeConfigFile(configPath, templatePath);
|
|
54
|
+
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|
|
44
55
|
});
|
|
45
56
|
});
|
|
46
57
|
//# sourceMappingURL=MergeConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MergeConfig.js","sourceRoot":"","sources":["../../../../lib/Helper/__tests__/MergeConfig.ts"],"names":[],"mappings":";;AAAA,8BAA8B;AAC9B,uBAAyB;AACzB,2BAA6B;AAE7B,8CAAiD;AAEjD,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;AAC9E,IAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,gDAAgD,CACjD,CAAC;AAEF,SAAS,eAAe,CAAC,GAAW;IAIlC,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,+BAA6B,GAAG,QAAK,CACtC,CAAC;IACF,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,+BAA6B,GAAG,eAAY,CAC7C,CAAC;IACF,OAAO,EAAE,UAAU,YAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACpC,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE;
|
|
1
|
+
{"version":3,"file":"MergeConfig.js","sourceRoot":"","sources":["../../../../lib/Helper/__tests__/MergeConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"jest\" />\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nimport { mergeConfigFile } from '../MergeConfig';\n\nconst configPath = path.join(__dirname, '..', 'test-fixtures/next.config.js');\nconst templatePath = path.join(\n __dirname,\n '..',\n '..',\n '..',\n 'scripts/NextJs/configs/next.config.template.js',\n);\n\nfunction configFileNames(num: number): {\n sourcePath: string;\n mergedPath: string;\n} {\n const sourcePath = path.join(\n __dirname,\n '..',\n `test-fixtures/next.config.${num}.js`,\n );\n const mergedPath = path.join(\n __dirname,\n '..',\n `test-fixtures/next.config.${num}-merged.js`,\n );\n return { sourcePath, mergedPath };\n}\n\ndescribe('Merging next.config.js', () => {\n\n afterEach(() => {\n fs.unlinkSync(configPath);\n });\n\n test('merge basic next.config.js return true', () => {\n const { sourcePath } = configFileNames(1);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n });\n\n test('merge basic next.config.js', () => {\n const { sourcePath, mergedPath } = configFileNames(1);\n fs.copyFileSync(sourcePath, configPath);\n\n mergeConfigFile(configPath, templatePath);\n\n expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));\n });\n\n test('merge invalid javascript config return false', () => {\n const { sourcePath } = configFileNames(2);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(false);\n });\n\n test('merge more complicated next.config.js return true', () => {\n const { sourcePath } = configFileNames(3);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n });\n\n test('merge more complicated next.config.js', () => {\n const { sourcePath, mergedPath } = configFileNames(3);\n fs.copyFileSync(sourcePath, configPath);\n\n mergeConfigFile(configPath, templatePath);\n\n expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));\n });\n\n test('merge next.config.js with function return true', () => {\n const { sourcePath } = configFileNames(4);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n });\n\n test('merge next.config.js with function', () => {\n const { sourcePath, mergedPath } = configFileNames(4);\n fs.copyFileSync(sourcePath, configPath);\n\n mergeConfigFile(configPath, templatePath);\n\n expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));\n });\n});\n"]}
|
|
@@ -14,11 +14,6 @@ export declare class NextJs extends BaseIntegration {
|
|
|
14
14
|
private _setTemplate;
|
|
15
15
|
private _fillAndCopyTemplate;
|
|
16
16
|
private _hasPackageInstalled;
|
|
17
|
-
private _getPackageMangerChoice;
|
|
18
|
-
private _getInstallCommand;
|
|
19
|
-
private _installPackage;
|
|
20
|
-
private _checkPackageVersion;
|
|
21
|
-
private _fulfillsVersionRange;
|
|
22
17
|
private _spliceInPlace;
|
|
23
18
|
private _mergeNextConfig;
|
|
24
19
|
}
|
|
@@ -70,15 +70,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
70
70
|
exports.NextJs = void 0;
|
|
71
71
|
/* eslint-disable max-lines */
|
|
72
72
|
var chalk_1 = require("chalk");
|
|
73
|
-
var child_process_1 = require("child_process");
|
|
74
73
|
var fs = require("fs");
|
|
75
74
|
var inquirer_1 = require("inquirer");
|
|
76
75
|
var _ = require("lodash");
|
|
77
76
|
var path = require("path");
|
|
78
|
-
var semver_1 = require("semver");
|
|
79
|
-
var util_1 = require("util");
|
|
80
77
|
var Logging_1 = require("../../Helper/Logging");
|
|
81
78
|
var MergeConfig_1 = require("../../Helper/MergeConfig");
|
|
79
|
+
var Package_1 = require("../../Helper/Package");
|
|
80
|
+
var PackageManager_1 = require("../../Helper/PackageManager");
|
|
82
81
|
var SentryCli_1 = require("../../Helper/SentryCli");
|
|
83
82
|
var BaseIntegration_1 = require("./BaseIntegration");
|
|
84
83
|
var COMPATIBLE_NEXTJS_VERSIONS = '>=10.0.8 <14.0.0';
|
|
@@ -165,12 +164,12 @@ var NextJs = /** @class */ (function (_super) {
|
|
|
165
164
|
}
|
|
166
165
|
Logging_1.nl();
|
|
167
166
|
userAnswers = { continue: true };
|
|
168
|
-
hasCompatibleNextjsVersion =
|
|
169
|
-
packageManager =
|
|
167
|
+
hasCompatibleNextjsVersion = Package_1.checkPackageVersion(appPackage, 'next', COMPATIBLE_NEXTJS_VERSIONS, true);
|
|
168
|
+
packageManager = PackageManager_1.getPackageMangerChoice();
|
|
170
169
|
hasSdkInstalled = this._hasPackageInstalled('@sentry/nextjs');
|
|
171
170
|
hasCompatibleSdkVersion = false;
|
|
172
171
|
if (!(!hasSdkInstalled && packageManager && hasCompatibleNextjsVersion)) return [3 /*break*/, 2];
|
|
173
|
-
return [4 /*yield*/,
|
|
172
|
+
return [4 /*yield*/, packageManager.installPackage('@sentry/nextjs')];
|
|
174
173
|
case 1:
|
|
175
174
|
_a.sent();
|
|
176
175
|
// can assume it's compatible since we just installed it
|
|
@@ -178,7 +177,7 @@ var NextJs = /** @class */ (function (_super) {
|
|
|
178
177
|
return [3 /*break*/, 3];
|
|
179
178
|
case 2:
|
|
180
179
|
// otherwise, let's check the version and spit out the appropriate error
|
|
181
|
-
hasCompatibleSdkVersion =
|
|
180
|
+
hasCompatibleSdkVersion = Package_1.checkPackageVersion(appPackage, '@sentry/nextjs', COMPATIBLE_SDK_VERSIONS, true);
|
|
182
181
|
_a.label = 3;
|
|
183
182
|
case 3:
|
|
184
183
|
hasAllPackagesCompatible = hasCompatibleNextjsVersion && hasCompatibleSdkVersion;
|
|
@@ -366,84 +365,6 @@ var NextJs = /** @class */ (function (_super) {
|
|
|
366
365
|
var devDepsVersion = _.get(appPackage, ['devDependencies', packageName]);
|
|
367
366
|
return !!depsVersion || !!devDepsVersion;
|
|
368
367
|
};
|
|
369
|
-
NextJs.prototype._getPackageMangerChoice = function () {
|
|
370
|
-
if (fs.existsSync(path.join(process.cwd(), 'yarn.lock'))) {
|
|
371
|
-
return 'yarn';
|
|
372
|
-
}
|
|
373
|
-
if (fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'))) {
|
|
374
|
-
return 'pnpm';
|
|
375
|
-
}
|
|
376
|
-
if (fs.existsSync(path.join(process.cwd(), 'package-lock.json'))) {
|
|
377
|
-
return 'npm';
|
|
378
|
-
}
|
|
379
|
-
return null;
|
|
380
|
-
};
|
|
381
|
-
NextJs.prototype._getInstallCommand = function (packageManager) {
|
|
382
|
-
switch (packageManager) {
|
|
383
|
-
case 'yarn':
|
|
384
|
-
return 'yarn add';
|
|
385
|
-
case 'pnpm':
|
|
386
|
-
return 'pnpm add';
|
|
387
|
-
case 'npm':
|
|
388
|
-
return 'npm install';
|
|
389
|
-
default:
|
|
390
|
-
throw new Error("Unknown package manager: " + packageManager);
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
NextJs.prototype._installPackage = function (packageName, packageManager) {
|
|
394
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
395
|
-
var command;
|
|
396
|
-
return __generator(this, function (_a) {
|
|
397
|
-
switch (_a.label) {
|
|
398
|
-
case 0:
|
|
399
|
-
command = this._getInstallCommand(packageManager);
|
|
400
|
-
return [4 /*yield*/, util_1.promisify(child_process_1.exec)(command + " " + packageName)];
|
|
401
|
-
case 1:
|
|
402
|
-
_a.sent();
|
|
403
|
-
Logging_1.green("\u2713 Added `" + packageName + "` using `" + command + "`.");
|
|
404
|
-
return [2 /*return*/];
|
|
405
|
-
}
|
|
406
|
-
});
|
|
407
|
-
});
|
|
408
|
-
};
|
|
409
|
-
NextJs.prototype._checkPackageVersion = function (packageName, acceptableVersions, canBeLatest) {
|
|
410
|
-
var depsVersion = _.get(appPackage, ['dependencies', packageName]);
|
|
411
|
-
var devDepsVersion = _.get(appPackage, ['devDependencies', packageName]);
|
|
412
|
-
if (!depsVersion && !devDepsVersion) {
|
|
413
|
-
Logging_1.red("\u2717 " + packageName + " isn't in your dependencies.");
|
|
414
|
-
Logging_1.red(' Please install it with yarn/npm.');
|
|
415
|
-
return false;
|
|
416
|
-
}
|
|
417
|
-
else if (!this._fulfillsVersionRange(depsVersion, acceptableVersions, canBeLatest) &&
|
|
418
|
-
!this._fulfillsVersionRange(devDepsVersion, acceptableVersions, canBeLatest)) {
|
|
419
|
-
Logging_1.red("\u2717 Your `package.json` specifies a version of `" + packageName + "` outside of the compatible version range " + acceptableVersions + ".\n");
|
|
420
|
-
return false;
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
Logging_1.green("\u2713 A compatible version of `" + packageName + "` is specified in `package.json`.");
|
|
424
|
-
return true;
|
|
425
|
-
}
|
|
426
|
-
};
|
|
427
|
-
NextJs.prototype._fulfillsVersionRange = function (version, acceptableVersions, canBeLatest) {
|
|
428
|
-
if (version === 'latest') {
|
|
429
|
-
return canBeLatest;
|
|
430
|
-
}
|
|
431
|
-
var cleanedUserVersion, isRange;
|
|
432
|
-
if (semver_1.valid(version)) {
|
|
433
|
-
cleanedUserVersion = semver_1.valid(version);
|
|
434
|
-
isRange = false;
|
|
435
|
-
}
|
|
436
|
-
else if (semver_1.validRange(version)) {
|
|
437
|
-
cleanedUserVersion = semver_1.validRange(version);
|
|
438
|
-
isRange = true;
|
|
439
|
-
}
|
|
440
|
-
return (
|
|
441
|
-
// If the given version is a bogus format, this will still be undefined and we'll automatically reject it
|
|
442
|
-
!!cleanedUserVersion &&
|
|
443
|
-
(isRange
|
|
444
|
-
? semver_1.subset(cleanedUserVersion, acceptableVersions)
|
|
445
|
-
: semver_1.satisfies(cleanedUserVersion, acceptableVersions)));
|
|
446
|
-
};
|
|
447
368
|
NextJs.prototype._spliceInPlace = function (arr, start, deleteCount) {
|
|
448
369
|
var inserts = [];
|
|
449
370
|
for (var _i = 3; _i < arguments.length; _i++) {
|