diff --git a/import-wrapper-prod.mjs b/import-wrapper-prod.mjs index 8d98ec0bb..6de18dbf8 100644 --- a/import-wrapper-prod.mjs +++ b/import-wrapper-prod.mjs @@ -1,7 +1,12 @@ // Making the module version consumable via require - to prohibit // multiple occurrancies of the same module in the same app // (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard) -import Dexie from "./dist/dexie.min.js"; +import _Dexie from "./dist/dexie.min.js"; +const DexieSymbol = Symbol.for("Dexie"); +const Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie); +if (_Dexie.semVer !== Dexie.semVer) { + throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`); +} const { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp } = Dexie; export { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie }; export default Dexie; diff --git a/import-wrapper.mjs b/import-wrapper.mjs index 9424ff9ee..cd413140a 100644 --- a/import-wrapper.mjs +++ b/import-wrapper.mjs @@ -1,7 +1,12 @@ // Making the module version consumable via require - to prohibit // multiple occurrancies of the same module in the same app // (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard) -import Dexie from "./dist/dexie.js"; +import _Dexie from "./dist/dexie.js"; +const DexieSymbol = Symbol.for("Dexie"); +const Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie); +if (_Dexie.semVer !== Dexie.semVer) { + throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`); +} const { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp } = Dexie; export { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie }; export default Dexie; diff --git a/package.json b/package.json index 8e9d04e71..7a605818d 100644 --- a/package.json +++ b/package.json @@ -8,22 +8,19 @@ "exports": { ".": { "production": { - "browser": "./dist/modern/dexie.min.mjs", - "module": "./dist/modern/dexie.min.mjs", + "module": "./import-wrapper-prod.mjs", "import": "./import-wrapper-prod.mjs", "require": "./dist/dexie.min.js", "default": "./dist/dexie.min.js" }, "development": { - "browser": "./dist/modern/dexie.mjs", - "module": "./dist/modern/dexie.mjs", + "module": "./import-wrapper.mjs", "import": "./import-wrapper.mjs", "require": "./dist/dexie.js", "default": "./dist/dexie.js" }, "default": { - "browser": "./dist/modern/dexie.mjs", - "module": "./dist/modern/dexie.mjs", + "module": "./import-wrapper.mjs", "import": "./import-wrapper.mjs", "require": "./dist/dexie.js", "default": "./dist/dexie.js"