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.
Files changed (3) hide show
  1. package/index.js +82 -76
  2. package/lib/errors.js +4 -0
  3. 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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-module",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "description": "Module support for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [