diff options
Diffstat (limited to 'desktop/node_modules/@electron/notarize/lib/legacy.js')
-rw-r--r-- | desktop/node_modules/@electron/notarize/lib/legacy.js | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/desktop/node_modules/@electron/notarize/lib/legacy.js b/desktop/node_modules/@electron/notarize/lib/legacy.js new file mode 100644 index 0000000..48f28f7 --- /dev/null +++ b/desktop/node_modules/@electron/notarize/lib/legacy.js @@ -0,0 +1,116 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitForLegacyNotarize = exports.startLegacyNotarize = void 0; +const debug = require("debug"); +const path = require("path"); +const spawn_1 = require("./spawn"); +const helpers_1 = require("./helpers"); +const validate_args_1 = require("./validate-args"); +const d = debug('electron-notarize:legacy'); +function authorizationArgs(rawOpts) { + const opts = (0, validate_args_1.validateLegacyAuthorizationArgs)(rawOpts); + if ((0, validate_args_1.isLegacyPasswordCredentials)(opts)) { + return ['-u', (0, helpers_1.makeSecret)(opts.appleId), '-p', (0, helpers_1.makeSecret)(opts.appleIdPassword)]; + } + else { + return [ + '--apiKey', + (0, helpers_1.makeSecret)(opts.appleApiKey), + '--apiIssuer', + (0, helpers_1.makeSecret)(opts.appleApiIssuer), + ]; + } +} +function startLegacyNotarize(opts) { + return __awaiter(this, void 0, void 0, function* () { + d('starting notarize process for app:', opts.appPath); + return yield (0, helpers_1.withTempDir)((dir) => __awaiter(this, void 0, void 0, function* () { + const zipPath = path.resolve(dir, `${path.basename(opts.appPath, '.app')}.zip`); + d('zipping application to:', zipPath); + const zipResult = yield (0, spawn_1.spawn)('ditto', ['-c', '-k', '--sequesterRsrc', '--keepParent', path.basename(opts.appPath), zipPath], { + cwd: path.dirname(opts.appPath), + }); + if (zipResult.code !== 0) { + throw new Error(`Failed to zip application, exited with code: ${zipResult.code}\n\n${zipResult.output}`); + } + d('zip succeeded, attempting to upload to Apple'); + const notarizeArgs = [ + 'altool', + '--notarize-app', + '-f', + zipPath, + '--primary-bundle-id', + opts.appBundleId, + ...authorizationArgs(opts), + ]; + if (opts.ascProvider) { + notarizeArgs.push('-itc_provider', opts.ascProvider); + } + const result = yield (0, spawn_1.spawn)('xcrun', notarizeArgs); + if (result.code !== 0) { + throw new Error(`Failed to upload app to Apple's notarization servers\n\n${result.output}`); + } + d('upload success'); + const uuidMatch = /\nRequestUUID = (.+?)\n/g.exec(result.output); + if (!uuidMatch) { + throw new Error(`Failed to find request UUID in output:\n\n${result.output}`); + } + d('found UUID:', uuidMatch[1]); + return { + uuid: uuidMatch[1], + }; + })); + }); +} +exports.startLegacyNotarize = startLegacyNotarize; +function waitForLegacyNotarize(opts) { + return __awaiter(this, void 0, void 0, function* () { + d('checking notarization status:', opts.uuid); + const result = yield (0, spawn_1.spawn)('xcrun', [ + 'altool', + '--notarization-info', + opts.uuid, + ...authorizationArgs(opts), + ]); + if (result.code !== 0) { + // These checks could fail for all sorts of reasons, including: + // * The status of a request isn't available as soon as the upload request returns, so + // it may just not be ready yet. + // * If using keychain password, user's mac went to sleep and keychain locked. + // * Regular old connectivity failure. + d(`Failed to check status of notarization request, retrying in 30 seconds: ${opts.uuid}\n\n${result.output}`); + yield (0, helpers_1.delay)(30000); + return waitForLegacyNotarize(opts); + } + const notarizationInfo = (0, helpers_1.parseNotarizationInfo)(result.output); + if (notarizationInfo.status === 'in progress') { + d('still in progress, waiting 30 seconds'); + yield (0, helpers_1.delay)(30000); + return waitForLegacyNotarize(opts); + } + d('notarzation done with info:', notarizationInfo); + if (notarizationInfo.status === 'invalid') { + d('notarization failed'); + throw new Error(`Apple failed to notarize your application, check the logs for more info + +Status Code: ${notarizationInfo.statusCode || 'No Code'} +Message: ${notarizationInfo.statusMessage || 'No Message'} +Logs: ${notarizationInfo.logFileUrl}`); + } + if (notarizationInfo.status !== 'success') { + throw new Error(`Unrecognized notarization status: "${notarizationInfo.status}"`); + } + d('notarization was successful'); + return; + }); +} +exports.waitForLegacyNotarize = waitForLegacyNotarize; +//# sourceMappingURL=legacy.js.map
\ No newline at end of file |