UNPKG

5.26 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.checkMetadata = checkMetadata;
7exports.versionFromDependencyRange = versionFromDependencyRange;
8exports.readPackageJson = void 0;
9
10function _bluebirdLst() {
11 const data = require("bluebird-lst");
12
13 _bluebirdLst = function () {
14 return data;
15 };
16
17 return data;
18}
19
20function _builderUtil() {
21 const data = require("builder-util");
22
23 _builderUtil = function () {
24 return data;
25 };
26
27 return data;
28}
29
30function _fsExtraP() {
31 const data = require("fs-extra-p");
32
33 _fsExtraP = function () {
34 return data;
35 };
36
37 return data;
38}
39
40var path = _interopRequireWildcard(require("path"));
41
42function semver() {
43 const data = _interopRequireWildcard(require("semver"));
44
45 semver = function () {
46 return data;
47 };
48
49 return data;
50}
51
52let authors = (() => {
53 var _ref2 = (0, _bluebirdLst().coroutine)(function* (file, data) {
54 if (data.contributors != null) {
55 return;
56 }
57
58 let authorData;
59
60 try {
61 authorData = yield (0, _fsExtraP().readFile)(path.resolve(path.dirname(file), "AUTHORS"), "utf8");
62 } catch (ignored) {
63 return;
64 }
65
66 data.contributors = authorData.split(/\r?\n/g).map(it => it.replace(/^\s*#.*$/, "").trim());
67 });
68
69 return function authors(_x2, _x3) {
70 return _ref2.apply(this, arguments);
71 };
72})();
73/** @internal */
74
75
76function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
77
78const normalizeData = require("normalize-package-data");
79/** @internal */
80
81
82let readPackageJson = (() => {
83 var _ref = (0, _bluebirdLst().coroutine)(function* (file) {
84 const data = yield (0, _fsExtraP().readJson)(file);
85 yield authors(file, data);
86 normalizeData(data); // remove not required fields because can be used for remote build
87
88 delete data.scripts;
89 delete data.readme;
90 return data;
91 });
92
93 return function readPackageJson(_x) {
94 return _ref.apply(this, arguments);
95 };
96})();
97
98exports.readPackageJson = readPackageJson;
99
100function checkMetadata(metadata, devMetadata, appPackageFile, devAppPackageFile) {
101 const errors = [];
102
103 const reportError = missedFieldName => {
104 errors.push(`Please specify '${missedFieldName}' in the package.json (${appPackageFile})`);
105 };
106
107 const checkNotEmpty = (name, value) => {
108 if ((0, _builderUtil().isEmptyOrSpaces)(value)) {
109 reportError(name);
110 }
111 };
112
113 if (metadata.directories != null) {
114 errors.push(`"directories" in the root is deprecated, please specify in the "build"`);
115 }
116
117 checkNotEmpty("name", metadata.name);
118
119 if ((0, _builderUtil().isEmptyOrSpaces)(metadata.description)) {
120 _builderUtil().log.warn({
121 appPackageFile
122 }, `description is missed in the package.json`);
123 }
124
125 if (metadata.author == null) {
126 _builderUtil().log.warn({
127 appPackageFile
128 }, `author is missed in the package.json`);
129 }
130
131 checkNotEmpty("version", metadata.version);
132
133 if (metadata != null) {
134 checkDependencies(metadata.dependencies, errors);
135 }
136
137 if (metadata !== devMetadata) {
138 if (metadata.build != null) {
139 errors.push(`'build' in the application package.json (${appPackageFile}) is not supported since 3.0 anymore. Please move 'build' into the development package.json (${devAppPackageFile})`);
140 }
141 }
142
143 const devDependencies = metadata.devDependencies;
144
145 if (devDependencies != null && "electron-rebuild" in devDependencies) {
146 _builderUtil().log.info('electron-rebuild not required if you use electron-builder, please consider to remove excess dependency from devDependencies\n\nTo ensure your native dependencies are always matched electron version, simply add script `"postinstall": "electron-builder install-app-deps" to your `package.json`');
147 }
148
149 if (errors.length > 0) {
150 throw new Error(errors.join("\n"));
151 }
152}
153
154function versionFromDependencyRange(version) {
155 const firstChar = version[0];
156 return firstChar === "^" || firstChar === "~" ? version.substring(1) : version;
157}
158
159function checkDependencies(dependencies, errors) {
160 if (dependencies == null) {
161 return;
162 }
163
164 const updaterVersion = dependencies["electron-updater"];
165
166 if (updaterVersion != null && !semver().satisfies(versionFromDependencyRange(updaterVersion), ">=2.18.2")) {
167 errors.push(`At least electron-updater 2.18.2 is required by current electron-builder version. Please set electron-updater version to "^2.18.2"`);
168 }
169
170 const deps = ["electron", "electron-prebuilt", "electron-rebuild"];
171
172 if (process.env.ALLOW_ELECTRON_BUILDER_AS_PRODUCTION_DEPENDENCY !== "true") {
173 deps.push("electron-builder");
174 }
175
176 for (const name of deps) {
177 if (name in dependencies) {
178 errors.push(`Package "${name}" is only allowed in "devDependencies". ` + `Please remove it from the "dependencies" section in your package.json.`);
179 }
180 }
181}
182//# sourceMappingURL=packageMetadata.js.map
\No newline at end of file