binary files in node version
possible solution to node location problem
This commit is contained in:
parent
d4f8b736ed
commit
7d0c2d079b
16
mason.json
16
mason.json
@ -2,16 +2,14 @@
|
|||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"name": "mimicry",
|
"name": "mimicry",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
|
"targets": ["browser", "node"],
|
||||||
|
"defaultTarget": "browser",
|
||||||
"build": [
|
"build": [
|
||||||
{
|
"dependency.js",
|
||||||
"files": [
|
"errors.js",
|
||||||
"dependency.js",
|
"loadingFile.js",
|
||||||
"errors.js",
|
"module.js",
|
||||||
"loadingFile.js",
|
"queue.js",
|
||||||
"module.js",
|
|
||||||
"queue.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"targets": ["browser"],
|
"targets": ["browser"],
|
||||||
"files": [
|
"files": [
|
||||||
|
41
node.js
41
node.js
@ -20,6 +20,7 @@ class Mimicry {
|
|||||||
constructor (config) {
|
constructor (config) {
|
||||||
instances.push(this);
|
instances.push(this);
|
||||||
|
|
||||||
|
this._callerPath = path.dirname(_getCallerFile());
|
||||||
this._queue = new Queue();
|
this._queue = new Queue();
|
||||||
this._loadedFiles = new Set();
|
this._loadedFiles = new Set();
|
||||||
this._config = Object.create(null);
|
this._config = Object.create(null);
|
||||||
@ -109,7 +110,7 @@ class Mimicry {
|
|||||||
* @param {Function} [callback] - module body that will be executed as soon all dependencies are resolved
|
* @param {Function} [callback] - module body that will be executed as soon all dependencies are resolved
|
||||||
*/
|
*/
|
||||||
module (dependencies, callback) {
|
module (dependencies, callback) {
|
||||||
const href = getCurrentHref();
|
const href = getCurrentHref(this._callerPath);
|
||||||
if (!href.length)
|
if (!href.length)
|
||||||
throw new Error("Couldn't understand module path");
|
throw new Error("Couldn't understand module path");
|
||||||
|
|
||||||
@ -335,41 +336,40 @@ function scheduleLoad (path, callback, error, contentType, originalName) {
|
|||||||
notifyProgressSubscribers.call(this);
|
notifyProgressSubscribers.call(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
function executeLoad (/*String*/path, /*LoadingFile*/loadingFile) {
|
function executeLoad (/*String*/relativePath, /*LoadingFile*/loadingFile) {
|
||||||
this._loadingFiles.set(path, loadingFile);
|
this._loadingFiles.set(relativePath, loadingFile);
|
||||||
|
|
||||||
const boundLoad = onLoaded.bind(this, path);
|
|
||||||
const boundError = onError.bind(this, path);
|
|
||||||
switch (loadingFile.contentType) {
|
switch (loadingFile.contentType) {
|
||||||
case Type.js:
|
case Type.js:
|
||||||
try {
|
try {
|
||||||
require("./" + path);
|
require(path.join(this._callerPath, relativePath));
|
||||||
this._loadedFiles.add(path);
|
this._loadedFiles.add(relativePath);
|
||||||
setTimeout(boundLoad, 0);
|
setTimeout(onLoaded.bind(this, relativePath), 0);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this._errors.set(path, e);
|
this._errors.set(relativePath, e);
|
||||||
setTimeout(boundError, 0);
|
setTimeout(onError.bind(this, relativePath), 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Type.json:
|
case Type.json:
|
||||||
try {
|
try {
|
||||||
const json = require("./" + path);
|
const json = require(path.join(this._callerPath, relativePath));
|
||||||
this._loadedFiles.add(path);
|
this._loadedFiles.add(relativePath);
|
||||||
setTimeout(onLoaded.bind(this, path, json), 0);
|
setTimeout(onLoaded.bind(this, relativePath, json), 0);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this._errors.set(path, e);
|
this._errors.set(relativePath, e);
|
||||||
setTimeout(boundError, 0);
|
setTimeout(onError.bind(this, relativePath), 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Type.css:
|
case Type.css:
|
||||||
setTimeout(boundLoad, 0); //todo just for now, don't know what to do yet with css here
|
setTimeout(onLoaded.bind(this, relativePath), 0); //todo just for now, don't know what to do yet with css here
|
||||||
//getStylesheetWithTag(path, boundLoad, boundError, this._config.seed);
|
//getStylesheetWithTag(path, boundLoad, boundError, this._config.seed);
|
||||||
break;
|
break;
|
||||||
case Type.binary:
|
case Type.binary:
|
||||||
|
fs.readFile(path.join(this._callerPath, relativePath), onFileRead.bind(this, relativePath));
|
||||||
//getByXHR(path, boundLoad, boundError, "arraybuffer", this._config.seed);
|
//getByXHR(path, boundLoad, boundError, "arraybuffer", this._config.seed);
|
||||||
break;
|
break;
|
||||||
case Type.text:
|
case Type.text:
|
||||||
fs.readFile(path, "utf8", onFileRead.bind(this, path));
|
fs.readFile(path.join(this._callerPath, relativePath), "utf8", onFileRead.bind(this, relativePath));
|
||||||
//getByXHR(path, boundLoad, boundError, "text", this._config.seed);
|
//getByXHR(path, boundLoad, boundError, "text", this._config.seed);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -391,8 +391,9 @@ function onLoaded(/*String*/path, /*any*/value) {
|
|||||||
const loading = this._loadingFiles.get(path);
|
const loading = this._loadingFiles.get(path);
|
||||||
this._loadedFiles.add(path);
|
this._loadedFiles.add(path);
|
||||||
switch (loading.contentType) {
|
switch (loading.contentType) {
|
||||||
case Type.json:
|
|
||||||
case Type.binary:
|
case Type.binary:
|
||||||
|
value = value.buffer; //[fallthrough]
|
||||||
|
case Type.json:
|
||||||
case Type.text:
|
case Type.text:
|
||||||
this._loadedAssets.set(loading.originalName, value);
|
this._loadedAssets.set(loading.originalName, value);
|
||||||
break;
|
break;
|
||||||
@ -503,8 +504,8 @@ function checkNextElement () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentHref() {
|
function getCurrentHref(caller = "") {
|
||||||
return path.relative(__dirname, _getCallerFile());
|
return path.relative(caller || __dirname, _getCallerFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getCallerFile() {
|
function _getCallerFile() {
|
||||||
|
BIN
test/binary
Normal file
BIN
test/binary
Normal file
Binary file not shown.
@ -15,7 +15,7 @@ function test () {
|
|||||||
let mimicry;
|
let mimicry;
|
||||||
try {
|
try {
|
||||||
mimicry = new Mimicry({
|
mimicry = new Mimicry({
|
||||||
baseUrl: "test"
|
//baseUrl: "test"
|
||||||
});
|
});
|
||||||
global.mimicry = mimicry;
|
global.mimicry = mimicry;
|
||||||
global.Mimicry = Mimicry;
|
global.Mimicry = Mimicry;
|
||||||
|
@ -3,11 +3,30 @@ mimicry.module([
|
|||||||
"terminalModule",
|
"terminalModule",
|
||||||
"simple", Mimicry.Type.json,
|
"simple", Mimicry.Type.json,
|
||||||
"background", Mimicry.Type.css,
|
"background", Mimicry.Type.css,
|
||||||
"text", Mimicry.Type.text
|
"text", Mimicry.Type.text,
|
||||||
], function (global, [terminalModule, simple, background, text]) {
|
"binary", Mimicry.Type.binary
|
||||||
|
], function (global, [terminalModule, simple, background, text, binary]) {
|
||||||
|
let bnr = false;
|
||||||
|
if (binary instanceof ArrayBuffer) {
|
||||||
|
const view = new Uint8Array(binary);
|
||||||
|
if (
|
||||||
|
view.length === 32 &&
|
||||||
|
view[0] === 0 &&
|
||||||
|
view[1] === 1 &&
|
||||||
|
view[3] === 3 &&
|
||||||
|
view[31] === 0x11 &&
|
||||||
|
view[30] === 0x10 &&
|
||||||
|
view[10] === 0x6e &&
|
||||||
|
view[12] === 0x72 &&
|
||||||
|
view[21] === 0x74
|
||||||
|
) {
|
||||||
|
bnr = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return [
|
return [
|
||||||
terminalModule === "terminal",
|
terminalModule === "terminal",
|
||||||
simple.a[4] === 115,
|
simple.a[4] === 115,
|
||||||
text === "Lorem ipsum, I guess"
|
text === "Lorem ipsum, I guess",
|
||||||
|
bnr
|
||||||
];
|
];
|
||||||
});
|
});
|
Loading…
Reference in New Issue
Block a user