🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

pear-pack

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pear-pack - npm Package Compare versions

Comparing version
1.1.2
to
1.1.3
+8
-4
package.json
{
"name": "pear-pack",
"version": "1.1.2",
"version": "1.1.3",
"description": "",

@@ -8,7 +8,10 @@ "main": "index.js",

"format": "prettier --write .",
"lint": "prettier --check .",
"test": "brittle-bare --coverage test/index.test.js"
"lint": "prettier --check . && lunte",
"test": "npm run test:node && npm run test:bare",
"test:node": "brittle-node --coverage test/index.test.js",
"test:bare": "brittle-bare --coverage test/index.test.js"
},
"files": [],
"keywords": [],
"author": "",
"author": "Holepunch Inc",
"license": "Apache-2.0",

@@ -26,2 +29,3 @@ "dependencies": {

"localdrive": "^2.2.0",
"lunte": "^1.3.0",
"prettier": "^3.6.2",

@@ -28,0 +32,0 @@ "prettier-config-holepunch": "^1.0.0"

* text=auto eol=lf
name: Test with Bare
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
strategy:
matrix:
include:
- os: ubuntu-latest
platform: linux
arch: x64
- os: macos-latest
platform: darwin
arch: x64
- os: windows-latest
platform: win32
arch: x64
runs-on: ${{ matrix.os }}
name: ${{ matrix.platform }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Setup bare
run: npm i -g bare-runtime
- name: Install dependencies
run: npm i
- name: Lint
run: npm run lint
- name: Run tests
run: npm run test
"prettier-config-holepunch"
const asset = require.asset('./data.txt')
console.log('loaded asset', asset)
const moduleA = require('./moduleA')
console.log('boot loaded')
const moduleB = require('./moduleB')
module.exports = {
name: 'moduleA',
getB: () => moduleB
}
const moduleA = require('./moduleA')
module.exports = {
name: 'moduleB',
getA: () => moduleA
}
console.log('helper module loaded')
console.log('custom entry point loaded')
require('./helper')

Sorry, the diff of this file is not supported yet

const config = require('./config.json')
console.log('config loaded:', config.name)
{
"name": "config-data",
"version": "1.0.0",
"settings": {
"debug": true
}
}
console.log('this module exists but entry does not')
const addon = require.addon('.')
console.log('loaded native addon')
addon.testFunction()

Sorry, the diff of this file is not supported yet

const addon = require.addon('.')
console.log('loaded native addon')
addon.testFunction()
{
"name": "native-addon"
}

Sorry, the diff of this file is not supported yet

import simpleModule from './simple-module.js'
simpleModule.greet()
export default {
greet() {
console.log('hello world!')
}
}
const simpleModule = require('./simple-module')
simpleModule.greet()
module.exports = {
greet() {
console.log('hello world!')
}
}
const test = require('brittle')
const Localdrive = require('localdrive')
const path = require('path')
const pearPack = require('..')
const dir = __dirname + '/fixtures'
test('simple require test', async (t) => {
const drive = new Localdrive(path.join(dir, '/simple-require'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should return bundle buffer')
t.ok(result.bundle.length > 0, 'bundle should have content')
const bundleStr = result.bundle.toString()
t.ok(bundleStr.includes('hello world'), 'bundle should contain file content')
t.ok(
bundleStr.includes('simple-module.js'),
'bundle should include dependencies'
)
t.ok(result.prebuilds instanceof Map, 'should return prebuilds map')
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('simple import test', async (t) => {
const drive = new Localdrive(path.join(dir, '/simple-import'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should return bundle buffer')
t.ok(result.bundle.length > 0, 'bundle should have content')
const bundleStr = result.bundle.toString()
t.ok(bundleStr.includes('hello world'), 'bundle should contain file content')
t.ok(
bundleStr.includes('simple-module.js'),
'bundle should include dependencies'
)
t.ok(result.prebuilds instanceof Map, 'should return prebuilds map')
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('native addons with require.native', async (t) => {
const drive = new Localdrive(path.join(dir, '/native-addon'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should return bundle buffer')
const bundleStr = result.bundle.toString()
t.ok(
bundleStr.includes('".":"/prebuilds/linux-x64/') &&
bundleStr.includes('.node'),
'bundle should include reference to native addon'
)
t.is(result.prebuilds.size, 1, 'should capture one prebuild')
})
test('native bare addons with require.native', async (t) => {
const drive = new Localdrive(path.join(dir, '/native-addon-bare'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should return bundle buffer')
const bundleStr = result.bundle.toString()
t.ok(
bundleStr.includes('".":"/prebuilds/linux-x64/') &&
bundleStr.includes('.bare'),
'bundle should include reference to native addon'
)
t.is(result.prebuilds.size, 1, 'should capture one prebuild')
})
test('assets with require.asset', async (t) => {
const drive = new Localdrive(path.join(dir, '/asset'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should return bundle buffer')
const bundleStr = result.bundle.toString()
t.ok(
bundleStr.includes('"assets":["/data.txt"]'),
'bundle should include reference to asset'
)
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('custom entry point', async (t) => {
const drive = new Localdrive(path.join(dir, '/custom-entry'))
const result = await pearPack(drive, {
entry: '/main.js',
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should pack with custom entry')
const bundleStr = result.bundle.toString()
t.ok(
bundleStr.includes('custom entry point'),
'should include custom entry point content'
)
t.ok(
bundleStr.includes('"main":"/main.js"'),
'should include reference to entry point'
)
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('missing entry point should error', async (t) => {
const drive = new Localdrive(path.join(dir, '/missing-entry'))
await t.exception(
pearPack(drive, { entry: '/nonexistent.js', hosts: ['linux-x64'] }),
/nonexistent\.js/,
'should throw error for missing entry file'
)
})
test('empty directory should error', async (t) => {
const drive = new Localdrive(path.join(dir, '/empty'))
await t.exception(
pearPack(drive, { hosts: ['linux-x64'] }),
/boot\.js/,
'should throw error for missing entry file in empty directory'
)
})
test('multiple hostss', async (t) => {
const drive = new Localdrive(path.join(dir, '/simple-require'))
const result = await pearPack(drive, {
hosts: ['darwin-x64', 'linux-x64', 'win32-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should handle multiple hostss')
t.ok(result.bundle.length > 0, 'multi-hosts bundle should have content')
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('JSON modules', async (t) => {
const drive = new Localdrive(path.join(dir, '/json-module'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
const bundleStr = result.bundle.toString()
t.ok(bundleStr.includes('config-data'), 'should include JSON module content')
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})
test('circular dependencies', async (t) => {
const drive = new Localdrive(path.join(dir, '/circular-deps'))
const result = await pearPack(drive, {
hosts: ['linux-x64']
})
t.ok(Buffer.isBuffer(result.bundle), 'should handle circular dependencies')
const bundleStr = result.bundle.toString()
t.ok(
bundleStr.includes('"/moduleA.js"') && bundleStr.includes('"/moduleB.js"'),
'should include both circular modules'
)
t.is(result.prebuilds.size, 0, 'should have no prebuilds')
})