@electron/osx-sign
Advanced tools
| /** | ||
| * Process lsbom output to modify permissions and ownership | ||
| * - Changes 755 to 775 | ||
| * - Changes 644 to 664 | ||
| * - Sets owner/group to root:admin (0/80 on macOS) | ||
| */ | ||
| export declare function setPermissionOnBom(bom: string): string; |
| import { debugLog } from '../util.js'; | ||
| /** | ||
| * Process lsbom output to modify permissions and ownership | ||
| * - Changes 755 to 775 | ||
| * - Changes 644 to 664 | ||
| * - Sets owner/group to root:admin (0/80 on macOS) | ||
| */ | ||
| export function setPermissionOnBom(bom) { | ||
| return bom | ||
| .split('\n') | ||
| .map((line, index) => { | ||
| if (!line.trim()) | ||
| return line; | ||
| // More flexible regex that captures spacing | ||
| const regex = /^([^\t]+)(\t+)(\d+)(\s+)(\d+)\/(\d+)(.*)$/; | ||
| const match = line.match(regex); | ||
| if (!match) { | ||
| debugLog('Unable to match Bom line:', line); | ||
| throw new Error('Failed to parse Bom line, see debug logs for more information'); | ||
| } | ||
| // eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
| const [_, path, space1, mode, space2, oldUid, oldGid, rest] = match; | ||
| // Modify permissions | ||
| let newMode; | ||
| if (index === 0) { | ||
| newMode = '40775'; | ||
| } | ||
| else if (mode.endsWith('755')) { | ||
| newMode = mode.slice(0, -3) + '775'; | ||
| } | ||
| else if (mode.endsWith('644')) { | ||
| newMode = mode.slice(0, -3) + '664'; | ||
| } | ||
| else { | ||
| newMode = mode; | ||
| } | ||
| if (newMode !== mode) { | ||
| debugLog('BOM Permission Rewrite', path, mode, newMode); | ||
| } | ||
| if (oldUid !== '0' || oldGid !== '0') { | ||
| throw new Error('Invalid uid/gid, something went wrong'); | ||
| } | ||
| // Set to root:admin | ||
| const uid = '0'; | ||
| const gid = '80'; // admin group on macOS | ||
| return `${path}${space1}${newMode}${space2}${uid}/${gid}${rest}`; | ||
| }) | ||
| .join('\n'); | ||
| } | ||
| //# sourceMappingURL=bom.js.map |
| {"version":3,"file":"bom.js","sourceRoot":"","sources":["../../src/pkg-utils/bom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAE9B,4CAA4C;QAC5C,MAAM,KAAK,GAAG,2CAA2C,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QAED,6DAA6D;QAC7D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAEpE,qBAAqB;QACrB,IAAI,OAAe,CAAC;QACpB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,oBAAoB;QACpB,MAAM,GAAG,GAAG,GAAG,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,uBAAuB;QAEzC,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;IACnE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"} |
| /// <reference types="node" resolution-mode="require"/> | ||
| /// <reference types="node" resolution-mode="require"/> | ||
| /** | ||
| * Entry in a CPIO ODC archive | ||
| */ | ||
| interface CpioEntry { | ||
| offset: number; | ||
| magic: string; | ||
| dev: string; | ||
| ino: string; | ||
| mode: string; | ||
| uid: string; | ||
| gid: string; | ||
| nlink: string; | ||
| rdev: string; | ||
| mtime: string; | ||
| namesize: number; | ||
| filesize: number; | ||
| filename: string; | ||
| dataOffset: number; | ||
| data: Buffer; | ||
| } | ||
| /** | ||
| * Parse and modify permissions in a cpio (SVR4/ASCII) archive | ||
| * This handles the 'odc' format (old portable ASCII format) | ||
| */ | ||
| export declare class CpioModifier { | ||
| private entries; | ||
| private static readonly MAGIC_NUMBER; | ||
| private static readonly HEADER_SIZE; | ||
| private static readonly TRAILER_NAME; | ||
| /** | ||
| * Parse cpio archive from buffer | ||
| */ | ||
| parseCpio(buffer: Buffer): CpioEntry[]; | ||
| /** | ||
| * Parse mode string to human-readable format | ||
| */ | ||
| private parseMode; | ||
| /** | ||
| * Modify permissions for all files to match modified Bom | ||
| * - Changes 755 to 775 | ||
| * - Changes 644 to 664 | ||
| * - Sets owner/group to root:admin (0/80 on macOS) | ||
| */ | ||
| modifyPermissions(): void; | ||
| /** | ||
| * Rebuild cpio archive with modified permissions | ||
| */ | ||
| rebuildCpio(): Buffer; | ||
| /** | ||
| * Get the list of entries for inspection | ||
| */ | ||
| getEntries(): CpioEntry[]; | ||
| } | ||
| export declare function modifyPayloadPermissions(payloadFile: string): Promise<void>; | ||
| export {}; |
| import * as fs from 'fs'; | ||
| import * as zlib from 'zlib'; | ||
| import { debugLog } from '../util.js'; | ||
| /** | ||
| * File type enumeration for cpio entries | ||
| */ | ||
| var FileType; | ||
| (function (FileType) { | ||
| FileType[FileType["Socket"] = 12] = "Socket"; | ||
| FileType[FileType["Symlink"] = 10] = "Symlink"; | ||
| FileType[FileType["Regular"] = 8] = "Regular"; | ||
| FileType[FileType["Block"] = 6] = "Block"; | ||
| FileType[FileType["Directory"] = 4] = "Directory"; | ||
| FileType[FileType["Character"] = 2] = "Character"; | ||
| FileType[FileType["FIFO"] = 1] = "FIFO"; | ||
| })(FileType || (FileType = {})); | ||
| /** | ||
| * Parse and modify permissions in a cpio (SVR4/ASCII) archive | ||
| * This handles the 'odc' format (old portable ASCII format) | ||
| */ | ||
| export class CpioModifier { | ||
| entries = []; | ||
| static MAGIC_NUMBER = '070707'; | ||
| static HEADER_SIZE = 76; | ||
| static TRAILER_NAME = 'TRAILER!!!'; | ||
| /** | ||
| * Parse cpio archive from buffer | ||
| */ | ||
| parseCpio(buffer) { | ||
| let offset = 0; | ||
| this.entries = []; | ||
| while (offset < buffer.length) { | ||
| // Check for trailer | ||
| if (buffer.length - offset < CpioModifier.HEADER_SIZE) | ||
| break; | ||
| // cpio odc format has 76-byte ASCII header | ||
| const header = buffer.slice(offset, offset + CpioModifier.HEADER_SIZE).toString('ascii'); | ||
| // Check magic number (070707 for odc format) | ||
| const magic = header.substr(0, 6); | ||
| if (magic !== CpioModifier.MAGIC_NUMBER) { | ||
| debugLog('Warning: Invalid magic number at offset in CPIO archive', offset); | ||
| break; | ||
| } | ||
| // Parse header fields (all in octal ASCII) | ||
| const entry = { | ||
| offset: offset, | ||
| magic: magic, | ||
| dev: header.substr(6, 6), | ||
| ino: header.substr(12, 6), | ||
| mode: header.substr(18, 6), | ||
| uid: header.substr(24, 6), | ||
| gid: header.substr(30, 6), | ||
| nlink: header.substr(36, 6), | ||
| rdev: header.substr(42, 6), | ||
| mtime: header.substr(48, 11), | ||
| namesize: parseInt(header.substr(59, 6), 8), | ||
| filesize: parseInt(header.substr(65, 11), 8), | ||
| filename: '', | ||
| dataOffset: 0, | ||
| data: Buffer.alloc(0), | ||
| }; | ||
| offset += CpioModifier.HEADER_SIZE; | ||
| // Read filename | ||
| entry.filename = buffer.slice(offset, offset + entry.namesize - 1).toString('ascii'); | ||
| offset += entry.namesize; | ||
| // Check for trailer entry | ||
| if (entry.filename === CpioModifier.TRAILER_NAME) { | ||
| this.entries.push(entry); | ||
| break; | ||
| } | ||
| // Store file data offset and length | ||
| entry.dataOffset = offset; | ||
| entry.data = buffer.slice(offset, offset + entry.filesize); | ||
| offset += entry.filesize; | ||
| this.entries.push(entry); | ||
| debugLog(`CPIO Found: ${entry.filename} (mode: ${entry.mode} = ${this.parseMode(entry.mode)}, uid = ${entry.uid}, gid = ${entry.gid})`); | ||
| } | ||
| return this.entries; | ||
| } | ||
| /** | ||
| * Parse mode string to human-readable format | ||
| */ | ||
| parseMode(modeStr) { | ||
| const mode = parseInt(modeStr, 8); | ||
| const perms = (mode & 0o777).toString(8).padStart(3, '0'); | ||
| const type = (mode & 0o170000) >> 12; | ||
| const typeMap = { | ||
| [FileType.Socket]: 'socket', | ||
| [FileType.Symlink]: 'symlink', | ||
| [FileType.Regular]: 'file', | ||
| [FileType.Block]: 'block', | ||
| [FileType.Directory]: 'dir', | ||
| [FileType.Character]: 'char', | ||
| [FileType.FIFO]: 'fifo', | ||
| }; | ||
| const typeStr = typeMap[type] || 'unknown'; | ||
| return `${typeStr}:${perms}`; | ||
| } | ||
| /** | ||
| * Modify permissions for all files to match modified Bom | ||
| * - Changes 755 to 775 | ||
| * - Changes 644 to 664 | ||
| * - Sets owner/group to root:admin (0/80 on macOS) | ||
| */ | ||
| modifyPermissions() { | ||
| for (const entry of this.entries) { | ||
| const mode = parseInt(entry.mode, 8); | ||
| const originalType = mode & 0o170000; // Preserve file type bits | ||
| const type = originalType >> 12; | ||
| const perms = mode & 0o777; | ||
| let newMode = mode; | ||
| if (type === FileType.Regular || type === FileType.Directory || type === FileType.Symlink) { | ||
| if (perms === 0o755) { | ||
| newMode = originalType | 0o775; | ||
| } | ||
| else if (perms === 0o644) { | ||
| newMode = originalType | 0o664; | ||
| } | ||
| if (entry.uid === '000000' && entry.gid === '000000') { | ||
| // Set gid to 80 === admin | ||
| // Leave uid at 0 === root | ||
| entry.gid = (80).toString(8).padStart(6, '0'); | ||
| } | ||
| debugLog('CPIO rewriting permissions for', entry.filename, `from oldMode=${this.parseMode(mode.toString(8))}, newMode=${this.parseMode(newMode.toString(8))}`); | ||
| } | ||
| // Convert back to 6-digit octal string | ||
| entry.mode = newMode.toString(8).padStart(6, '0'); | ||
| } | ||
| } | ||
| /** | ||
| * Rebuild cpio archive with modified permissions | ||
| */ | ||
| rebuildCpio() { | ||
| const chunks = []; | ||
| for (const entry of this.entries) { | ||
| // Rebuild header | ||
| const header = Buffer.from(entry.magic + | ||
| entry.dev + | ||
| entry.ino + | ||
| entry.mode + // This now contains our modified permissions | ||
| entry.uid + | ||
| entry.gid + | ||
| entry.nlink + | ||
| entry.rdev + | ||
| entry.mtime + | ||
| entry.namesize.toString(8).padStart(6, '0') + | ||
| entry.filesize.toString(8).padStart(11, '0'), 'ascii'); | ||
| chunks.push(header); | ||
| // Add filename (with null terminator) | ||
| const filenameBuffer = Buffer.alloc(entry.namesize); | ||
| filenameBuffer.write(entry.filename, 0, 'ascii'); | ||
| chunks.push(filenameBuffer); | ||
| // Add file data if not trailer | ||
| if (entry.filename !== CpioModifier.TRAILER_NAME && entry.filesize > 0) { | ||
| chunks.push(entry.data); | ||
| } | ||
| } | ||
| return Buffer.concat(chunks); | ||
| } | ||
| /** | ||
| * Get the list of entries for inspection | ||
| */ | ||
| getEntries() { | ||
| return this.entries; | ||
| } | ||
| } | ||
| export async function modifyPayloadPermissions(payloadFile) { | ||
| debugLog('Reading Payload for permissions modification...'); | ||
| const gzippedData = await fs.promises.readFile(payloadFile); | ||
| debugLog('Ungzipping payload in memory...'); | ||
| const cpioData = zlib.gunzipSync(gzippedData); | ||
| debugLog(` -- Uncompressed size: ${cpioData.length} bytes`); | ||
| debugLog('Parsing cpio archive...'); | ||
| const modifier = new CpioModifier(); | ||
| modifier.parseCpio(cpioData); | ||
| modifier.modifyPermissions(); | ||
| debugLog('Rebuilding cpio archive...'); | ||
| const newCpioData = modifier.rebuildCpio(); | ||
| debugLog('Gzipping modified archive...'); | ||
| const newGzippedData = zlib.gzipSync(newCpioData, { level: 9 }); | ||
| debugLog(`Writing Pyload back to disk...`); | ||
| fs.writeFileSync(payloadFile, newGzippedData); | ||
| } | ||
| //# sourceMappingURL=cpio.js.map |
| {"version":3,"file":"cpio.js","sourceRoot":"","sources":["../../src/pkg-utils/cpio.ts"],"names":[],"mappings":"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"} |
@@ -14,2 +14,25 @@ #!/usr/bin/env node | ||
| }, | ||
| identity: { | ||
| type: 'string', | ||
| }, | ||
| identityValidation: { | ||
| type: 'boolean', | ||
| default: false, | ||
| }, | ||
| keychain: { | ||
| type: 'string', | ||
| }, | ||
| platform: { | ||
| type: 'string', | ||
| }, | ||
| pkg: { | ||
| type: 'string', | ||
| }, | ||
| scripts: { | ||
| type: 'string', | ||
| }, | ||
| openPermissionsForSquirrelMac: { | ||
| type: 'boolean', | ||
| default: false, | ||
| }, | ||
| }, | ||
@@ -21,3 +44,5 @@ allowPositionals: true, | ||
| if (!app || values.help || positionals.length > 0) { | ||
| const { help, ...opts } = values; | ||
| if (!app || help || positionals.length > 0) { | ||
| const usage = fs | ||
@@ -31,6 +56,7 @@ .readFileSync(path.join(import.meta.dirname, 'electron-osx-flat-usage.txt')) | ||
| try { | ||
| await flat({ app }); | ||
| // @ts-ignore | ||
| await flat({ app, ...opts }); | ||
| // This is the default value inferred in the `flat` function. | ||
| console.log( | ||
| `Application flattened, saved to: ${path.join(path.dirname(app), path.basename(app, '.app') + '.pkg')}`, | ||
| `Application flattened, saved to: ${path.join(path.dirname(app), opts.pkg || (path.basename(app, '.app') + '.pkg'))}`, | ||
| ); | ||
@@ -37,0 +63,0 @@ process.exit(0); |
+68
-18
@@ -0,4 +1,7 @@ | ||
| import fs from 'node:fs'; | ||
| import path from 'node:path'; | ||
| import { debugLog, debugWarn, execFileAsync, validateOptsApp, validateOptsPlatform, } from './util.js'; | ||
| import { findIdentities } from './util-identities.js'; | ||
| import { modifyPayloadPermissions } from './pkg-utils/cpio.js'; | ||
| import { setPermissionOnBom } from './pkg-utils/bom.js'; | ||
| /** | ||
@@ -57,22 +60,69 @@ * This function returns a promise validating all options passed in opts. | ||
| else { | ||
| const componentPkgPath = path.join(path.dirname(opts.app), path.basename(opts.app, '.app') + '-component.pkg'); | ||
| const pkgbuildArgs = [ | ||
| '--install-location', | ||
| opts.install, | ||
| '--component', | ||
| opts.app, | ||
| componentPkgPath, | ||
| ]; | ||
| if (opts.scripts) { | ||
| pkgbuildArgs.unshift('--scripts', opts.scripts); | ||
| const targetDir = path.dirname(opts.app); | ||
| const componentPkgPath = path.join(targetDir, path.basename(opts.app, '.app') + '-component.pkg'); | ||
| const componentExtractedPath = path.join(targetDir, path.basename(opts.app, '.app') + '-component-extracted'); | ||
| try { | ||
| const pkgbuildArgs = [ | ||
| '--install-location', | ||
| opts.install, | ||
| '--component', | ||
| opts.app, | ||
| componentPkgPath, | ||
| ]; | ||
| if (opts.scripts) { | ||
| pkgbuildArgs.unshift('--scripts', opts.scripts); | ||
| } | ||
| debugLog('Building component package... ' + opts.app); | ||
| await execFileAsync('pkgbuild', pkgbuildArgs); | ||
| if (opts.openPermissionsForSquirrelMac) { | ||
| debugLog('Rewriting permissions in component package'); | ||
| // Change file permissions to be squirrel compatible | ||
| await fs.promises.mkdir(componentExtractedPath, { | ||
| recursive: true, | ||
| }); | ||
| await execFileAsync('/usr/bin/xar', ['-xf', path.relative(componentExtractedPath, componentPkgPath)], { | ||
| cwd: componentExtractedPath, | ||
| }); | ||
| const bomContents = await execFileAsync('/usr/bin/lsbom', ['Bom'], { | ||
| cwd: componentExtractedPath, | ||
| }); | ||
| await fs.promises.copyFile(path.resolve(componentExtractedPath, 'Bom'), path.resolve(targetDir, 'OldBom')); | ||
| const mutatedBomPath = path.resolve(targetDir, 'ModifiedBom'); | ||
| debugLog('Writing mutated BOM --> ', mutatedBomPath); | ||
| await fs.promises.writeFile(mutatedBomPath, setPermissionOnBom(bomContents)); | ||
| // Overwrite the existing Bom then clean up our temporary file | ||
| await execFileAsync('/usr/bin/mkbom', ['-i', mutatedBomPath, path.resolve(componentExtractedPath, 'Bom')], { | ||
| cwd: targetDir, | ||
| }); | ||
| await fs.promises.copyFile(path.resolve(componentExtractedPath, 'Bom'), path.resolve(targetDir, 'NewBom')); | ||
| // await fs.promises.rm(mutatedBomPath); | ||
| await fs.promises.rm(componentPkgPath); | ||
| await modifyPayloadPermissions(path.resolve(componentExtractedPath, 'Payload')); | ||
| debugLog('Rebuilding component package after permission modifications'); | ||
| await execFileAsync('/usr/bin/xar', [ | ||
| '--compression', | ||
| 'none', | ||
| '-cf', | ||
| path.relative(componentExtractedPath, componentPkgPath), | ||
| ...(await fs.promises.readdir(componentExtractedPath)), | ||
| ], { | ||
| cwd: componentExtractedPath, | ||
| }); | ||
| } | ||
| const args = ['--package', componentPkgPath, opts.install, '--sign', identity.name, opts.pkg]; | ||
| if (opts.keychain) { | ||
| args.unshift('--keychain', opts.keychain); | ||
| } | ||
| debugLog('Flattening OS X Installer package... ' + opts.app); | ||
| await execFileAsync('productbuild', args); | ||
| } | ||
| debugLog('Building component package... ' + opts.app); | ||
| await execFileAsync('pkgbuild', pkgbuildArgs); | ||
| const args = ['--package', componentPkgPath, opts.install, '--sign', identity.name, opts.pkg]; | ||
| if (opts.keychain) { | ||
| args.unshift('--keychain', opts.keychain); | ||
| finally { | ||
| await fs.promises.rm(componentPkgPath, { | ||
| force: true, | ||
| }); | ||
| await fs.promises.rm(componentExtractedPath, { | ||
| force: true, | ||
| recursive: true, | ||
| }); | ||
| } | ||
| debugLog('Flattening OS X Installer package... ' + opts.app); | ||
| await execFileAsync('productbuild', args); | ||
| await execFileAsync('rm', [componentPkgPath]); | ||
| } | ||
@@ -79,0 +129,0 @@ } |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"flat.js","sourceRoot":"","sources":["../src/flat.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"flat.js","sourceRoot":"","sources":["../src/flat.ts"],"names":[],"mappings":"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"} |
+15
-0
@@ -230,2 +230,17 @@ /** | ||
| scripts?: string; | ||
| /** | ||
| * Permissions of your "MyApp.app" will be overwritten inside the pkg to be | ||
| * owned by root:admin and 775 instead of 755. | ||
| * | ||
| * This is done so that Squirrel Mac updates work better when this PKG is installed | ||
| * on end user machines. Specifically 775 allows _any_ admin to update MyApp.app | ||
| * instead of it being limtied to the user who installed the app in /Applications. | ||
| * | ||
| * This is probably what you want to enable if you're shipping a PKG to enterprise | ||
| * companies. It is disabled by default purely for backwards compatibility and will be | ||
| * changed in a future major version. | ||
| * | ||
| * @defaultValue `false` | ||
| */ | ||
| openPermissionsForSquirrelMac?: boolean; | ||
| }; | ||
@@ -232,0 +247,0 @@ type OnlyValidatedFlatOptions = { |
+3
-2
| { | ||
| "name": "@electron/osx-sign", | ||
| "version": "2.1.0", | ||
| "version": "2.2.0", | ||
| "description": "Codesign Electron macOS apps", | ||
@@ -77,3 +77,4 @@ "type": "module", | ||
| ] | ||
| } | ||
| }, | ||
| "packageManager": "yarn@1.22.22" | ||
| } |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances
127477
23.84%43
16.22%1711
29.13%8
33.33%