@jsonjoy.com/fs-snapshot
Advanced tools
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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","sourcesContent":["import { SnapshotNodeType } from './constants';\nimport { validateEntryName } from './shared';\nimport type { AsyncSnapshotOptions, SnapshotNode } from './types';\n\nexport const toSnapshot = async ({ fs, path = '/', separator = '/' }: AsyncSnapshotOptions): Promise<SnapshotNode> => {\n const stats = await fs.lstat(path);\n if (stats.isDirectory()) {\n const list = await fs.readdir(path);\n const entries: { [child: string]: SnapshotNode } = {};\n const dir = path.endsWith(separator) ? path : path + separator;\n const snapshots = await Promise.all(list.map(child => toSnapshot({ fs, path: `${dir}${child}`, separator })));\n for (let i = 0; i < list.length; i++) {\n if (snapshots[i]) entries['' + list[i]] = snapshots[i];\n }\n return [SnapshotNodeType.Folder, {}, entries];\n } else if (stats.isFile()) {\n const buf = (await fs.readFile(path)) as Buffer;\n const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n return [SnapshotNodeType.File, {}, uint8];\n } else if (stats.isSymbolicLink()) {\n return [\n SnapshotNodeType.Symlink,\n {\n target: (await fs.readlink(path, { encoding: 'utf8' })) as string,\n },\n ];\n }\n return null;\n};\n\nexport const fromSnapshot = async (\n snapshot: SnapshotNode,\n { fs, path = '/', separator = '/' }: AsyncSnapshotOptions,\n): Promise<void> => {\n if (!snapshot) return;\n switch (snapshot[0]) {\n case SnapshotNodeType.Folder: {\n if (!path.endsWith(separator)) path = path + separator;\n const [, , entries] = snapshot;\n await fs.mkdir(path, { recursive: true });\n for (const [name, child] of Object.entries(entries)) {\n validateEntryName(name);\n await fromSnapshot(child, { fs, path: `${path}${name}`, separator });\n }\n break;\n }\n case SnapshotNodeType.File: {\n const [, , data] = snapshot;\n await fs.writeFile(path, data);\n break;\n }\n case SnapshotNodeType.Symlink: {\n const [, { target }] = snapshot;\n await fs.symlink(target, path);\n break;\n }\n }\n};\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAIlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC7F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,sBAAsB,0BAGjC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC7G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,gBAAgB,oBAG3B;AAEK,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"} | ||
| {"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAIlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC7F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,sBAAsB,0BAGjC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC7G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,gBAAgB,oBAG3B;AAEK,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B","sourcesContent":["import { CborEncoder } from '@jsonjoy.com/json-pack/lib/cbor/CborEncoder';\nimport { CborDecoder } from '@jsonjoy.com/json-pack/lib/cbor/CborDecoder';\nimport { fromSnapshotSync, toSnapshotSync } from './sync';\nimport { fromSnapshot, toSnapshot } from './async';\nimport { writer } from './shared';\nimport type { CborUint8Array } from '@jsonjoy.com/json-pack/lib/cbor/types';\nimport type { AsyncSnapshotOptions, SnapshotNode, SnapshotOptions } from './types';\n\nconst encoder = new CborEncoder(writer);\nconst decoder = new CborDecoder();\n\nexport const toBinarySnapshotSync = (options: SnapshotOptions): CborUint8Array<SnapshotNode> => {\n const snapshot = toSnapshotSync(options);\n return encoder.encode(snapshot) as CborUint8Array<SnapshotNode>;\n};\n\nexport const fromBinarySnapshotSync = (uint8: CborUint8Array<SnapshotNode>, options: SnapshotOptions): void => {\n const snapshot = decoder.decode(uint8) as SnapshotNode;\n fromSnapshotSync(snapshot, options);\n};\n\nexport const toBinarySnapshot = async (options: AsyncSnapshotOptions): Promise<CborUint8Array<SnapshotNode>> => {\n const snapshot = await toSnapshot(options);\n return encoder.encode(snapshot) as CborUint8Array<SnapshotNode>;\n};\n\nexport const fromBinarySnapshot = async (\n uint8: CborUint8Array<SnapshotNode>,\n options: AsyncSnapshotOptions,\n): Promise<void> => {\n const snapshot = decoder.decode(uint8) as SnapshotNode;\n await fromSnapshot(snapshot, options);\n};\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":""} | ||
| {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"","sourcesContent":["export const enum SnapshotNodeType {\n Folder = 0,\n File = 1,\n Symlink = 2,\n}\n"]} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,sDAA4B;AAC5B,iDAAuB;AACvB,mDAAyB;AACzB,iDAAuB"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,sDAA4B;AAC5B,iDAAuB;AACvB,mDAAyB;AACzB,iDAAuB","sourcesContent":["export type * from './types';\nexport * from './constants';\nexport * from './sync';\nexport * from './binary';\nexport * from './json';\n"]} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAMlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC3F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,oBAAoB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,cAAc,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC3G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"} | ||
| {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAMlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC3F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,oBAAoB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,cAAc,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC3G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B","sourcesContent":["import { JsonEncoder } from '@jsonjoy.com/json-pack/lib/json/JsonEncoder';\nimport { JsonDecoder } from '@jsonjoy.com/json-pack/lib/json/JsonDecoder';\nimport { fromSnapshotSync, toSnapshotSync } from './sync';\nimport { fromSnapshot, toSnapshot } from './async';\nimport { writer } from './shared';\nimport type { AsyncSnapshotOptions, SnapshotNode, SnapshotOptions } from './types';\n\n/** @todo Import this type from `json-joy` once it is available. */\nexport type JsonUint8Array<T> = Uint8Array & { __BRAND__: 'json'; __TYPE__: T };\n\nconst encoder = new JsonEncoder(writer);\nconst decoder = new JsonDecoder();\n\nexport const toJsonSnapshotSync = (options: SnapshotOptions): JsonUint8Array<SnapshotNode> => {\n const snapshot = toSnapshotSync(options);\n return encoder.encode(snapshot) as JsonUint8Array<SnapshotNode>;\n};\n\nexport const fromJsonSnapshotSync = (uint8: JsonUint8Array<SnapshotNode>, options: SnapshotOptions): void => {\n const snapshot = decoder.read(uint8) as SnapshotNode;\n fromSnapshotSync(snapshot, options);\n};\n\nexport const toJsonSnapshot = async (options: AsyncSnapshotOptions): Promise<JsonUint8Array<SnapshotNode>> => {\n const snapshot = await toSnapshot(options);\n return encoder.encode(snapshot) as JsonUint8Array<SnapshotNode>;\n};\n\nexport const fromJsonSnapshot = async (\n uint8: JsonUint8Array<SnapshotNode>,\n options: AsyncSnapshotOptions,\n): Promise<void> => {\n const snapshot = decoder.read(uint8) as SnapshotNode;\n await fromSnapshot(snapshot, options);\n};\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":";;;AAAA,4DAAyD;AAE5C,QAAA,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAErC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACtD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B"} | ||
| {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":";;;AAAA,4DAAyD;AAE5C,QAAA,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAErC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACtD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B","sourcesContent":["import { Writer } from '@jsonjoy.com/buffers/lib/Writer';\n\nexport const writer = new Writer(1024 * 32);\n\nexport const validateEntryName = (name: string): void => {\n if (!name || name === '.' || name === '..' || name.indexOf('/') !== -1 || name.indexOf('\\\\') !== -1)\n throw new Error(`Invalid snapshot entry name: ${JSON.stringify(name)}`);\n};\n"]} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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","sourcesContent":["import { SnapshotNodeType } from './constants';\nimport { validateEntryName } from './shared';\nimport type { SnapshotNode, SnapshotOptions } from './types';\n\nexport const toSnapshotSync = ({ fs, path = '/', separator = '/' }: SnapshotOptions): SnapshotNode => {\n const stats = fs.lstatSync(path);\n if (stats.isDirectory()) {\n const list = fs.readdirSync(path);\n const entries: { [child: string]: SnapshotNode } = {};\n const dir = path.endsWith(separator) ? path : path + separator;\n for (const child of list) {\n const childSnapshot = toSnapshotSync({ fs, path: `${dir}${child}`, separator });\n if (childSnapshot) entries['' + child] = childSnapshot;\n }\n return [SnapshotNodeType.Folder, {}, entries];\n } else if (stats.isFile()) {\n const buf = fs.readFileSync(path) as Buffer;\n const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n return [SnapshotNodeType.File, {}, uint8];\n } else if (stats.isSymbolicLink()) {\n return [\n SnapshotNodeType.Symlink,\n {\n target: fs.readlinkSync(path).toString(),\n },\n ];\n }\n return null;\n};\n\nexport const fromSnapshotSync = (\n snapshot: SnapshotNode,\n { fs, path = '/', separator = '/' }: SnapshotOptions,\n): void => {\n if (!snapshot) return;\n switch (snapshot[0]) {\n case SnapshotNodeType.Folder: {\n if (!path.endsWith(separator)) path = path + separator;\n const [, , entries] = snapshot;\n fs.mkdirSync(path, { recursive: true });\n for (const [name, child] of Object.entries(entries)) {\n validateEntryName(name);\n fromSnapshotSync(child, { fs, path: `${path}${name}`, separator });\n }\n break;\n }\n case SnapshotNodeType.File: {\n const [, , data] = snapshot;\n fs.writeFileSync(path, data);\n break;\n }\n case SnapshotNodeType.Symlink: {\n const [, { target }] = snapshot;\n fs.symlinkSync(target, path);\n break;\n }\n }\n};\n"]} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { FsPromisesApi, FsSynchronousApi } from '@jsonjoy.com/fs-node-utils';\nimport type { SnapshotNodeType } from './constants';\n\nexport interface SnapshotOptions {\n fs: FsSynchronousApi;\n path?: string;\n separator?: '/' | '\\\\';\n}\n\nexport interface AsyncSnapshotOptions {\n fs: FsPromisesApi;\n path?: string;\n separator?: '/' | '\\\\';\n}\n\nexport type SnapshotNode = FolderNode | FileNode | SymlinkNode | UnknownNode;\n\nexport type FolderNode = [\n type: SnapshotNodeType.Folder,\n meta: FolderMetadata,\n entries: { [child: string]: SnapshotNode },\n];\n\nexport interface FolderMetadata {}\n\nexport type FileNode = [type: SnapshotNodeType.File, meta: FileMetadata, data: Uint8Array];\n\nexport interface FileMetadata {}\n\nexport type SymlinkNode = [type: SnapshotNodeType.Symlink, meta: SymlinkMetadata];\n\nexport interface SymlinkMetadata {\n target: string;\n}\n\nexport type UnknownNode = null;\n"]} |
+2
-2
@@ -6,3 +6,3 @@ { | ||
| }, | ||
| "version": "4.66.0", | ||
| "version": "4.66.1", | ||
| "description": "File system snapshot - serialize and deserialize file system trees to binary or JSON", | ||
@@ -86,3 +86,3 @@ "author": { | ||
| "@jsonjoy.com/buffers": "^17.65.0", | ||
| "@jsonjoy.com/fs-node-utils": "4.66.0", | ||
| "@jsonjoy.com/fs-node-utils": "4.66.1", | ||
| "@jsonjoy.com/json-pack": "^17.65.0", | ||
@@ -89,0 +89,0 @@ "@jsonjoy.com/util": "^17.65.0" |
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
44149
24.87%+ Added
+ Added
- Removed
- Removed