+172
-10
@@ -116,3 +116,3 @@ /* | ||
| * @example | ||
| * await decompress(compressedString, true); | ||
| * await decompress(compressedString); | ||
| * @since 2.1.0 | ||
@@ -125,3 +125,3 @@ */ | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64 strings | ||
| * Compresses strings, integers and objects into non-standard Base64 strings (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @param str - Input string to compress | ||
@@ -137,3 +137,3 @@ * @returns Compressed string in non-standard Base64 format | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64 strings | ||
| * Compresses strings, integers and objects into non-standard Base64 strings (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @param obj - Input object to compress | ||
@@ -150,3 +150,3 @@ * > **Note: it will `JSON.stringify()` your object so it may lose some data if your object has getters/setters/non-enumerables/etc.!** | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64 strings | ||
| * Compresses strings, integers and objects into non-standard Base64 strings (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @param int - Input integer to compress | ||
@@ -161,2 +161,72 @@ * @returns Compressed string in non-standard Base64 format | ||
| /** | ||
| * JavaScript String Compressor - compressToBase64URL function | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64URL strings (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @param str - Input string to compress | ||
| * @returns Compressed string in non-standard Base64URL format | ||
| * @example | ||
| * await compressToBase64URL('Hello, World!'); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToBase64URL(str: string, options?: compressOptions): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - compressToBase64URL function | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64URL strings (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @param obj - Input object to compress | ||
| * > **Note: it will `JSON.stringify()` your object so it may lose some data if your object has getters/setters/non-enumerables/etc.!** | ||
| * @returns Compressed string in non-standard Base64URL format | ||
| * @example | ||
| * await compressToBase64URL({a: "b"}); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToBase64URL(obj: string, options?: compressOptions): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - compressToBase64URL function | ||
| * | ||
| * Compresses strings, integers and objects into non-standard Base64URL strings (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @param int - Input integer to compress | ||
| * @returns Compressed string in non-standard Base64URL format | ||
| * @example | ||
| * await compressToBase64URL(10); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToBase64URL(int: string, options?: compressOptions): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - compressToUint8Array function | ||
| * | ||
| * Compresses strings, integers and objects into Uint8Arrays | ||
| * @param str - Input string to compress | ||
| * @returns Compressed Uint8Array | ||
| * @example | ||
| * await compressToUint8Array('Hello, World!'); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToUint8Array(str: string, options?: compressOptions): Promise<Uint8Array<ArrayBuffer>>; | ||
| /** | ||
| * JavaScript String Compressor - compressToUint8Array function | ||
| * | ||
| * Compresses strings, integers and objects into Uint8Arrays | ||
| * @param obj - Input object to compress | ||
| * > **Note: it will `JSON.stringify()` your object so it may lose some data if your object has getters/setters/non-enumerables/etc.!** | ||
| * @returns Compressed Uint8Array | ||
| * @example | ||
| * await compressToUint8Array({a: "b"}); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToUint8Array(obj: string, options?: compressOptions): Promise<Uint8Array<ArrayBuffer>>; | ||
| /** | ||
| * JavaScript String Compressor - compressToUint8Array function | ||
| * | ||
| * Compresses strings, integers and objects into Uint8Arrays | ||
| * @param int - Input integer to compress | ||
| * @returns Compressed Uint8Array | ||
| * @example | ||
| * await compressToUint8Array(10); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressToUint8Array(int: string, options?: compressOptions): Promise<Uint8Array<ArrayBuffer>>; | ||
| /** | ||
| * JavaScript String Compressor - compressLarge function | ||
@@ -176,3 +246,3 @@ * | ||
| * | ||
| * Compresses large strings (`str.length > 1024`) into non-standard Base64 strings | ||
| * Compresses large strings (`str.length > 1024`) into non-standard Base64 strings (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @param str - Input string to compress | ||
@@ -187,4 +257,28 @@ * @returns Compressed string in non-standard Base64 format | ||
| /** | ||
| * JavaScript String Compressor - compressLargeToBase64URL function | ||
| * | ||
| * Compresses large strings (`str.length > 1024`) into non-standard Base64URL strings (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @param str - Input string to compress | ||
| * @returns Compressed string in non-standard Base64URL format | ||
| * @example | ||
| * await compressLargeToBase64URL('Hello, World!'); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressLargeToBase64URL(str: string, options?: compressOptions): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - compressLargeToUint8Array function | ||
| * | ||
| * Compresses large strings (`str.length > 1024`) into Uint8Arrays | ||
| * @param str - Input string to compress | ||
| * @returns Compressed Uint8Array | ||
| * @example | ||
| * await compressLargeToUint8Array('Hello, World!'); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function compressLargeToUint8Array(str: string, options?: compressOptions): Promise<Uint8Array<ArrayBuffer>>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromBase64 function | ||
| * @param str - Compressed string in non-standard Base64 format | ||
| * @param str - Compressed string in non-standard Base64 format (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @returns Decompressed string/object/number | ||
@@ -198,3 +292,3 @@ * @example | ||
| * JavaScript String Compressor - decompressFromBase64 function | ||
| * @param str - Compressed string in non-standard Base64 format | ||
| * @param str - Compressed string in non-standard Base64 format (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @param stringify - Always return string? | ||
@@ -209,6 +303,6 @@ * @returns Decompressed string | ||
| * JavaScript String Compressor - decompressFromBase64 function | ||
| * @param str - Compressed string in non-standard Base64 format | ||
| * @param str - Compressed string in non-standard Base64 format (`0-9` `a-z` `A-Z` `+` `/`) | ||
| * @returns Decompressed string/object/number | ||
| * @example | ||
| * await decompressFromBase64(compressedString, true); | ||
| * await decompressFromBase64(compressedString); | ||
| * @since 2.1.0 | ||
@@ -219,2 +313,60 @@ */ | ||
| /** | ||
| * JavaScript String Compressor - decompressFromBase64URL function | ||
| * @param str - Compressed string in non-standard Base64URL format (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @returns Decompressed string/object/number | ||
| * @example | ||
| * await decompressFromBase64URL(compressedString); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromBase64URL(str: string): Promise<object|number|string>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromBase64URL function | ||
| * @param str - Compressed string in non-standard Base64URL format (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @param stringify - Always return string? | ||
| * @returns Decompressed string | ||
| * @example | ||
| * await decompressFromBase64URL(compressedString, true); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromBase64URL(str: string, stringify: true): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromBase64URL function | ||
| * @param str - Compressed string in non-standard Base64URL format (`0-9` `a-z` `A-Z` `-` `_`) | ||
| * @returns Decompressed string/object/number | ||
| * @example | ||
| * await decompressFromBase64URL(compressedString); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromBase64URL(str: string, options?: decompressOptions): Promise<object|number|string>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromUint8Array function | ||
| * @param uint8arr - Compressed Uint8Array | ||
| * @returns Decompressed string/object/number | ||
| * @example | ||
| * await decompressFromUint8Array(compressedString); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromUint8Array(uint8arr: Uint8Array<ArrayBuffer>): Promise<object|number|string>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromUint8Array function | ||
| * @param uint8arr - Compressed string Uint8Array | ||
| * @param stringify - Always return string? | ||
| * @returns Decompressed string | ||
| * @example | ||
| * await decompressFromUint8Array(compressedString, true); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromUint8Array(uint8arr: Uint8Array<ArrayBuffer>, stringify: true): Promise<string>; | ||
| /** | ||
| * JavaScript String Compressor - decompressFromUint8Array function | ||
| * @param uint8arr - Compressed string Uint8Array | ||
| * @returns Decompressed string/object/number | ||
| * @example | ||
| * await decompressFromUint8Array(compressedString); | ||
| * @since 2.1.0 | ||
| */ | ||
| export function decompressFromUint8Array(uint8arr: Uint8Array<ArrayBuffer>, options?: decompressOptions): Promise<object|number|string>; | ||
| /** | ||
| * JavaScript String Compressor - cache.clear function | ||
@@ -234,3 +386,6 @@ * | ||
| }; | ||
| const version: string, | ||
| const version: string; | ||
| const worker: { | ||
| url: string | URL; | ||
| }; | ||
@@ -241,7 +396,14 @@ export { | ||
| compressToBase64, | ||
| compressToBase64URL, | ||
| compressToUint8Array, | ||
| compressLarge, | ||
| compressLargeToBase64, | ||
| compressLargeToBase64URL, | ||
| compressLargeToUint8Array, | ||
| decompressFromBase64, | ||
| decompressFromBase64URL, | ||
| decompressFromUint8Array, | ||
| cache, | ||
| version, | ||
| worker | ||
| }; |
+21
-34
@@ -6,9 +6,9 @@ #!/usr/bin/env node | ||
| import os from 'os'; | ||
| import https from 'https'; | ||
| import { fileURLToPath } from 'url'; | ||
| const __dirname$2 = path.dirname(fileURLToPath(import.meta.url)); | ||
| const confirmPs1 = path.resolve(__dirname$2, "./ui/confirm.ps1"); | ||
| const welcomePs1 = path.resolve(__dirname$2, "./ui/welcome.ps1"); | ||
| path.resolve(__dirname$2, "./ui/compress.ps1"); | ||
| const uiDir = path.resolve(__dirname$2, "./windows/ui"); | ||
| const confirmPs1 = path.resolve(uiDir, "./confirm.ps1"); | ||
| const welcomePs1 = path.resolve(uiDir, "./welcome.ps1"); | ||
| path.resolve(uiDir, "./compress.ps1"); | ||
@@ -72,2 +72,12 @@ function confirm(title, text, repo, site) { | ||
| function message(title, message, icon = 'Error') { | ||
| const psCommand = `powershell -Command "[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('${message}', '${title}', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::${icon})"`; | ||
| try { | ||
| execSync(psCommand); | ||
| } catch (error) { | ||
| console.error(error); | ||
| } | ||
| } | ||
| if (process.platform !== "win32") { | ||
@@ -93,3 +103,2 @@ process.exit(0); | ||
| const ICON_URL = "https://jssc.js.org/favicon.ico"; | ||
| const APP_NAME = "JSSC"; | ||
@@ -105,3 +114,3 @@ const EXT = ".jssc"; | ||
| const localPkg = path.join(installDir, "pkg"); | ||
| const localBin = path.join(localPkg, "bin"); | ||
| const localBin = path.join(localPkg, "dist"); | ||
| const localCfg = path.join(installDir, "default.justc"); | ||
@@ -111,5 +120,6 @@ const localVbs = path.join(installDir, "jssc.vbs"); | ||
| const pkgRoot = path.resolve(__dirname$1, "../../"); | ||
| const cliPath = path.resolve(localBin, "./index.js"); | ||
| const cliPath = path.resolve(localBin, "./cli.js"); | ||
| const cfgPath = path.resolve(localBin, "./windows/default.justc"); | ||
| const vbsPath = path.resolve(localBin, "./windows/jssc.vbs"); | ||
| const icoPath = path.resolve(localBin, "./windows/icon.ico"); | ||
| const nodePath = process.execPath; | ||
@@ -124,24 +134,2 @@ | ||
| function downloadIcon() { | ||
| return new Promise((resolve, reject) => { | ||
| if (!fs.existsSync(installDir)) { | ||
| fs.mkdirSync(installDir, { recursive: true }); | ||
| } | ||
| const file = fs.createWriteStream(iconPath); | ||
| https.get(ICON_URL, res => { | ||
| if (res.statusCode !== 200) { | ||
| reject(new Error("Failed to download icon")); | ||
| return; | ||
| } | ||
| res.pipe(file); | ||
| file.on("finish", () => { | ||
| file.close(resolve); | ||
| }); | ||
| }).on("error", reject); | ||
| }); | ||
| } | ||
| function showProgress() { | ||
@@ -160,4 +148,2 @@ return spawn("powershell", [ | ||
| await downloadIcon(); | ||
| let e = [false, undefined]; | ||
@@ -173,5 +159,4 @@ try { | ||
| fs.copyFileSync(cfgPath, localCfg); | ||
| fs.rmSync(cfgPath); | ||
| fs.copyFileSync(vbsPath, localVbs); | ||
| fs.rmSync(vbsPath); | ||
| fs.copyFileSync(icoPath, iconPath); | ||
@@ -229,4 +214,6 @@ const vbs = `wscript.exe \\"${localVbs}\\" \\"${nodePath}\\" \\"${cliPath}\\"`; | ||
| repo, site)) setup().catch(err => { | ||
| console.error("Installation failed:", err.message); | ||
| const e = "Installation failed: " + err.message; | ||
| console.error(e, '\n' + err.trace); | ||
| message(name__, e); | ||
| process.exit(1); | ||
| }); |
+1
-1
| { | ||
| "name": "strc", | ||
| "version": "2.1.0-test.1", | ||
| "version": "2.1.0-test.4", | ||
| "description": "JavaScript String Compressor - lossless string compression algorithm", | ||
@@ -5,0 +5,0 @@ "main": "dist/jssc.cjs", |
+32
-96
@@ -0,89 +1,41 @@ | ||
|  | ||
| # JSSC ā JavaScript String Compressor | ||
| **JSSC (JavaScript String Compressor)** is an open-source, **lossless string compression algorithm** designed specifically for JavaScript. | ||
| JSSC is an open-source, **lossless string compression algorithm** designed specifically for JavaScript strings (UTF-16). It produces compressed data that remains a valid JS string, making it ideal for environments where binary data is difficult to handle. | ||
| It operates directly on JavaScript strings (UTF-16) and produces compressed data that is also a valid JavaScript string. | ||
| > **Note:** The npm package is named [`strc`](https://www.npmjs.com/package/strc). <br> | ||
| > The `jssc` ("jSSC") npm package is unrelated to this project. <br> | ||
| > Both names (uppercase "JSSC" and lowercase "strc") refer to the same project. | ||
| ## Key Features | ||
| - ⨠**Lossless compression** | ||
| - šļø **High compression ratios** | ||
| - up to **8:1** for numeric data | ||
| - strong results for repetitive and structured text | ||
| - š **Multilingual support** | ||
| - English, Russian, Japanese, Chinese, Hindi, Bengali, and more | ||
| - š¦ **JSON support** | ||
| - JSON is converted to [JUSTC](https://just.js.org/justc) before compression | ||
| - āļø **String ā String** | ||
| - no binary buffers | ||
| - no external metadata | ||
| - all required information is embedded into the compressed string itself | ||
| - š§ **Self-validating compression** | ||
| - every compression mode is verified by decompression before being accepted | ||
| - š **Recursive compression** | ||
| - š **TypeScript definitions** included | ||
| JSSC is a complex algorithm featuring multiple internal compression modes tailored for different data structures. During compression, each mode evaluates the input; if its specific conditions are met, it produces a **candidate** string. JSSC then selects the best candidate ā the one that achieves the highest compression ratio while passing a mandatory lossless decompression check. This approach results in a slower compression phase but ensures **high compression ratio** and **fast decompression**, as no brute-forcing or validation is required during recovery. | ||
| ## Important Version Compatibility Notice | ||
| ā ļø **Compressed strings produced by JSSC v1.x.x are NOT compatible with v2.x.x** | ||
| ā ļø **Compatibility Notice:** Compressed strings from v1.x.x are **not compatible** with v2.x.x due to header and encoding changes. JSSC follows Semantic Versioning: successful decompression is guaranteed only if the decompressor version is equal to or newer than the compressor version (within the same major version). | ||
| Reasons: | ||
| - The first 16 bits (header layout) were slightly redesigned | ||
| - New compression modes were added | ||
| - Character encoding tables were extended | ||
| ## Key Features | ||
| - ~**2.5:1 average compression ratio**. | ||
| - **String-to-String**: No binary buffers or external metadata. | ||
| - **Self-validating**: Compressed string is guaranteed to be successfully decompressed and with no data loss (if the string is not corrupted and the string was compressed by same major and not larger minor and patch version following SemVer). | ||
| - **TypeScript support** and fully-typed API. | ||
| ## Character Encoding | ||
| JSSC operates on **JavaScript UTF-16 code units**, not on UTF-8 bytes. | ||
| ## Documentation | ||
| Full documentation, API reference, and live examples are available at **[jssc.js.org](https://jssc.js.org/)**. | ||
| This means: | ||
| - Any character representable in a JavaScript string is supported | ||
| - Compression works at the UTF-16 level | ||
| - One JavaScript character = **16 bits** | ||
| - Binary data must be converted to strings before compression | ||
| ## Project Name vs npm Package Name | ||
| The project is called **JSSC** (JavaScript String Compressor). | ||
| The npm package is published under the name **`strc`**, because the name `jssc` is already occupied on npm by an unrelated Java-based package. | ||
| Both names refer to the same project. | ||
| ## Installation | ||
| Install via npm | ||
| ## Quick start | ||
| ``` | ||
| npm i strc | ||
| ``` | ||
| > The npm package name is `strc`, but the library itself is **JSSC**. | ||
| Or you can use it on your website by inserting the following HTML `script` tags. | ||
| ```html | ||
| <script src="https://unpkg.com/justc"></script> | ||
| <script src="https://unpkg.com/strc"></script> | ||
| ``` | ||
| ## Usage | ||
| #### JavaScript | ||
| ```js | ||
| const { compress, decompress } = require('strc'); | ||
| const example = await compress("Hello, world!"); | ||
| await decompress(example); | ||
| ``` | ||
| #### TypeScript | ||
| ```ts | ||
| import { compress, decompress } from 'strc'; | ||
| const example = await compress("Hello, world!"); | ||
| await decompress(example); | ||
| const data = "Hello, world!"; | ||
| const compressed = await compress(data); | ||
| const original = await decompress(compressed); | ||
| ``` | ||
| #### Deno (server-side) | ||
| ```ts | ||
| import JSSC from 'https://jssc.js.org/jssc.min.js'; | ||
| const example = await JSSC.compress("Hello, world!"); | ||
| await JSSC.decompress(example); | ||
| CLI: | ||
| ``` | ||
| npx jssc --help | ||
| ``` | ||
| #### Browsers / Frontend (UMD) | ||
| When using the UMD build via CDN, the library is exposed globally as `JSSC`. | ||
| Website/Browsers: | ||
| ```html | ||
@@ -94,38 +46,22 @@ <script src="https://unpkg.com/justc"></script> | ||
| ```js | ||
| const compressed = await JSSC.compress("Hello, world!"); | ||
| const decompressed = await JSSC.decompress(compressed); | ||
| const data = "Hello, world!"; | ||
| const compressed = await JSSC.compress(data); | ||
| const original = await JSSC.decompress(compressed); | ||
| ``` | ||
| ## JS API | ||
| #### `compress(input: string | object | number): Promise<string>` | ||
| Compresses the input and returns a compressed JavaScript string. | ||
| #### `decompress(input: string, stringify?: boolean): Promise<string | object | number>` | ||
| Decompresses a previously compressed string/object/integer. | ||
| ## CLI Usage | ||
| ``` | ||
| jssc --help | ||
| ``` | ||
| **Compress a file/directory to JSSC Archive:** | ||
| ``` | ||
| jssc <input> | ||
| ``` | ||
| **Decompress a JSSC Archive:** | ||
| ``` | ||
| jssc <input.jssc> -d | ||
| ``` | ||
| ## Dependencies | ||
| JSSC depends on: | ||
| - <img align="top" src="https://just.js.org/justc/logo-50.svg" alt="JUSTC Logo" width="26" height="26"> [JUSTC](https://just.js.org/justc) by [JustStudio.](https://juststudio.is-a.dev/) | ||
| - [lz-string](https://github.com/pieroxy/lz-string/) by [pieroxy](https://github.com/pieroxy) | ||
| - [unicode-emoji-json](https://www.npmjs.com/package/unicode-emoji-json) by [Mu-An Chiou](https://github.com/muan) | ||
| - [utf8.js](https://github.com/mathiasbynens/utf8.js) by [Mathias Bynens](https://mathiasbynens.be/) | ||
| JSSC CLI and Format Handling depends on: | ||
| JSSC CLI and Format Handling (`.jssc`) depends on: | ||
| - [crc-32](https://www.npmjs.com/package/crc-32) by [SheetJS](https://sheetjs.com/) | ||
| - [semver](https://semver.npmjs.com/) by [npm](https://www.npmjs.com/) | ||
| - [uint8arrays](https://www.npmjs.com/package/uint8arrays) by [Alex Potsides](https://github.com/achingbrain) | ||
| - [semver](https://semver.npmjs.com/) by [npm](https://www.npmjs.com/) | ||
| > **Note:** All dependencies (except **JUSTC**) are bundled into the final build. | ||
| ## License | ||
| [MIT Ā© 2025-2026 JustDeveloper](https://github.com/justdevw/JSSC/blob/main/LICENSE) |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Unpublished package
Supply chain riskPackage version was not found on the registry. It may exist on a different registry and need to be configured to pull from that registry.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Unpopular package
QualityThis package is not very popular.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1148129
4.55%30809
3.74%0
-100%0
-100%67
-48.85%37
2.78%