Socket
Socket
Sign inDemoInstall

glslify

Package Overview
Dependencies
Maintainers
18
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

glslify - npm Package Compare versions

Comparing version 6.4.1 to 7.0.0

6

package.json
{
"name": "glslify",
"version": "6.4.1",
"version": "7.0.0",
"description": "A node.js-style module system for GLSL!",

@@ -34,3 +34,2 @@ "main": "index.js",

"static-eval": "^2.0.0",
"tape": "^4.6.0",
"through2": "^2.0.1",

@@ -43,3 +42,2 @@ "xtend": "^4.0.0"

"electron-spawn": "^5.0.0",
"from2": "^2.3.0",
"glsl-easings": "^1.0.0",

@@ -50,3 +48,3 @@ "glsl-noise": "0.0.0",

"tap-spec": "^2.2.1",
"tape": "^3.5.0",
"tape": "^4.6.0",
"uniq": "^1.0.1"

@@ -53,0 +51,0 @@ },

@@ -7,3 +7,3 @@ var falafel = require('falafel')

var gdeps = require('glslify-deps')
var gbundle = require('glslify-bundle')
var glslBundle = require('glslify-bundle')
var path = require('path')

@@ -28,3 +28,2 @@ var seval = require('static-eval')

if (!opts) opts = {}
var posts = []
var dir = path.dirname(file)

@@ -38,2 +37,5 @@ var glvar = null, mdir = dir

var sharedPosts = []
var sharedTransforms = updateSharedTransforms()
function evaluate (expr) {

@@ -43,2 +45,24 @@ return seval(expr, evars)

function updateSharedTransforms () {
;[]
.concat(opts.post || [])
.concat(opts.p || [])
.forEach(function (post) {
post = Array.isArray(post) ? post : [post]
var name = post[0]
var opts = post[1] || {}
sharedPosts.push({ name: name, opts: opts, base: process.cwd() })
})
return []
.concat(opts.transform || [])
.concat(opts.t || [])
.filter(function (tr) {
var name = tr[0]
var opts = tr[1] || {}
if (!opts.post) return true
sharedPosts.push({ name: name, opts: opts, base: process.cwd() })
})
}
var d = duplexify()

@@ -55,33 +79,13 @@ var out = from(function () {})

;[]
.concat(opts.post || [])
.concat(opts.p || [])
.forEach(function (post) {
post = Array.isArray(post) ? post : [post]
var name = post[0]
var opts = post[1] || {}
posts.push({ name: name, opts: opts, base: process.cwd() })
})
try { var fout = falafel(src, parseOptions, onnode) }
catch (err) { return d.emit('error', err) }
done()
function onnode (node) {
if (node.type === 'Identifier' && node.name === 'require'
&& node.parent.type === 'CallExpression'
&& node.parent.arguments[0]
&& node.parent.arguments[0].type === 'Literal'
&& node.parent.arguments[0].value === 'path'
&& node.parent.parent.type === 'VariableDeclarator') {
// case: path = require('path')
if (isRequirePath(node)) {
evars.path = path
} else if (node.type === 'Identifier' && node.name === 'require'
&& node.parent.type === 'CallExpression'
&& node.parent.arguments[0]
&& node.parent.arguments[0].type === 'Literal'
&& (/^glslify(?:\/index(?:\.js)?)?/.test(node.parent.arguments[0].value)
|| path.resolve(dir,node.parent.arguments[0].value) === __dirname
|| path.resolve(dir,node.parent.arguments[0].value) === glslfile0
|| path.resolve(dir,node.parent.arguments[0].value) === glslfile1)) {
} else if (isRequireGlslify(node, dir)) {
var p = node.parent.parent, pp = p.parent
if (p.type === 'CallExpression' && pp.type === 'CallExpression') {
if (isReqCallExpression(p, pp)) {
// case: require('glslify')(...)

@@ -93,12 +97,10 @@ pending++

glvar = p.id.name
} else if (p.type === 'MemberExpression' && p.property.name === 'file'
&& pp.type === 'CallExpression') {
} else if (isReqCallFile(p, pp)) {
// case: require('glslify').file(...)
pending++
rcallfile(pp, done)
} else if (p.type === 'MemberExpression' && p.property.name === 'compile'
&& pp.type === 'CallExpression') {
callfile(pp, pp.callee.object.source(), done)
} else if (isReqCallCompile(p, pp)) {
// case: require('glslify').compile(...)
pending++
rcallcompile(pp, done)
callcompile(pp, pp.callee.object.source(), done)
} else if (p.type === 'TaggedTemplateExpression') {

@@ -109,28 +111,21 @@ // case: require('glslify')`...`

}
} else if (node.type === 'Identifier' && node.name === glvar
&& node.parent.type === 'CallExpression') {
} else if (isCallExpression(node, glvar)) {
// case: glvar(...)
pending++
callexpr(node.parent, done)
} else if (node.type === 'TaggedTemplateExpression'
&& node.tag.name === glvar) {
} else if (isTagExpression(node, glvar)) {
// case: glvar`...`
pending++
tagexpr(node, done)
} else if (node.type === 'Identifier' && node.name === glvar
&& node.parent.type === 'MemberExpression'
&& node.parent.property.name === 'file'
&& node.parent.parent.type === 'CallExpression'
&& node.parent.parent.arguments[0]) {
} else if (isCallFile(node, glvar)) {
// case: glvar.file(...)
pending++
callfile(node.parent.parent, done)
} else if (node.type === 'Identifier' && node.name === glvar
&& node.parent.type === 'MemberExpression'
&& node.parent.property.name === 'compile'
&& node.parent.parent.type === 'CallExpression'
&& node.parent.parent.arguments[0]) {
callfile(node.parent.parent, glvar, done)
} else if (isCallCompile(node, glvar)) {
// case: glvar.compile(...)
pending++
callcompile(node.parent.parent, done)
callcompile(node.parent.parent, glvar, done)
}
}
function tagexpr (node, cb) {

@@ -144,11 +139,12 @@ var q = node.quasi

if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
node.update(node.tag.source() + '('
+ JSON.stringify(bsrc.split('__GLX_PLACEHOLDER__'))
+ [''].concat(q.expressions.map(function (e) {
return e.source()
})).join(',')
+ ')')
cb()
applyPostTransforms(null, deps, {}, function (err, bsrc) {
if (err) return d.emit('error', err)
node.update(node.tag.source() + '('
+ JSON.stringify(bsrc.split('__GLX_PLACEHOLDER__'))
+ [''].concat(q.expressions.map(function (e) {
return e.source()
})).join(',')
+ ')')
cb()
})
})

@@ -159,3 +155,4 @@ }

var mopts = p.arguments[1] ? evaluate(p.arguments[1]) || {} : {}
var d = createDeps(extend({ cwd: mdir }, mopts))
var d = createDeps({ cwd: mdir })
var resolved = null
if (/(void\s+main\s?\(.*\)|\n)/.test(marg)) { // source string

@@ -165,14 +162,15 @@ d.inline(marg, mdir, ondeps)

if (err) d.emit('error', err)
else d.add(res, ondeps)
else d.add(resolved = res, ondeps)
})
function ondeps (err, deps) {
if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
p.update(p.callee.source()+'(['+JSON.stringify(bsrc)+'])')
cb()
applyPostTransforms(resolved, deps, mopts, function (err, bsrc) {
if (err) return d.emit('error', err)
p.update(p.callee.source()+'(['+JSON.stringify(bsrc)+'])')
cb()
})
}
}
function callcompile (p, cb) {
var mfile = p.arguments[0].value
function callcompile (p, glvar, cb) {
var mfile = evaluate(p.arguments[0])
var mopts = p.arguments[1] ? evaluate(p.arguments[1]) || {} : {}

@@ -183,25 +181,10 @@ var d = createDeps({ cwd: mdir })

if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
p.update(glvar + '([' + JSON.stringify(bsrc) + '])')
cb()
applyPostTransforms(null, deps, mopts, function (err, bsrc) {
if (err) return d.emit('error', err)
p.update(glvar + '([' + JSON.stringify(bsrc) + '])')
cb()
})
}
}
function callfile (p, cb) {
var mfile = p.arguments[0].value
gresolve(mfile, { basedir: mdir }, function (err, res) {
if (err) return d.emit('error', err)
var mopts = p.arguments[1] ? evaluate(p.arguments[1]) || {} : {}
var d = createDeps(extend({ cwd: path.dirname(res) }, mopts))
d.add(res, ondeps)
})
function ondeps (err, deps) {
if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
p.update(glvar + '([' + JSON.stringify(bsrc) + '])')
cb()
}
}
function rcallfile (p, cb) {
function callfile (p, glvar, cb) {
var mfile = evaluate(p.arguments[0])

@@ -211,26 +194,14 @@ gresolve(mfile, { basedir: mdir }, function (err, res) {

var mopts = p.arguments[1] ? evaluate(p.arguments[1]) || {} : {}
var d = createDeps(extend({ cwd: path.dirname(res) }, mopts))
var d = createDeps({ cwd: path.dirname(res) })
d.add(res, ondeps)
function ondeps (err, deps) {
if (err) return d.emit('error', err)
applyPostTransforms(res, deps, mopts, function (err, bsrc) {
if (err) return d.emit('error', err)
p.update(glvar + '([' + JSON.stringify(bsrc) + '])')
cb()
})
}
})
function ondeps (err, deps) {
if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
p.update(p.callee.object.source()+'(['+JSON.stringify(bsrc)+'])')
cb()
}
}
function rcallcompile (p, cb) {
var marg = evaluate(p.arguments[0])
var mopts = p.arguments[1] ? evaluate(p.arguments[1]) || {} : {}
var d = createDeps({ cwd: mdir })
d.inline(marg, mdir, ondeps)
function ondeps (err, deps) {
if (err) return d.emit('error', err)
try { var bsrc = bundle(deps) }
catch (err) { return d.emit('error', err) }
p.update(p.callee.object.source()+'(['+JSON.stringify(bsrc)+'])')
cb()
}
}
function done () {

@@ -247,6 +218,5 @@ if (--pending === 0) {

var depper = gdeps(opts)
var basedir = opts.cwd
depper.on('error', function (err) { d.emit('error', err) })
depper.on('file', function (file) { d.emit('file', file) })
var transforms = opts.transform || []
var transforms = sharedTransforms
transforms = Array.isArray(transforms) ? transforms : [transforms]

@@ -257,6 +227,4 @@ transforms.forEach(function(transform) {

var opts = transform[1] || {}
if (opts.post) {
posts.push({ name: name, opts: opts, base: basedir })
} else {
depper.transform(name, opts)
if (!opts.post) {
depper.transform(name, extend({}, opts))
}

@@ -266,18 +234,90 @@ })

}
function bundle (deps) {
var source = gbundle(deps)
posts.forEach(function (tr) {
var transform
if (typeof tr.name === "function") {
transform = tr.name
} else {
var target = resolve.sync(tr.name, { basedir: tr.base || mdir })
transform = require(target)
}
var src = transform(null, source, { post: true })
if (src) source = src
})
return source
function applyPostTransforms (rootFile, deps, mopts, done) {
var source = glslBundle(deps)
var localPosts = [].concat(mopts.transform || []).concat(mopts.t || [])
.map(function (transform) {
transform = Array.isArray(transform) ? transform : [transform]
var name = transform[0]
var opts = transform[1] || {}
return opts.post && { name: name, opts: opts, base: path.dirname(rootFile) }
})
.filter(Boolean)
.concat(sharedPosts)
.map(function (tr) {
if (typeof tr.name === "function") {
tr.tr = tr.name
} else {
var target = resolve.sync(tr.name, { basedir: tr.base || mdir })
tr.tr = require(target)
}
return tr
})
gdeps.prototype.applyTransforms(rootFile, source, localPosts, done);
}
}
function isRequirePath (node) {
return node.type === 'Identifier' && node.name === 'require'
&& node.parent.type === 'CallExpression'
&& node.parent.arguments[0]
&& node.parent.arguments[0].type === 'Literal'
&& node.parent.arguments[0].value === 'path'
&& node.parent.parent.type === 'VariableDeclarator'
}
function isRequireGlslify (node, dir) {
return node.type === 'Identifier' && node.name === 'require'
&& node.parent.type === 'CallExpression'
&& node.parent.arguments[0]
&& node.parent.arguments[0].type === 'Literal'
&& (/^glslify(?:\/index(?:\.js)?)?/.test(node.parent.arguments[0].value)
|| path.resolve(dir,node.parent.arguments[0].value) === __dirname
|| path.resolve(dir,node.parent.arguments[0].value) === glslfile0
|| path.resolve(dir,node.parent.arguments[0].value) === glslfile1)
}
function isReqCallExpression (node, parent) {
return node.type === 'CallExpression'
&& parent.type === 'CallExpression'
}
function isReqCallFile (node, parent) {
return node.type === 'MemberExpression'
&& node.property.name === 'file'
&& parent.type === 'CallExpression'
}
function isReqCallCompile (node, parent) {
return node.type === 'MemberExpression'
&& node.property.name === 'compile'
&& parent.type === 'CallExpression'
}
function isCallExpression (node, glvar) {
return node.type === 'Identifier'
&& node.name === glvar
&& node.parent.type === 'CallExpression'
}
function isTagExpression (node, glvar) {
return node.type === 'TaggedTemplateExpression'
&& node.tag.name === glvar
}
function isCallFile (node, glvar) {
return node.type === 'Identifier' && node.name === glvar
&& node.parent.type === 'MemberExpression'
&& node.parent.property.name === 'file'
&& node.parent.parent.type === 'CallExpression'
&& node.parent.parent.arguments[0]
}
function isCallCompile (node, glvar) {
return node.type === 'Identifier' && node.name === glvar
&& node.parent.type === 'MemberExpression'
&& node.parent.property.name === 'compile'
&& node.parent.parent.type === 'CallExpression'
&& node.parent.parent.arguments[0]
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc