Redesigned moudule system

* Top level private APIs (e.g. jasmine.private.whatever) are no longer
  exposed
* jasmineRequire is no longer exposed
* core is self-booting
* Globals are automatically created in browsers. (They can subsequently
  be removed by user code if desired.)
* Globals are *not* automatically created in Node. An installGlobals
  function is exported instead. The jasmine package calls installGlobals
  unless configured not to do so.
* In Node, the same instance is returned each time jasmine-core is
  imported. A reset function is exported. It effectively resets all state
  by discarding the env and creating a new one. This allows mulitple
  sequential runs within the same process to be independent of each
  other, but does not allow multiple concurrent runs. (That probably never
  worked anyway.)

Fixes #2094
This commit is contained in:
Steve Gravrock
2026-02-15 13:41:19 -08:00
parent 03006080d4
commit f12f4395f0
127 changed files with 1336 additions and 1367 deletions

35
src/core/requireSuffix.js Normal file
View File

@@ -0,0 +1,35 @@
(function() {
'use strict';
const isNode = typeof module !== 'undefined' && module.exports;
const jasmineRequire = getJasmineRequireObj();
function bootJasmine(options) {
const jasmine = jasmineRequire.core(jasmineRequire).jasmine;
const env = jasmine.getEnv(options);
const jasmineInterface = jasmineRequire.interface(jasmine, env);
const globals = {
jasmine,
...jasmineInterface
};
return {
jasmine,
globals,
installGlobals(dest) {
dest = dest ?? globalThis;
for (const [k, v] of Object.entries(globals)) {
dest[k] = v;
}
}
};
}
if (isNode) {
module.exports = bootJasmine({ suppressLoadErrors: true });
} else {
// Browser
bootJasmine().installGlobals();
}
})();