@appium/support 2.61.0 → 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.
Files changed (59) hide show
  1. package/build/lib/console.d.ts +1 -1
  2. package/build/lib/console.js +169 -105
  3. package/build/lib/console.js.map +1 -1
  4. package/build/lib/env.js +142 -117
  5. package/build/lib/env.js.map +1 -1
  6. package/build/lib/fs.d.ts +9 -2
  7. package/build/lib/fs.d.ts.map +1 -1
  8. package/build/lib/fs.js +358 -246
  9. package/build/lib/fs.js.map +1 -1
  10. package/build/lib/image-util.js +139 -124
  11. package/build/lib/image-util.js.map +1 -1
  12. package/build/lib/index.js +64 -103
  13. package/build/lib/index.js.map +1 -1
  14. package/build/lib/log-internal.d.ts +4 -27
  15. package/build/lib/log-internal.d.ts.map +1 -1
  16. package/build/lib/log-internal.js +141 -123
  17. package/build/lib/log-internal.js.map +1 -1
  18. package/build/lib/logger.d.ts +1 -1
  19. package/build/lib/logger.d.ts.map +1 -1
  20. package/build/lib/logger.js +5 -14
  21. package/build/lib/logger.js.map +1 -1
  22. package/build/lib/logging.d.ts +3 -4
  23. package/build/lib/logging.d.ts.map +1 -1
  24. package/build/lib/logging.js +139 -110
  25. package/build/lib/logging.js.map +1 -1
  26. package/build/lib/mjpeg.js +169 -141
  27. package/build/lib/mjpeg.js.map +1 -1
  28. package/build/lib/mkdirp.js +7 -13
  29. package/build/lib/mkdirp.js.map +1 -1
  30. package/build/lib/net.d.ts.map +1 -1
  31. package/build/lib/net.js +278 -254
  32. package/build/lib/net.js.map +1 -1
  33. package/build/lib/node.js +203 -192
  34. package/build/lib/node.js.map +1 -1
  35. package/build/lib/npm.d.ts +19 -4
  36. package/build/lib/npm.d.ts.map +1 -1
  37. package/build/lib/npm.js +277 -228
  38. package/build/lib/npm.js.map +1 -1
  39. package/build/lib/plist.js +145 -136
  40. package/build/lib/plist.js.map +1 -1
  41. package/build/lib/process.js +41 -42
  42. package/build/lib/process.js.map +1 -1
  43. package/build/lib/system.js +39 -56
  44. package/build/lib/system.js.map +1 -1
  45. package/build/lib/tempdir.js +112 -73
  46. package/build/lib/tempdir.js.map +1 -1
  47. package/build/lib/timing.js +99 -84
  48. package/build/lib/timing.js.map +1 -1
  49. package/build/lib/util.js +454 -356
  50. package/build/lib/util.js.map +1 -1
  51. package/build/lib/zip.js +469 -423
  52. package/build/lib/zip.js.map +1 -1
  53. package/build/tsconfig.tsbuildinfo +1 -1
  54. package/lib/fs.js +15 -1
  55. package/lib/log-internal.js +12 -16
  56. package/lib/logging.js +2 -3
  57. package/lib/net.js +15 -6
  58. package/lib/npm.js +28 -18
  59. package/package.json +20 -19
@@ -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
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.deepFreeze = deepFreeze;
7
- exports.getModuleRootSync = getModuleRootSync;
8
- exports.getObjectId = getObjectId;
9
- exports.getObjectSize = getObjectSize;
10
- exports.requirePackage = requirePackage;
11
-
12
- require("source-map-support/register");
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
- STRING: 2,
32
- BOOLEAN: 4,
33
- NUMBER: 8
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
- try {
38
- _logger.default.debug(`Linking package '${packageName}'`);
39
-
40
- const cmd = (0, _system.isWindows)() ? 'npm.cmd' : 'npm';
41
- await (0, _teen_process.exec)(cmd, ['link', packageName], {
42
- timeout: 20000
43
- });
44
- } catch (err) {
45
- const msg = `Unable to load package '${packageName}', linking failed: ${err.message}`;
46
-
47
- _logger.default.debug(msg);
48
-
49
- if (err.stderr) {
50
- _logger.default.debug(err.stderr);
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
- try {
59
- _logger.default.debug(`Loading local package '${packageName}'`);
60
-
61
- return require(packageName);
62
- } catch (err) {
63
- _logger.default.debug(`Failed to load local package '${packageName}': ${err.message}`);
64
- }
65
-
66
- try {
67
- const globalPackageName = _path.default.resolve(process.env.npm_config_prefix ?? '', 'lib', 'node_modules', packageName);
68
-
69
- _logger.default.debug(`Loading global package '${globalPackageName}'`);
70
-
71
- return require(globalPackageName);
72
- } catch (err) {
73
- _logger.default.debug(`Failed to load global package '${packageName}': ${err.message}`);
74
- }
75
-
76
- try {
77
- await linkGlobalPackage(packageName);
78
-
79
- _logger.default.debug(`Retrying load of linked package '${packageName}'`);
80
-
81
- return require(packageName);
82
- } catch (err) {
83
- _logger.default.errorAndThrow(`Unable to load package '${packageName}': ${err.message}`);
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
- const stringProperties = [];
89
-
90
- for (const prop in obj) {
91
- stringProperties.push(prop);
92
- }
93
-
94
- if (_lodash.default.isFunction(Object.getOwnPropertySymbols)) {
95
- stringProperties.push(...Object.getOwnPropertySymbols(obj));
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
- if (_lodash.default.isNil(object)) {
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
- return getCalculator(new WeakSet())(obj);
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
- if (!OBJECTS_MAPPING.has(object)) {
168
- OBJECTS_MAPPING.set(object, (0, _uuid.v4)());
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
- let propNames;
176
-
177
- try {
178
- propNames = Object.getOwnPropertyNames(object);
179
- } catch (ign) {
180
- return object;
181
- }
182
-
183
- for (const name of propNames) {
184
- const value = object[name];
185
-
186
- if (value && typeof value === 'object') {
187
- deepFreeze(value);
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
- let currentDir = _path.default.dirname(_path.default.resolve(filePath));
196
-
197
- let isAtFsRoot = false;
198
-
199
- while (!isAtFsRoot) {
200
- const manifestPath = _path.default.join(currentDir, 'package.json');
201
-
202
- try {
203
- if (_fs2.default.existsSync(manifestPath) && JSON.parse(_fs2.default.readFileSync(manifestPath, 'utf8')).name === moduleName) {
204
- return currentDir;
205
- }
206
- } catch (ign) {}
207
-
208
- currentDir = _path.default.dirname(currentDir);
209
- isAtFsRoot = currentDir.length <= _path.default.dirname(currentDir).length;
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
@@ -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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"}
@@ -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<import('teen_process').ExecOptions, 'cwd'>} [execOpts]
28
+ * @param {Omit<TeenProcessExecOptions, 'cwd'>} [execOpts]
29
29
  */
30
- exec(cmd: string, args: string[], opts: ExecOpts, execOpts?: Omit<import("teen_process").ExecOptions, "cwd"> | undefined): Promise<import("teen_process").ExecResult<string> & {
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<import('type-fest').PackageJson>}
68
+ * @returns {Promise<NpmInstallReceipt>}
69
69
  */
70
- installPackage(cwd: string, pkgName: string, { pkgVer }?: InstallPackageOpts | undefined): Promise<import('type-fest').PackageJson>;
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
@@ -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;eAsB8C,GAAG;OAyBnE;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,gDAEJ,QAAQ,OAAO,WAAW,EAAE,WAAW,CAAC,CAyDpD;IAED;;;OAGG;IACH,sBAHW,MAAM,OACN,MAAM,iBAOhB;CACF;AAED,sBAA6B;;;;;;;;;;;;;;;;;SAWf,MAAM"}
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"}