diff --git a/src/index.ts b/src/index.ts index 3505746f..1d0bacf9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -67,7 +67,11 @@ global.panes.runDataBrowser = function (uri?:string|$rdf.NamedNode|null) { // Authenticate the user SolidLogic.authn.checkUser() - .then(() => panes.initMainPage(SolidLogic.solidLogicSingleton.store, uri)) + .then(() => { + // Avoid rdflib type identity clashes when workspace packages resolve different node_modules paths. + const storeForPanes = SolidLogic.solidLogicSingleton.store as unknown as Parameters[0] + return panes.initMainPage(storeForPanes, uri) + }) .then(() => { // Inject render environment into pane context after outliner exists syncEnvironmentToContext('initMainPage') diff --git a/webpack.config.mjs b/webpack.config.mjs index 22b32469..8327b5b7 100644 --- a/webpack.config.mjs +++ b/webpack.config.mjs @@ -22,6 +22,8 @@ const packageAliases = { } const workspaceAliases = { + 'solid-logic': path.resolve('../solid-logic/src/index.ts'), + 'SolidLogic': path.resolve('../solid-logic/src/index.ts'), 'solid-panes$': path.resolve('../solid-panes/src/index.ts'), 'solid-ui$': path.resolve('../solid-ui/src/index.ts'), 'UI$': path.resolve('../solid-ui/src/index.ts'), @@ -29,7 +31,8 @@ const workspaceAliases = { } function getResolutionMode (env = {}) { - const resolutionMode = env.resolutionMode || process.env.MASHLIB_RESOLUTION_MODE || PACKAGE_RESOLUTION_MODE + const isDevServeOrWatch = Boolean(process.env.WEBPACK_SERVE || process.argv.includes('--watch')) + const resolutionMode = env.resolutionMode || process.env.MASHLIB_RESOLUTION_MODE || (isDevServeOrWatch ? WORKSPACE_RESOLUTION_MODE : PACKAGE_RESOLUTION_MODE) if (resolutionMode !== PACKAGE_RESOLUTION_MODE && resolutionMode !== WORKSPACE_RESOLUTION_MODE) { throw new Error(`Invalid mashlib webpack resolution mode: ${resolutionMode}. Use "${PACKAGE_RESOLUTION_MODE}" or "${WORKSPACE_RESOLUTION_MODE}".`) }