app-builder-lib 23.6.0 → 24.0.0-alpha.10
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/out/ProtonFramework.js +4 -4
- package/out/ProtonFramework.js.map +1 -1
- package/out/appInfo.js +21 -9
- package/out/appInfo.js.map +1 -1
- package/out/asar/asar.d.ts +12 -0
- package/out/asar/asar.js +10 -11
- package/out/asar/asar.js.map +1 -1
- package/out/asar/asarFileChecker.js +2 -2
- package/out/asar/asarFileChecker.js.map +1 -1
- package/out/asar/asarUtil.js +13 -13
- package/out/asar/asarUtil.js.map +1 -1
- package/out/asar/integrity.js +9 -9
- package/out/asar/integrity.js.map +1 -1
- package/out/asar/unpackDetector.js +6 -6
- package/out/asar/unpackDetector.js.map +1 -1
- package/out/binDownload.js +2 -2
- package/out/binDownload.js.map +1 -1
- package/out/codeSign/codesign.js +4 -4
- package/out/codeSign/codesign.js.map +1 -1
- package/out/codeSign/macCodeSign.d.ts +2 -2
- package/out/codeSign/macCodeSign.js +26 -26
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/codeSign/windowsCodeSign.js +16 -15
- package/out/codeSign/windowsCodeSign.js.map +1 -1
- package/out/core.js +1 -1
- package/out/core.js.map +1 -1
- package/out/electron/ElectronFramework.js +17 -17
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/electronMac.js +16 -16
- package/out/electron/electronMac.js.map +1 -1
- package/out/electron/electronVersion.js +5 -5
- package/out/electron/electronVersion.js.map +1 -1
- package/out/fileMatcher.js +11 -11
- package/out/fileMatcher.js.map +1 -1
- package/out/fileTransformer.js +5 -5
- package/out/fileTransformer.js.map +1 -1
- package/out/forge-maker.js +1 -1
- package/out/forge-maker.js.map +1 -1
- package/out/frameworks/LibUiFramework.js +10 -10
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/index.js +3 -3
- package/out/index.js.map +1 -1
- package/out/linuxPackager.js +3 -3
- package/out/linuxPackager.js.map +1 -1
- package/out/macPackager.d.ts +3 -1
- package/out/macPackager.js +80 -31
- package/out/macPackager.js.map +1 -1
- package/out/options/CommonWindowsInstallerConfiguration.js +3 -3
- package/out/options/CommonWindowsInstallerConfiguration.js.map +1 -1
- package/out/options/SnapOptions.d.ts +4 -0
- package/out/options/SnapOptions.js.map +1 -1
- package/out/options/macOptions.d.ts +27 -5
- package/out/options/macOptions.js.map +1 -1
- package/out/packager.js +34 -34
- package/out/packager.js.map +1 -1
- package/out/platformPackager.js +39 -39
- package/out/platformPackager.js.map +1 -1
- package/out/presets/rectCra.js +1 -1
- package/out/presets/rectCra.js.map +1 -1
- package/out/publish/BitbucketPublisher.js +5 -5
- package/out/publish/BitbucketPublisher.js.map +1 -1
- package/out/publish/KeygenPublisher.js +7 -7
- package/out/publish/KeygenPublisher.js.map +1 -1
- package/out/publish/PublishManager.d.ts +0 -1
- package/out/publish/PublishManager.js +24 -28
- package/out/publish/PublishManager.js.map +1 -1
- package/out/publish/SnapStorePublisher.js +1 -1
- package/out/publish/SnapStorePublisher.js.map +1 -1
- package/out/publish/s3/BaseS3Publisher.js +3 -3
- package/out/publish/s3/BaseS3Publisher.js.map +1 -1
- package/out/publish/s3/s3Publisher.js +1 -1
- package/out/publish/s3/s3Publisher.js.map +1 -1
- package/out/publish/s3/spacesPublisher.js +2 -2
- package/out/publish/s3/spacesPublisher.js.map +1 -1
- package/out/publish/updateInfoBuilder.js +9 -9
- package/out/publish/updateInfoBuilder.js.map +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
- package/out/remoteBuilder/RemoteBuilder.js +3 -3
- package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
- package/out/remoteBuilder/builder-cli.js +3 -3
- package/out/remoteBuilder/builder-cli.js.map +1 -1
- package/out/targets/AppImageTarget.js +6 -6
- package/out/targets/AppImageTarget.js.map +1 -1
- package/out/targets/AppxTarget.js +19 -19
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/ArchiveTarget.js +7 -7
- package/out/targets/ArchiveTarget.js.map +1 -1
- package/out/targets/FlatpakTarget.js +8 -8
- package/out/targets/FlatpakTarget.js.map +1 -1
- package/out/targets/{fpm.d.ts → FpmTarget.d.ts} +1 -0
- package/out/targets/{fpm.js → FpmTarget.js} +54 -20
- package/out/targets/FpmTarget.js.map +1 -0
- package/out/targets/LinuxTargetHelper.js +9 -9
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +11 -11
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/archive.js +9 -9
- package/out/targets/archive.js.map +1 -1
- package/out/targets/differentialUpdateInfoBuilder.js +2 -2
- package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +37 -37
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/WebInstallerTarget.js +2 -2
- package/out/targets/nsis/WebInstallerTarget.js.map +1 -1
- package/out/targets/nsis/nsisLang.js +5 -5
- package/out/targets/nsis/nsisLang.js.map +1 -1
- package/out/targets/nsis/nsisLicense.js +2 -2
- package/out/targets/nsis/nsisLicense.js.map +1 -1
- package/out/targets/nsis/nsisUtil.js +5 -5
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/pkg.js +19 -25
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap.js +22 -11
- package/out/targets/snap.js.map +1 -1
- package/out/targets/targetFactory.js +4 -4
- package/out/targets/targetFactory.js.map +1 -1
- package/out/targets/tools.js +1 -1
- package/out/targets/tools.js.map +1 -1
- package/out/util/AppFileWalker.js +2 -2
- package/out/util/AppFileWalker.js.map +1 -1
- package/out/util/NodeModuleCopyHelper.js +3 -3
- package/out/util/NodeModuleCopyHelper.js.map +1 -1
- package/out/util/appBuilder.js +2 -2
- package/out/util/appBuilder.js.map +1 -1
- package/out/util/appFileCopier.d.ts +1 -0
- package/out/util/appFileCopier.js +10 -9
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/cacheManager.js +5 -5
- package/out/util/cacheManager.js.map +1 -1
- package/out/util/config.js +10 -10
- package/out/util/config.js.map +1 -1
- package/out/util/flags.js +2 -2
- package/out/util/flags.js.map +1 -1
- package/out/util/hash.js +2 -2
- package/out/util/hash.js.map +1 -1
- package/out/util/license.js +2 -2
- package/out/util/license.js.map +1 -1
- package/out/util/macosVersion.js +3 -3
- package/out/util/macosVersion.js.map +1 -1
- package/out/util/normalizePackageData.js +4 -4
- package/out/util/normalizePackageData.js.map +1 -1
- package/out/util/packageDependencies.js +1 -1
- package/out/util/packageDependencies.js.map +1 -1
- package/out/util/packageMetadata.js +8 -8
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/repositoryInfo.js +2 -2
- package/out/util/repositoryInfo.js.map +1 -1
- package/out/util/yarn.d.ts +1 -1
- package/out/util/yarn.js +27 -38
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/vm/MonoVm.js +2 -2
- package/out/vm/MonoVm.js.map +1 -1
- package/out/vm/ParallelsVm.js +6 -6
- package/out/vm/ParallelsVm.js.map +1 -1
- package/out/vm/WineVm.js +1 -1
- package/out/vm/WineVm.js.map +1 -1
- package/out/vm/vm.js +2 -2
- package/out/vm/vm.js.map +1 -1
- package/out/winPackager.js +25 -25
- package/out/winPackager.js.map +1 -1
- package/out/wine.js +2 -2
- package/out/wine.js.map +1 -1
- package/package.json +17 -15
- package/scheme.json +96 -18
- package/templates/nsis/installSection.nsh +4 -1
- package/out/targets/fpm.js.map +0 -1
package/out/ProtonFramework.js
CHANGED
|
@@ -16,13 +16,13 @@ class ProtonFramework extends LibUiFramework_1.LibUiFramework {
|
|
|
16
16
|
}
|
|
17
17
|
getDefaultIcon(platform) {
|
|
18
18
|
if (platform === core_1.Platform.WINDOWS) {
|
|
19
|
-
return pathManager_1.getTemplatePath("icons/proton-native/proton-native.ico");
|
|
19
|
+
return (0, pathManager_1.getTemplatePath)("icons/proton-native/proton-native.ico");
|
|
20
20
|
}
|
|
21
21
|
else if (platform === core_1.Platform.LINUX) {
|
|
22
|
-
return pathManager_1.getTemplatePath("icons/proton-native/linux");
|
|
22
|
+
return (0, pathManager_1.getTemplatePath)("icons/proton-native/linux");
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
|
-
return pathManager_1.getTemplatePath("icons/proton-native/proton-native.icns");
|
|
25
|
+
return (0, pathManager_1.getTemplatePath)("icons/proton-native/proton-native.icns");
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
createTransformer() {
|
|
@@ -44,7 +44,7 @@ class ProtonFramework extends LibUiFramework_1.LibUiFramework {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
builder_util_1.log.info({
|
|
47
|
-
options: builder_util_runtime_1.safeStringifyJson(babelOptions, new Set(["presets"])),
|
|
47
|
+
options: (0, builder_util_runtime_1.safeStringifyJson)(babelOptions, new Set(["presets"])),
|
|
48
48
|
}, "transpile source code using Babel");
|
|
49
49
|
return (file) => {
|
|
50
50
|
if (!(file.endsWith(".js") || file.endsWith(".jsx")) || file.includes(fileTransformer_1.NODE_MODULES_PATTERN)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtonFramework.js","sourceRoot":"","sources":["../src/ProtonFramework.ts"],"names":[],"mappings":";;;AACA,+CAAkC;AAClC,+DAAwD;AACxD,iCAAiC;AACjC,uDAAwD;AACxD,gEAA4D;AAC5D,oDAAoD;AAEpD,MAAa,eAAgB,SAAQ,+BAAc;IAMjD,YAAY,OAAe,EAAE,gBAAwB,EAAE,aAAsB;QAC3E,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;QANxC,SAAI,GAAG,QAAQ,CAAA;QAExB,qCAAqC;QAC5B,uBAAkB,GAAG,oBAAoB,CAAA;IAIlD,CAAC;IAED,cAAc,CAAC,QAAkB;QAC/B,IAAI,QAAQ,KAAK,eAAQ,CAAC,OAAO,EAAE;YACjC,OAAO,6BAAe,
|
|
1
|
+
{"version":3,"file":"ProtonFramework.js","sourceRoot":"","sources":["../src/ProtonFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { FileTransformer } from \"builder-util/out/fs\"\nimport { log } from \"builder-util\"\nimport { safeStringifyJson } from \"builder-util-runtime\"\nimport { Platform } from \"./core\"\nimport { NODE_MODULES_PATTERN } from \"./fileTransformer\"\nimport { LibUiFramework } from \"./frameworks/LibUiFramework\"\nimport { getTemplatePath } from \"./util/pathManager\"\n\nexport class ProtonFramework extends LibUiFramework {\n readonly name = \"proton\"\n\n // noinspection JSUnusedGlobalSymbols\n readonly defaultAppIdPrefix = \"com.proton-native.\"\n\n constructor(version: string, distMacOsAppName: string, isUseLaunchUi: boolean) {\n super(version, distMacOsAppName, isUseLaunchUi)\n }\n\n getDefaultIcon(platform: Platform): string {\n if (platform === Platform.WINDOWS) {\n return getTemplatePath(\"icons/proton-native/proton-native.ico\")\n } else if (platform === Platform.LINUX) {\n return getTemplatePath(\"icons/proton-native/linux\")\n } else {\n return getTemplatePath(\"icons/proton-native/proton-native.icns\")\n }\n }\n\n createTransformer(): FileTransformer | null {\n let babel: any\n const babelOptions: any = { ast: false, sourceMaps: \"inline\" }\n if (process.env.TEST_SET_BABEL_PRESET === \"true\") {\n babel = require(\"@babel/core\")\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n babel = testOnlyBabel(babel, babelOptions, this.version)\n } else {\n try {\n babel = require(\"babel-core\")\n } catch (e: any) {\n // babel isn't installed\n log.debug(null, \"don't transpile source code using Babel\")\n return null\n }\n }\n\n log.info(\n {\n options: safeStringifyJson(babelOptions, new Set<string>([\"presets\"])),\n },\n \"transpile source code using Babel\"\n )\n return (file): Promise<any> | null => {\n if (!(file.endsWith(\".js\") || file.endsWith(\".jsx\")) || file.includes(NODE_MODULES_PATTERN)) {\n return null\n }\n\n return new Promise((resolve, reject) => {\n return babel.transformFile(file, babelOptions, (error: Error, result: any) => {\n if (error == null) {\n resolve(result.code)\n } else {\n reject(error)\n }\n })\n })\n }\n }\n}\n\nfunction testOnlyBabel(babel: any, babelOptions: any, nodeVersion: string): any {\n // out test dir can be located outside of electron-builder node_modules and babel cannot resolve string names of preset\n babelOptions.presets = [[require(\"@babel/preset-env\").default, { targets: { node: nodeVersion } }], require(\"@babel/preset-react\")]\n babelOptions.plugins = [\n // stage 0\n require(\"@babel/plugin-proposal-function-bind\").default,\n\n // stage 1\n require(\"@babel/plugin-proposal-export-default-from\").default,\n require(\"@babel/plugin-proposal-logical-assignment-operators\").default,\n [require(\"@babel/plugin-proposal-optional-chaining\").default, { loose: false }],\n [require(\"@babel/plugin-proposal-pipeline-operator\").default, { proposal: \"minimal\" }],\n [require(\"@babel/plugin-proposal-nullish-coalescing-operator\").default, { loose: false }],\n require(\"@babel/plugin-proposal-do-expressions\").default,\n\n // stage 2\n [require(\"@babel/plugin-proposal-decorators\").default, { legacy: true }],\n require(\"@babel/plugin-proposal-function-sent\").default,\n require(\"@babel/plugin-proposal-export-namespace-from\").default,\n require(\"@babel/plugin-proposal-numeric-separator\").default,\n require(\"@babel/plugin-proposal-throw-expressions\").default,\n\n // stage 3\n require(\"@babel/plugin-syntax-dynamic-import\").default,\n require(\"@babel/plugin-syntax-import-meta\").default,\n [require(\"@babel/plugin-proposal-class-properties\").default, { loose: false }],\n require(\"@babel/plugin-proposal-json-strings\").default,\n ]\n babelOptions.babelrc = false\n return babel\n}\n"]}
|
package/out/appInfo.js
CHANGED
|
@@ -37,7 +37,7 @@ class AppInfo {
|
|
|
37
37
|
this.buildNumber = info.config.buildNumber || buildNumberEnvs;
|
|
38
38
|
if (buildVersion == null) {
|
|
39
39
|
buildVersion = this.version;
|
|
40
|
-
if (!builder_util_1.isEmptyOrSpaces(this.buildNumber)) {
|
|
40
|
+
if (!(0, builder_util_1.isEmptyOrSpaces)(this.buildNumber)) {
|
|
41
41
|
buildVersion += `.${this.buildNumber}`;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -49,24 +49,36 @@ class AppInfo {
|
|
|
49
49
|
this.shortVersionWindows = info.metadata.shortVersionWindows;
|
|
50
50
|
}
|
|
51
51
|
this.productName = info.config.productName || info.metadata.productName || info.metadata.name;
|
|
52
|
-
this.sanitizedProductName = filename_1.sanitizeFileName(this.productName);
|
|
53
|
-
this.productFilename = (platformSpecificOptions === null || platformSpecificOptions === void 0 ? void 0 : platformSpecificOptions.executableName) != null ? filename_1.sanitizeFileName(platformSpecificOptions.executableName) : this.sanitizedProductName;
|
|
52
|
+
this.sanitizedProductName = (0, filename_1.sanitizeFileName)(this.productName);
|
|
53
|
+
this.productFilename = (platformSpecificOptions === null || platformSpecificOptions === void 0 ? void 0 : platformSpecificOptions.executableName) != null ? (0, filename_1.sanitizeFileName)(platformSpecificOptions.executableName) : this.sanitizedProductName;
|
|
54
54
|
}
|
|
55
55
|
get channel() {
|
|
56
|
-
const prereleaseInfo = semver_1.prerelease(this.version);
|
|
56
|
+
const prereleaseInfo = (0, semver_1.prerelease)(this.version);
|
|
57
57
|
if (prereleaseInfo != null && prereleaseInfo.length > 0) {
|
|
58
58
|
return prereleaseInfo[0];
|
|
59
59
|
}
|
|
60
60
|
return null;
|
|
61
61
|
}
|
|
62
62
|
getVersionInWeirdWindowsForm(isSetBuildNumber = true) {
|
|
63
|
-
const
|
|
63
|
+
const [major, maybe_minor, maybe_patch] = this.version.split(".").map(versionPart => parseInt(versionPart));
|
|
64
|
+
// The major component must be present. Here it can be either NaN or undefined, which
|
|
65
|
+
// both returns true from isNaN.
|
|
66
|
+
if (isNaN(major)) {
|
|
67
|
+
throw new Error(`Invalid major number in: ${this.version}`);
|
|
68
|
+
}
|
|
69
|
+
// Allow missing version parts. Minor and patch can be left out and default to zero
|
|
70
|
+
const minor = maybe_minor !== null && maybe_minor !== void 0 ? maybe_minor : 0;
|
|
71
|
+
const patch = maybe_patch !== null && maybe_patch !== void 0 ? maybe_patch : 0;
|
|
72
|
+
// ... but reject non-integer version parts. '1.a' is not going to fly
|
|
73
|
+
if (isNaN(minor) || isNaN(patch)) {
|
|
74
|
+
throw new Error(`Invalid minor or patch number in: ${this.version}`);
|
|
75
|
+
}
|
|
64
76
|
// https://github.com/electron-userland/electron-builder/issues/2635#issuecomment-371792272
|
|
65
77
|
let buildNumber = isSetBuildNumber ? this.buildNumber : null;
|
|
66
78
|
if (buildNumber == null || !/^\d+$/.test(buildNumber)) {
|
|
67
79
|
buildNumber = "0";
|
|
68
80
|
}
|
|
69
|
-
return `${
|
|
81
|
+
return `${major}.${minor}.${patch}.${buildNumber}`;
|
|
70
82
|
}
|
|
71
83
|
get notNullDevMetadata() {
|
|
72
84
|
return this.info.devMetadata || {};
|
|
@@ -86,7 +98,7 @@ class AppInfo {
|
|
|
86
98
|
const info = this.info;
|
|
87
99
|
return `${info.framework.defaultAppIdPrefix}${info.metadata.name.toLowerCase()}`;
|
|
88
100
|
};
|
|
89
|
-
if (appId != null && (appId === "your.id" || builder_util_1.isEmptyOrSpaces(appId))) {
|
|
101
|
+
if (appId != null && (appId === "your.id" || (0, builder_util_1.isEmptyOrSpaces)(appId))) {
|
|
90
102
|
const incorrectAppId = appId;
|
|
91
103
|
appId = generateDefaultAppId();
|
|
92
104
|
builder_util_1.log.warn(`do not use "${incorrectAppId}" as appId, "${appId}" will be used instead`);
|
|
@@ -105,7 +117,7 @@ class AppInfo {
|
|
|
105
117
|
return name.startsWith("@") ? this.sanitizedProductName : name;
|
|
106
118
|
}
|
|
107
119
|
get sanitizedName() {
|
|
108
|
-
return filename_1.sanitizeFileName(this.name);
|
|
120
|
+
return (0, filename_1.sanitizeFileName)(this.name);
|
|
109
121
|
}
|
|
110
122
|
get updaterCacheDirName() {
|
|
111
123
|
return this.sanitizedName.toLowerCase() + "-updater";
|
|
@@ -113,7 +125,7 @@ class AppInfo {
|
|
|
113
125
|
get copyright() {
|
|
114
126
|
const copyright = this.info.config.copyright;
|
|
115
127
|
if (copyright != null) {
|
|
116
|
-
return macroExpander_1.expandMacro(copyright, null, this);
|
|
128
|
+
return (0, macroExpander_1.expandMacro)(copyright, null, this);
|
|
117
129
|
}
|
|
118
130
|
return `Copyright © ${new Date().getFullYear()} ${this.companyName || this.productName}`;
|
|
119
131
|
}
|
package/out/appInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appInfo.js","sourceRoot":"","sources":["../src/appInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmptyOrSpaces, log } from \"builder-util\"\nimport { prerelease, SemVer } from \"semver\"\nimport { PlatformSpecificBuildOptions } from \"./options/PlatformSpecificBuildOptions\"\nimport { Packager } from \"./packager\"\nimport { expandMacro } from \"./util/macroExpander\"\nimport { sanitizeFileName } from \"./util/filename\"\n\n// fpm bug - rpm build --description is not escaped, well... decided to replace quite to smart quote\n// http://leancrew.com/all-this/2010/11/smart-quotes-in-javascript/\nexport function smarten(s: string): string {\n // opening singles\n s = s.replace(/(^|[-\\u2014\\s([\"])'/g, \"$1\\u2018\")\n // closing singles & apostrophes\n s = s.replace(/'/g, \"\\u2019\")\n // opening doubles\n s = s.replace(/(^|[-\\u2014/[(\\u2018\\s])\"/g, \"$1\\u201c\")\n // closing doubles\n s = s.replace(/\"/g, \"\\u201d\")\n return s\n}\n\nexport class AppInfo {\n readonly description = smarten(this.info.metadata.description || \"\")\n readonly version: string\n readonly shortVersion: string | undefined\n readonly shortVersionWindows: string | undefined\n\n readonly buildNumber: string | undefined\n readonly buildVersion: string\n\n readonly productName: string\n readonly sanitizedProductName: string\n readonly productFilename: string\n\n constructor(private readonly info: Packager, buildVersion: string | null | undefined, private readonly platformSpecificOptions: PlatformSpecificBuildOptions | null = null) {\n this.version = info.metadata.version!\n\n if (buildVersion == null) {\n buildVersion = info.config.buildVersion\n }\n\n const buildNumberEnvs =\n process.env.BUILD_NUMBER ||\n process.env.TRAVIS_BUILD_NUMBER ||\n process.env.APPVEYOR_BUILD_NUMBER ||\n process.env.CIRCLE_BUILD_NUM ||\n process.env.BUILD_BUILDNUMBER ||\n process.env.CI_PIPELINE_IID\n this.buildNumber = info.config.buildNumber || buildNumberEnvs\n if (buildVersion == null) {\n buildVersion = this.version\n if (!isEmptyOrSpaces(this.buildNumber)) {\n buildVersion += `.${this.buildNumber}`\n }\n }\n this.buildVersion = buildVersion\n\n if (info.metadata.shortVersion) {\n this.shortVersion = info.metadata.shortVersion\n }\n if (info.metadata.shortVersionWindows) {\n this.shortVersionWindows = info.metadata.shortVersionWindows\n }\n\n this.productName = info.config.productName || info.metadata.productName || info.metadata.name!\n this.sanitizedProductName = sanitizeFileName(this.productName)\n this.productFilename = platformSpecificOptions?.executableName != null ? sanitizeFileName(platformSpecificOptions.executableName) : this.sanitizedProductName\n }\n\n get channel(): string | null {\n const prereleaseInfo = prerelease(this.version)\n if (prereleaseInfo != null && prereleaseInfo.length > 0) {\n return prereleaseInfo[0] as string | null\n }\n return null\n }\n\n getVersionInWeirdWindowsForm(isSetBuildNumber = true): string {\n const parsedVersion = new SemVer(this.version)\n // https://github.com/electron-userland/electron-builder/issues/2635#issuecomment-371792272\n let buildNumber = isSetBuildNumber ? this.buildNumber : null\n if (buildNumber == null || !/^\\d+$/.test(buildNumber)) {\n buildNumber = \"0\"\n }\n return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}.${buildNumber}`\n }\n\n private get notNullDevMetadata() {\n return this.info.devMetadata || {}\n }\n\n get companyName(): string | null {\n const author = this.info.metadata.author || this.notNullDevMetadata.author\n return author == null ? null : author.name\n }\n\n get id(): string {\n let appId: string | null | undefined = null\n for (const options of [this.platformSpecificOptions, this.info.config]) {\n if (options != null && appId == null) {\n appId = options.appId\n }\n }\n\n const generateDefaultAppId = () => {\n const info = this.info\n return `${info.framework.defaultAppIdPrefix}${info.metadata.name!.toLowerCase()}`\n }\n\n if (appId != null && (appId === \"your.id\" || isEmptyOrSpaces(appId))) {\n const incorrectAppId = appId\n appId = generateDefaultAppId()\n log.warn(`do not use \"${incorrectAppId}\" as appId, \"${appId}\" will be used instead`)\n }\n\n return appId == null ? generateDefaultAppId() : appId\n }\n\n get macBundleIdentifier(): string {\n return filterCFBundleIdentifier(this.id)\n }\n\n get name(): string {\n return this.info.metadata.name!\n }\n\n get linuxPackageName(): string {\n const name = this.name\n // https://github.com/electron-userland/electron-builder/issues/2963\n return name.startsWith(\"@\") ? this.sanitizedProductName : name\n }\n\n get sanitizedName(): string {\n return sanitizeFileName(this.name)\n }\n\n get updaterCacheDirName(): string {\n return this.sanitizedName.toLowerCase() + \"-updater\"\n }\n\n get copyright(): string {\n const copyright = this.info.config.copyright\n if (copyright != null) {\n return expandMacro(copyright, null, this)\n }\n return `Copyright © ${new Date().getFullYear()} ${this.companyName || this.productName}`\n }\n\n async computePackageUrl(): Promise<string | null> {\n const url = this.info.metadata.homepage || this.notNullDevMetadata.homepage\n if (url != null) {\n return url\n }\n\n const info = await this.info.repositoryInfo\n return info == null || info.type !== \"github\" ? null : `https://${info.domain}/${info.user}/${info.project}`\n }\n}\n\n/** @internal */\nexport function filterCFBundleIdentifier(identifier: string) {\n // Remove special characters and allow only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.)\n // Apple documentation: https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070\n return identifier.replace(/ /g, \"-\").replace(/[^a-zA-Z0-9.-]/g, \"\")\n}\n"]}
|
|
1
|
+
{"version":3,"file":"appInfo.js","sourceRoot":"","sources":["../src/appInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmptyOrSpaces, log } from \"builder-util\"\nimport { prerelease } from \"semver\"\nimport { PlatformSpecificBuildOptions } from \"./options/PlatformSpecificBuildOptions\"\nimport { Packager } from \"./packager\"\nimport { expandMacro } from \"./util/macroExpander\"\nimport { sanitizeFileName } from \"./util/filename\"\n\n// fpm bug - rpm build --description is not escaped, well... decided to replace quite to smart quote\n// http://leancrew.com/all-this/2010/11/smart-quotes-in-javascript/\nexport function smarten(s: string): string {\n // opening singles\n s = s.replace(/(^|[-\\u2014\\s([\"])'/g, \"$1\\u2018\")\n // closing singles & apostrophes\n s = s.replace(/'/g, \"\\u2019\")\n // opening doubles\n s = s.replace(/(^|[-\\u2014/[(\\u2018\\s])\"/g, \"$1\\u201c\")\n // closing doubles\n s = s.replace(/\"/g, \"\\u201d\")\n return s\n}\n\nexport class AppInfo {\n readonly description = smarten(this.info.metadata.description || \"\")\n readonly version: string\n readonly shortVersion: string | undefined\n readonly shortVersionWindows: string | undefined\n\n readonly buildNumber: string | undefined\n readonly buildVersion: string\n\n readonly productName: string\n readonly sanitizedProductName: string\n readonly productFilename: string\n\n constructor(private readonly info: Packager, buildVersion: string | null | undefined, private readonly platformSpecificOptions: PlatformSpecificBuildOptions | null = null) {\n this.version = info.metadata.version!\n\n if (buildVersion == null) {\n buildVersion = info.config.buildVersion\n }\n\n const buildNumberEnvs =\n process.env.BUILD_NUMBER ||\n process.env.TRAVIS_BUILD_NUMBER ||\n process.env.APPVEYOR_BUILD_NUMBER ||\n process.env.CIRCLE_BUILD_NUM ||\n process.env.BUILD_BUILDNUMBER ||\n process.env.CI_PIPELINE_IID\n this.buildNumber = info.config.buildNumber || buildNumberEnvs\n if (buildVersion == null) {\n buildVersion = this.version\n if (!isEmptyOrSpaces(this.buildNumber)) {\n buildVersion += `.${this.buildNumber}`\n }\n }\n this.buildVersion = buildVersion\n\n if (info.metadata.shortVersion) {\n this.shortVersion = info.metadata.shortVersion\n }\n if (info.metadata.shortVersionWindows) {\n this.shortVersionWindows = info.metadata.shortVersionWindows\n }\n\n this.productName = info.config.productName || info.metadata.productName || info.metadata.name!\n this.sanitizedProductName = sanitizeFileName(this.productName)\n this.productFilename = platformSpecificOptions?.executableName != null ? sanitizeFileName(platformSpecificOptions.executableName) : this.sanitizedProductName\n }\n\n get channel(): string | null {\n const prereleaseInfo = prerelease(this.version)\n if (prereleaseInfo != null && prereleaseInfo.length > 0) {\n return prereleaseInfo[0] as string | null\n }\n return null\n }\n\n getVersionInWeirdWindowsForm(isSetBuildNumber = true): string {\n const [major, maybe_minor, maybe_patch] = this.version.split(\".\").map(versionPart => parseInt(versionPart))\n // The major component must be present. Here it can be either NaN or undefined, which\n // both returns true from isNaN.\n if (isNaN(major)) {\n throw new Error(`Invalid major number in: ${this.version}`)\n }\n // Allow missing version parts. Minor and patch can be left out and default to zero\n const minor = maybe_minor ?? 0\n const patch = maybe_patch ?? 0\n // ... but reject non-integer version parts. '1.a' is not going to fly\n if (isNaN(minor) || isNaN(patch)) {\n throw new Error(`Invalid minor or patch number in: ${this.version}`)\n }\n // https://github.com/electron-userland/electron-builder/issues/2635#issuecomment-371792272\n let buildNumber = isSetBuildNumber ? this.buildNumber : null\n if (buildNumber == null || !/^\\d+$/.test(buildNumber)) {\n buildNumber = \"0\"\n }\n return `${major}.${minor}.${patch}.${buildNumber}`\n }\n\n private get notNullDevMetadata() {\n return this.info.devMetadata || {}\n }\n\n get companyName(): string | null {\n const author = this.info.metadata.author || this.notNullDevMetadata.author\n return author == null ? null : author.name\n }\n\n get id(): string {\n let appId: string | null | undefined = null\n for (const options of [this.platformSpecificOptions, this.info.config]) {\n if (options != null && appId == null) {\n appId = options.appId\n }\n }\n\n const generateDefaultAppId = () => {\n const info = this.info\n return `${info.framework.defaultAppIdPrefix}${info.metadata.name!.toLowerCase()}`\n }\n\n if (appId != null && (appId === \"your.id\" || isEmptyOrSpaces(appId))) {\n const incorrectAppId = appId\n appId = generateDefaultAppId()\n log.warn(`do not use \"${incorrectAppId}\" as appId, \"${appId}\" will be used instead`)\n }\n\n return appId == null ? generateDefaultAppId() : appId\n }\n\n get macBundleIdentifier(): string {\n return filterCFBundleIdentifier(this.id)\n }\n\n get name(): string {\n return this.info.metadata.name!\n }\n\n get linuxPackageName(): string {\n const name = this.name\n // https://github.com/electron-userland/electron-builder/issues/2963\n return name.startsWith(\"@\") ? this.sanitizedProductName : name\n }\n\n get sanitizedName(): string {\n return sanitizeFileName(this.name)\n }\n\n get updaterCacheDirName(): string {\n return this.sanitizedName.toLowerCase() + \"-updater\"\n }\n\n get copyright(): string {\n const copyright = this.info.config.copyright\n if (copyright != null) {\n return expandMacro(copyright, null, this)\n }\n return `Copyright © ${new Date().getFullYear()} ${this.companyName || this.productName}`\n }\n\n async computePackageUrl(): Promise<string | null> {\n const url = this.info.metadata.homepage || this.notNullDevMetadata.homepage\n if (url != null) {\n return url\n }\n\n const info = await this.info.repositoryInfo\n return info == null || info.type !== \"github\" ? null : `https://${info.domain}/${info.user}/${info.project}`\n }\n}\n\n/** @internal */\nexport function filterCFBundleIdentifier(identifier: string) {\n // Remove special characters and allow only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.)\n // Apple documentation: https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070\n return identifier.replace(/ /g, \"-\").replace(/[^a-zA-Z0-9.-]/g, \"\")\n}\n"]}
|
package/out/asar/asar.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import { Stats } from "fs-extra";
|
|
3
4
|
export interface ReadAsarHeader {
|
|
4
5
|
readonly header: string;
|
|
@@ -10,6 +11,17 @@ export interface NodeIntegrity {
|
|
|
10
11
|
blockSize: number;
|
|
11
12
|
blocks: Array<string>;
|
|
12
13
|
}
|
|
14
|
+
export declare class Node {
|
|
15
|
+
files?: {
|
|
16
|
+
[key: string]: Node;
|
|
17
|
+
};
|
|
18
|
+
unpacked?: boolean;
|
|
19
|
+
size?: number;
|
|
20
|
+
offset?: string;
|
|
21
|
+
executable?: boolean;
|
|
22
|
+
link?: string;
|
|
23
|
+
integrity?: NodeIntegrity;
|
|
24
|
+
}
|
|
13
25
|
export declare class AsarFilesystem {
|
|
14
26
|
readonly src: string;
|
|
15
27
|
readonly header: Node;
|
package/out/asar/asar.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.readAsarJson = exports.readAsar = exports.readAsarHeader = exports.AsarF
|
|
|
4
4
|
const chromium_pickle_js_1 = require("chromium-pickle-js");
|
|
5
5
|
const fs_extra_1 = require("fs-extra");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
/** @internal */
|
|
8
7
|
class Node {
|
|
9
8
|
}
|
|
10
9
|
exports.Node = Node;
|
|
@@ -98,25 +97,25 @@ class AsarFilesystem {
|
|
|
98
97
|
}
|
|
99
98
|
exports.AsarFilesystem = AsarFilesystem;
|
|
100
99
|
async function readAsarHeader(archive) {
|
|
101
|
-
const fd = await fs_extra_1.open(archive, "r");
|
|
100
|
+
const fd = await (0, fs_extra_1.open)(archive, "r");
|
|
102
101
|
let size;
|
|
103
102
|
let headerBuf;
|
|
104
103
|
try {
|
|
105
104
|
const sizeBuf = Buffer.allocUnsafe(8);
|
|
106
|
-
if ((await fs_extra_1.read(fd, sizeBuf, 0, 8, null)).bytesRead !== 8) {
|
|
105
|
+
if ((await (0, fs_extra_1.read)(fd, sizeBuf, 0, 8, null)).bytesRead !== 8) {
|
|
107
106
|
throw new Error("Unable to read header size");
|
|
108
107
|
}
|
|
109
|
-
const sizePickle = chromium_pickle_js_1.createFromBuffer(sizeBuf);
|
|
108
|
+
const sizePickle = (0, chromium_pickle_js_1.createFromBuffer)(sizeBuf);
|
|
110
109
|
size = sizePickle.createIterator().readUInt32();
|
|
111
110
|
headerBuf = Buffer.allocUnsafe(size);
|
|
112
|
-
if ((await fs_extra_1.read(fd, headerBuf, 0, size, null)).bytesRead !== size) {
|
|
111
|
+
if ((await (0, fs_extra_1.read)(fd, headerBuf, 0, size, null)).bytesRead !== size) {
|
|
113
112
|
throw new Error("Unable to read header");
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
115
|
finally {
|
|
117
|
-
await fs_extra_1.close(fd);
|
|
116
|
+
await (0, fs_extra_1.close)(fd);
|
|
118
117
|
}
|
|
119
|
-
const headerPickle = chromium_pickle_js_1.createFromBuffer(headerBuf);
|
|
118
|
+
const headerPickle = (0, chromium_pickle_js_1.createFromBuffer)(headerBuf);
|
|
120
119
|
return { header: headerPickle.createIterator().readString(), size };
|
|
121
120
|
}
|
|
122
121
|
exports.readAsarHeader = readAsarHeader;
|
|
@@ -137,15 +136,15 @@ async function readFileFromAsar(filesystem, filename, info) {
|
|
|
137
136
|
return buffer;
|
|
138
137
|
}
|
|
139
138
|
if (info.unpacked) {
|
|
140
|
-
return await fs_extra_1.readFile(path.join(`${filesystem.src}.unpacked`, filename));
|
|
139
|
+
return await (0, fs_extra_1.readFile)(path.join(`${filesystem.src}.unpacked`, filename));
|
|
141
140
|
}
|
|
142
|
-
const fd = await fs_extra_1.open(filesystem.src, "r");
|
|
141
|
+
const fd = await (0, fs_extra_1.open)(filesystem.src, "r");
|
|
143
142
|
try {
|
|
144
143
|
const offset = 8 + filesystem.headerSize + parseInt(info.offset, 10);
|
|
145
|
-
await fs_extra_1.read(fd, buffer, 0, size, offset);
|
|
144
|
+
await (0, fs_extra_1.read)(fd, buffer, 0, size, offset);
|
|
146
145
|
}
|
|
147
146
|
finally {
|
|
148
|
-
await fs_extra_1.close(fd);
|
|
147
|
+
await (0, fs_extra_1.close)(fd);
|
|
149
148
|
}
|
|
150
149
|
return buffer;
|
|
151
150
|
}
|
package/out/asar/asar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asar.js","sourceRoot":"","sources":["../../src/asar/asar.ts"],"names":[],"mappings":"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","sourcesContent":["import { createFromBuffer } from \"chromium-pickle-js\"\nimport { close, open, read, readFile, Stats } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface ReadAsarHeader {\n readonly header: string\n readonly size: number\n}\n\nexport interface NodeIntegrity {\n algorithm: \"SHA256\"\n hash: string\n blockSize: number\n blocks: Array<string>\n}\n\n/** @internal */\nexport class Node {\n // we don't use Map because later it will be stringified\n files?: { [key: string]: Node }\n\n unpacked?: boolean\n\n size?: number\n // electron expects string\n offset?: string\n\n executable?: boolean\n\n link?: string\n\n integrity?: NodeIntegrity\n}\n\nexport class AsarFilesystem {\n private offset = 0\n\n constructor(readonly src: string, readonly header = new Node(), readonly headerSize: number = -1) {\n if (this.header.files == null) {\n this.header.files = {}\n }\n }\n\n searchNodeFromDirectory(p: string, isCreate: boolean): Node | null {\n let node = this.header\n for (const dir of p.split(path.sep)) {\n if (dir !== \".\") {\n let child = node.files![dir]\n if (child == null) {\n if (!isCreate) {\n return null\n }\n child = new Node()\n child.files = {}\n node.files![dir] = child\n }\n node = child\n }\n }\n return node\n }\n\n getOrCreateNode(p: string): Node {\n if (p == null || p.length === 0) {\n return this.header\n }\n\n const name = path.basename(p)\n const dirNode = this.searchNodeFromDirectory(path.dirname(p), true)!\n if (dirNode.files == null) {\n dirNode.files = {}\n }\n\n let result = dirNode.files[name]\n if (result == null) {\n result = new Node()\n dirNode.files[name] = result\n }\n return result\n }\n\n addFileNode(file: string, dirNode: Node, size: number, unpacked: boolean, stat: Stats, integrity?: NodeIntegrity): Node {\n if (size > 4294967295) {\n throw new Error(`${file}: file size cannot be larger than 4.2GB`)\n }\n\n const node = new Node()\n node.size = size\n if (integrity) {\n node.integrity = integrity\n }\n if (unpacked) {\n node.unpacked = true\n } else {\n // electron expects string\n node.offset = this.offset.toString()\n if (process.platform !== \"win32\" && stat.mode & 0o100) {\n node.executable = true\n }\n this.offset += node.size\n }\n\n let children = dirNode.files\n if (children == null) {\n children = {}\n dirNode.files = children\n }\n children[path.basename(file)] = node\n\n return node\n }\n\n getNode(p: string): Node | null {\n const node = this.searchNodeFromDirectory(path.dirname(p), false)!\n return node.files![path.basename(p)]\n }\n\n getFile(p: string, followLinks = true): Node {\n const info = this.getNode(p)!\n // if followLinks is false we don't resolve symlinks\n return followLinks && info.link != null ? this.getFile(info.link) : info\n }\n\n async readJson(file: string): Promise<any> {\n return JSON.parse((await this.readFile(file)).toString())\n }\n\n readFile(file: string): Promise<Buffer> {\n return readFileFromAsar(this, file, this.getFile(file))\n }\n}\n\nexport async function readAsarHeader(archive: string): Promise<ReadAsarHeader> {\n const fd = await open(archive, \"r\")\n let size: number\n let headerBuf\n try {\n const sizeBuf = Buffer.allocUnsafe(8)\n if ((await read(fd, sizeBuf, 0, 8, null as any)).bytesRead !== 8) {\n throw new Error(\"Unable to read header size\")\n }\n\n const sizePickle = createFromBuffer(sizeBuf)\n size = sizePickle.createIterator().readUInt32()\n headerBuf = Buffer.allocUnsafe(size)\n if ((await read(fd, headerBuf, 0, size, null as any)).bytesRead !== size) {\n throw new Error(\"Unable to read header\")\n }\n } finally {\n await close(fd)\n }\n\n const headerPickle = createFromBuffer(headerBuf)\n return { header: headerPickle.createIterator().readString(), size }\n}\n\nexport async function readAsar(archive: string): Promise<AsarFilesystem> {\n const { header, size } = await readAsarHeader(archive)\n return new AsarFilesystem(archive, JSON.parse(header), size)\n}\n\nexport async function readAsarJson(archive: string, file: string): Promise<any> {\n const fs = await readAsar(archive)\n return await fs.readJson(file)\n}\n\nasync function readFileFromAsar(filesystem: AsarFilesystem, filename: string, info: Node): Promise<Buffer> {\n const size = info.size!\n const buffer = Buffer.allocUnsafe(size)\n if (size <= 0) {\n return buffer\n }\n\n if (info.unpacked) {\n return await readFile(path.join(`${filesystem.src}.unpacked`, filename))\n }\n\n const fd = await open(filesystem.src, \"r\")\n try {\n const offset = 8 + filesystem.headerSize + parseInt(info.offset!, 10)\n await read(fd, buffer, 0, size, offset)\n } finally {\n await close(fd)\n }\n return buffer\n}\n"]}
|
|
1
|
+
{"version":3,"file":"asar.js","sourceRoot":"","sources":["../../src/asar/asar.ts"],"names":[],"mappings":"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","sourcesContent":["import { createFromBuffer } from \"chromium-pickle-js\"\nimport { close, open, read, readFile, Stats } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface ReadAsarHeader {\n readonly header: string\n readonly size: number\n}\n\nexport interface NodeIntegrity {\n algorithm: \"SHA256\"\n hash: string\n blockSize: number\n blocks: Array<string>\n}\n\nexport class Node {\n // we don't use Map because later it will be stringified\n files?: { [key: string]: Node }\n\n unpacked?: boolean\n\n size?: number\n // electron expects string\n offset?: string\n\n executable?: boolean\n\n link?: string\n\n integrity?: NodeIntegrity\n}\n\nexport class AsarFilesystem {\n private offset = 0\n\n constructor(readonly src: string, readonly header = new Node(), readonly headerSize: number = -1) {\n if (this.header.files == null) {\n this.header.files = {}\n }\n }\n\n searchNodeFromDirectory(p: string, isCreate: boolean): Node | null {\n let node = this.header\n for (const dir of p.split(path.sep)) {\n if (dir !== \".\") {\n let child = node.files![dir]\n if (child == null) {\n if (!isCreate) {\n return null\n }\n child = new Node()\n child.files = {}\n node.files![dir] = child\n }\n node = child\n }\n }\n return node\n }\n\n getOrCreateNode(p: string): Node {\n if (p == null || p.length === 0) {\n return this.header\n }\n\n const name = path.basename(p)\n const dirNode = this.searchNodeFromDirectory(path.dirname(p), true)!\n if (dirNode.files == null) {\n dirNode.files = {}\n }\n\n let result = dirNode.files[name]\n if (result == null) {\n result = new Node()\n dirNode.files[name] = result\n }\n return result\n }\n\n addFileNode(file: string, dirNode: Node, size: number, unpacked: boolean, stat: Stats, integrity?: NodeIntegrity): Node {\n if (size > 4294967295) {\n throw new Error(`${file}: file size cannot be larger than 4.2GB`)\n }\n\n const node = new Node()\n node.size = size\n if (integrity) {\n node.integrity = integrity\n }\n if (unpacked) {\n node.unpacked = true\n } else {\n // electron expects string\n node.offset = this.offset.toString()\n if (process.platform !== \"win32\" && stat.mode & 0o100) {\n node.executable = true\n }\n this.offset += node.size\n }\n\n let children = dirNode.files\n if (children == null) {\n children = {}\n dirNode.files = children\n }\n children[path.basename(file)] = node\n\n return node\n }\n\n getNode(p: string): Node | null {\n const node = this.searchNodeFromDirectory(path.dirname(p), false)!\n return node.files![path.basename(p)]\n }\n\n getFile(p: string, followLinks = true): Node {\n const info = this.getNode(p)!\n // if followLinks is false we don't resolve symlinks\n return followLinks && info.link != null ? this.getFile(info.link) : info\n }\n\n async readJson(file: string): Promise<any> {\n return JSON.parse((await this.readFile(file)).toString())\n }\n\n readFile(file: string): Promise<Buffer> {\n return readFileFromAsar(this, file, this.getFile(file))\n }\n}\n\nexport async function readAsarHeader(archive: string): Promise<ReadAsarHeader> {\n const fd = await open(archive, \"r\")\n let size: number\n let headerBuf\n try {\n const sizeBuf = Buffer.allocUnsafe(8)\n if ((await read(fd, sizeBuf, 0, 8, null as any)).bytesRead !== 8) {\n throw new Error(\"Unable to read header size\")\n }\n\n const sizePickle = createFromBuffer(sizeBuf)\n size = sizePickle.createIterator().readUInt32()\n headerBuf = Buffer.allocUnsafe(size)\n if ((await read(fd, headerBuf, 0, size, null as any)).bytesRead !== size) {\n throw new Error(\"Unable to read header\")\n }\n } finally {\n await close(fd)\n }\n\n const headerPickle = createFromBuffer(headerBuf)\n return { header: headerPickle.createIterator().readString(), size }\n}\n\nexport async function readAsar(archive: string): Promise<AsarFilesystem> {\n const { header, size } = await readAsarHeader(archive)\n return new AsarFilesystem(archive, JSON.parse(header), size)\n}\n\nexport async function readAsarJson(archive: string, file: string): Promise<any> {\n const fs = await readAsar(archive)\n return await fs.readJson(file)\n}\n\nasync function readFileFromAsar(filesystem: AsarFilesystem, filename: string, info: Node): Promise<Buffer> {\n const size = info.size!\n const buffer = Buffer.allocUnsafe(size)\n if (size <= 0) {\n return buffer\n }\n\n if (info.unpacked) {\n return await readFile(path.join(`${filesystem.src}.unpacked`, filename))\n }\n\n const fd = await open(filesystem.src, \"r\")\n try {\n const offset = 8 + filesystem.headerSize + parseInt(info.offset!, 10)\n await read(fd, buffer, 0, size, offset)\n } finally {\n await close(fd)\n }\n return buffer\n}\n"]}
|
|
@@ -10,7 +10,7 @@ async function checkFileInArchive(asarFile, relativeFile, messagePrefix) {
|
|
|
10
10
|
}
|
|
11
11
|
let fs;
|
|
12
12
|
try {
|
|
13
|
-
fs = await asar_1.readAsar(asarFile);
|
|
13
|
+
fs = await (0, asar_1.readAsar)(asarFile);
|
|
14
14
|
}
|
|
15
15
|
catch (e) {
|
|
16
16
|
throw error(`is corrupted: ${e}`);
|
|
@@ -20,7 +20,7 @@ async function checkFileInArchive(asarFile, relativeFile, messagePrefix) {
|
|
|
20
20
|
stat = fs.getFile(relativeFile);
|
|
21
21
|
}
|
|
22
22
|
catch (e) {
|
|
23
|
-
const fileStat = await fs_1.statOrNull(asarFile);
|
|
23
|
+
const fileStat = await (0, fs_1.statOrNull)(asarFile);
|
|
24
24
|
if (fileStat == null) {
|
|
25
25
|
throw error(`does not exist. Seems like a wrong configuration.`);
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asarFileChecker.js","sourceRoot":"","sources":["../../src/asar/asarFileChecker.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAChD,iCAAuC;AAEvC,gBAAgB;AACT,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,YAAoB,EAAE,aAAqB;IACpG,SAAS,KAAK,CAAC,IAAY;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,aAAa,KAAK,YAAY,aAAa,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,IAAI,EAAE,CAAA;IACN,IAAI;QACF,EAAE,GAAG,MAAM,eAAQ,
|
|
1
|
+
{"version":3,"file":"asarFileChecker.js","sourceRoot":"","sources":["../../src/asar/asarFileChecker.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAChD,iCAAuC;AAEvC,gBAAgB;AACT,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,YAAoB,EAAE,aAAqB;IACpG,SAAS,KAAK,CAAC,IAAY;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,aAAa,KAAK,YAAY,aAAa,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,IAAI,EAAE,CAAA;IACN,IAAI;QACF,EAAE,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAA;KAC9B;IAAC,OAAO,CAAM,EAAE;QACf,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;KAClC;IAED,IAAI,IAAiB,CAAA;IACrB,IAAI;QACF,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;KAChC;IAAC,OAAO,CAAM,EAAE;QACf,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAA;SACjE;QAED,8DAA8D;QAC9D,IAAI,GAAG,IAAI,CAAA;KACZ;IAED,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAA;KACjE;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;QACnB,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACpC;AACH,CAAC;AA/BD,gDA+BC","sourcesContent":["import { statOrNull } from \"builder-util/out/fs\"\nimport { Node, readAsar } from \"./asar\"\n\n/** @internal */\nexport async function checkFileInArchive(asarFile: string, relativeFile: string, messagePrefix: string) {\n function error(text: string) {\n return new Error(`${messagePrefix} \"${relativeFile}\" in the \"${asarFile}\" ${text}`)\n }\n\n let fs\n try {\n fs = await readAsar(asarFile)\n } catch (e: any) {\n throw error(`is corrupted: ${e}`)\n }\n\n let stat: Node | null\n try {\n stat = fs.getFile(relativeFile)\n } catch (e: any) {\n const fileStat = await statOrNull(asarFile)\n if (fileStat == null) {\n throw error(`does not exist. Seems like a wrong configuration.`)\n }\n\n // asar throws error on access to undefined object (info.link)\n stat = null\n }\n\n if (stat == null) {\n throw error(`does not exist. Seems like a wrong configuration.`)\n }\n if (stat.size === 0) {\n throw error(`is corrupted: size 0`)\n }\n}\n"]}
|
package/out/asar/asarUtil.js
CHANGED
|
@@ -29,7 +29,7 @@ class AsarPackager {
|
|
|
29
29
|
// ordering doesn't support transformed files, but ordering is not used functionality - wait user report to fix it
|
|
30
30
|
await order(fileSets[0].files, this.options.ordering, fileSets[0].src);
|
|
31
31
|
}
|
|
32
|
-
await promises_1.mkdir(path.dirname(this.outFile), { recursive: true });
|
|
32
|
+
await (0, promises_1.mkdir)(path.dirname(this.outFile), { recursive: true });
|
|
33
33
|
const unpackedFileIndexMap = new Map();
|
|
34
34
|
for (const fileSet of fileSets) {
|
|
35
35
|
unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info));
|
|
@@ -42,7 +42,7 @@ class AsarPackager {
|
|
|
42
42
|
const unpackedDirs = new Set();
|
|
43
43
|
const rootForAppFilesWithoutAsar = path.join(this.destination, "app");
|
|
44
44
|
if (this.options.smartUnpack !== false) {
|
|
45
|
-
await unpackDetector_1.detectUnpackedDirs(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar);
|
|
45
|
+
await (0, unpackDetector_1.detectUnpackedDirs)(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar);
|
|
46
46
|
}
|
|
47
47
|
const dirToCreateForUnpackedFiles = new Set(unpackedDirs);
|
|
48
48
|
const correctDirNodeUnpackedFlag = async (filePathInArchive, dirNode) => {
|
|
@@ -52,7 +52,7 @@ class AsarPackager {
|
|
|
52
52
|
unpackedDirs.add(filePathInArchive);
|
|
53
53
|
// not all dirs marked as unpacked after first iteration - because node module dir can be marked as unpacked after processing node module dir content
|
|
54
54
|
// e.g. node-notifier/example/advanced.js processed, but only on process vendor/terminal-notifier.app module will be marked as unpacked
|
|
55
|
-
await promises_1.mkdir(path.join(this.unpackedDest, filePathInArchive), { recursive: true });
|
|
55
|
+
await (0, promises_1.mkdir)(path.join(this.unpackedDest, filePathInArchive), { recursive: true });
|
|
56
56
|
break;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -69,7 +69,7 @@ class AsarPackager {
|
|
|
69
69
|
if (stat == null) {
|
|
70
70
|
continue;
|
|
71
71
|
}
|
|
72
|
-
const pathInArchive = path.relative(rootForAppFilesWithoutAsar, appFileCopier_1.getDestinationPath(file, fileSet));
|
|
72
|
+
const pathInArchive = path.relative(rootForAppFilesWithoutAsar, (0, appFileCopier_1.getDestinationPath)(file, fileSet));
|
|
73
73
|
if (stat.isSymbolicLink()) {
|
|
74
74
|
const s = stat;
|
|
75
75
|
this.fs.getOrCreateNode(pathInArchive).link = s.relativeLink;
|
|
@@ -100,12 +100,12 @@ class AsarPackager {
|
|
|
100
100
|
const dirNode = currentDirNode;
|
|
101
101
|
const newData = transformedFiles == null ? undefined : transformedFiles.get(i);
|
|
102
102
|
const isUnpacked = dirNode.unpacked || (this.unpackPattern != null && this.unpackPattern(file, stat));
|
|
103
|
-
const integrity = newData === undefined ? await integrity_1.hashFile(file) : integrity_1.hashFileContents(newData);
|
|
103
|
+
const integrity = newData === undefined ? await (0, integrity_1.hashFile)(file) : (0, integrity_1.hashFileContents)(newData);
|
|
104
104
|
this.fs.addFileNode(file, dirNode, newData == undefined ? stat.size : Buffer.byteLength(newData), isUnpacked, stat, integrity);
|
|
105
105
|
if (isUnpacked) {
|
|
106
106
|
if (!dirNode.unpacked && !dirToCreateForUnpackedFiles.has(fileParent)) {
|
|
107
107
|
dirToCreateForUnpackedFiles.add(fileParent);
|
|
108
|
-
await promises_1.mkdir(path.join(this.unpackedDest, fileParent), { recursive: true });
|
|
108
|
+
await (0, promises_1.mkdir)(path.join(this.unpackedDest, fileParent), { recursive: true });
|
|
109
109
|
}
|
|
110
110
|
const unpackedFile = path.join(this.unpackedDest, pathInArchive);
|
|
111
111
|
taskManager.addTask(copyFileOrData(fileCopier, newData, file, unpackedFile, stat));
|
|
@@ -128,7 +128,7 @@ class AsarPackager {
|
|
|
128
128
|
const sizePickle = pickle.createEmpty();
|
|
129
129
|
sizePickle.writeUInt32(headerBuf.length);
|
|
130
130
|
const sizeBuf = sizePickle.toBuffer();
|
|
131
|
-
const writeStream = fs_2.createWriteStream(this.outFile);
|
|
131
|
+
const writeStream = (0, fs_2.createWriteStream)(this.outFile);
|
|
132
132
|
writeStream.on("error", reject);
|
|
133
133
|
writeStream.on("close", resolve);
|
|
134
134
|
writeStream.write(sizeBuf);
|
|
@@ -158,7 +158,7 @@ class AsarPackager {
|
|
|
158
158
|
else {
|
|
159
159
|
const stat = metadata.get(files[index]);
|
|
160
160
|
if (stat != null && stat.isSymbolicLink()) {
|
|
161
|
-
fs_2.symlink(stat.linkRelativeToFile, path.join(this.unpackedDest, stat.pathInArchive), () => w(index + 1));
|
|
161
|
+
(0, fs_2.symlink)(stat.linkRelativeToFile, path.join(this.unpackedDest, stat.pathInArchive), () => w(index + 1));
|
|
162
162
|
return;
|
|
163
163
|
}
|
|
164
164
|
}
|
|
@@ -173,14 +173,14 @@ class AsarPackager {
|
|
|
173
173
|
// https://github.com/yarnpkg/yarn/pull/3539
|
|
174
174
|
const stat = metadata.get(file);
|
|
175
175
|
if (stat != null && stat.size < 2 * 1024 * 1024) {
|
|
176
|
-
promises_1.readFile(file)
|
|
176
|
+
(0, promises_1.readFile)(file)
|
|
177
177
|
.then(it => {
|
|
178
178
|
writeStream.write(it, () => w(index + 1));
|
|
179
179
|
})
|
|
180
|
-
.catch(e => reject(`Cannot read file ${file}: ${e.stack || e}`));
|
|
180
|
+
.catch((e) => reject(`Cannot read file ${file}: ${e.stack || e}`));
|
|
181
181
|
}
|
|
182
182
|
else {
|
|
183
|
-
const readStream = fs_2.createReadStream(file);
|
|
183
|
+
const readStream = (0, fs_2.createReadStream)(file);
|
|
184
184
|
readStream.on("error", reject);
|
|
185
185
|
readStream.once("end", () => w(index + 1));
|
|
186
186
|
readStream.on("open", () => {
|
|
@@ -196,7 +196,7 @@ class AsarPackager {
|
|
|
196
196
|
}
|
|
197
197
|
exports.AsarPackager = AsarPackager;
|
|
198
198
|
async function order(filenames, orderingFile, src) {
|
|
199
|
-
const orderingFiles = (await promises_1.readFile(orderingFile, "utf8")).split("\n").map(line => {
|
|
199
|
+
const orderingFiles = (await (0, promises_1.readFile)(orderingFile, "utf8")).split("\n").map(line => {
|
|
200
200
|
if (line.indexOf(":") !== -1) {
|
|
201
201
|
line = line.split(":").pop();
|
|
202
202
|
}
|
|
@@ -235,7 +235,7 @@ function copyFileOrData(fileCopier, data, source, destination, stats) {
|
|
|
235
235
|
return fileCopier.copy(source, destination, stats);
|
|
236
236
|
}
|
|
237
237
|
else {
|
|
238
|
-
return promises_1.writeFile(destination, data);
|
|
238
|
+
return (0, promises_1.writeFile)(destination, data);
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
//# sourceMappingURL=asarUtil.js.map
|
package/out/asar/asarUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asarUtil.js","sourceRoot":"","sources":["../../src/asar/asarUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncTaskManager, log } from \"builder-util\"\nimport { FileCopier, Filter, MAX_FILE_REQUESTS } from \"builder-util/out/fs\"\nimport { symlink, createReadStream, createWriteStream, Stats } from \"fs\"\nimport { writeFile, readFile, mkdir } from \"fs/promises\"\nimport * as path from \"path\"\nimport { AsarOptions } from \"../options/PlatformSpecificBuildOptions\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\nimport { AsarFilesystem, Node } from \"./asar\"\nimport { hashFile, hashFileContents } from \"./integrity\"\nimport { detectUnpackedDirs } from \"./unpackDetector\"\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pickle = require(\"chromium-pickle-js\")\n\n/** @internal */\nexport class AsarPackager {\n private readonly fs = new AsarFilesystem(this.src)\n private readonly outFile: string\n private readonly unpackedDest: string\n\n constructor(private readonly src: string, private readonly destination: string, private readonly options: AsarOptions, private readonly unpackPattern: Filter | null) {\n this.outFile = path.join(destination, \"app.asar\")\n this.unpackedDest = `${this.outFile}.unpacked`\n }\n\n // sort files to minimize file change (i.e. asar file is not changed dramatically on small change)\n async pack(fileSets: Array<ResolvedFileSet>, packager: PlatformPackager<any>) {\n if (this.options.ordering != null) {\n // ordering doesn't support transformed files, but ordering is not used functionality - wait user report to fix it\n await order(fileSets[0].files, this.options.ordering, fileSets[0].src)\n }\n await mkdir(path.dirname(this.outFile), { recursive: true })\n const unpackedFileIndexMap = new Map<ResolvedFileSet, Set<number>>()\n for (const fileSet of fileSets) {\n unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info))\n }\n await this.writeAsarFile(fileSets, unpackedFileIndexMap)\n }\n\n private async createPackageFromFiles(fileSet: ResolvedFileSet, packager: Packager) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const unpackedDirs = new Set<string>()\n const rootForAppFilesWithoutAsar = path.join(this.destination, \"app\")\n\n if (this.options.smartUnpack !== false) {\n await detectUnpackedDirs(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar)\n }\n\n const dirToCreateForUnpackedFiles = new Set<string>(unpackedDirs)\n\n const correctDirNodeUnpackedFlag = async (filePathInArchive: string, dirNode: Node) => {\n for (const dir of unpackedDirs) {\n if (filePathInArchive.length > dir.length + 2 && filePathInArchive[dir.length] === path.sep && filePathInArchive.startsWith(dir)) {\n dirNode.unpacked = true\n unpackedDirs.add(filePathInArchive)\n // not all dirs marked as unpacked after first iteration - because node module dir can be marked as unpacked after processing node module dir content\n // e.g. node-notifier/example/advanced.js processed, but only on process vendor/terminal-notifier.app module will be marked as unpacked\n await mkdir(path.join(this.unpackedDest, filePathInArchive), { recursive: true })\n break\n }\n }\n }\n\n const transformedFiles = fileSet.transformedFiles\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const fileCopier = new FileCopier()\n\n let currentDirNode: Node | null = null\n let currentDirPath: string | null = null\n\n const unpackedFileIndexSet = new Set<number>()\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const stat = metadata.get(file)\n if (stat == null) {\n continue\n }\n\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n\n if (stat.isSymbolicLink()) {\n const s = stat as any\n this.fs.getOrCreateNode(pathInArchive).link = s.relativeLink\n s.pathInArchive = pathInArchive\n unpackedFileIndexSet.add(i)\n continue\n }\n\n let fileParent = path.dirname(pathInArchive)\n if (fileParent === \".\") {\n fileParent = \"\"\n }\n\n if (currentDirPath !== fileParent) {\n if (fileParent.startsWith(\"..\")) {\n throw new Error(`Internal error: path must not start with \"..\": ${fileParent}`)\n }\n\n currentDirPath = fileParent\n currentDirNode = this.fs.getOrCreateNode(fileParent)\n // do not check for root\n if (fileParent !== \"\" && !currentDirNode.unpacked) {\n if (unpackedDirs.has(fileParent)) {\n currentDirNode.unpacked = true\n } else {\n await correctDirNodeUnpackedFlag(fileParent, currentDirNode)\n }\n }\n }\n\n const dirNode = currentDirNode!\n const newData = transformedFiles == null ? undefined : transformedFiles.get(i)\n const isUnpacked = dirNode.unpacked || (this.unpackPattern != null && this.unpackPattern(file, stat))\n const integrity = newData === undefined ? await hashFile(file) : hashFileContents(newData)\n this.fs.addFileNode(file, dirNode, newData == undefined ? stat.size : Buffer.byteLength(newData), isUnpacked, stat, integrity)\n if (isUnpacked) {\n if (!dirNode.unpacked && !dirToCreateForUnpackedFiles.has(fileParent)) {\n dirToCreateForUnpackedFiles.add(fileParent)\n await mkdir(path.join(this.unpackedDest, fileParent), { recursive: true })\n }\n\n const unpackedFile = path.join(this.unpackedDest, pathInArchive)\n taskManager.addTask(copyFileOrData(fileCopier, newData, file, unpackedFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n\n unpackedFileIndexSet.add(i)\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n return unpackedFileIndexSet\n }\n\n private writeAsarFile(fileSets: Array<ResolvedFileSet>, unpackedFileIndexMap: Map<ResolvedFileSet, Set<number>>): Promise<any> {\n return new Promise((resolve, reject) => {\n const headerPickle = pickle.createEmpty()\n headerPickle.writeString(JSON.stringify(this.fs.header))\n const headerBuf = headerPickle.toBuffer()\n\n const sizePickle = pickle.createEmpty()\n sizePickle.writeUInt32(headerBuf.length)\n\n const sizeBuf = sizePickle.toBuffer()\n const writeStream = createWriteStream(this.outFile)\n writeStream.on(\"error\", reject)\n writeStream.on(\"close\", resolve)\n writeStream.write(sizeBuf)\n\n let fileSetIndex = 0\n\n let files = fileSets[0].files\n let metadata = fileSets[0].metadata\n let transformedFiles = fileSets[0].transformedFiles\n let unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[0])!\n const w = (index: number) => {\n while (true) {\n if (index >= files.length) {\n if (++fileSetIndex >= fileSets.length) {\n writeStream.end()\n return\n } else {\n files = fileSets[fileSetIndex].files\n metadata = fileSets[fileSetIndex].metadata\n transformedFiles = fileSets[fileSetIndex].transformedFiles\n unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[fileSetIndex])!\n index = 0\n }\n }\n\n if (!unpackedFileIndexSet.has(index)) {\n break\n } else {\n const stat = metadata.get(files[index])\n if (stat != null && stat.isSymbolicLink()) {\n symlink((stat as any).linkRelativeToFile, path.join(this.unpackedDest, (stat as any).pathInArchive), () => w(index + 1))\n return\n }\n }\n index++\n }\n\n const data = transformedFiles == null ? null : transformedFiles.get(index)\n const file = files[index]\n if (data !== null && data !== undefined) {\n writeStream.write(data, () => w(index + 1))\n return\n }\n\n // https://github.com/yarnpkg/yarn/pull/3539\n const stat = metadata.get(file)\n if (stat != null && stat.size < 2 * 1024 * 1024) {\n readFile(file)\n .then(it => {\n writeStream.write(it, () => w(index + 1))\n })\n .catch(e => reject(`Cannot read file ${file}: ${e.stack || e}`))\n } else {\n const readStream = createReadStream(file)\n readStream.on(\"error\", reject)\n readStream.once(\"end\", () => w(index + 1))\n readStream.on(\"open\", () => {\n readStream.pipe(writeStream, {\n end: false,\n })\n })\n }\n }\n\n writeStream.write(headerBuf, () => w(0))\n })\n }\n}\n\nasync function order(filenames: Array<string>, orderingFile: string, src: string) {\n const orderingFiles = (await readFile(orderingFile, \"utf8\")).split(\"\\n\").map(line => {\n if (line.indexOf(\":\") !== -1) {\n line = line.split(\":\").pop()!\n }\n line = line.trim()\n if (line[0] === \"/\") {\n line = line.slice(1)\n }\n return line\n })\n\n const ordering: Array<string> = []\n for (const file of orderingFiles) {\n const pathComponents = file.split(path.sep)\n for (const pathComponent of pathComponents) {\n ordering.push(path.join(src, pathComponent))\n }\n }\n\n const sortedFiles: Array<string> = []\n let missing = 0\n const total = filenames.length\n for (const file of ordering) {\n if (!sortedFiles.includes(file) && filenames.includes(file)) {\n sortedFiles.push(file)\n }\n }\n for (const file of filenames) {\n if (!sortedFiles.includes(file)) {\n sortedFiles.push(file)\n missing += 1\n }\n }\n log.info({ coverage: ((total - missing) / total) * 100 }, \"ordering files in ASAR archive\")\n return sortedFiles\n}\n\nfunction copyFileOrData(fileCopier: FileCopier, data: string | Buffer | undefined | null, source: string, destination: string, stats: Stats) {\n if (data == null) {\n return fileCopier.copy(source, destination, stats)\n } else {\n return writeFile(destination, data)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"asarUtil.js","sourceRoot":"","sources":["../../src/asar/asarUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncTaskManager, log } from \"builder-util\"\nimport { FileCopier, Filter, MAX_FILE_REQUESTS } from \"builder-util/out/fs\"\nimport { symlink, createReadStream, createWriteStream, Stats } from \"fs\"\nimport { writeFile, readFile, mkdir } from \"fs/promises\"\nimport * as path from \"path\"\nimport { AsarOptions } from \"../options/PlatformSpecificBuildOptions\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\nimport { AsarFilesystem, Node } from \"./asar\"\nimport { hashFile, hashFileContents } from \"./integrity\"\nimport { detectUnpackedDirs } from \"./unpackDetector\"\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pickle = require(\"chromium-pickle-js\")\n\n/** @internal */\nexport class AsarPackager {\n private readonly fs = new AsarFilesystem(this.src)\n private readonly outFile: string\n private readonly unpackedDest: string\n\n constructor(private readonly src: string, private readonly destination: string, private readonly options: AsarOptions, private readonly unpackPattern: Filter | null) {\n this.outFile = path.join(destination, \"app.asar\")\n this.unpackedDest = `${this.outFile}.unpacked`\n }\n\n // sort files to minimize file change (i.e. asar file is not changed dramatically on small change)\n async pack(fileSets: Array<ResolvedFileSet>, packager: PlatformPackager<any>) {\n if (this.options.ordering != null) {\n // ordering doesn't support transformed files, but ordering is not used functionality - wait user report to fix it\n await order(fileSets[0].files, this.options.ordering, fileSets[0].src)\n }\n await mkdir(path.dirname(this.outFile), { recursive: true })\n const unpackedFileIndexMap = new Map<ResolvedFileSet, Set<number>>()\n for (const fileSet of fileSets) {\n unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info))\n }\n await this.writeAsarFile(fileSets, unpackedFileIndexMap)\n }\n\n private async createPackageFromFiles(fileSet: ResolvedFileSet, packager: Packager) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const unpackedDirs = new Set<string>()\n const rootForAppFilesWithoutAsar = path.join(this.destination, \"app\")\n\n if (this.options.smartUnpack !== false) {\n await detectUnpackedDirs(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar)\n }\n\n const dirToCreateForUnpackedFiles = new Set<string>(unpackedDirs)\n\n const correctDirNodeUnpackedFlag = async (filePathInArchive: string, dirNode: Node) => {\n for (const dir of unpackedDirs) {\n if (filePathInArchive.length > dir.length + 2 && filePathInArchive[dir.length] === path.sep && filePathInArchive.startsWith(dir)) {\n dirNode.unpacked = true\n unpackedDirs.add(filePathInArchive)\n // not all dirs marked as unpacked after first iteration - because node module dir can be marked as unpacked after processing node module dir content\n // e.g. node-notifier/example/advanced.js processed, but only on process vendor/terminal-notifier.app module will be marked as unpacked\n await mkdir(path.join(this.unpackedDest, filePathInArchive), { recursive: true })\n break\n }\n }\n }\n\n const transformedFiles = fileSet.transformedFiles\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const fileCopier = new FileCopier()\n\n let currentDirNode: Node | null = null\n let currentDirPath: string | null = null\n\n const unpackedFileIndexSet = new Set<number>()\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const stat = metadata.get(file)\n if (stat == null) {\n continue\n }\n\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n\n if (stat.isSymbolicLink()) {\n const s = stat as any\n this.fs.getOrCreateNode(pathInArchive).link = s.relativeLink\n s.pathInArchive = pathInArchive\n unpackedFileIndexSet.add(i)\n continue\n }\n\n let fileParent = path.dirname(pathInArchive)\n if (fileParent === \".\") {\n fileParent = \"\"\n }\n\n if (currentDirPath !== fileParent) {\n if (fileParent.startsWith(\"..\")) {\n throw new Error(`Internal error: path must not start with \"..\": ${fileParent}`)\n }\n\n currentDirPath = fileParent\n currentDirNode = this.fs.getOrCreateNode(fileParent)\n // do not check for root\n if (fileParent !== \"\" && !currentDirNode.unpacked) {\n if (unpackedDirs.has(fileParent)) {\n currentDirNode.unpacked = true\n } else {\n await correctDirNodeUnpackedFlag(fileParent, currentDirNode)\n }\n }\n }\n\n const dirNode = currentDirNode!\n const newData = transformedFiles == null ? undefined : transformedFiles.get(i)\n const isUnpacked = dirNode.unpacked || (this.unpackPattern != null && this.unpackPattern(file, stat))\n const integrity = newData === undefined ? await hashFile(file) : hashFileContents(newData)\n this.fs.addFileNode(file, dirNode, newData == undefined ? stat.size : Buffer.byteLength(newData), isUnpacked, stat, integrity)\n if (isUnpacked) {\n if (!dirNode.unpacked && !dirToCreateForUnpackedFiles.has(fileParent)) {\n dirToCreateForUnpackedFiles.add(fileParent)\n await mkdir(path.join(this.unpackedDest, fileParent), { recursive: true })\n }\n\n const unpackedFile = path.join(this.unpackedDest, pathInArchive)\n taskManager.addTask(copyFileOrData(fileCopier, newData, file, unpackedFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n\n unpackedFileIndexSet.add(i)\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n return unpackedFileIndexSet\n }\n\n private writeAsarFile(fileSets: Array<ResolvedFileSet>, unpackedFileIndexMap: Map<ResolvedFileSet, Set<number>>): Promise<any> {\n return new Promise((resolve, reject) => {\n const headerPickle = pickle.createEmpty()\n headerPickle.writeString(JSON.stringify(this.fs.header))\n const headerBuf = headerPickle.toBuffer()\n\n const sizePickle = pickle.createEmpty()\n sizePickle.writeUInt32(headerBuf.length)\n\n const sizeBuf = sizePickle.toBuffer()\n const writeStream = createWriteStream(this.outFile)\n writeStream.on(\"error\", reject)\n writeStream.on(\"close\", resolve)\n writeStream.write(sizeBuf)\n\n let fileSetIndex = 0\n\n let files = fileSets[0].files\n let metadata = fileSets[0].metadata\n let transformedFiles = fileSets[0].transformedFiles\n let unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[0])!\n const w = (index: number) => {\n while (true) {\n if (index >= files.length) {\n if (++fileSetIndex >= fileSets.length) {\n writeStream.end()\n return\n } else {\n files = fileSets[fileSetIndex].files\n metadata = fileSets[fileSetIndex].metadata\n transformedFiles = fileSets[fileSetIndex].transformedFiles\n unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[fileSetIndex])!\n index = 0\n }\n }\n\n if (!unpackedFileIndexSet.has(index)) {\n break\n } else {\n const stat = metadata.get(files[index])\n if (stat != null && stat.isSymbolicLink()) {\n symlink((stat as any).linkRelativeToFile, path.join(this.unpackedDest, (stat as any).pathInArchive), () => w(index + 1))\n return\n }\n }\n index++\n }\n\n const data = transformedFiles == null ? null : transformedFiles.get(index)\n const file = files[index]\n if (data !== null && data !== undefined) {\n writeStream.write(data, () => w(index + 1))\n return\n }\n\n // https://github.com/yarnpkg/yarn/pull/3539\n const stat = metadata.get(file)\n if (stat != null && stat.size < 2 * 1024 * 1024) {\n readFile(file)\n .then(it => {\n writeStream.write(it, () => w(index + 1))\n })\n .catch((e: any) => reject(`Cannot read file ${file}: ${e.stack || e}`))\n } else {\n const readStream = createReadStream(file)\n readStream.on(\"error\", reject)\n readStream.once(\"end\", () => w(index + 1))\n readStream.on(\"open\", () => {\n readStream.pipe(writeStream, {\n end: false,\n })\n })\n }\n }\n\n writeStream.write(headerBuf, () => w(0))\n })\n }\n}\n\nasync function order(filenames: Array<string>, orderingFile: string, src: string) {\n const orderingFiles = (await readFile(orderingFile, \"utf8\")).split(\"\\n\").map(line => {\n if (line.indexOf(\":\") !== -1) {\n line = line.split(\":\").pop()!\n }\n line = line.trim()\n if (line[0] === \"/\") {\n line = line.slice(1)\n }\n return line\n })\n\n const ordering: Array<string> = []\n for (const file of orderingFiles) {\n const pathComponents = file.split(path.sep)\n for (const pathComponent of pathComponents) {\n ordering.push(path.join(src, pathComponent))\n }\n }\n\n const sortedFiles: Array<string> = []\n let missing = 0\n const total = filenames.length\n for (const file of ordering) {\n if (!sortedFiles.includes(file) && filenames.includes(file)) {\n sortedFiles.push(file)\n }\n }\n for (const file of filenames) {\n if (!sortedFiles.includes(file)) {\n sortedFiles.push(file)\n missing += 1\n }\n }\n log.info({ coverage: ((total - missing) / total) * 100 }, \"ordering files in ASAR archive\")\n return sortedFiles\n}\n\nfunction copyFileOrData(fileCopier: FileCopier, data: string | Buffer | undefined | null, source: string, destination: string, stats: Stats) {\n if (data == null) {\n return fileCopier.copy(source, destination, stats)\n } else {\n return writeFile(destination, data)\n }\n}\n"]}
|