bare-module 3.0.4 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +82 -76
- package/lib/errors.js +4 -0
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -166,7 +166,15 @@ const Module = module.exports = exports = class Module {
|
|
|
166
166
|
static _handle = binding.init(this, this._onimport, this._onevaluate, this._onmeta)
|
|
167
167
|
|
|
168
168
|
static _onimport (specifier, assertions, referrerURL, isDynamicImport) {
|
|
169
|
-
const referrer = this._cache[referrerURL]
|
|
169
|
+
const referrer = this._cache[referrerURL] || null
|
|
170
|
+
|
|
171
|
+
if (referrer === null) {
|
|
172
|
+
let msg = `Cannot find referrer for module '${specifier}'`
|
|
173
|
+
|
|
174
|
+
if (referrerURL) msg += ` imported from '${referrerURL}'`
|
|
175
|
+
|
|
176
|
+
throw errors.REFERRER_MISSING(msg)
|
|
177
|
+
}
|
|
170
178
|
|
|
171
179
|
const url = this.resolve(specifier, referrer._url, {
|
|
172
180
|
isImport: true,
|
|
@@ -244,81 +252,6 @@ const Module = module.exports = exports = class Module {
|
|
|
244
252
|
return this._cache
|
|
245
253
|
}
|
|
246
254
|
|
|
247
|
-
// For Node.js compatibility
|
|
248
|
-
static get builtinModules () {
|
|
249
|
-
return []
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// For Node.js compatibility
|
|
253
|
-
static isBuiltin () {
|
|
254
|
-
return false
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
static createRequire (parentURL, opts = {}) {
|
|
258
|
-
const self = Module
|
|
259
|
-
|
|
260
|
-
if (typeof parentURL === 'string') parentURL = new URL(parentURL, 'file:')
|
|
261
|
-
|
|
262
|
-
let {
|
|
263
|
-
referrer = null,
|
|
264
|
-
protocol = referrer ? referrer._protocol : self._protocols['file:'],
|
|
265
|
-
imports = referrer ? referrer._imports : null,
|
|
266
|
-
resolutions = referrer ? referrer._resolutions : null,
|
|
267
|
-
builtins = referrer ? referrer._builtins : null,
|
|
268
|
-
conditions = referrer ? referrer._conditions : self._conditions,
|
|
269
|
-
main = referrer ? referrer._main : null,
|
|
270
|
-
defaultType = referrer ? referrer._defaultType : constants.types.SCRIPT,
|
|
271
|
-
type = constants.types.SCRIPT
|
|
272
|
-
} = opts
|
|
273
|
-
|
|
274
|
-
const module = new Module(parentURL)
|
|
275
|
-
|
|
276
|
-
module._main = main || module
|
|
277
|
-
module._type = type
|
|
278
|
-
module._defaultType = defaultType
|
|
279
|
-
module._protocol = protocol
|
|
280
|
-
module._imports = imports
|
|
281
|
-
module._resolutions = resolutions
|
|
282
|
-
module._builtins = builtins
|
|
283
|
-
module._conditions = conditions
|
|
284
|
-
|
|
285
|
-
referrer = module
|
|
286
|
-
|
|
287
|
-
addon.host = Bare.Addon.host
|
|
288
|
-
|
|
289
|
-
require.main = module._main
|
|
290
|
-
require.cache = self._cache
|
|
291
|
-
require.resolve = resolve
|
|
292
|
-
require.addon = addon
|
|
293
|
-
|
|
294
|
-
return require
|
|
295
|
-
|
|
296
|
-
function require (specifier) {
|
|
297
|
-
const resolved = self.resolve(specifier, referrer._url, { referrer })
|
|
298
|
-
|
|
299
|
-
const module = self.load(resolved, { referrer })
|
|
300
|
-
|
|
301
|
-
return module._exports
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
function resolve (specifier) {
|
|
305
|
-
const resolved = self.resolve(specifier, referrer._url, { referrer })
|
|
306
|
-
|
|
307
|
-
switch (resolved.protocol) {
|
|
308
|
-
case 'builtin:': return resolved.pathname
|
|
309
|
-
default: return url.fileURLToPath(resolved)
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
function addon (specifier = '.') {
|
|
314
|
-
const resolved = Bare.Addon.resolve(specifier, referrer._url, { referrer })
|
|
315
|
-
|
|
316
|
-
const addon = Bare.Addon.load(resolved)
|
|
317
|
-
|
|
318
|
-
return addon._exports
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
|
|
322
255
|
static load (url, source = null, opts = {}) {
|
|
323
256
|
const self = Module
|
|
324
257
|
|
|
@@ -454,6 +387,79 @@ const Module = module.exports = exports = class Module {
|
|
|
454
387
|
}
|
|
455
388
|
}
|
|
456
389
|
|
|
390
|
+
// For Node.js compatibility
|
|
391
|
+
exports.builtinModules = []
|
|
392
|
+
|
|
393
|
+
// For Node.js compatibility
|
|
394
|
+
exports.isBuiltin = function isBuiltin () {
|
|
395
|
+
return false
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
exports.createRequire = function createRequire (parentURL, opts = {}) {
|
|
399
|
+
const self = Module
|
|
400
|
+
|
|
401
|
+
if (typeof parentURL === 'string') parentURL = new URL(parentURL, 'file:')
|
|
402
|
+
|
|
403
|
+
let {
|
|
404
|
+
referrer = null,
|
|
405
|
+
protocol = referrer ? referrer._protocol : self._protocols['file:'],
|
|
406
|
+
imports = referrer ? referrer._imports : null,
|
|
407
|
+
resolutions = referrer ? referrer._resolutions : null,
|
|
408
|
+
builtins = referrer ? referrer._builtins : null,
|
|
409
|
+
conditions = referrer ? referrer._conditions : self._conditions,
|
|
410
|
+
main = referrer ? referrer._main : null,
|
|
411
|
+
defaultType = referrer ? referrer._defaultType : constants.types.SCRIPT,
|
|
412
|
+
type = constants.types.SCRIPT
|
|
413
|
+
} = opts
|
|
414
|
+
|
|
415
|
+
const module = new Module(parentURL)
|
|
416
|
+
|
|
417
|
+
module._main = main || module
|
|
418
|
+
module._type = type
|
|
419
|
+
module._defaultType = defaultType
|
|
420
|
+
module._protocol = protocol
|
|
421
|
+
module._imports = imports
|
|
422
|
+
module._resolutions = resolutions
|
|
423
|
+
module._builtins = builtins
|
|
424
|
+
module._conditions = conditions
|
|
425
|
+
|
|
426
|
+
referrer = module
|
|
427
|
+
|
|
428
|
+
addon.host = Bare.Addon.host
|
|
429
|
+
|
|
430
|
+
require.main = module._main
|
|
431
|
+
require.cache = self._cache
|
|
432
|
+
require.resolve = resolve
|
|
433
|
+
require.addon = addon
|
|
434
|
+
|
|
435
|
+
return require
|
|
436
|
+
|
|
437
|
+
function require (specifier) {
|
|
438
|
+
const resolved = self.resolve(specifier, referrer._url, { referrer })
|
|
439
|
+
|
|
440
|
+
const module = self.load(resolved, { referrer })
|
|
441
|
+
|
|
442
|
+
return module._exports
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function resolve (specifier) {
|
|
446
|
+
const resolved = self.resolve(specifier, referrer._url, { referrer })
|
|
447
|
+
|
|
448
|
+
switch (resolved.protocol) {
|
|
449
|
+
case 'builtin:': return resolved.pathname
|
|
450
|
+
default: return url.fileURLToPath(resolved)
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
function addon (specifier = '.') {
|
|
455
|
+
const resolved = Bare.Addon.resolve(specifier, referrer._url, { referrer })
|
|
456
|
+
|
|
457
|
+
const addon = Bare.Addon.load(resolved)
|
|
458
|
+
|
|
459
|
+
return addon._exports
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
457
463
|
Module._extensions['.js'] = function (module, source, referrer) {
|
|
458
464
|
const self = Module
|
|
459
465
|
|
package/lib/errors.js
CHANGED
|
@@ -23,4 +23,8 @@ module.exports = class ModuleError extends Error {
|
|
|
23
23
|
static INVALID_BUNDLE_EXTENSION (msg) {
|
|
24
24
|
return new ModuleError(msg, 'INVALID_BUNDLE_EXTENSION', ModuleError.INVALID_BUNDLE_EXTENSION)
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
static REFERRER_MISSING (msg) {
|
|
28
|
+
return new ModuleError(msg, 'REFERRER_MISSING', ModuleError.REFERRER_MISSING)
|
|
29
|
+
}
|
|
26
30
|
}
|