socket 0.14.11 → 0.14.13
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/README.md +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +617 -430
- package/dist/npm-injection.js +9 -9
- package/dist/path-resolve.d.ts +3 -6
- package/dist/path-resolve.js +119 -70
- package/dist/vendor.js +184 -1368
- package/package.json +48 -27
package/dist/npm-injection.js
CHANGED
|
@@ -4,18 +4,18 @@ var vendor = require('./vendor.js');
|
|
|
4
4
|
var require$$0 = require('node:fs');
|
|
5
5
|
var require$$1 = require('node:path');
|
|
6
6
|
var link = require('./link.js');
|
|
7
|
-
var require$$
|
|
7
|
+
var require$$2$1 = require('node:events');
|
|
8
8
|
var require$$4 = require('node:https');
|
|
9
9
|
var require$$3 = require('node:readline');
|
|
10
|
-
var require$$
|
|
11
|
-
var require$$8 = require('node:timers/promises');
|
|
10
|
+
var require$$5 = require('node:stream');
|
|
11
|
+
var require$$8$1 = require('node:timers/promises');
|
|
12
12
|
var require$$3$1 = require('@socketsecurity/config');
|
|
13
13
|
var require$$1$1 = require('node:net');
|
|
14
14
|
var require$$2 = require('node:os');
|
|
15
15
|
var require$$6 = require('../package.json');
|
|
16
16
|
var sdk = require('./sdk.js');
|
|
17
17
|
var pathResolve = require('./path-resolve.js');
|
|
18
|
-
var require$$
|
|
18
|
+
var require$$8 = require('pacote');
|
|
19
19
|
|
|
20
20
|
var npmInjection$1 = {};
|
|
21
21
|
|
|
@@ -34,7 +34,7 @@ var _nodeNet = require$$1$1;
|
|
|
34
34
|
var _nodeOs = require$$2;
|
|
35
35
|
var _nodePath$2 = require$$1;
|
|
36
36
|
var _nodeReadline$1 = require$$3;
|
|
37
|
-
var _nodeStream$1 = require$$
|
|
37
|
+
var _nodeStream$1 = require$$5;
|
|
38
38
|
var _package = require$$6;
|
|
39
39
|
var _misc$1 = sdk.misc;
|
|
40
40
|
const NEWLINE_CHAR_CODE = 10; /*'\n'*/
|
|
@@ -382,13 +382,13 @@ Object.defineProperty(arborist, "__esModule", {
|
|
|
382
382
|
});
|
|
383
383
|
arborist.SafeArborist = void 0;
|
|
384
384
|
arborist.installSafeArborist = installSafeArborist;
|
|
385
|
-
var _nodeEvents = require$$
|
|
385
|
+
var _nodeEvents = require$$2$1;
|
|
386
386
|
var _nodeFs$1 = require$$0;
|
|
387
387
|
var _nodeHttps = require$$4;
|
|
388
388
|
var _nodePath$1 = require$$1;
|
|
389
389
|
var _nodeReadline = require$$3;
|
|
390
|
-
var _nodeStream = require$$
|
|
391
|
-
var _promises = require$$8;
|
|
390
|
+
var _nodeStream = require$$5;
|
|
391
|
+
var _promises = require$$8$1;
|
|
392
392
|
var _config = require$$3$1;
|
|
393
393
|
var _chalk = _interopRequireDefault(vendor.source);
|
|
394
394
|
var _isInteractive = _interopRequireDefault(vendor.isInteractive);
|
|
@@ -437,7 +437,7 @@ let tarball;
|
|
|
437
437
|
try {
|
|
438
438
|
tarball = require(_nodePath$1.join(npmNmPath, 'pacote')).tarball;
|
|
439
439
|
} catch {
|
|
440
|
-
tarball = require$$
|
|
440
|
+
tarball = require$$8.tarball;
|
|
441
441
|
}
|
|
442
442
|
const Arborist = require(arboristClassPath);
|
|
443
443
|
const Edge = require(arboristEdgeClassPath);
|
package/dist/path-resolve.d.ts
CHANGED
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
import { SocketYml } from '@socketsecurity/config';
|
|
3
3
|
import { SocketSdkReturnType } from '@socketsecurity/sdk';
|
|
4
4
|
declare function directoryPatterns(): string[];
|
|
5
|
-
declare function arrayUnique<T>(array: T[]): T[];
|
|
6
|
-
declare function getPackageFiles(cwd: string, inputPaths: string[], config: SocketYml | undefined, supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data'], debugLog: typeof console.error): Promise<string[]>;
|
|
7
|
-
declare function getPackageFilesFullScans(cwd: string, inputPaths: string[], supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data'], debugLog: typeof console.error): Promise<string[]>;
|
|
8
|
-
declare function mapGlobResultToFiles(entries: string[], supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data']): Promise<string[]>;
|
|
9
|
-
declare function mapGlobEntryToFiles(entry: string, supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data']): Promise<string[]>;
|
|
10
5
|
declare function findRoot(filepath: string): string | undefined;
|
|
11
|
-
|
|
6
|
+
declare function getPackageFiles(cwd: string, inputPaths: string[], config: SocketYml | undefined, supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data'], debugLog?: typeof console.error): Promise<string[]>;
|
|
7
|
+
declare function getPackageFilesFullScans(cwd: string, inputPaths: string[], supportedFiles: SocketSdkReturnType<'getReportSupportedFiles'>['data'], debugLog?: typeof console.error): Promise<string[]>;
|
|
8
|
+
export { directoryPatterns, findRoot, getPackageFiles, getPackageFilesFullScans };
|
package/dist/path-resolve.js
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var require$$1 = require('node:fs/promises');
|
|
4
|
-
var require$$1
|
|
5
|
-
var
|
|
6
|
-
var require$$3 = require('
|
|
3
|
+
var require$$1$1 = require('node:fs/promises');
|
|
4
|
+
var require$$1 = require('node:path');
|
|
5
|
+
var require$$2 = require('ignore');
|
|
6
|
+
var require$$3 = require('micromatch');
|
|
7
|
+
var require$$4 = require('tinyglobby');
|
|
7
8
|
|
|
8
9
|
var pathResolve = {};
|
|
9
10
|
|
|
10
|
-
var arrays = {};
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(arrays, "__esModule", {
|
|
13
|
-
value: true
|
|
14
|
-
});
|
|
15
|
-
arrays.arrayUnique = arrayUnique;
|
|
16
|
-
function arrayUnique(array) {
|
|
17
|
-
return [...new Set(array)];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
11
|
var ignoreByDefault = {};
|
|
21
12
|
|
|
22
13
|
Object.defineProperty(ignoreByDefault, "__esModule", {
|
|
@@ -56,68 +47,101 @@ Object.defineProperty(pathResolve, "__esModule", {
|
|
|
56
47
|
pathResolve.findRoot = findRoot;
|
|
57
48
|
pathResolve.getPackageFiles = getPackageFiles;
|
|
58
49
|
pathResolve.getPackageFilesFullScans = getPackageFilesFullScans;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var _ignore = require$$3;
|
|
65
|
-
var _arrays = arrays;
|
|
50
|
+
var _promises = require$$1$1;
|
|
51
|
+
var _nodePath = require$$1;
|
|
52
|
+
var _ignore = require$$2;
|
|
53
|
+
var _micromatch = require$$3;
|
|
54
|
+
var _tinyglobby = require$$4;
|
|
66
55
|
var _ignoreByDefault = ignoreByDefault;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
onlyFiles: true,
|
|
75
|
-
unique: true
|
|
76
|
-
};
|
|
77
|
-
async function getPackageFiles(cwd, inputPaths, config, supportedFiles, debugLog) {
|
|
78
|
-
debugLog(`Globbed resolving ${inputPaths.length} paths:`, inputPaths);
|
|
79
|
-
|
|
80
|
-
// TODO: Does not support `~/` paths
|
|
81
|
-
const entries = await (0, _globby.globby)(inputPaths, {
|
|
82
|
-
...BASE_GLOBBY_OPTS,
|
|
83
|
-
cwd,
|
|
84
|
-
onlyFiles: false
|
|
85
|
-
});
|
|
86
|
-
debugLog(`Globbed resolved ${inputPaths.length} paths to ${entries.length} paths:`, entries);
|
|
87
|
-
const packageFiles = await mapGlobResultToFiles(entries, supportedFiles);
|
|
88
|
-
debugLog(`Mapped ${entries.length} entries to ${packageFiles.length} files:`, packageFiles);
|
|
89
|
-
const includedPackageFiles = config?.projectIgnorePaths?.length ? _ignore().add(config.projectIgnorePaths).filter(packageFiles.map(item => _nodePath.relative(cwd, item))).map(item => _nodePath.resolve(cwd, item)) : packageFiles;
|
|
90
|
-
return includedPackageFiles;
|
|
56
|
+
async function filterGlobResultToSupportedFiles(entries, supportedFiles) {
|
|
57
|
+
const patterns = ['golang', 'npm', 'pypi'].reduce((r, n) => {
|
|
58
|
+
const supported = supportedFiles[n];
|
|
59
|
+
r.push(...(supported ? Object.values(supported).map(p => `**/${p.pattern}`) : []));
|
|
60
|
+
return r;
|
|
61
|
+
}, []);
|
|
62
|
+
return entries.filter(p => _micromatch.some(p, patterns));
|
|
91
63
|
}
|
|
92
|
-
async function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
64
|
+
async function globWithGitIgnore(patterns, options) {
|
|
65
|
+
const {
|
|
66
|
+
socketConfig,
|
|
67
|
+
cwd = process.cwd(),
|
|
68
|
+
...additionalOptions
|
|
69
|
+
} = {
|
|
70
|
+
__proto__: null,
|
|
71
|
+
...options
|
|
72
|
+
};
|
|
73
|
+
const projectIgnorePaths = socketConfig?.projectIgnorePaths;
|
|
74
|
+
const ignoreFiles = await (0, _tinyglobby.glob)(['**/.gitignore'], {
|
|
75
|
+
__proto__: null,
|
|
76
|
+
absolute: true,
|
|
98
77
|
cwd,
|
|
99
|
-
|
|
78
|
+
expandDirectories: true
|
|
100
79
|
});
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
80
|
+
const ignores = [...(0, _ignoreByDefault.directoryPatterns)(), ...(Array.isArray(projectIgnorePaths) ? ignoreFileLinesToGlobPatterns(projectIgnorePaths, _nodePath.join(cwd, '.gitignore'), cwd) : []), ...(await Promise.all(ignoreFiles.map(async filepath => ignoreFileToGlobPatterns(await _promises.readFile(filepath, 'utf8'), filepath, cwd)))).flat()];
|
|
81
|
+
const hasNegatedPattern = ignores.some(p => p.charCodeAt(0) === 33 /*'!'*/);
|
|
82
|
+
const globOptions = {
|
|
83
|
+
__proto__: null,
|
|
84
|
+
absolute: true,
|
|
85
|
+
cwd,
|
|
86
|
+
expandDirectories: false,
|
|
87
|
+
ignore: hasNegatedPattern ? [] : ignores,
|
|
88
|
+
...additionalOptions
|
|
89
|
+
};
|
|
90
|
+
const result = await (0, _tinyglobby.glob)(patterns, globOptions);
|
|
91
|
+
if (!hasNegatedPattern) {
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
const {
|
|
95
|
+
absolute
|
|
96
|
+
} = globOptions;
|
|
97
|
+
const filtered = _ignore().add(ignores).filter(absolute ? result.map(p => _nodePath.relative(cwd, p)) : result);
|
|
98
|
+
return absolute ? filtered.map(p => _nodePath.resolve(cwd, p)) : filtered;
|
|
99
|
+
}
|
|
100
|
+
function ignoreFileLinesToGlobPatterns(lines, filepath, cwd) {
|
|
101
|
+
const base = _nodePath.relative(cwd, _nodePath.dirname(filepath)).replace(/\\/g, '/');
|
|
102
|
+
const patterns = [];
|
|
103
|
+
for (let i = 0, {
|
|
104
|
+
length
|
|
105
|
+
} = lines; i < length; i += 1) {
|
|
106
|
+
const pattern = lines[i].trim();
|
|
107
|
+
if (pattern.length > 0 && pattern.charCodeAt(0) !== 35 /*'#'*/) {
|
|
108
|
+
patterns.push(ignorePatternToMinimatch(pattern.length && pattern.charCodeAt(0) === 33 /*'!'*/ ? `!${_nodePath.posix.join(base, pattern.slice(1))}` : _nodePath.posix.join(base, pattern)));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return patterns;
|
|
105
112
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return (0, _arrays.arrayUnique)(packageFiles.flat());
|
|
113
|
+
function ignoreFileToGlobPatterns(content, filepath, cwd) {
|
|
114
|
+
return ignoreFileLinesToGlobPatterns(content.split(/\r?\n/), filepath, cwd);
|
|
109
115
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
|
|
117
|
+
// Based on `@eslint/compat` convertIgnorePatternToMinimatch.
|
|
118
|
+
// Apache v2.0 licensed
|
|
119
|
+
// Copyright Nicholas C. Zakas
|
|
120
|
+
// https://github.com/eslint/rewrite/blob/compat-v1.2.1/packages/compat/src/ignore-file.js#L28
|
|
121
|
+
function ignorePatternToMinimatch(pattern) {
|
|
122
|
+
const isNegated = pattern.startsWith('!');
|
|
123
|
+
const negatedPrefix = isNegated ? '!' : '';
|
|
124
|
+
const patternToTest = (isNegated ? pattern.slice(1) : pattern).trimEnd();
|
|
125
|
+
// Special cases.
|
|
126
|
+
if (patternToTest === '' || patternToTest === '**' || patternToTest === '/**' || patternToTest === '**') {
|
|
127
|
+
return `${negatedPrefix}${patternToTest}`;
|
|
128
|
+
}
|
|
129
|
+
const firstIndexOfSlash = patternToTest.indexOf('/');
|
|
130
|
+
const matchEverywherePrefix = firstIndexOfSlash === -1 || firstIndexOfSlash === patternToTest.length - 1 ? '**/' : '';
|
|
131
|
+
const patternWithoutLeadingSlash = firstIndexOfSlash === 0 ? patternToTest.slice(1) : patternToTest;
|
|
132
|
+
// Escape `{` and `(` because in gitignore patterns they are just
|
|
133
|
+
// literal characters without any specific syntactic meaning,
|
|
134
|
+
// while in minimatch patterns they can form brace expansion or extglob syntax.
|
|
135
|
+
//
|
|
136
|
+
// For example, gitignore pattern `src/{a,b}.js` ignores file `src/{a,b}.js`.
|
|
137
|
+
// But, the same minimatch pattern `src/{a,b}.js` ignores files `src/a.js` and `src/b.js`.
|
|
138
|
+
// Minimatch pattern `src/\{a,b}.js` is equivalent to gitignore pattern `src/{a,b}.js`.
|
|
139
|
+
const escapedPatternWithoutLeadingSlash = patternWithoutLeadingSlash.replaceAll(/(?=((?:\\.|[^{(])*))\1([{(])/guy, '$1\\$2');
|
|
140
|
+
const matchInsideSuffix = patternToTest.endsWith('/**') ? '/*' : '';
|
|
141
|
+
return `${negatedPrefix}${matchEverywherePrefix}${escapedPatternWithoutLeadingSlash}${matchInsideSuffix}`;
|
|
142
|
+
}
|
|
143
|
+
function pathsToPatterns(paths) {
|
|
144
|
+
return paths.map(p => p === '.' ? '**/*' : p);
|
|
121
145
|
}
|
|
122
146
|
function findRoot(filepath) {
|
|
123
147
|
let curPath = filepath;
|
|
@@ -132,5 +156,30 @@ function findRoot(filepath) {
|
|
|
132
156
|
curPath = parent;
|
|
133
157
|
}
|
|
134
158
|
}
|
|
159
|
+
async function getPackageFiles(cwd, inputPaths, config, supportedFiles, debugLog = () => {}) {
|
|
160
|
+
debugLog(`Globbed resolving ${inputPaths.length} paths:`, inputPaths);
|
|
161
|
+
|
|
162
|
+
// TODO: Does not support `~/` paths
|
|
163
|
+
const entries = await globWithGitIgnore(pathsToPatterns(inputPaths), {
|
|
164
|
+
cwd,
|
|
165
|
+
socketConfig: config
|
|
166
|
+
});
|
|
167
|
+
debugLog(`Globbed resolved ${inputPaths.length} paths to ${entries.length} paths:`, entries);
|
|
168
|
+
const packageFiles = await filterGlobResultToSupportedFiles(entries, supportedFiles);
|
|
169
|
+
debugLog(`Mapped ${entries.length} entries to ${packageFiles.length} files:`, packageFiles);
|
|
170
|
+
return packageFiles;
|
|
171
|
+
}
|
|
172
|
+
async function getPackageFilesFullScans(cwd, inputPaths, supportedFiles, debugLog = () => {}) {
|
|
173
|
+
debugLog(`Globbed resolving ${inputPaths.length} paths:`, inputPaths);
|
|
174
|
+
|
|
175
|
+
// TODO: Does not support `~/` paths
|
|
176
|
+
const entries = await globWithGitIgnore(pathsToPatterns(inputPaths), {
|
|
177
|
+
cwd
|
|
178
|
+
});
|
|
179
|
+
debugLog(`Globbed resolved ${inputPaths.length} paths to ${entries.length} paths:`, entries);
|
|
180
|
+
const packageFiles = await filterGlobResultToSupportedFiles(entries, supportedFiles);
|
|
181
|
+
debugLog(`Mapped ${entries.length} entries to ${packageFiles.length} files:`, packageFiles);
|
|
182
|
+
return packageFiles;
|
|
183
|
+
}
|
|
135
184
|
|
|
136
185
|
exports.pathResolve = pathResolve;
|