@appium/support 2.61.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/console.d.ts +1 -1
- package/build/lib/console.js +169 -105
- package/build/lib/console.js.map +1 -1
- package/build/lib/env.js +142 -117
- package/build/lib/env.js.map +1 -1
- package/build/lib/fs.d.ts +9 -2
- package/build/lib/fs.d.ts.map +1 -1
- package/build/lib/fs.js +358 -246
- package/build/lib/fs.js.map +1 -1
- package/build/lib/image-util.js +139 -124
- package/build/lib/image-util.js.map +1 -1
- package/build/lib/index.js +64 -103
- package/build/lib/index.js.map +1 -1
- package/build/lib/log-internal.d.ts +4 -27
- package/build/lib/log-internal.d.ts.map +1 -1
- package/build/lib/log-internal.js +141 -123
- package/build/lib/log-internal.js.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 +5 -14
- package/build/lib/logger.js.map +1 -1
- package/build/lib/logging.d.ts +3 -4
- package/build/lib/logging.d.ts.map +1 -1
- package/build/lib/logging.js +139 -110
- package/build/lib/logging.js.map +1 -1
- package/build/lib/mjpeg.js +169 -141
- package/build/lib/mjpeg.js.map +1 -1
- package/build/lib/mkdirp.js +7 -13
- package/build/lib/mkdirp.js.map +1 -1
- package/build/lib/net.d.ts.map +1 -1
- package/build/lib/net.js +278 -254
- package/build/lib/net.js.map +1 -1
- package/build/lib/node.js +203 -192
- package/build/lib/node.js.map +1 -1
- package/build/lib/npm.d.ts +19 -4
- package/build/lib/npm.d.ts.map +1 -1
- package/build/lib/npm.js +277 -228
- package/build/lib/npm.js.map +1 -1
- package/build/lib/plist.js +145 -136
- package/build/lib/plist.js.map +1 -1
- package/build/lib/process.js +41 -42
- package/build/lib/process.js.map +1 -1
- package/build/lib/system.js +39 -56
- package/build/lib/system.js.map +1 -1
- package/build/lib/tempdir.js +112 -73
- package/build/lib/tempdir.js.map +1 -1
- package/build/lib/timing.js +99 -84
- package/build/lib/timing.js.map +1 -1
- package/build/lib/util.js +454 -356
- package/build/lib/util.js.map +1 -1
- package/build/lib/zip.js +469 -423
- package/build/lib/zip.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/fs.js +15 -1
- package/lib/log-internal.js +12 -16
- package/lib/logging.js +2 -3
- package/lib/net.js +15 -6
- package/lib/npm.js +28 -18
- package/package.json +19 -18
package/build/lib/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","names":["DEFAULT_TIMEOUT_MS","toAxiosAuth","auth","_","isPlainObject","axiosAuth","username","get","password","uploadFileToHttp","localFileStream","parsedUri","uploadOptions","method","timeout","headers","fileFieldName","formFields","href","requestOpts","url","maxContentLength","Infinity","maxBodyLength","form","FormData","append","pairs","isArray","toPairs","key","value","toLower","getHeaders","data","log","debug","JSON","stringify","omit","status","statusText","axios","info","uploadFileToFtp","hostname","port","protocol","pathname","ftpOpts","host","isUndefined","parseInt","user","pass","B","resolve","reject","Ftp","put","err","isHttpUploadOptions","opts","URL","isNotHttpUploadOptions","uploadFile","localPath","remoteUri","fs","exists","Error","isMetered","size","stat","toReadableSizeString","timer","Timer","start","createReadStream","getDuration","asSeconds","toFixed","downloadFile","remoteUrl","dstPath","downloadOptions","responseType","responseLength","writer","createWriteStream","responseStream","responseHeaders","pipe","once","e","unpipe","message","rimraf","secondsElapsed","bytesPerSec","Math","floor"],"sources":["../../lib/net.js"],"sourcesContent":["import _ from 'lodash';\nimport fs from './fs';\nimport B from 'bluebird';\nimport {toReadableSizeString} from './util';\nimport log from './logger';\nimport Ftp from 'jsftp';\nimport Timer from './timing';\nimport axios from 'axios';\nimport FormData from 'form-data';\n\nconst DEFAULT_TIMEOUT_MS = 4 * 60 * 1000;\n\n/**\n * Converts {@linkcode AuthCredentials} to credentials understood by {@linkcode axios}.\n * @param {AuthCredentials | import('axios').AxiosBasicCredentials} [auth]\n * @returns {import('axios').AxiosBasicCredentials?}\n */\nfunction toAxiosAuth(auth) {\n if (!_.isPlainObject(auth)) {\n return null;\n }\n\n const axiosAuth = {\n username: _.get(auth, 'username', _.get(auth, 'user')),\n password: _.get(auth, 'password', _.get(auth, 'pass')),\n };\n return axiosAuth.username && axiosAuth.password ? axiosAuth : null;\n}\n\n/**\n * @param {NodeJS.ReadableStream} localFileStream\n * @param {URL} parsedUri\n * @param {HttpUploadOptions & NetOptions} [uploadOptions]\n */\nasync function uploadFileToHttp(\n localFileStream,\n parsedUri,\n uploadOptions = /** @type {HttpUploadOptions & NetOptions} */ ({})\n) {\n const {\n method = 'POST',\n timeout = DEFAULT_TIMEOUT_MS,\n headers,\n auth,\n fileFieldName = 'file',\n formFields,\n } = uploadOptions;\n const {href} = parsedUri;\n\n /** @type {import('axios').AxiosRequestConfig} */\n const requestOpts = {\n url: href,\n method,\n timeout,\n maxContentLength: Infinity,\n maxBodyLength: Infinity,\n };\n const axiosAuth = toAxiosAuth(auth);\n if (axiosAuth) {\n requestOpts.auth = axiosAuth;\n }\n if (fileFieldName) {\n const form = new FormData();\n form.append(fileFieldName, localFileStream);\n if (formFields) {\n let pairs = [];\n if (_.isArray(formFields)) {\n pairs = formFields;\n } else if (_.isPlainObject(formFields)) {\n pairs = _.toPairs(formFields);\n }\n for (const [key, value] of pairs) {\n if (_.toLower(key) !== _.toLower(fileFieldName)) {\n form.append(key, value);\n }\n }\n }\n requestOpts.headers = {\n ...(_.isPlainObject(headers) ? headers : {}),\n ...form.getHeaders(),\n };\n requestOpts.data = form;\n } else {\n if (_.isPlainObject(headers)) {\n requestOpts.headers = headers;\n }\n requestOpts.data = localFileStream;\n }\n log.debug(\n `Performing ${method} to ${href} with options (excluding data): ` +\n JSON.stringify(_.omit(requestOpts, ['data']))\n );\n\n const {status, statusText} = await axios(requestOpts);\n log.info(`Server response: ${status} ${statusText}`);\n}\n\n/**\n * @param {string | Buffer | NodeJS.ReadableStream} localFileStream\n * @param {URL} parsedUri\n * @param {NotHttpUploadOptions & NetOptions} [uploadOptions]\n */\nasync function uploadFileToFtp(\n localFileStream,\n parsedUri,\n uploadOptions = /** @type {NotHttpUploadOptions & NetOptions} */ ({})\n) {\n const {auth} = uploadOptions;\n const {hostname, port, protocol, pathname} = parsedUri;\n\n const ftpOpts = {\n host: hostname,\n port: !_.isUndefined(port) ? _.parseInt(port) : 21,\n };\n if (auth?.user && auth?.pass) {\n ftpOpts.user = auth.user;\n ftpOpts.pass = auth.pass;\n }\n log.debug(`${protocol} upload options: ${JSON.stringify(ftpOpts)}`);\n return await new B((resolve, reject) => {\n new Ftp(ftpOpts).put(localFileStream, pathname, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n}\n\n/**\n * Returns `true` if params are valid for {@linkcode uploadFileToHttp}.\n * @param {any} opts\n * @param {URL} url\n * @returns {opts is HttpUploadOptions & NetOptions}\n */\nfunction isHttpUploadOptions(opts, url) {\n try {\n const {protocol} = new URL(url);\n return protocol === 'http:' || protocol === 'https:';\n } catch {\n return false;\n }\n}\n\n/**\n * Returns `true` if params are valid for {@linkcode uploadFileToFtp}.\n * @param {any} opts\n * @param {URL} url\n * @returns {opts is NotHttpUploadOptions & NetOptions}\n */\nfunction isNotHttpUploadOptions(opts, url) {\n try {\n const {protocol} = new URL(url);\n return protocol === 'ftp:';\n } catch {\n return false;\n }\n}\n/**\n * Uploads the given file to a remote location. HTTP(S) and FTP\n * protocols are supported.\n *\n * @param {string} localPath - The path to a file on the local storage.\n * @param {string} remoteUri - The remote URI to upload the file to.\n * @param {(HttpUploadOptions|NotHttpUploadOptions) & NetOptions} [uploadOptions]\n * @returns {Promise<void>}\n */\nasync function uploadFile(\n localPath,\n remoteUri,\n uploadOptions = /** @type {(HttpUploadOptions|NotHttpUploadOptions) & NetOptions} */ ({})\n) {\n if (!(await fs.exists(localPath))) {\n throw new Error(`'${localPath}' does not exists or is not accessible`);\n }\n\n const {isMetered = true} = uploadOptions;\n const url = new URL(remoteUri);\n const {size} = await fs.stat(localPath);\n if (isMetered) {\n log.info(`Uploading '${localPath}' of ${toReadableSizeString(size)} size to '${remoteUri}'`);\n }\n const timer = new Timer().start();\n if (isHttpUploadOptions(uploadOptions, url)) {\n if (!uploadOptions.fileFieldName) {\n uploadOptions.headers = {\n ...(_.isPlainObject(uploadOptions.headers) ? uploadOptions.headers : {}),\n 'Content-Length': size,\n };\n }\n await uploadFileToHttp(fs.createReadStream(localPath), url, uploadOptions);\n } else if (isNotHttpUploadOptions(uploadOptions, url)) {\n await uploadFileToFtp(fs.createReadStream(localPath), url, uploadOptions);\n } else {\n throw new Error(\n `Cannot upload the file at '${localPath}' to '${remoteUri}'. ` +\n `Unsupported remote protocol '${url.protocol}'. ` +\n `Only http/https and ftp/ftps protocols are supported.`\n );\n }\n if (isMetered) {\n log.info(\n `Uploaded '${localPath}' of ${toReadableSizeString(size)} size in ` +\n `${timer.getDuration().asSeconds.toFixed(3)}s`\n );\n }\n}\n\n/**\n * Downloads the given file via HTTP(S)\n *\n * @param {string} remoteUrl - The remote url\n * @param {string} dstPath - The local path to download the file to\n * @param {DownloadOptions & NetOptions} [downloadOptions]\n * @throws {Error} If download operation fails\n */\nasync function downloadFile(\n remoteUrl,\n dstPath,\n downloadOptions = /** @type {DownloadOptions & NetOptions} */ ({})\n) {\n const {isMetered = true, auth, timeout = DEFAULT_TIMEOUT_MS, headers} = downloadOptions;\n\n /**\n * @type {import('axios').AxiosRequestConfig}\n */\n const requestOpts = {\n url: remoteUrl,\n responseType: 'stream',\n timeout,\n };\n const axiosAuth = toAxiosAuth(auth);\n if (axiosAuth) {\n requestOpts.auth = axiosAuth;\n }\n if (_.isPlainObject(headers)) {\n requestOpts.headers = headers;\n }\n\n const timer = new Timer().start();\n let responseLength;\n try {\n const writer = fs.createWriteStream(dstPath);\n const {data: responseStream, headers: responseHeaders} = await axios(requestOpts);\n responseLength = parseInt(responseHeaders['content-length'], 10);\n responseStream.pipe(writer);\n\n await new B((resolve, reject) => {\n responseStream.once('error', reject);\n writer.once('finish', resolve);\n writer.once('error', (e) => {\n responseStream.unpipe(writer);\n reject(e);\n });\n });\n } catch (err) {\n throw new Error(`Cannot download the file from ${remoteUrl}: ${err.message}`);\n }\n\n const {size} = await fs.stat(dstPath);\n if (responseLength && size !== responseLength) {\n await fs.rimraf(dstPath);\n throw new Error(\n `The size of the file downloaded from ${remoteUrl} (${size} bytes) ` +\n `differs from the one in Content-Length response header (${responseLength} bytes)`\n );\n }\n if (isMetered) {\n const secondsElapsed = timer.getDuration().asSeconds;\n log.debug(\n `${remoteUrl} (${toReadableSizeString(size)}) ` +\n `has been downloaded to '${dstPath}' in ${secondsElapsed.toFixed(3)}s`\n );\n if (secondsElapsed >= 2) {\n const bytesPerSec = Math.floor(size / secondsElapsed);\n log.debug(`Approximate download speed: ${toReadableSizeString(bytesPerSec)}/s`);\n }\n }\n}\n\nexport {uploadFile, downloadFile};\n\n/**\n * Common options for {@linkcode uploadFile} and {@linkcode downloadFile}.\n * @typedef NetOptions\n * @property {boolean} [isMetered=true] - Whether to log the actual download performance\n * (e.g. timings and speed)\n * @property {AuthCredentials} [auth] - Authentication credentials\n */\n\n/**\n * Specific options for {@linkcode downloadFile}.\n * @typedef DownloadOptions\n * @property {number} [timeout] - The actual request timeout in milliseconds; defaults to {@linkcode DEFAULT_TIMEOUT_MS}\n * @property {Record<string,any>} [headers] - Request headers mapping\n */\n\n/**\n * Basic auth credentials; used by {@linkcode NetOptions}.\n * @typedef AuthCredentials\n * @property {string} user - Non-empty user name\n * @property {string} pass - Non-empty password\n */\n\n/**\n * This type is used in {@linkcode uploadFile} if the remote location uses the `ftp` protocol, and distinguishes the type from {@linkcode HttpUploadOptions}.\n * @typedef NotHttpUploadOptions\n * @property {never} headers\n * @property {never} method\n * @property {never} timeout\n * @property {never} fileFieldName\n * @property {never} formFields\n */\n\n/**\n * Specific options for {@linkcode uploadFile} if the remote location uses the `http(s)` protocol\n * @typedef HttpUploadOptions\n * @property {Record<string,any>} headers - Additional request headers mapping\n * @property {import('axios').Method} [method='POST'] - The HTTP method used for file upload\n * @property {number} [timeout] - The actual request timeout in milliseconds; defaults to {@linkcode DEFAULT_TIMEOUT_MS}\n * @property {string} [fileFieldName='file'] - The name of the form field containing the file\n * content to be uploaded. Any falsy value make the request to use non-multipart upload\n * @property {Record<string,any>} [formFields] - The additional form fields\n * to be included into the upload request. This property is only considered if\n * `fileFieldName` is set\n */\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../lib/net.js"],"names":[],"mappings":"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"}
|
package/build/lib/node.js
CHANGED
|
@@ -1,214 +1,225 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
exports.deepFreeze =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
require("
|
|
13
|
-
|
|
14
|
-
var _system = require("./system");
|
|
15
|
-
|
|
16
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
17
|
-
|
|
18
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
19
|
-
|
|
20
|
-
var _teen_process = require("teen_process");
|
|
21
|
-
|
|
22
|
-
var _path = _interopRequireDefault(require("path"));
|
|
23
|
-
|
|
24
|
-
var _fs2 = _interopRequireDefault(require("fs"));
|
|
25
|
-
|
|
26
|
-
var _uuid = require("uuid");
|
|
27
|
-
|
|
28
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getModuleRootSync = exports.deepFreeze = exports.getObjectId = exports.getObjectSize = exports.requirePackage = void 0;
|
|
7
|
+
const system_1 = require("./system");
|
|
8
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
9
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
10
|
+
const teen_process_1 = require("teen_process");
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const uuid_1 = require("uuid");
|
|
30
14
|
const ECMA_SIZES = Object.freeze({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
15
|
+
STRING: 2,
|
|
16
|
+
BOOLEAN: 4,
|
|
17
|
+
NUMBER: 8,
|
|
34
18
|
});
|
|
35
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Internal utility to link global package to local context
|
|
21
|
+
*
|
|
22
|
+
* @param {string} packageName - name of the package to link
|
|
23
|
+
* @throws {Error} If the command fails
|
|
24
|
+
*/
|
|
36
25
|
async function linkGlobalPackage(packageName) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
throw new Error(msg);
|
|
54
|
-
}
|
|
26
|
+
try {
|
|
27
|
+
logger_1.default.debug(`Linking package '${packageName}'`);
|
|
28
|
+
const cmd = (0, system_1.isWindows)() ? 'npm.cmd' : 'npm';
|
|
29
|
+
await (0, teen_process_1.exec)(cmd, ['link', packageName], { timeout: 20000 });
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const msg = `Unable to load package '${packageName}', linking failed: ${err.message}`;
|
|
33
|
+
logger_1.default.debug(msg);
|
|
34
|
+
if (err.stderr) {
|
|
35
|
+
// log the stderr if there, but do not add to thrown error as it is
|
|
36
|
+
// _very_ verbose
|
|
37
|
+
logger_1.default.debug(err.stderr);
|
|
38
|
+
}
|
|
39
|
+
throw new Error(msg);
|
|
40
|
+
}
|
|
55
41
|
}
|
|
56
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Utility function to extend node functionality, allowing us to require
|
|
44
|
+
* modules that are installed globally. If the package cannot be required,
|
|
45
|
+
* this will attempt to link the package and then re-require it
|
|
46
|
+
*
|
|
47
|
+
* @param {string} packageName - the name of the package to be required
|
|
48
|
+
* @returns {Promise<unknown>} - the package object
|
|
49
|
+
* @throws {Error} If the package is not found locally or globally
|
|
50
|
+
*/
|
|
57
51
|
async function requirePackage(packageName) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
52
|
+
// first, get it in the normal way (see https://nodejs.org/api/modules.html#modules_all_together)
|
|
53
|
+
try {
|
|
54
|
+
logger_1.default.debug(`Loading local package '${packageName}'`);
|
|
55
|
+
return require(packageName);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger_1.default.debug(`Failed to load local package '${packageName}': ${err.message}`);
|
|
59
|
+
}
|
|
60
|
+
// second, get it from where it ought to be in the global node_modules
|
|
61
|
+
try {
|
|
62
|
+
const globalPackageName = path_1.default.resolve(process.env.npm_config_prefix ?? '', 'lib', 'node_modules', packageName);
|
|
63
|
+
logger_1.default.debug(`Loading global package '${globalPackageName}'`);
|
|
64
|
+
return require(globalPackageName);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
logger_1.default.debug(`Failed to load global package '${packageName}': ${err.message}`);
|
|
68
|
+
}
|
|
69
|
+
// third, link the file and get locally
|
|
70
|
+
try {
|
|
71
|
+
await linkGlobalPackage(packageName);
|
|
72
|
+
logger_1.default.debug(`Retrying load of linked package '${packageName}'`);
|
|
73
|
+
return require(packageName);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
logger_1.default.errorAndThrow(`Unable to load package '${packageName}': ${err.message}`);
|
|
77
|
+
}
|
|
85
78
|
}
|
|
86
|
-
|
|
79
|
+
exports.requirePackage = requirePackage;
|
|
87
80
|
function extractAllProperties(obj) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
stringProperties
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return stringProperties;
|
|
81
|
+
const stringProperties = [];
|
|
82
|
+
for (const prop in obj) {
|
|
83
|
+
stringProperties.push(prop);
|
|
84
|
+
}
|
|
85
|
+
if (lodash_1.default.isFunction(Object.getOwnPropertySymbols)) {
|
|
86
|
+
stringProperties.push(...Object.getOwnPropertySymbols(obj));
|
|
87
|
+
}
|
|
88
|
+
return stringProperties;
|
|
99
89
|
}
|
|
100
|
-
|
|
101
90
|
function _getSizeOfObject(seen, object) {
|
|
102
|
-
|
|
103
|
-
return 0;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
let bytes = 0;
|
|
107
|
-
const properties = extractAllProperties(object);
|
|
108
|
-
|
|
109
|
-
for (const key of properties) {
|
|
110
|
-
if (typeof object[key] === 'object' && !_lodash.default.isNil(object[key])) {
|
|
111
|
-
if (seen.has(object[key])) {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
seen.add(object[key]);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
bytes += getCalculator(seen)(key);
|
|
119
|
-
|
|
120
|
-
try {
|
|
121
|
-
bytes += getCalculator(seen)(object[key]);
|
|
122
|
-
} catch (ex) {
|
|
123
|
-
if (ex instanceof RangeError) {
|
|
124
|
-
bytes = 0;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return bytes;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function getCalculator(seen) {
|
|
133
|
-
return function calculator(obj) {
|
|
134
|
-
if (_lodash.default.isBuffer(obj)) {
|
|
135
|
-
return obj.length;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
switch (typeof obj) {
|
|
139
|
-
case 'string':
|
|
140
|
-
return obj.length * ECMA_SIZES.STRING;
|
|
141
|
-
|
|
142
|
-
case 'boolean':
|
|
143
|
-
return ECMA_SIZES.BOOLEAN;
|
|
144
|
-
|
|
145
|
-
case 'number':
|
|
146
|
-
return ECMA_SIZES.NUMBER;
|
|
147
|
-
|
|
148
|
-
case 'symbol':
|
|
149
|
-
return _lodash.default.isFunction(Symbol.keyFor) && Symbol.keyFor(obj) ? Symbol.keyFor(obj).length * ECMA_SIZES.STRING : (obj.toString().length - 8) * ECMA_SIZES.STRING;
|
|
150
|
-
|
|
151
|
-
case 'object':
|
|
152
|
-
return _lodash.default.isArray(obj) ? obj.map(getCalculator(seen)).reduce((acc, curr) => acc + curr, 0) : _getSizeOfObject(seen, obj);
|
|
153
|
-
|
|
154
|
-
default:
|
|
91
|
+
if (lodash_1.default.isNil(object)) {
|
|
155
92
|
return 0;
|
|
156
93
|
}
|
|
157
|
-
|
|
94
|
+
let bytes = 0;
|
|
95
|
+
const properties = extractAllProperties(object);
|
|
96
|
+
for (const key of properties) {
|
|
97
|
+
// Do not recalculate circular references
|
|
98
|
+
if (typeof object[key] === 'object' && !lodash_1.default.isNil(object[key])) {
|
|
99
|
+
if (seen.has(object[key])) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
seen.add(object[key]);
|
|
103
|
+
}
|
|
104
|
+
bytes += getCalculator(seen)(key);
|
|
105
|
+
try {
|
|
106
|
+
bytes += getCalculator(seen)(object[key]);
|
|
107
|
+
}
|
|
108
|
+
catch (ex) {
|
|
109
|
+
if (ex instanceof RangeError) {
|
|
110
|
+
// circular reference detected, final result might be incorrect
|
|
111
|
+
// let's be nice and not throw an exception
|
|
112
|
+
bytes = 0;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return bytes;
|
|
117
|
+
}
|
|
118
|
+
function getCalculator(seen) {
|
|
119
|
+
return function calculator(obj) {
|
|
120
|
+
if (lodash_1.default.isBuffer(obj)) {
|
|
121
|
+
return obj.length;
|
|
122
|
+
}
|
|
123
|
+
switch (typeof obj) {
|
|
124
|
+
case 'string':
|
|
125
|
+
return obj.length * ECMA_SIZES.STRING;
|
|
126
|
+
case 'boolean':
|
|
127
|
+
return ECMA_SIZES.BOOLEAN;
|
|
128
|
+
case 'number':
|
|
129
|
+
return ECMA_SIZES.NUMBER;
|
|
130
|
+
case 'symbol':
|
|
131
|
+
return lodash_1.default.isFunction(Symbol.keyFor) && Symbol.keyFor(obj)
|
|
132
|
+
? /** @type {string} */ (Symbol.keyFor(obj)).length * ECMA_SIZES.STRING
|
|
133
|
+
: (obj.toString().length - 8) * ECMA_SIZES.STRING;
|
|
134
|
+
case 'object':
|
|
135
|
+
return lodash_1.default.isArray(obj)
|
|
136
|
+
? obj.map(getCalculator(seen)).reduce((acc, curr) => acc + curr, 0)
|
|
137
|
+
: _getSizeOfObject(seen, obj);
|
|
138
|
+
default:
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
158
142
|
}
|
|
159
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Calculate the in-depth size in memory of the provided object.
|
|
145
|
+
* The original implementation is borrowed from https://github.com/miktam/sizeof.
|
|
146
|
+
*
|
|
147
|
+
* @param {*} obj An object whose size should be calculated
|
|
148
|
+
* @returns {number} Object size in bytes.
|
|
149
|
+
*/
|
|
160
150
|
function getObjectSize(obj) {
|
|
161
|
-
|
|
151
|
+
return getCalculator(new WeakSet())(obj);
|
|
162
152
|
}
|
|
163
|
-
|
|
153
|
+
exports.getObjectSize = getObjectSize;
|
|
164
154
|
const OBJECTS_MAPPING = new WeakMap();
|
|
165
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Calculates a unique object identifier
|
|
157
|
+
*
|
|
158
|
+
* @param {object} object Any valid ECMA object
|
|
159
|
+
* @returns {string} A uuidV4 string that uniquely identifies given object
|
|
160
|
+
*/
|
|
166
161
|
function getObjectId(object) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return OBJECTS_MAPPING.get(object);
|
|
162
|
+
if (!OBJECTS_MAPPING.has(object)) {
|
|
163
|
+
OBJECTS_MAPPING.set(object, (0, uuid_1.v4)());
|
|
164
|
+
}
|
|
165
|
+
return OBJECTS_MAPPING.get(object);
|
|
172
166
|
}
|
|
173
|
-
|
|
167
|
+
exports.getObjectId = getObjectId;
|
|
168
|
+
/**
|
|
169
|
+
* Perform deep freeze of the given object (e. g.
|
|
170
|
+
* all nested objects also become immutable).
|
|
171
|
+
* If the passed object is of a plain type
|
|
172
|
+
* then no change is done and the same object
|
|
173
|
+
* is returned.
|
|
174
|
+
* ! This function changes the given object,
|
|
175
|
+
* so it becomes immutable.
|
|
176
|
+
*
|
|
177
|
+
* @param {*} object Any valid ECMA object
|
|
178
|
+
* @returns {*} The same object that was passed to the
|
|
179
|
+
* function after it was made immutable.
|
|
180
|
+
*/
|
|
174
181
|
function deepFreeze(object) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
return Object.freeze(object);
|
|
182
|
+
let propNames;
|
|
183
|
+
try {
|
|
184
|
+
propNames = Object.getOwnPropertyNames(object);
|
|
185
|
+
}
|
|
186
|
+
catch (ign) {
|
|
187
|
+
return object;
|
|
188
|
+
}
|
|
189
|
+
for (const name of propNames) {
|
|
190
|
+
const value = object[name];
|
|
191
|
+
if (value && typeof value === 'object') {
|
|
192
|
+
deepFreeze(value);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return Object.freeze(object);
|
|
192
196
|
}
|
|
193
|
-
|
|
197
|
+
exports.deepFreeze = deepFreeze;
|
|
198
|
+
/**
|
|
199
|
+
* Tries to synchronously detect the absolute path to the folder
|
|
200
|
+
* where the given `moduleName` is located.
|
|
201
|
+
*
|
|
202
|
+
* @param {string} moduleName The name of the module as it is written in package.json
|
|
203
|
+
* @param {string} filePath Full path to any of files that `moduleName` contains. Use
|
|
204
|
+
* `__filename` to find the root of the module where this helper is called.
|
|
205
|
+
* @returns {string?} Full path to the module root
|
|
206
|
+
*/
|
|
194
207
|
function getModuleRootSync(moduleName, filePath) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return null;
|
|
208
|
+
let currentDir = path_1.default.dirname(path_1.default.resolve(filePath));
|
|
209
|
+
let isAtFsRoot = false;
|
|
210
|
+
while (!isAtFsRoot) {
|
|
211
|
+
const manifestPath = path_1.default.join(currentDir, 'package.json');
|
|
212
|
+
try {
|
|
213
|
+
if (fs_1.default.existsSync(manifestPath) &&
|
|
214
|
+
JSON.parse(fs_1.default.readFileSync(manifestPath, 'utf8')).name === moduleName) {
|
|
215
|
+
return currentDir;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (ign) { }
|
|
219
|
+
currentDir = path_1.default.dirname(currentDir);
|
|
220
|
+
isAtFsRoot = currentDir.length <= path_1.default.dirname(currentDir).length;
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
213
223
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFQ01BX1NJWkVTIiwiT2JqZWN0IiwiZnJlZXplIiwiU1RSSU5HIiwiQk9PTEVBTiIsIk5VTUJFUiIsImxpbmtHbG9iYWxQYWNrYWdlIiwicGFja2FnZU5hbWUiLCJsb2ciLCJkZWJ1ZyIsImNtZCIsImlzV2luZG93cyIsImV4ZWMiLCJ0aW1lb3V0IiwiZXJyIiwibXNnIiwibWVzc2FnZSIsInN0ZGVyciIsIkVycm9yIiwicmVxdWlyZVBhY2thZ2UiLCJyZXF1aXJlIiwiZ2xvYmFsUGFja2FnZU5hbWUiLCJwYXRoIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJlbnYiLCJucG1fY29uZmlnX3ByZWZpeCIsImVycm9yQW5kVGhyb3ciLCJleHRyYWN0QWxsUHJvcGVydGllcyIsIm9iaiIsInN0cmluZ1Byb3BlcnRpZXMiLCJwcm9wIiwicHVzaCIsIl8iLCJpc0Z1bmN0aW9uIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiX2dldFNpemVPZk9iamVjdCIsInNlZW4iLCJvYmplY3QiLCJpc05pbCIsImJ5dGVzIiwicHJvcGVydGllcyIsImtleSIsImhhcyIsImFkZCIsImdldENhbGN1bGF0b3IiLCJleCIsIlJhbmdlRXJyb3IiLCJjYWxjdWxhdG9yIiwiaXNCdWZmZXIiLCJsZW5ndGgiLCJTeW1ib2wiLCJrZXlGb3IiLCJ0b1N0cmluZyIsImlzQXJyYXkiLCJtYXAiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyIiwiZ2V0T2JqZWN0U2l6ZSIsIldlYWtTZXQiLCJPQkpFQ1RTX01BUFBJTkciLCJXZWFrTWFwIiwiZ2V0T2JqZWN0SWQiLCJzZXQiLCJ1dWlkVjQiLCJnZXQiLCJkZWVwRnJlZXplIiwicHJvcE5hbWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImlnbiIsIm5hbWUiLCJ2YWx1ZSIsImdldE1vZHVsZVJvb3RTeW5jIiwibW9kdWxlTmFtZSIsImZpbGVQYXRoIiwiY3VycmVudERpciIsImRpcm5hbWUiLCJpc0F0RnNSb290IiwibWFuaWZlc3RQYXRoIiwiam9pbiIsIl9mcyIsImV4aXN0c1N5bmMiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzV2luZG93c30gZnJvbSAnLi9zeXN0ZW0nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtleGVjfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgX2ZzIGZyb20gJ2ZzJztcbmltcG9ydCB7djQgYXMgdXVpZFY0fSBmcm9tICd1dWlkJztcblxuY29uc3QgRUNNQV9TSVpFUyA9IE9iamVjdC5mcmVlemUoe1xuICBTVFJJTkc6IDIsXG4gIEJPT0xFQU46IDQsXG4gIE5VTUJFUjogOCxcbn0pO1xuXG4vKipcbiAqIEludGVybmFsIHV0aWxpdHkgdG8gbGluayBnbG9iYWwgcGFja2FnZSB0byBsb2NhbCBjb250ZXh0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lIC0gbmFtZSBvZiB0aGUgcGFja2FnZSB0byBsaW5rXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvbW1hbmQgZmFpbHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGlua0dsb2JhbFBhY2thZ2UocGFja2FnZU5hbWUpIHtcbiAgdHJ5IHtcbiAgICBsb2cuZGVidWcoYExpbmtpbmcgcGFja2FnZSAnJHtwYWNrYWdlTmFtZX0nYCk7XG4gICAgY29uc3QgY21kID0gaXNXaW5kb3dzKCkgPyAnbnBtLmNtZCcgOiAnbnBtJztcbiAgICBhd2FpdCBleGVjKGNtZCwgWydsaW5rJywgcGFja2FnZU5hbWVdLCB7dGltZW91dDogMjAwMDB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbXNnID0gYFVuYWJsZSB0byBsb2FkIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9JywgbGlua2luZyBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YDtcbiAgICBsb2cuZGVidWcobXNnKTtcbiAgICBpZiAoZXJyLnN0ZGVycikge1xuICAgICAgLy8gbG9nIHRoZSBzdGRlcnIgaWYgdGhlcmUsIGJ1dCBkbyBub3QgYWRkIHRvIHRocm93biBlcnJvciBhcyBpdCBpc1xuICAgICAgLy8gX3ZlcnlfIHZlcmJvc2VcbiAgICAgIGxvZy5kZWJ1ZyhlcnIuc3RkZXJyKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGV4dGVuZCBub2RlIGZ1bmN0aW9uYWxpdHksIGFsbG93aW5nIHVzIHRvIHJlcXVpcmVcbiAqIG1vZHVsZXMgdGhhdCBhcmUgaW5zdGFsbGVkIGdsb2JhbGx5LiBJZiB0aGUgcGFja2FnZSBjYW5ub3QgYmUgcmVxdWlyZWQsXG4gKiB0aGlzIHdpbGwgYXR0ZW1wdCB0byBsaW5rIHRoZSBwYWNrYWdlIGFuZCB0aGVuIHJlLXJlcXVpcmUgaXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFja2FnZU5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0byBiZSByZXF1aXJlZFxuICogQHJldHVybnMge1Byb21pc2U8dW5rbm93bj59IC0gdGhlIHBhY2thZ2Ugb2JqZWN0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHBhY2thZ2UgaXMgbm90IGZvdW5kIGxvY2FsbHkgb3IgZ2xvYmFsbHlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWlyZVBhY2thZ2UocGFja2FnZU5hbWUpIHtcbiAgLy8gZmlyc3QsIGdldCBpdCBpbiB0aGUgbm9ybWFsIHdheSAoc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvbW9kdWxlcy5odG1sI21vZHVsZXNfYWxsX3RvZ2V0aGVyKVxuICB0cnkge1xuICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBsb2NhbCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSdgKTtcbiAgICByZXR1cm4gcmVxdWlyZShwYWNrYWdlTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhgRmFpbGVkIHRvIGxvYWQgbG9jYWwgcGFja2FnZSAnJHtwYWNrYWdlTmFtZX0nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG5cbiAgLy8gc2Vjb25kLCBnZXQgaXQgZnJvbSB3aGVyZSBpdCBvdWdodCB0byBiZSBpbiB0aGUgZ2xvYmFsIG5vZGVfbW9kdWxlc1xuICB0cnkge1xuICAgIGNvbnN0IGdsb2JhbFBhY2thZ2VOYW1lID0gcGF0aC5yZXNvbHZlKFxuICAgICAgcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19wcmVmaXggPz8gJycsXG4gICAgICAnbGliJyxcbiAgICAgICdub2RlX21vZHVsZXMnLFxuICAgICAgcGFja2FnZU5hbWVcbiAgICApO1xuICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBnbG9iYWwgcGFja2FnZSAnJHtnbG9iYWxQYWNrYWdlTmFtZX0nYCk7XG4gICAgcmV0dXJuIHJlcXVpcmUoZ2xvYmFsUGFja2FnZU5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZGVidWcoYEZhaWxlZCB0byBsb2FkIGdsb2JhbCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICAvLyB0aGlyZCwgbGluayB0aGUgZmlsZSBhbmQgZ2V0IGxvY2FsbHlcbiAgdHJ5IHtcbiAgICBhd2FpdCBsaW5rR2xvYmFsUGFja2FnZShwYWNrYWdlTmFtZSk7XG4gICAgbG9nLmRlYnVnKGBSZXRyeWluZyBsb2FkIG9mIGxpbmtlZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSdgKTtcbiAgICByZXR1cm4gcmVxdWlyZShwYWNrYWdlTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gbG9hZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFsbFByb3BlcnRpZXMob2JqKSB7XG4gIGNvbnN0IHN0cmluZ1Byb3BlcnRpZXMgPSBbXTtcbiAgZm9yIChjb25zdCBwcm9wIGluIG9iaikge1xuICAgIHN0cmluZ1Byb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgfVxuICBpZiAoXy5pc0Z1bmN0aW9uKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpKSB7XG4gICAgc3RyaW5nUHJvcGVydGllcy5wdXNoKC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKSk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZ1Byb3BlcnRpZXM7XG59XG5cbmZ1bmN0aW9uIF9nZXRTaXplT2ZPYmplY3Qoc2Vlbiwgb2JqZWN0KSB7XG4gIGlmIChfLmlzTmlsKG9iamVjdCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGxldCBieXRlcyA9IDA7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBleHRyYWN0QWxsUHJvcGVydGllcyhvYmplY3QpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgLy8gRG8gbm90IHJlY2FsY3VsYXRlIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICBpZiAodHlwZW9mIG9iamVjdFtrZXldID09PSAnb2JqZWN0JyAmJiAhXy5pc05pbChvYmplY3Rba2V5XSkpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzZWVuLmFkZChvYmplY3Rba2V5XSk7XG4gICAgfVxuXG4gICAgYnl0ZXMgKz0gZ2V0Q2FsY3VsYXRvcihzZWVuKShrZXkpO1xuICAgIHRyeSB7XG4gICAgICBieXRlcyArPSBnZXRDYWxjdWxhdG9yKHNlZW4pKG9iamVjdFtrZXldKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4IGluc3RhbmNlb2YgUmFuZ2VFcnJvcikge1xuICAgICAgICAvLyBjaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQsIGZpbmFsIHJlc3VsdCBtaWdodCBiZSBpbmNvcnJlY3RcbiAgICAgICAgLy8gbGV0J3MgYmUgbmljZSBhbmQgbm90IHRocm93IGFuIGV4Y2VwdGlvblxuICAgICAgICBieXRlcyA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5mdW5jdGlvbiBnZXRDYWxjdWxhdG9yKHNlZW4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNhbGN1bGF0b3Iob2JqKSB7XG4gICAgaWYgKF8uaXNCdWZmZXIob2JqKSkge1xuICAgICAgcmV0dXJuIG9iai5sZW5ndGg7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlb2Ygb2JqKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gb2JqLmxlbmd0aCAqIEVDTUFfU0laRVMuU1RSSU5HO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiBFQ01BX1NJWkVTLkJPT0xFQU47XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gRUNNQV9TSVpFUy5OVU1CRVI7XG4gICAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgICByZXR1cm4gXy5pc0Z1bmN0aW9uKFN5bWJvbC5rZXlGb3IpICYmIFN5bWJvbC5rZXlGb3Iob2JqKVxuICAgICAgICAgID8gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChTeW1ib2wua2V5Rm9yKG9iaikpLmxlbmd0aCAqIEVDTUFfU0laRVMuU1RSSU5HXG4gICAgICAgICAgOiAob2JqLnRvU3RyaW5nKCkubGVuZ3RoIC0gOCkgKiBFQ01BX1NJWkVTLlNUUklORztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiBfLmlzQXJyYXkob2JqKVxuICAgICAgICAgID8gb2JqLm1hcChnZXRDYWxjdWxhdG9yKHNlZW4pKS5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3VyciwgMClcbiAgICAgICAgICA6IF9nZXRTaXplT2ZPYmplY3Qoc2Vlbiwgb2JqKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGluLWRlcHRoIHNpemUgaW4gbWVtb3J5IG9mIHRoZSBwcm92aWRlZCBvYmplY3QuXG4gKiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gaXMgYm9ycm93ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWlrdGFtL3NpemVvZi5cbiAqXG4gKiBAcGFyYW0geyp9IG9iaiBBbiBvYmplY3Qgd2hvc2Ugc2l6ZSBzaG91bGQgYmUgY2FsY3VsYXRlZFxuICogQHJldHVybnMge251bWJlcn0gT2JqZWN0IHNpemUgaW4gYnl0ZXMuXG4gKi9cbmZ1bmN0aW9uIGdldE9iamVjdFNpemUob2JqKSB7XG4gIHJldHVybiBnZXRDYWxjdWxhdG9yKG5ldyBXZWFrU2V0KCkpKG9iaik7XG59XG5cbmNvbnN0IE9CSkVDVFNfTUFQUElORyA9IG5ldyBXZWFrTWFwKCk7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBhIHVuaXF1ZSBvYmplY3QgaWRlbnRpZmllclxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgQW55IHZhbGlkIEVDTUEgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHV1aWRWNCBzdHJpbmcgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGdpdmVuIG9iamVjdFxuICovXG5mdW5jdGlvbiBnZXRPYmplY3RJZChvYmplY3QpIHtcbiAgaWYgKCFPQkpFQ1RTX01BUFBJTkcuaGFzKG9iamVjdCkpIHtcbiAgICBPQkpFQ1RTX01BUFBJTkcuc2V0KG9iamVjdCwgdXVpZFY0KCkpO1xuICB9XG4gIHJldHVybiBPQkpFQ1RTX01BUFBJTkcuZ2V0KG9iamVjdCk7XG59XG5cbi8qKlxuICogUGVyZm9ybSBkZWVwIGZyZWV6ZSBvZiB0aGUgZ2l2ZW4gb2JqZWN0IChlLiBnLlxuICogYWxsIG5lc3RlZCBvYmplY3RzIGFsc28gYmVjb21lIGltbXV0YWJsZSkuXG4gKiBJZiB0aGUgcGFzc2VkIG9iamVjdCBpcyBvZiBhIHBsYWluIHR5cGVcbiAqIHRoZW4gbm8gY2hhbmdlIGlzIGRvbmUgYW5kIHRoZSBzYW1lIG9iamVjdFxuICogaXMgcmV0dXJuZWQuXG4gKiAhIFRoaXMgZnVuY3Rpb24gY2hhbmdlcyB0aGUgZ2l2ZW4gb2JqZWN0LFxuICogc28gaXQgYmVjb21lcyBpbW11dGFibGUuXG4gKlxuICogQHBhcmFtIHsqfSBvYmplY3QgQW55IHZhbGlkIEVDTUEgb2JqZWN0XG4gKiBAcmV0dXJucyB7Kn0gVGhlIHNhbWUgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCB0byB0aGVcbiAqIGZ1bmN0aW9uIGFmdGVyIGl0IHdhcyBtYWRlIGltbXV0YWJsZS5cbiAqL1xuZnVuY3Rpb24gZGVlcEZyZWV6ZShvYmplY3QpIHtcbiAgbGV0IHByb3BOYW1lcztcbiAgdHJ5IHtcbiAgICBwcm9wTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgZGVlcEZyZWV6ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG9iamVjdCk7XG59XG5cbi8qKlxuICogVHJpZXMgdG8gc3luY2hyb25vdXNseSBkZXRlY3QgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGZvbGRlclxuICogd2hlcmUgdGhlIGdpdmVuIGBtb2R1bGVOYW1lYCBpcyBsb2NhdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYXMgaXQgaXMgd3JpdHRlbiBpbiBwYWNrYWdlLmpzb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aCBGdWxsIHBhdGggdG8gYW55IG9mIGZpbGVzIHRoYXQgYG1vZHVsZU5hbWVgIGNvbnRhaW5zLiBVc2VcbiAqIGBfX2ZpbGVuYW1lYCB0byBmaW5kIHRoZSByb290IG9mIHRoZSBtb2R1bGUgd2hlcmUgdGhpcyBoZWxwZXIgaXMgY2FsbGVkLlxuICogQHJldHVybnMge3N0cmluZz99IEZ1bGwgcGF0aCB0byB0aGUgbW9kdWxlIHJvb3RcbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlUm9vdFN5bmMgKG1vZHVsZU5hbWUsIGZpbGVQYXRoKSB7XG4gIGxldCBjdXJyZW50RGlyID0gcGF0aC5kaXJuYW1lKHBhdGgucmVzb2x2ZShmaWxlUGF0aCkpO1xuICBsZXQgaXNBdEZzUm9vdCA9IGZhbHNlO1xuICB3aGlsZSAoIWlzQXRGc1Jvb3QpIHtcbiAgICBjb25zdCBtYW5pZmVzdFBhdGggPSBwYXRoLmpvaW4oY3VycmVudERpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoX2ZzLmV4aXN0c1N5bmMobWFuaWZlc3RQYXRoKSAmJlxuICAgICAgICAgIEpTT04ucGFyc2UoX2ZzLnJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsICd1dGY4JykpLm5hbWUgPT09IG1vZHVsZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnREaXI7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIGN1cnJlbnREaXIgPSBwYXRoLmRpcm5hbWUoY3VycmVudERpcik7XG4gICAgaXNBdEZzUm9vdCA9IGN1cnJlbnREaXIubGVuZ3RoIDw9IHBhdGguZGlybmFtZShjdXJyZW50RGlyKS5sZW5ndGg7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB7cmVxdWlyZVBhY2thZ2UsIGdldE9iamVjdFNpemUsIGdldE9iamVjdElkLCBkZWVwRnJlZXplLCBnZXRNb2R1bGVSb290U3luY307XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7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
|
|
224
|
+
exports.getModuleRootSync = getModuleRootSync;
|
|
225
|
+
//# sourceMappingURL=node.js.map
|
package/build/lib/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","names":["ECMA_SIZES","Object","freeze","STRING","BOOLEAN","NUMBER","linkGlobalPackage","packageName","log","debug","cmd","isWindows","exec","timeout","err","msg","message","stderr","Error","requirePackage","require","globalPackageName","path","resolve","process","env","npm_config_prefix","errorAndThrow","extractAllProperties","obj","stringProperties","prop","push","_","isFunction","getOwnPropertySymbols","_getSizeOfObject","seen","object","isNil","bytes","properties","key","has","add","getCalculator","ex","RangeError","calculator","isBuffer","length","Symbol","keyFor","toString","isArray","map","reduce","acc","curr","getObjectSize","WeakSet","OBJECTS_MAPPING","WeakMap","getObjectId","set","uuidV4","get","deepFreeze","propNames","getOwnPropertyNames","ign","name","value","getModuleRootSync","moduleName","filePath","currentDir","dirname","isAtFsRoot","manifestPath","join","_fs","existsSync","JSON","parse","readFileSync"],"sources":["../../lib/node.js"],"sourcesContent":["import {isWindows} from './system';\nimport log from './logger';\nimport _ from 'lodash';\nimport {exec} from 'teen_process';\nimport path from 'path';\nimport _fs from 'fs';\nimport {v4 as uuidV4} from 'uuid';\n\nconst ECMA_SIZES = Object.freeze({\n STRING: 2,\n BOOLEAN: 4,\n NUMBER: 8,\n});\n\n/**\n * Internal utility to link global package to local context\n *\n * @param {string} packageName - name of the package to link\n * @throws {Error} If the command fails\n */\nasync function linkGlobalPackage(packageName) {\n try {\n log.debug(`Linking package '${packageName}'`);\n const cmd = isWindows() ? 'npm.cmd' : 'npm';\n await exec(cmd, ['link', packageName], {timeout: 20000});\n } catch (err) {\n const msg = `Unable to load package '${packageName}', linking failed: ${err.message}`;\n log.debug(msg);\n if (err.stderr) {\n // log the stderr if there, but do not add to thrown error as it is\n // _very_ verbose\n log.debug(err.stderr);\n }\n throw new Error(msg);\n }\n}\n\n/**\n * Utility function to extend node functionality, allowing us to require\n * modules that are installed globally. If the package cannot be required,\n * this will attempt to link the package and then re-require it\n *\n * @param {string} packageName - the name of the package to be required\n * @returns {Promise<unknown>} - the package object\n * @throws {Error} If the package is not found locally or globally\n */\nasync function requirePackage(packageName) {\n // first, get it in the normal way (see https://nodejs.org/api/modules.html#modules_all_together)\n try {\n log.debug(`Loading local package '${packageName}'`);\n return require(packageName);\n } catch (err) {\n log.debug(`Failed to load local package '${packageName}': ${err.message}`);\n }\n\n // second, get it from where it ought to be in the global node_modules\n try {\n const globalPackageName = path.resolve(\n process.env.npm_config_prefix ?? '',\n 'lib',\n 'node_modules',\n packageName\n );\n log.debug(`Loading global package '${globalPackageName}'`);\n return require(globalPackageName);\n } catch (err) {\n log.debug(`Failed to load global package '${packageName}': ${err.message}`);\n }\n\n // third, link the file and get locally\n try {\n await linkGlobalPackage(packageName);\n log.debug(`Retrying load of linked package '${packageName}'`);\n return require(packageName);\n } catch (err) {\n log.errorAndThrow(`Unable to load package '${packageName}': ${err.message}`);\n }\n}\n\nfunction extractAllProperties(obj) {\n const stringProperties = [];\n for (const prop in obj) {\n stringProperties.push(prop);\n }\n if (_.isFunction(Object.getOwnPropertySymbols)) {\n stringProperties.push(...Object.getOwnPropertySymbols(obj));\n }\n return stringProperties;\n}\n\nfunction _getSizeOfObject(seen, object) {\n if (_.isNil(object)) {\n return 0;\n }\n\n let bytes = 0;\n const properties = extractAllProperties(object);\n for (const key of properties) {\n // Do not recalculate circular references\n if (typeof object[key] === 'object' && !_.isNil(object[key])) {\n if (seen.has(object[key])) {\n continue;\n }\n seen.add(object[key]);\n }\n\n bytes += getCalculator(seen)(key);\n try {\n bytes += getCalculator(seen)(object[key]);\n } catch (ex) {\n if (ex instanceof RangeError) {\n // circular reference detected, final result might be incorrect\n // let's be nice and not throw an exception\n bytes = 0;\n }\n }\n }\n\n return bytes;\n}\n\nfunction getCalculator(seen) {\n return function calculator(obj) {\n if (_.isBuffer(obj)) {\n return obj.length;\n }\n\n switch (typeof obj) {\n case 'string':\n return obj.length * ECMA_SIZES.STRING;\n case 'boolean':\n return ECMA_SIZES.BOOLEAN;\n case 'number':\n return ECMA_SIZES.NUMBER;\n case 'symbol':\n return _.isFunction(Symbol.keyFor) && Symbol.keyFor(obj)\n ? /** @type {string} */ (Symbol.keyFor(obj)).length * ECMA_SIZES.STRING\n : (obj.toString().length - 8) * ECMA_SIZES.STRING;\n case 'object':\n return _.isArray(obj)\n ? obj.map(getCalculator(seen)).reduce((acc, curr) => acc + curr, 0)\n : _getSizeOfObject(seen, obj);\n default:\n return 0;\n }\n };\n}\n\n/**\n * Calculate the in-depth size in memory of the provided object.\n * The original implementation is borrowed from https://github.com/miktam/sizeof.\n *\n * @param {*} obj An object whose size should be calculated\n * @returns {number} Object size in bytes.\n */\nfunction getObjectSize(obj) {\n return getCalculator(new WeakSet())(obj);\n}\n\nconst OBJECTS_MAPPING = new WeakMap();\n\n/**\n * Calculates a unique object identifier\n *\n * @param {object} object Any valid ECMA object\n * @returns {string} A uuidV4 string that uniquely identifies given object\n */\nfunction getObjectId(object) {\n if (!OBJECTS_MAPPING.has(object)) {\n OBJECTS_MAPPING.set(object, uuidV4());\n }\n return OBJECTS_MAPPING.get(object);\n}\n\n/**\n * Perform deep freeze of the given object (e. g.\n * all nested objects also become immutable).\n * If the passed object is of a plain type\n * then no change is done and the same object\n * is returned.\n * ! This function changes the given object,\n * so it becomes immutable.\n *\n * @param {*} object Any valid ECMA object\n * @returns {*} The same object that was passed to the\n * function after it was made immutable.\n */\nfunction deepFreeze(object) {\n let propNames;\n try {\n propNames = Object.getOwnPropertyNames(object);\n } catch (ign) {\n return object;\n }\n for (const name of propNames) {\n const value = object[name];\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n}\n\n/**\n * Tries to synchronously detect the absolute path to the folder\n * where the given `moduleName` is located.\n *\n * @param {string} moduleName The name of the module as it is written in package.json\n * @param {string} filePath Full path to any of files that `moduleName` contains. Use\n * `__filename` to find the root of the module where this helper is called.\n * @returns {string?} Full path to the module root\n */\nfunction getModuleRootSync (moduleName, filePath) {\n let currentDir = path.dirname(path.resolve(filePath));\n let isAtFsRoot = false;\n while (!isAtFsRoot) {\n const manifestPath = path.join(currentDir, 'package.json');\n try {\n if (_fs.existsSync(manifestPath) &&\n JSON.parse(_fs.readFileSync(manifestPath, 'utf8')).name === moduleName) {\n return currentDir;\n }\n } catch (ign) {}\n currentDir = path.dirname(currentDir);\n isAtFsRoot = currentDir.length <= path.dirname(currentDir).length;\n }\n return null;\n}\n\nexport {requirePackage, getObjectSize, getObjectId, deepFreeze, getModuleRootSync};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../lib/node.js"],"names":[],"mappings":"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"}
|
package/build/lib/npm.d.ts
CHANGED
|
@@ -25,9 +25,9 @@ export class NPM {
|
|
|
25
25
|
* @param {string} cmd
|
|
26
26
|
* @param {string[]} args
|
|
27
27
|
* @param {ExecOpts} opts
|
|
28
|
-
* @param {Omit<
|
|
28
|
+
* @param {Omit<TeenProcessExecOptions, 'cwd'>} [execOpts]
|
|
29
29
|
*/
|
|
30
|
-
exec(cmd: string, args: string[], opts: ExecOpts, execOpts?: Omit<import("teen_process").
|
|
30
|
+
exec(cmd: string, args: string[], opts: ExecOpts, execOpts?: Omit<import("teen_process").TeenProcessExecOptions, "cwd"> | undefined): Promise<import("teen_process").TeenProcessExecResult<string> & {
|
|
31
31
|
json?: any;
|
|
32
32
|
}>;
|
|
33
33
|
/**
|
|
@@ -65,9 +65,9 @@ export class NPM {
|
|
|
65
65
|
* @param {string} cwd
|
|
66
66
|
* @param {string} pkgName
|
|
67
67
|
* @param {InstallPackageOpts} [opts]
|
|
68
|
-
* @returns {Promise<
|
|
68
|
+
* @returns {Promise<NpmInstallReceipt>}
|
|
69
69
|
*/
|
|
70
|
-
installPackage(cwd: string, pkgName: string, { pkgVer }?: InstallPackageOpts | undefined): Promise<
|
|
70
|
+
installPackage(cwd: string, pkgName: string, { pkgVer, installType }?: InstallPackageOpts | undefined): Promise<NpmInstallReceipt>;
|
|
71
71
|
/**
|
|
72
72
|
* @param {string} cwd
|
|
73
73
|
* @param {string} pkg
|
|
@@ -79,6 +79,10 @@ export const npm: NPM;
|
|
|
79
79
|
* Options for {@link NPM.installPackage }
|
|
80
80
|
*/
|
|
81
81
|
export type InstallPackageOpts = {
|
|
82
|
+
/**
|
|
83
|
+
* - whether to install from a local path or from npm
|
|
84
|
+
*/
|
|
85
|
+
installType?: import("type-fest").LiteralUnion<"local", string> | undefined;
|
|
82
86
|
/**
|
|
83
87
|
* - the version of the package to install
|
|
84
88
|
*/
|
|
@@ -101,4 +105,15 @@ export type ExecOpts = {
|
|
|
101
105
|
*/
|
|
102
106
|
lockFile?: string | undefined;
|
|
103
107
|
};
|
|
108
|
+
export type TeenProcessExecOptions = import('teen_process').TeenProcessExecOptions;
|
|
109
|
+
export type NpmInstallReceipt = {
|
|
110
|
+
/**
|
|
111
|
+
* - Path to installed package
|
|
112
|
+
*/
|
|
113
|
+
installPath: string;
|
|
114
|
+
/**
|
|
115
|
+
* - Package data
|
|
116
|
+
*/
|
|
117
|
+
pkg: import('type-fest').PackageJson;
|
|
118
|
+
};
|
|
104
119
|
//# sourceMappingURL=npm.d.ts.map
|
package/build/lib/npm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../lib/npm.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,6CAAqF;AAErF;;GAEG;AACH,oDAAkG;AAElG;;GAEG;AACH;IACE;;;;OAIG;IACH,gCAEC;IAED;;;;;;;;;OASG;IACH,UALW,MAAM,QACN,MAAM,EAAE,QACR,QAAQ;
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../lib/npm.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,6CAAqF;AAErF;;GAEG;AACH,oDAAkG;AAElG;;GAEG;AACH;IACE;;;;OAIG;IACH,gCAEC;IAED;;;;;;;;;OASG;IACH,UALW,MAAM,QACN,MAAM,EAAE,QACR,QAAQ;eAsByD,GAAG;OAyB9E;IAED;;;;OAIG;IACH,sBAJW,MAAM,OACN,MAAM,GACJ,QAAQ,MAAM,QAAE,CAkB5B;IAED;;;;;OAKG;IACH,iCALW,MAAM,OACN,MAAM,cACN,MAAM,GACJ,QAAQ,MAAM,QAAE,CAiB5B;IAED;;;;OAIG;IACH,UAHW,MAAM,0CAKhB;IAED;;;;;;;;;OASG;IACH,6CALW,MAAM,eACN,MAAM,MAAM,CAAC,GAEZ,MAAM,GAAC,IAAI,CAmCtB;IAED;;;;;;OAMG;IACH,oBALW,MAAM,WACN,MAAM,6DAEJ,QAAQ,iBAAiB,CAAC,CAwDtC;IAED;;;OAGG;IACH,sBAHW,MAAM,OACN,MAAM,iBAOhB;CACF;AAED,sBAA6B;;;;;;;;;;;;;;;;;;;;;SAYf,MAAM;;;;;;;;;;qCAMP,OAAO,cAAc,EAAE,sBAAsB;;;;;iBAK5C,MAAM;;;;SACN,OAAO,WAAW,EAAE,WAAW"}
|