bare-module 3.0.5 → 3.0.7

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 CHANGED
@@ -14,6 +14,7 @@ const Module = module.exports = exports = class Module {
14
14
  this._state = 0
15
15
  this._type = 0
16
16
  this._defaultType = this._type
17
+ this._cache = null
17
18
  this._main = null
18
19
  this._exports = null
19
20
  this._imports = null
@@ -47,6 +48,10 @@ const Module = module.exports = exports = class Module {
47
48
  return this._defaultType
48
49
  }
49
50
 
51
+ get cache () {
52
+ return this._cache
53
+ }
54
+
50
55
  get main () {
51
56
  return this._main
52
57
  }
@@ -159,14 +164,22 @@ const Module = module.exports = exports = class Module {
159
164
 
160
165
  static _extensions = Object.create(null)
161
166
  static _protocols = Object.create(null)
162
- static _cache = Object.create(null)
167
+ static _cache = module.cache || Object.create(null)
163
168
  static _modules = new Set()
164
169
  static _conditions = ['bare', 'node']
165
170
 
166
171
  static _handle = binding.init(this, this._onimport, this._onevaluate, this._onmeta)
167
172
 
168
173
  static _onimport (specifier, assertions, referrerURL, isDynamicImport) {
169
- const referrer = this._cache[referrerURL]
174
+ const referrer = this._cache[referrerURL] || null
175
+
176
+ if (referrer === null) {
177
+ let msg = `Cannot find referrer for module '${specifier}'`
178
+
179
+ if (referrerURL) msg += ` imported from '${referrerURL}'`
180
+
181
+ throw errors.REFERRER_MISSING(msg)
182
+ }
170
183
 
171
184
  const url = this.resolve(specifier, referrer._url, {
172
185
  isImport: true,
@@ -215,6 +228,7 @@ const Module = module.exports = exports = class Module {
215
228
 
216
229
  meta.url = module._url.href
217
230
  meta.main = module._main === module
231
+ meta.cache = module._cache
218
232
  meta.resolve = resolve
219
233
  meta.addon = addon
220
234
 
@@ -259,6 +273,7 @@ const Module = module.exports = exports = class Module {
259
273
  referrer = null,
260
274
  type = 0,
261
275
  defaultType = referrer ? referrer._defaultType : 0,
276
+ cache = referrer ? referrer._cache : self._cache,
262
277
  main = referrer ? referrer._main : null,
263
278
  protocol = referrer ? referrer._protocol : self._protocols['file:'],
264
279
  imports = referrer ? referrer._imports : null,
@@ -277,8 +292,9 @@ const Module = module.exports = exports = class Module {
277
292
  break
278
293
 
279
294
  default: {
280
- module._main = main || module
281
295
  module._defaultType = defaultType
296
+ module._cache = cache
297
+ module._main = main || module
282
298
  module._protocol = protocol
283
299
  module._imports = imports
284
300
  module._resolutions = resolutions
@@ -420,7 +436,7 @@ exports.createRequire = function createRequire (parentURL, opts = {}) {
420
436
  addon.host = Bare.Addon.host
421
437
 
422
438
  require.main = module._main
423
- require.cache = self._cache
439
+ require.cache = module._cache
424
440
  require.resolve = resolve
425
441
  require.addon = addon
426
442
 
@@ -503,7 +519,7 @@ Module._extensions['.cjs'] = function (module, source, referrer) {
503
519
  addon.host = Bare.Addon.host
504
520
 
505
521
  require.main = module._main
506
- require.cache = self._cache
522
+ require.cache = module._cache
507
523
  require.resolve = resolve
508
524
  require.addon = addon
509
525
 
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.5",
3
+ "version": "3.0.7",
4
4
  "description": "Module support for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [