@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.
Files changed (30) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/lib/Helper/Package.d.ts +1 -0
  3. package/dist/lib/Helper/Package.js +46 -0
  4. package/dist/lib/Helper/Package.js.map +1 -0
  5. package/dist/lib/Helper/PackageManager.d.ts +22 -0
  6. package/dist/lib/Helper/PackageManager.js +135 -0
  7. package/dist/lib/Helper/PackageManager.js.map +1 -0
  8. package/dist/lib/Helper/Wizard.js +2 -1
  9. package/dist/lib/Helper/Wizard.js.map +1 -1
  10. package/dist/lib/Helper/__tests__/MergeConfig.js +25 -14
  11. package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
  12. package/dist/lib/Steps/Integrations/NextJs.d.ts +0 -5
  13. package/dist/lib/Steps/Integrations/NextJs.js +6 -85
  14. package/dist/lib/Steps/Integrations/NextJs.js.map +1 -1
  15. package/dist/lib/Steps/Integrations/ReactNative.d.ts +7 -0
  16. package/dist/lib/Steps/Integrations/ReactNative.js +120 -51
  17. package/dist/lib/Steps/Integrations/ReactNative.js.map +1 -1
  18. package/dist/lib/Steps/Integrations/__tests__/ReactNative.js +42 -0
  19. package/dist/lib/Steps/Integrations/__tests__/ReactNative.js.map +1 -1
  20. package/dist/lib/__tests__/Setup.js +15 -0
  21. package/dist/lib/__tests__/Setup.js.map +1 -1
  22. package/lib/Helper/Package.ts +61 -0
  23. package/lib/Helper/PackageManager.ts +64 -0
  24. package/lib/Helper/Wizard.ts +1 -1
  25. package/lib/Helper/__tests__/MergeConfig.ts +36 -20
  26. package/lib/Steps/Integrations/NextJs.ts +8 -108
  27. package/lib/Steps/Integrations/ReactNative.ts +108 -37
  28. package/lib/Steps/Integrations/__tests__/ReactNative.ts +34 -0
  29. package/lib/__tests__/Setup.ts +23 -0
  30. 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
- return [2 /*return*/, {}];
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,sBAAO,EAAE,EAAC;;;;;CAEb;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 return {};\n }\n}\n"]}
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/NextJS/configs/next.config.template.js');
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
- expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(true);
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
- fs.unlinkSync(configPath);
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
- expect(MergeConfig_1.mergeConfigFile(configPath, templatePath)).toBe(true);
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":"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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 test('merge basic next.config.js', () => {\n const { sourcePath, mergedPath } = configFileNames(1);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n expect(\n fs.readFileSync(configPath, 'utf8') ===\n fs.readFileSync(mergedPath, 'utf8'),\n ).toBe(true);\n fs.unlinkSync(configPath);\n });\n\n test('merge invalid javascript config', () => {\n const { sourcePath } = configFileNames(2);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(false);\n fs.unlinkSync(configPath);\n });\n\n test('merge more complicated next.config.js', () => {\n const { sourcePath, mergedPath } = configFileNames(3);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n expect(\n fs.readFileSync(configPath, 'utf8') ===\n fs.readFileSync(mergedPath, 'utf8'),\n ).toBe(true);\n fs.unlinkSync(configPath);\n });\n\n test('merge next.config.js with function', () => {\n const { sourcePath, mergedPath } = configFileNames(4);\n fs.copyFileSync(sourcePath, configPath);\n\n expect(mergeConfigFile(configPath, templatePath)).toBe(true);\n expect(\n fs.readFileSync(configPath, 'utf8') ===\n fs.readFileSync(mergedPath, 'utf8'),\n ).toBe(true);\n fs.unlinkSync(configPath);\n });\n});\n"]}
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 = this._checkPackageVersion('next', COMPATIBLE_NEXTJS_VERSIONS, true);
169
- packageManager = this._getPackageMangerChoice();
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*/, this._installPackage('@sentry/nextjs', packageManager)];
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 = this._checkPackageVersion('@sentry/nextjs', COMPATIBLE_SDK_VERSIONS, true);
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++) {