Compare commits

...

7 Commits

Author SHA1 Message Date
calebboyd 9962630ace chore: bump package-lock version and dev deps 2021-02-25 06:37:52 -06:00
Wilmar den Ouden 232e1005e6 fix: update resolve-dependencies to 6.0.5 (#869) 2021-02-25 06:32:35 -06:00
calebboyd 9f22309949 feat: add asset flag for using cached artifact 2021-01-26 07:16:29 -06:00
calebboyd cf8e6ff393 fix: got upload searchParams 2021-01-05 12:47:29 -06:00
calebboyd 7275d4b848 fix: update dependencies 2021-01-03 17:00:24 -06:00
calebboyd 06a8242114 fix: resolve resources relative to passed cwd
closes #645
2021-01-03 16:25:52 -06:00
calebboyd 2935ee3f93 fix: add lstat patch 2021-01-03 15:29:55 -06:00
8 changed files with 4324 additions and 733 deletions
+4243 -670
View File
File diff suppressed because it is too large Load Diff
+27 -20
View File
@@ -2,7 +2,7 @@
"name": "nexe",
"description": "Create a single executable out of your Node.js application",
"license": "MIT",
"version": "4.0.0-beta.15",
"version": "4.0.0-beta.18",
"contributors": [
"Craig Condon <craig.j.condon@gmail.com> (http://crcn.io)",
"Jared Allard <jaredallard@outlook.com>",
@@ -32,40 +32,47 @@
"engines": {
"node": ">=10"
},
"mocha": {
"spec": "./test/**/*.spec.ts",
"checkLeaks": true,
"require": [
"ts-node/register"
]
},
"dependencies": {
"@calebboyd/semaphore": "^1.3.1",
"app-builder": "^6.2.2",
"caw": "^2.0.1",
"chalk": "^2.4.2",
"cherow": "1.6.9",
"download": "^7.1.0",
"globby": "^11.0.1",
"got": "^9.6.0",
"download": "^8.0.0",
"globby": "^11.0.2",
"got": "^11.8.1",
"minimist": "^1.2.5",
"mkdirp": "^1.0.4",
"multistream": "^4.0.0",
"multistream": "^4.0.1",
"ora": "^3.4.0",
"pify": "^4.0.1",
"resolve-dependencies": "^6.0.2",
"pify": "^5.0.0",
"resolve-dependencies": "^6.0.5",
"rimraf": "^3.0.2"
},
"devDependencies": {
"@types/chai": "^4.2.11",
"@types/download": "^6.2.4",
"@types/globby": "^9.1.0",
"@types/got": "^9.6.10",
"@types/minimist": "^1.2.0",
"@types/mkdirp": "^1.0.0",
"@types/mocha": "^7.0.2",
"@types/chai": "^4",
"@types/download": "^6",
"@types/globby": "^9",
"@types/got": "^9.6.11",
"@types/minimist": "^1.2.1",
"@types/mkdirp": "^1.0.1",
"@types/mocha": "^8.2.1",
"@types/multistream": "^2.1.1",
"@types/ora": "^3.2.0",
"@types/pify": "3.0.2",
"@types/pify": "5.0.0",
"@types/rimraf": "3.0.0",
"@types/semver": "^7.1.0",
"chai": "^4.2.0",
"execa": "^4.0.2",
"mocha": "^7.1.1",
"prettier": "^2.0.5",
"@types/semver": "^7.3.4",
"chai": "^4.3.0",
"execa": "^5.0.0",
"mocha": "^8.3.0",
"prettier": "^2.2.1",
"ts-node": "^8.9.0",
"tslint": "^6.1.1",
"tslint-config-prettier": "^1.18.0",
+4 -7
View File
@@ -110,13 +110,7 @@ export class NexeCompiler {
//SOMEDAY iterate over multiple targets with `--outDir`
this.targets = options.targets as NexeTarget[]
this.target = this.targets[0]
if (
!(
options.remote.startsWith('http://') ||
options.remote.startsWith('https://') ||
options.remote.startsWith('file://')
)
) {
if (!/https?\:\/\//.test(options.remote)) {
throw new NexeError(
`Invalid remote URI scheme (must be http, https, or file): ${options.remote}`
)
@@ -198,6 +192,9 @@ export class NexeCompiler {
}
public getNodeExecutableLocation(target?: NexeTarget) {
if (this.options.asset) {
return resolve(this.options.cwd, this.options.asset)
}
if (target) {
return join(this.options.temp, target.toString())
}
+44 -29
View File
@@ -1,4 +1,5 @@
import { Stats } from 'fs'
import { getLatestGitRelease } from '../releases'
export interface NexeBinary {
blobPath: string
@@ -115,6 +116,25 @@ function shimFs(binary: NexeBinary, fs: any = require('fs')) {
}
}
const getStat = function (fn: string) {
return function stat(filepath: string | Buffer, options: any, callback: any) {
let stat: any
if (typeof options === 'function') {
callback = options
stat = ownStat(filepath, null)
} else {
stat = ownStat(filepath, options)
}
if (stat) {
process.nextTick(() => {
callback(null, stat)
})
} else {
return originalFsMethods[fn].apply(fs, arguments)
}
}
}
function makeLong(filepath: string) {
return (path as any)._makeLong && (path as any)._makeLong(filepath)
}
@@ -220,23 +240,26 @@ function shimFs(binary: NexeBinary, fs: any = require('fs')) {
originalFsMethods.open(blobPath, 'r', function (err: Error, fd: number) {
if (err) return callback(err, null)
originalFsMethods.read(fd, Buffer.alloc(length), 0, length, resourceOffset, function (
error: Error,
bytesRead: number,
result: Buffer
) {
if (error) {
return originalFsMethods.close(fd, function () {
callback(error, null)
originalFsMethods.read(
fd,
Buffer.alloc(length),
0,
length,
resourceOffset,
function (error: Error, bytesRead: number, result: Buffer) {
if (error) {
return originalFsMethods.close(fd, function () {
callback(error, null)
})
}
originalFsMethods.close(fd, function (err: Error) {
if (err) {
return callback(err, result)
}
callback(err, encoding ? result.toString(encoding) : result)
})
}
originalFsMethods.close(fd, function (err: Error) {
if (err) {
return callback(err, result)
}
callback(err, encoding ? result.toString(encoding) : result)
})
})
)
})
},
createReadStream: function createReadStream(filepath: any, options: any) {
@@ -279,24 +302,16 @@ function shimFs(binary: NexeBinary, fs: any = require('fs')) {
}
return originalFsMethods.statSync.apply(fs, arguments)
},
stat: function stat(filepath: string | Buffer, options: any, callback: any) {
let stat: any
if (typeof options === 'function') {
callback = options
stat = ownStat(filepath, null)
} else {
stat = ownStat(filepath, options)
}
stat: getStat('stat'),
lstat: getStat('lstat'),
lstatSync: function statSync(filepath: string | Buffer, options: any) {
const stat = ownStat(filepath, options)
if (stat) {
process.nextTick(() => {
callback(null, stat)
})
} else {
return originalFsMethods.stat.apply(fs, arguments)
return stat
}
return originalFsMethods.lstatSync.apply(fs, arguments)
},
}
if (typeof fs.exists === 'function') {
nfs.exists = function (filepath: string, cb: Function) {
cb = cb || noop
+2
View File
@@ -22,6 +22,7 @@ export interface NexeOptions {
targets: (string | NexeTarget)[]
name: string
remote: string
asset: string
cwd: string
fs: boolean | string[]
flags: string[]
@@ -77,6 +78,7 @@ const alias = {
i: 'input',
o: 'output',
v: 'version',
a: 'asset',
t: 'target',
b: 'build',
n: 'name',
+2 -1
View File
@@ -1,5 +1,6 @@
import { each } from '../util'
import * as globs from 'globby'
import { resolve } from 'path'
import { NexeCompiler } from '../compiler'
export default async function resource(compiler: NexeCompiler, next: () => Promise<any>) {
@@ -17,7 +18,7 @@ export default async function resource(compiler: NexeCompiler, next: () => Promi
await each(globs(resourcesWithForwardSlashes, { cwd, onlyFiles: true }), async (file) => {
count++
step.log(`Including file: ${file}`)
await compiler.addResource(file)
await compiler.addResource(resolve(cwd, file))
})
step.log(`Included ${count} file(s)`)
return next()
+2 -2
View File
@@ -3,7 +3,7 @@ import { getUnBuiltReleases, getLatestGitRelease } from '../lib/releases'
import { runDockerBuild } from './docker'
import { getTarget, targetsEqual, NexeTarget } from '../lib/target'
import { pathExistsAsync, readFileAsync, execFileAsync, semverGt } from '../lib/util'
import got = require('got')
import got from 'got'
import { cpus } from 'os'
const env = process.env,
@@ -86,7 +86,7 @@ async function build() {
return
}
await got(gitRelease.upload_url.split('{')[0], {
query: { name: target.toString() },
searchParams: { name: target.toString() },
body: await readFileAsync(output),
headers: {
...headers,
-4
View File
@@ -1,4 +0,0 @@
./test/**/*.spec.ts
--check-leaks
--require ts-node/register
--recursive