|
|
@ -6,7 +6,6 @@ const remixTests = require('@remix-project/remix-tests') |
|
|
|
const globalRegistry = require('../../global/registry') |
|
|
|
const globalRegistry = require('../../global/registry') |
|
|
|
const addTooltip = require('../ui/tooltip') |
|
|
|
const addTooltip = require('../ui/tooltip') |
|
|
|
const async = require('async') |
|
|
|
const async = require('async') |
|
|
|
var resolver = require('@resolver-engine/imports').ImportsEngine() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const profile = { |
|
|
|
const profile = { |
|
|
|
name: 'contentImport', |
|
|
|
name: 'contentImport', |
|
|
@ -50,7 +49,7 @@ module.exports = class CompilerImports extends Plugin { |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
import (url, force, loadingCb, cb) { |
|
|
|
async import (url, force, loadingCb, cb) { |
|
|
|
if (typeof force !== 'boolean') { |
|
|
|
if (typeof force !== 'boolean') { |
|
|
|
const temp = loadingCb |
|
|
|
const temp = loadingCb |
|
|
|
loadingCb = force |
|
|
|
loadingCb = force |
|
|
@ -66,44 +65,20 @@ module.exports = class CompilerImports extends Plugin { |
|
|
|
if (imported) { |
|
|
|
if (imported) { |
|
|
|
return cb(null, imported.content, imported.cleanUrl, imported.type, url) |
|
|
|
return cb(null, imported.content, imported.cleanUrl, imported.type, url) |
|
|
|
} |
|
|
|
} |
|
|
|
var handlers = this.urlResolver.getHandlers() |
|
|
|
|
|
|
|
var found = false |
|
|
|
let resolved |
|
|
|
handlers.forEach(function (handler) { |
|
|
|
try { |
|
|
|
if (found) return |
|
|
|
resolved = await this.urlResolver.resolve(url) |
|
|
|
var match = handler.match(url) |
|
|
|
const { content, cleanUrl, type } = resolved |
|
|
|
if (match) { |
|
|
|
|
|
|
|
found = true |
|
|
|
|
|
|
|
loadingCb('Loading ' + url + ' ...') |
|
|
|
|
|
|
|
handler.handle(match).then(function (result) { |
|
|
|
|
|
|
|
const { content, cleanUrl } = result |
|
|
|
|
|
|
|
self.previouslyHandled[url] = { |
|
|
|
self.previouslyHandled[url] = { |
|
|
|
content, |
|
|
|
content, |
|
|
|
cleanUrl, |
|
|
|
cleanUrl, |
|
|
|
type: handler.type |
|
|
|
type |
|
|
|
} |
|
|
|
} |
|
|
|
cb(null, content, cleanUrl, handler.type, url) |
|
|
|
cb(null, content, cleanUrl, type, url) |
|
|
|
}).catch(function (error) { |
|
|
|
} catch (e) { |
|
|
|
cb('Unable to import url : ' + error) |
|
|
|
return cb('Unable to import url : ' + e.message) |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
if (found) return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resolver |
|
|
|
|
|
|
|
.resolve(url) |
|
|
|
|
|
|
|
.then(result => { |
|
|
|
|
|
|
|
return resolver.require(url) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.then(result => { |
|
|
|
|
|
|
|
if (url.indexOf(result.provider + ':') === 0) { |
|
|
|
|
|
|
|
url = url.substring(result.provider.length + 1) // remove the github prefix
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
cb(null, result.source, url, result.provider, result.url) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.catch(err => { |
|
|
|
|
|
|
|
console.error(err) |
|
|
|
|
|
|
|
cb('Unable to import "' + url + '": File not found') |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
importExternal (url, targetPath, cb) { |
|
|
|
importExternal (url, targetPath, cb) { |
|
|
@ -182,13 +157,12 @@ module.exports = class CompilerImports extends Plugin { |
|
|
|
} |
|
|
|
} |
|
|
|
resolve(result) |
|
|
|
resolve(result) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
} |
|
|
|
// try to resolve external content
|
|
|
|
|
|
|
|
this.importExternal(url, targetPath, (error, content) => { |
|
|
|
this.importExternal(url, targetPath, (error, content) => { |
|
|
|
if (error) return reject(error) |
|
|
|
if (error) return reject(error) |
|
|
|
resolve(content) |
|
|
|
resolve(content) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|