Comparing version 6.4.1 to 7.0.0
{ | ||
"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 @@ }, |
296
transform.js
@@ -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] | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
37914
15
10
467
- Removedtape@^4.6.0
- Removed@ljharb/resumer@0.0.1(transitive)
- Removed@ljharb/through@2.3.13(transitive)
- Removedarray-buffer-byte-length@1.0.1(transitive)
- Removedarraybuffer.prototype.slice@1.0.3(transitive)
- Removedavailable-typed-arrays@1.0.7(transitive)
- Removedbalanced-match@1.0.2(transitive)
- Removedbrace-expansion@1.1.11(transitive)
- Removedcall-bind@1.0.7(transitive)
- Removedconcat-map@0.0.1(transitive)
- Removeddata-view-buffer@1.0.1(transitive)
- Removeddata-view-byte-length@1.0.1(transitive)
- Removeddata-view-byte-offset@1.0.0(transitive)
- Removeddeep-equal@1.1.2(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removeddefine-properties@1.2.1(transitive)
- Removeddefined@1.0.1(transitive)
- Removeddotignore@0.1.2(transitive)
- Removedes-abstract@1.23.3(transitive)
- Removedes-define-property@1.0.0(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedes-object-atoms@1.0.0(transitive)
- Removedes-set-tostringtag@2.0.3(transitive)
- Removedes-to-primitive@1.2.1(transitive)
- Removedfor-each@0.3.3(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedfunction.prototype.name@1.1.6(transitive)
- Removedfunctions-have-names@1.2.3(transitive)
- Removedget-intrinsic@1.2.4(transitive)
- Removedget-symbol-description@1.0.2(transitive)
- Removedglob@7.2.3(transitive)
- Removedglobalthis@1.0.4(transitive)
- Removedgopd@1.0.1(transitive)
- Removedhas@1.0.4(transitive)
- Removedhas-bigints@1.0.2(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-proto@1.0.3(transitive)
- Removedhas-symbols@1.0.3(transitive)
- Removedhas-tostringtag@1.0.2(transitive)
- Removedinflight@1.0.6(transitive)
- Removedinternal-slot@1.0.7(transitive)
- Removedis-arguments@1.1.1(transitive)
- Removedis-array-buffer@3.0.4(transitive)
- Removedis-bigint@1.0.4(transitive)
- Removedis-boolean-object@1.1.2(transitive)
- Removedis-callable@1.2.7(transitive)
- Removedis-data-view@1.0.1(transitive)
- Removedis-date-object@1.0.5(transitive)
- Removedis-negative-zero@2.0.3(transitive)
- Removedis-number-object@1.0.7(transitive)
- Removedis-regex@1.1.4(transitive)
- Removedis-shared-array-buffer@1.0.3(transitive)
- Removedis-string@1.0.7(transitive)
- Removedis-symbol@1.0.4(transitive)
- Removedis-typed-array@1.1.13(transitive)
- Removedis-weakref@1.0.2(transitive)
- Removedminimatch@3.1.2(transitive)
- Removedmock-property@1.0.3(transitive)
- Removedobject-inspect@1.12.31.13.2(transitive)
- Removedobject-is@1.1.6(transitive)
- Removedobject-keys@1.1.1(transitive)
- Removedobject.assign@4.1.5(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpossible-typed-array-names@1.0.0(transitive)
- Removedregexp.prototype.flags@1.5.2(transitive)
- Removedsafe-array-concat@1.1.2(transitive)
- Removedsafe-regex-test@1.0.3(transitive)
- Removedset-function-length@1.2.2(transitive)
- Removedset-function-name@2.0.2(transitive)
- Removedside-channel@1.0.6(transitive)
- Removedstring.prototype.trim@1.2.9(transitive)
- Removedstring.prototype.trimend@1.0.8(transitive)
- Removedstring.prototype.trimstart@1.0.8(transitive)
- Removedtape@4.17.0(transitive)
- Removedtyped-array-buffer@1.0.2(transitive)
- Removedtyped-array-byte-length@1.0.1(transitive)
- Removedtyped-array-byte-offset@1.0.2(transitive)
- Removedtyped-array-length@1.0.6(transitive)
- Removedunbox-primitive@1.0.2(transitive)
- Removedwhich-boxed-primitive@1.0.2(transitive)
- Removedwhich-typed-array@1.1.15(transitive)