@appium/support 7.0.5 → 7.0.6
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/LICENSE +201 -0
- package/build/lib/console.d.ts +42 -88
- package/build/lib/console.d.ts.map +1 -1
- package/build/lib/console.js +20 -80
- package/build/lib/console.js.map +1 -1
- package/build/lib/doctor.d.ts +6 -18
- package/build/lib/doctor.d.ts.map +1 -1
- package/build/lib/doctor.js +0 -15
- package/build/lib/doctor.js.map +1 -1
- package/build/lib/env.d.ts +14 -20
- package/build/lib/env.d.ts.map +1 -1
- package/build/lib/env.js +13 -50
- package/build/lib/env.js.map +1 -1
- package/build/lib/fs.d.ts +109 -148
- package/build/lib/fs.d.ts.map +1 -1
- package/build/lib/fs.js +88 -188
- package/build/lib/fs.js.map +1 -1
- package/build/lib/image-util.d.ts +7 -6
- package/build/lib/image-util.d.ts.map +1 -1
- package/build/lib/image-util.js +9 -6
- package/build/lib/image-util.js.map +1 -1
- package/build/lib/index.d.ts +19 -17
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/logger.d.ts +1 -1
- package/build/lib/logger.d.ts.map +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/logger.js.map +1 -1
- package/build/lib/logging.d.ts +7 -15
- package/build/lib/logging.d.ts.map +1 -1
- package/build/lib/logging.js +36 -62
- package/build/lib/logging.js.map +1 -1
- package/build/lib/mjpeg.d.ts +19 -56
- package/build/lib/mjpeg.d.ts.map +1 -1
- package/build/lib/mjpeg.js +53 -76
- package/build/lib/mjpeg.js.map +1 -1
- package/build/lib/mkdirp.d.ts +4 -1
- package/build/lib/mkdirp.d.ts.map +1 -1
- package/build/lib/mkdirp.js +1 -2
- package/build/lib/mkdirp.js.map +1 -1
- package/build/lib/net.d.ts +52 -90
- package/build/lib/net.d.ts.map +1 -1
- package/build/lib/net.js +104 -193
- package/build/lib/net.js.map +1 -1
- package/build/lib/node.d.ts +16 -17
- package/build/lib/node.d.ts.map +1 -1
- package/build/lib/node.js +106 -111
- package/build/lib/node.js.map +1 -1
- package/build/lib/npm.d.ts +65 -86
- package/build/lib/npm.d.ts.map +1 -1
- package/build/lib/npm.js +59 -117
- package/build/lib/npm.js.map +1 -1
- package/build/lib/plist.d.ts +36 -29
- package/build/lib/plist.d.ts.map +1 -1
- package/build/lib/plist.js +62 -59
- package/build/lib/plist.js.map +1 -1
- package/build/lib/process.d.ts +19 -2
- package/build/lib/process.d.ts.map +1 -1
- package/build/lib/process.js +24 -7
- package/build/lib/process.js.map +1 -1
- package/build/lib/system.d.ts +41 -6
- package/build/lib/system.d.ts.map +1 -1
- package/build/lib/system.js +46 -11
- package/build/lib/system.js.map +1 -1
- package/build/lib/tempdir.d.ts +26 -49
- package/build/lib/tempdir.d.ts.map +1 -1
- package/build/lib/tempdir.js +41 -73
- package/build/lib/tempdir.js.map +1 -1
- package/build/lib/timing.d.ts +28 -22
- package/build/lib/timing.d.ts.map +1 -1
- package/build/lib/timing.js +16 -17
- package/build/lib/timing.js.map +1 -1
- package/build/lib/util.d.ts +164 -181
- package/build/lib/util.d.ts.map +1 -1
- package/build/lib/util.js +193 -247
- package/build/lib/util.js.map +1 -1
- package/build/lib/zip.d.ts +81 -139
- package/build/lib/zip.d.ts.map +1 -1
- package/build/lib/zip.js +210 -258
- package/build/lib/zip.js.map +1 -1
- package/lib/console.ts +139 -0
- package/lib/{doctor.js → doctor.ts} +6 -20
- package/lib/{env.js → env.ts} +31 -59
- package/lib/fs.ts +453 -0
- package/lib/image-util.ts +40 -0
- package/lib/index.ts +1 -0
- package/lib/{logger.js → logger.ts} +1 -1
- package/lib/logging.ts +157 -0
- package/lib/mjpeg.ts +186 -0
- package/lib/{mkdirp.js → mkdirp.ts} +2 -2
- package/lib/net.ts +305 -0
- package/lib/{node.js → node.ts} +134 -133
- package/lib/npm.ts +291 -0
- package/lib/plist.ts +187 -0
- package/lib/process.ts +62 -0
- package/lib/system.ts +95 -0
- package/lib/tempdir.ts +115 -0
- package/lib/{timing.js → timing.ts} +28 -33
- package/lib/util.ts +561 -0
- package/lib/{zip.js → zip.ts} +341 -296
- package/package.json +20 -22
- package/tsconfig.json +3 -5
- package/index.js +0 -1
- package/lib/console.js +0 -173
- package/lib/fs.js +0 -496
- package/lib/image-util.js +0 -32
- package/lib/logging.js +0 -145
- package/lib/mjpeg.js +0 -207
- package/lib/net.js +0 -336
- package/lib/npm.js +0 -310
- package/lib/plist.js +0 -182
- package/lib/process.js +0 -46
- package/lib/system.js +0 -48
- package/lib/tempdir.js +0 -131
- package/lib/util.js +0 -584
package/build/lib/npm.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// @ts-check
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -59,100 +58,88 @@ exports.INSTALL_LOCKFILE_RELATIVE_PATH = node_path_1.default.join(exports.CACHE_
|
|
|
59
58
|
* XXX: This should probably be a singleton, but it isn't. Maybe this module should just export functions?
|
|
60
59
|
*/
|
|
61
60
|
class NPM {
|
|
62
|
-
/**
|
|
63
|
-
* Returns path to "install" lockfile
|
|
64
|
-
* @private
|
|
65
|
-
* @param {string} cwd
|
|
66
|
-
*/
|
|
67
|
-
_getInstallLockfilePath(cwd) {
|
|
68
|
-
return node_path_1.default.join(cwd, exports.INSTALL_LOCKFILE_RELATIVE_PATH);
|
|
69
|
-
}
|
|
70
61
|
/**
|
|
71
62
|
* Execute `npm` with given args.
|
|
72
63
|
*
|
|
73
64
|
* If the process exits with a nonzero code, the contents of `STDOUT` and `STDERR` will be in the
|
|
74
65
|
* `message` of any rejected error.
|
|
75
|
-
* @param {string} cmd
|
|
76
|
-
* @param {string[]} args
|
|
77
|
-
* @param {ExecOpts} opts
|
|
78
|
-
* @param {Omit<TeenProcessExecOptions, 'cwd'>} [execOpts]
|
|
79
66
|
*/
|
|
80
67
|
async exec(cmd, args, opts, execOpts = {}) {
|
|
81
68
|
const { cwd, json, lockFile } = opts;
|
|
82
|
-
// make sure we perform the current operation in cwd
|
|
83
|
-
/** @type {TeenProcessExecOptions} */
|
|
84
69
|
const teenProcessExecOpts = {
|
|
85
70
|
...execOpts,
|
|
86
|
-
// https://github.com/nodejs/node/issues/52572
|
|
87
71
|
shell: system.isWindows() || execOpts.shell,
|
|
88
72
|
cwd,
|
|
89
73
|
};
|
|
90
|
-
args
|
|
74
|
+
const argsCopy = [cmd, ...args];
|
|
91
75
|
if (json) {
|
|
92
|
-
|
|
76
|
+
argsCopy.push('--json');
|
|
93
77
|
}
|
|
94
78
|
const npmCmd = system.isWindows() ? 'npm.cmd' : 'npm';
|
|
95
|
-
let runner = async () => await (0, teen_process_1.exec)(npmCmd,
|
|
79
|
+
let runner = async () => await (0, teen_process_1.exec)(npmCmd, argsCopy, teenProcessExecOpts);
|
|
96
80
|
if (lockFile) {
|
|
97
81
|
const acquireLock = util.getLockFileGuard(lockFile);
|
|
98
82
|
const _runner = runner;
|
|
99
|
-
runner = async () => await acquireLock(_runner);
|
|
83
|
+
runner = async () => (await acquireLock(_runner));
|
|
100
84
|
}
|
|
101
|
-
/** @type {import('teen_process').TeenProcessExecResult<string> & {json?: any}} */
|
|
102
85
|
let ret;
|
|
103
86
|
try {
|
|
104
87
|
const { stdout, stderr, code } = await runner();
|
|
105
88
|
ret = { stdout, stderr, code };
|
|
106
|
-
// if possible, parse NPM's json output. During NPM install 3rd-party
|
|
107
|
-
// packages can write to stdout, so sometimes the json output can't be
|
|
108
|
-
// guaranteed to be parseable
|
|
109
89
|
try {
|
|
110
90
|
ret.json = JSON.parse(stdout);
|
|
111
91
|
}
|
|
112
|
-
catch {
|
|
92
|
+
catch {
|
|
93
|
+
// ignore
|
|
94
|
+
}
|
|
113
95
|
}
|
|
114
96
|
catch (e) {
|
|
115
|
-
const { stdout = '', stderr = '', code = null
|
|
116
|
-
|
|
117
|
-
throw err;
|
|
97
|
+
const { stdout = '', stderr = '', code = null } = e;
|
|
98
|
+
throw new Error(`npm command '${argsCopy.join(' ')}' failed with code ${code}.\n\nSTDOUT:\n${stdout.trim()}\n\nSTDERR:\n${stderr.trim()}`);
|
|
118
99
|
}
|
|
119
100
|
return ret;
|
|
120
101
|
}
|
|
121
102
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* @
|
|
103
|
+
* Gets the latest published version of a package from npm registry.
|
|
104
|
+
*
|
|
105
|
+
* @param cwd - Current working directory for npm command
|
|
106
|
+
* @param pkg - Package name to query
|
|
107
|
+
* @returns Latest version string, or `null` if package not found (e.g. 404)
|
|
125
108
|
*/
|
|
126
109
|
async getLatestVersion(cwd, pkg) {
|
|
127
110
|
try {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
})).json?.latest ?? null);
|
|
111
|
+
const result = await this.exec('view', [pkg, 'dist-tags'], { json: true, cwd });
|
|
112
|
+
const json = result.json;
|
|
113
|
+
return json?.latest ?? null;
|
|
132
114
|
}
|
|
133
115
|
catch (err) {
|
|
134
|
-
if (!err
|
|
116
|
+
if (!(err instanceof Error) || !err.message.includes('E404')) {
|
|
135
117
|
throw err;
|
|
136
118
|
}
|
|
137
119
|
return null;
|
|
138
120
|
}
|
|
139
121
|
}
|
|
140
122
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* @
|
|
144
|
-
*
|
|
123
|
+
* Gets the latest version of a package that is a safe upgrade from the current version
|
|
124
|
+
* (same major, no prereleases). Fetches versions from npm and delegates to
|
|
125
|
+
* {@link NPM.getLatestSafeUpgradeFromVersions}.
|
|
126
|
+
*
|
|
127
|
+
* @param cwd - Current working directory for npm command
|
|
128
|
+
* @param pkg - Package name to query
|
|
129
|
+
* @param curVersion - Current installed version
|
|
130
|
+
* @returns Latest safe upgrade version string, or `null` if none or package not found
|
|
145
131
|
*/
|
|
146
132
|
async getLatestSafeUpgradeVersion(cwd, pkg, curVersion) {
|
|
147
133
|
try {
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
134
|
+
const result = await this.exec('view', [pkg, 'versions'], { json: true, cwd });
|
|
135
|
+
const allVersions = result.json;
|
|
136
|
+
if (!Array.isArray(allVersions)) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
152
139
|
return this.getLatestSafeUpgradeFromVersions(curVersion, allVersions);
|
|
153
140
|
}
|
|
154
141
|
catch (err) {
|
|
155
|
-
if (!err
|
|
142
|
+
if (!(err instanceof Error) || !err.message.includes('E404')) {
|
|
156
143
|
throw err;
|
|
157
144
|
}
|
|
158
145
|
return null;
|
|
@@ -160,8 +147,6 @@ class NPM {
|
|
|
160
147
|
}
|
|
161
148
|
/**
|
|
162
149
|
* Runs `npm ls`, optionally for a particular package.
|
|
163
|
-
* @param {string} cwd
|
|
164
|
-
* @param {string} [pkg]
|
|
165
150
|
*/
|
|
166
151
|
async list(cwd, pkg) {
|
|
167
152
|
return (await this.exec('list', pkg ? [pkg] : [], { cwd, json: true })).json;
|
|
@@ -170,11 +155,6 @@ class NPM {
|
|
|
170
155
|
* Given a current version and a list of all versions for a package, return the version which is
|
|
171
156
|
* the highest safely-upgradable version (meaning not crossing any major revision boundaries, and
|
|
172
157
|
* not including any alpha/beta/rc versions)
|
|
173
|
-
*
|
|
174
|
-
* @param {string} curVersion - the current version of a package
|
|
175
|
-
* @param {Array<string>} allVersions - a list of version strings
|
|
176
|
-
*
|
|
177
|
-
* @return {string|null} - the highest safely-upgradable version, or null if there isn't one
|
|
178
158
|
*/
|
|
179
159
|
getLatestSafeUpgradeFromVersions(curVersion, allVersions) {
|
|
180
160
|
let safeUpgradeVer = null;
|
|
@@ -184,48 +164,31 @@ class NPM {
|
|
|
184
164
|
}
|
|
185
165
|
for (const testVer of allVersions) {
|
|
186
166
|
const testSemver = semver.parse(testVer) ?? semver.parse(semver.coerce(testVer));
|
|
187
|
-
if (testSemver === null
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (testSemver.prerelease.length > 0) {
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
// if the current version is later than the test version, skip this test version
|
|
195
|
-
if (curSemver.compare(testSemver) === 1) {
|
|
196
|
-
continue;
|
|
197
|
-
}
|
|
198
|
-
// if the test version is newer, but crosses a major revision boundary, also skip it
|
|
199
|
-
if (testSemver.major > curSemver.major) {
|
|
167
|
+
if (testSemver === null ||
|
|
168
|
+
testSemver.prerelease.length > 0 ||
|
|
169
|
+
curSemver.compare(testSemver) === 1 ||
|
|
170
|
+
testSemver.major > curSemver.major) {
|
|
200
171
|
continue;
|
|
201
172
|
}
|
|
202
|
-
// otherwise this version is safe to upgrade to. But there might be multiple ones of this
|
|
203
|
-
// kind, so keep iterating and keeping the highest
|
|
204
173
|
if (safeUpgradeVer === null || testSemver.compare(safeUpgradeVer) === 1) {
|
|
205
174
|
safeUpgradeVer = testSemver;
|
|
206
175
|
}
|
|
207
176
|
}
|
|
208
|
-
|
|
209
|
-
safeUpgradeVer = safeUpgradeVer.format();
|
|
210
|
-
}
|
|
211
|
-
return safeUpgradeVer;
|
|
177
|
+
return safeUpgradeVer ? safeUpgradeVer.format() : null;
|
|
212
178
|
}
|
|
213
179
|
/**
|
|
214
180
|
* Installs a package w/ `npm`
|
|
215
|
-
* @param {string} cwd
|
|
216
|
-
* @param {string} installStr - as in "npm install <installStr>"
|
|
217
|
-
* @param {InstallPackageOpts} opts
|
|
218
|
-
* @returns {Promise<NpmInstallReceipt>}
|
|
219
181
|
*/
|
|
220
|
-
async installPackage(cwd, installStr,
|
|
221
|
-
|
|
182
|
+
async installPackage(cwd, installStr, opts) {
|
|
183
|
+
const { pkgName, installType } = opts;
|
|
222
184
|
let dummyPkgJson;
|
|
223
185
|
const dummyPkgPath = node_path_1.default.join(cwd, 'package.json');
|
|
224
186
|
try {
|
|
225
187
|
dummyPkgJson = JSON.parse(await fs_1.fs.readFile(dummyPkgPath, 'utf8'));
|
|
226
188
|
}
|
|
227
189
|
catch (err) {
|
|
228
|
-
|
|
190
|
+
const nodeErr = err;
|
|
191
|
+
if (nodeErr.code === 'ENOENT') {
|
|
229
192
|
dummyPkgJson = {};
|
|
230
193
|
await fs_1.fs.writeFile(dummyPkgPath, JSON.stringify(dummyPkgJson, null, 2), 'utf8');
|
|
231
194
|
}
|
|
@@ -246,17 +209,9 @@ class NPM {
|
|
|
246
209
|
json: true,
|
|
247
210
|
lockFile: this._getInstallLockfilePath(cwd),
|
|
248
211
|
});
|
|
249
|
-
if (res.json) {
|
|
250
|
-
|
|
251
|
-
// message straightaway
|
|
252
|
-
if (res.json.error) {
|
|
253
|
-
throw new Error(res.json.error);
|
|
254
|
-
}
|
|
212
|
+
if (res.json && typeof res.json === 'object' && 'error' in res.json && res.json.error) {
|
|
213
|
+
throw new Error(String(res.json.error));
|
|
255
214
|
}
|
|
256
|
-
// Now read package data from the installed package to return, and make sure
|
|
257
|
-
// everything got installed ok. Remember, pkgName might end up with a / in it due to an npm
|
|
258
|
-
// org, so if so, that will get correctly exploded into multiple directories, by path.resolve here
|
|
259
|
-
// (even on Windows!)
|
|
260
215
|
const pkgJsonPath = (0, resolve_from_1.default)(cwd, `${pkgName}/package.json`);
|
|
261
216
|
try {
|
|
262
217
|
const pkgJson = await fs_1.fs.readFile(pkgJsonPath, 'utf8');
|
|
@@ -270,8 +225,10 @@ class NPM {
|
|
|
270
225
|
}
|
|
271
226
|
}
|
|
272
227
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
228
|
+
* Uninstalls a package with `npm uninstall`.
|
|
229
|
+
*
|
|
230
|
+
* @param cwd - Current working directory (project root)
|
|
231
|
+
* @param pkg - Package name to uninstall
|
|
275
232
|
*/
|
|
276
233
|
async uninstallPackage(cwd, pkg) {
|
|
277
234
|
await this.exec('uninstall', [pkg], {
|
|
@@ -280,39 +237,24 @@ class NPM {
|
|
|
280
237
|
});
|
|
281
238
|
}
|
|
282
239
|
/**
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
* @
|
|
240
|
+
* Fetches package metadata from the npm registry via `npm info`.
|
|
241
|
+
*
|
|
242
|
+
* @param pkg - Npm package spec to query
|
|
243
|
+
* @param entries - Field names to be included into the resulting output. By default all fields are included.
|
|
244
|
+
* @returns Package metadata as a record of string values
|
|
287
245
|
*/
|
|
288
246
|
async getPackageInfo(pkg, entries = []) {
|
|
289
|
-
|
|
247
|
+
const result = await this.exec('info', [pkg, ...entries], {
|
|
290
248
|
cwd: process.cwd(),
|
|
291
249
|
json: true,
|
|
292
|
-
})
|
|
250
|
+
});
|
|
251
|
+
return (result.json ?? {});
|
|
252
|
+
}
|
|
253
|
+
/** Returns path to "install" lockfile */
|
|
254
|
+
_getInstallLockfilePath(cwd) {
|
|
255
|
+
return node_path_1.default.join(cwd, exports.INSTALL_LOCKFILE_RELATIVE_PATH);
|
|
293
256
|
}
|
|
294
257
|
}
|
|
295
258
|
exports.NPM = NPM;
|
|
296
259
|
exports.npm = new NPM();
|
|
297
|
-
/**
|
|
298
|
-
* Options for {@link NPM.installPackage}
|
|
299
|
-
* @typedef InstallPackageOpts
|
|
300
|
-
* @property {string} pkgName - the name of the package to install
|
|
301
|
-
* @property {import('type-fest').LiteralUnion<'local', string>} [installType] - whether to install from a local path or from npm
|
|
302
|
-
*/
|
|
303
|
-
/**
|
|
304
|
-
* Options for {@link NPM.exec}
|
|
305
|
-
* @typedef ExecOpts
|
|
306
|
-
* @property {string} cwd - Current working directory
|
|
307
|
-
* @property {boolean} [json] - If `true`, supply `--json` flag to npm and resolve w/ parsed JSON
|
|
308
|
-
* @property {string} [lockFile] - Path to lockfile to use
|
|
309
|
-
*/
|
|
310
|
-
/**
|
|
311
|
-
* @typedef {import('teen_process').TeenProcessExecOptions} TeenProcessExecOptions
|
|
312
|
-
*/
|
|
313
|
-
/**
|
|
314
|
-
* @typedef NpmInstallReceipt
|
|
315
|
-
* @property {string} installPath - Path to installed package
|
|
316
|
-
* @property {import('type-fest').PackageJson} pkg - Package data
|
|
317
|
-
*/
|
|
318
260
|
//# sourceMappingURL=npm.js.map
|
package/build/lib/npm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../lib/npm.
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../lib/npm.ts"],"names":[],"mappings":"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"}
|
package/build/lib/plist.d.ts
CHANGED
|
@@ -1,43 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Parses a file in xml or binary format of plist
|
|
3
|
-
*
|
|
4
|
-
* @param
|
|
5
|
-
* @param
|
|
6
|
-
* @
|
|
3
|
+
*
|
|
4
|
+
* @param plist - The plist file path
|
|
5
|
+
* @param mustExist - If set to false, this method will return an empty object when the file doesn't exist
|
|
6
|
+
* @param quiet - If set to false, the plist path will be logged in debug level
|
|
7
|
+
* @returns Parsed plist as a JS object
|
|
7
8
|
*/
|
|
8
|
-
export function parsePlistFile(plist: string, mustExist?: boolean, quiet?: boolean): Promise<
|
|
9
|
+
export declare function parsePlistFile(plist: string, mustExist?: boolean, quiet?: boolean): Promise<object>;
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @
|
|
13
|
-
* @
|
|
11
|
+
* Updates a plist file with the given fields
|
|
12
|
+
*
|
|
13
|
+
* @param plist - The plist file path
|
|
14
|
+
* @param updatedFields - The updated fields-value pairs
|
|
15
|
+
* @param binary - If set to false, the file will be created as a xml plist
|
|
16
|
+
* @param mustExist - If set to false, this method will update an empty plist
|
|
17
|
+
* @param quiet - If set to false, the plist path will be logged in debug level
|
|
14
18
|
*/
|
|
15
|
-
export function
|
|
19
|
+
export declare function updatePlistFile(plist: string, updatedFields: object, binary?: boolean, mustExist?: boolean, quiet?: boolean): Promise<void>;
|
|
16
20
|
/**
|
|
17
|
-
* Creates a plist from an object
|
|
18
|
-
*
|
|
19
|
-
* @param
|
|
20
|
-
* @returns
|
|
21
|
+
* Creates a binary plist Buffer from an object
|
|
22
|
+
*
|
|
23
|
+
* @param data - The object to be turned into a binary plist
|
|
24
|
+
* @returns Plist in the form of a binary buffer
|
|
21
25
|
*/
|
|
22
|
-
export function
|
|
26
|
+
export declare function createBinaryPlist(data: object): Buffer;
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* @param
|
|
27
|
-
* @
|
|
28
|
-
* @param {boolean} mustExist If set to false, this method will update an empty plist
|
|
29
|
-
* @param {boolean} quiet If set to false, the plist path will be logged in debug level
|
|
28
|
+
* Parses a Buffer into an Object
|
|
29
|
+
*
|
|
30
|
+
* @param data - The buffer of a binary plist
|
|
31
|
+
* @returns Array of parsed root objects (typically one element)
|
|
30
32
|
*/
|
|
31
|
-
export function
|
|
33
|
+
export declare function parseBinaryPlist(data: Buffer): object[];
|
|
32
34
|
/**
|
|
33
|
-
* Creates a
|
|
34
|
-
*
|
|
35
|
-
* @
|
|
35
|
+
* Creates a plist from an object
|
|
36
|
+
*
|
|
37
|
+
* @param object - The JS object to be turned into a plist
|
|
38
|
+
* @param binary - Set it to true for a binary plist
|
|
39
|
+
* @returns A buffer or a string depending on the binary parameter
|
|
36
40
|
*/
|
|
37
|
-
export function
|
|
41
|
+
export declare function createPlist(object: object, binary?: boolean): Buffer | string;
|
|
38
42
|
/**
|
|
39
|
-
* Parses a
|
|
40
|
-
*
|
|
43
|
+
* Parses a buffer or string into a JS object
|
|
44
|
+
*
|
|
45
|
+
* @param data - The plist as a string or Buffer
|
|
46
|
+
* @returns Parsed plist as a JS object
|
|
47
|
+
* @throws Will throw an error if the plist type is unknown
|
|
41
48
|
*/
|
|
42
|
-
export function
|
|
49
|
+
export declare function parsePlist(data: string | Buffer): object;
|
|
43
50
|
//# sourceMappingURL=plist.d.ts.map
|
package/build/lib/plist.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plist.d.ts","sourceRoot":"","sources":["../../lib/plist.
|
|
1
|
+
{"version":3,"file":"plist.d.ts","sourceRoot":"","sources":["../../lib/plist.ts"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,UAAO,EAChB,KAAK,UAAO,GACX,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,MAAM,UAAO,EACb,SAAS,UAAO,EAChB,KAAK,UAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,GAAG,MAAM,CAK3E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAcxD"}
|
package/build/lib/plist.js
CHANGED
|
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.parsePlistFile = parsePlistFile;
|
|
7
|
-
exports.parsePlist = parsePlist;
|
|
8
|
-
exports.createPlist = createPlist;
|
|
9
7
|
exports.updatePlistFile = updatePlistFile;
|
|
10
8
|
exports.createBinaryPlist = createBinaryPlist;
|
|
11
9
|
exports.parseBinaryPlist = parseBinaryPlist;
|
|
10
|
+
exports.createPlist = createPlist;
|
|
11
|
+
exports.parsePlist = parsePlist;
|
|
12
12
|
const plist_1 = __importDefault(require("plist"));
|
|
13
13
|
const bplist_creator_1 = __importDefault(require("bplist-creator"));
|
|
14
14
|
const bplist_parser_1 = require("bplist-parser");
|
|
@@ -23,38 +23,33 @@ const PLIST_IDENTIFIER = {
|
|
|
23
23
|
BUFFER: Buffer.from('<'),
|
|
24
24
|
TEXT: '<',
|
|
25
25
|
};
|
|
26
|
-
// XML Plist library helper
|
|
27
|
-
async function parseXmlPlistFile(plistFilename) {
|
|
28
|
-
let xmlContent = await fs_1.fs.readFile(plistFilename, 'utf8');
|
|
29
|
-
return plist_1.default.parse(xmlContent);
|
|
30
|
-
}
|
|
31
26
|
/**
|
|
32
27
|
* Parses a file in xml or binary format of plist
|
|
33
|
-
*
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
36
|
-
* @
|
|
28
|
+
*
|
|
29
|
+
* @param plist - The plist file path
|
|
30
|
+
* @param mustExist - If set to false, this method will return an empty object when the file doesn't exist
|
|
31
|
+
* @param quiet - If set to false, the plist path will be logged in debug level
|
|
32
|
+
* @returns Parsed plist as a JS object
|
|
37
33
|
*/
|
|
38
34
|
async function parsePlistFile(plist, mustExist = true, quiet = true) {
|
|
39
|
-
// handle nonexistent file
|
|
40
35
|
if (!(await fs_1.fs.exists(plist))) {
|
|
41
36
|
if (mustExist) {
|
|
42
37
|
throw logger_1.default.errorWithException(`Plist file doesn't exist: '${plist}'`);
|
|
43
38
|
}
|
|
44
|
-
|
|
39
|
+
if (!quiet) {
|
|
45
40
|
logger_1.default.debug(`Plist file '${plist}' does not exist. Returning an empty plist.`);
|
|
46
|
-
return {};
|
|
47
41
|
}
|
|
42
|
+
return {};
|
|
48
43
|
}
|
|
49
44
|
let obj = {};
|
|
50
45
|
let type = 'binary';
|
|
51
46
|
try {
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
obj =
|
|
47
|
+
const parsed = await (0, bplist_parser_1.parseFile)(plist);
|
|
48
|
+
if (parsed.length) {
|
|
49
|
+
obj = parsed[0];
|
|
55
50
|
}
|
|
56
51
|
else {
|
|
57
|
-
throw new Error(`Binary file '${plist}'
|
|
52
|
+
throw new Error(`Binary file '${plist}' appears to be empty`);
|
|
58
53
|
}
|
|
59
54
|
}
|
|
60
55
|
catch {
|
|
@@ -73,11 +68,12 @@ async function parsePlistFile(plist, mustExist = true, quiet = true) {
|
|
|
73
68
|
}
|
|
74
69
|
/**
|
|
75
70
|
* Updates a plist file with the given fields
|
|
76
|
-
*
|
|
77
|
-
* @param
|
|
78
|
-
* @param
|
|
79
|
-
* @param
|
|
80
|
-
* @param
|
|
71
|
+
*
|
|
72
|
+
* @param plist - The plist file path
|
|
73
|
+
* @param updatedFields - The updated fields-value pairs
|
|
74
|
+
* @param binary - If set to false, the file will be created as a xml plist
|
|
75
|
+
* @param mustExist - If set to false, this method will update an empty plist
|
|
76
|
+
* @param quiet - If set to false, the plist path will be logged in debug level
|
|
81
77
|
*/
|
|
82
78
|
async function updatePlistFile(plist, updatedFields, binary = true, mustExist = true, quiet = true) {
|
|
83
79
|
let obj;
|
|
@@ -88,7 +84,7 @@ async function updatePlistFile(plist, updatedFields, binary = true, mustExist =
|
|
|
88
84
|
throw logger_1.default.errorWithException(`Could not update plist: ${err.message}`);
|
|
89
85
|
}
|
|
90
86
|
lodash_1.default.extend(obj, updatedFields);
|
|
91
|
-
|
|
87
|
+
const newPlist = binary ? (0, bplist_creator_1.default)(obj) : plist_1.default.build(obj);
|
|
92
88
|
try {
|
|
93
89
|
await fs_1.fs.writeFile(plist, newPlist);
|
|
94
90
|
}
|
|
@@ -101,68 +97,75 @@ async function updatePlistFile(plist, updatedFields, binary = true, mustExist =
|
|
|
101
97
|
}
|
|
102
98
|
/**
|
|
103
99
|
* Creates a binary plist Buffer from an object
|
|
104
|
-
*
|
|
105
|
-
* @
|
|
100
|
+
*
|
|
101
|
+
* @param data - The object to be turned into a binary plist
|
|
102
|
+
* @returns Plist in the form of a binary buffer
|
|
106
103
|
*/
|
|
107
104
|
function createBinaryPlist(data) {
|
|
108
105
|
return (0, bplist_creator_1.default)(data);
|
|
109
106
|
}
|
|
110
107
|
/**
|
|
111
108
|
* Parses a Buffer into an Object
|
|
112
|
-
*
|
|
109
|
+
*
|
|
110
|
+
* @param data - The buffer of a binary plist
|
|
111
|
+
* @returns Array of parsed root objects (typically one element)
|
|
113
112
|
*/
|
|
114
113
|
function parseBinaryPlist(data) {
|
|
115
114
|
return (0, bplist_parser_1.parseBuffer)(data);
|
|
116
115
|
}
|
|
117
|
-
function getXmlPlist(data) {
|
|
118
|
-
if (lodash_1.default.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {
|
|
119
|
-
return data;
|
|
120
|
-
}
|
|
121
|
-
if (lodash_1.default.isBuffer(data) &&
|
|
122
|
-
PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0) {
|
|
123
|
-
return data.toString();
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
function getBinaryPlist(data) {
|
|
128
|
-
if (lodash_1.default.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {
|
|
129
|
-
return Buffer.from(data);
|
|
130
|
-
}
|
|
131
|
-
if (lodash_1.default.isBuffer(data) &&
|
|
132
|
-
BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0) {
|
|
133
|
-
return data;
|
|
134
|
-
}
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
116
|
/**
|
|
138
117
|
* Creates a plist from an object
|
|
139
|
-
*
|
|
140
|
-
* @param
|
|
141
|
-
* @
|
|
118
|
+
*
|
|
119
|
+
* @param object - The JS object to be turned into a plist
|
|
120
|
+
* @param binary - Set it to true for a binary plist
|
|
121
|
+
* @returns A buffer or a string depending on the binary parameter
|
|
142
122
|
*/
|
|
143
123
|
function createPlist(object, binary = false) {
|
|
144
124
|
if (binary) {
|
|
145
125
|
return createBinaryPlist(object);
|
|
146
126
|
}
|
|
147
|
-
|
|
148
|
-
return plist_1.default.build(object);
|
|
149
|
-
}
|
|
127
|
+
return plist_1.default.build(object);
|
|
150
128
|
}
|
|
151
129
|
/**
|
|
152
|
-
* Parses
|
|
153
|
-
*
|
|
154
|
-
* @
|
|
130
|
+
* Parses a buffer or string into a JS object
|
|
131
|
+
*
|
|
132
|
+
* @param data - The plist as a string or Buffer
|
|
133
|
+
* @returns Parsed plist as a JS object
|
|
155
134
|
* @throws Will throw an error if the plist type is unknown
|
|
156
135
|
*/
|
|
157
136
|
function parsePlist(data) {
|
|
158
|
-
|
|
137
|
+
const textPlist = getXmlPlist(data);
|
|
159
138
|
if (textPlist) {
|
|
160
139
|
return plist_1.default.parse(textPlist);
|
|
161
140
|
}
|
|
162
|
-
|
|
141
|
+
const binaryPlist = getBinaryPlist(data);
|
|
163
142
|
if (binaryPlist) {
|
|
164
143
|
return parseBinaryPlist(binaryPlist)[0];
|
|
165
144
|
}
|
|
166
|
-
throw new Error(`Unknown type of plist, data: ${data.toString()}`);
|
|
145
|
+
throw new Error(`Unknown type of plist, data: ${lodash_1.default.truncate(data.toString(), { length: 200 })}`);
|
|
146
|
+
}
|
|
147
|
+
async function parseXmlPlistFile(plistFilename) {
|
|
148
|
+
const xmlContent = await fs_1.fs.readFile(plistFilename, 'utf8');
|
|
149
|
+
return plist_1.default.parse(xmlContent);
|
|
150
|
+
}
|
|
151
|
+
function getXmlPlist(data) {
|
|
152
|
+
if (lodash_1.default.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {
|
|
153
|
+
return data;
|
|
154
|
+
}
|
|
155
|
+
if (Buffer.isBuffer(data) &&
|
|
156
|
+
PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0) {
|
|
157
|
+
return data.toString();
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
function getBinaryPlist(data) {
|
|
162
|
+
if (lodash_1.default.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {
|
|
163
|
+
return Buffer.from(data);
|
|
164
|
+
}
|
|
165
|
+
if (Buffer.isBuffer(data) &&
|
|
166
|
+
BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0) {
|
|
167
|
+
return data;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
167
170
|
}
|
|
168
171
|
//# sourceMappingURL=plist.js.map
|