diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 8884fdab2..7e5530179 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -3,6 +3,12 @@ "version": "0.9.0", "description": "Example CRM implementation using ObjectStack Protocol", "private": true, + "main": "./objectstack.config.ts", + "types": "./objectstack.config.ts", + "exports": { + ".": "./objectstack.config.ts", + "./objectstack.config": "./objectstack.config.ts" + }, "scripts": { "dev": "objectstack dev", "build": "objectstack compile objectstack.config.ts dist/crm.json", diff --git a/examples/app-react-crud/src/mocks/browser.ts b/examples/app-react-crud/src/mocks/browser.ts index f9e52b87b..c09246d35 100644 --- a/examples/app-react-crud/src/mocks/browser.ts +++ b/examples/app-react-crud/src/mocks/browser.ts @@ -10,7 +10,7 @@ import { ObjectQLPlugin } from '@objectstack/objectql'; import { InMemoryDriver } from '@objectstack/driver-memory'; import { MSWPlugin } from '@objectstack/plugin-msw'; // import appConfig from '../../objectstack.config'; -import todoConfig from '@objectstack/example-todo/objectstack.config'; +import todoConfig from '@example/app-todo/objectstack.config'; let kernel: ObjectKernel | null = null; diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index bb8fd19ec..3f3d3ed1c 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -3,6 +3,12 @@ "version": "0.9.0", "description": "Example Todo App using ObjectStack Protocol", "private": true, + "main": "./objectstack.config.ts", + "types": "./objectstack.config.ts", + "exports": { + ".": "./objectstack.config.ts", + "./objectstack.config": "./objectstack.config.ts" + }, "scripts": { "dev": "objectstack dev", "build": "objectstack compile objectstack.config.ts dist/objectstack.json", diff --git a/examples/plugin-bi/package.json b/examples/plugin-bi/package.json index 2e7b27e16..12b57d11b 100644 --- a/examples/plugin-bi/package.json +++ b/examples/plugin-bi/package.json @@ -2,6 +2,11 @@ "name": "@example/plugin-bi", "version": "0.9.0", "main": "src/index.ts", + "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./objectstack.config": "./objectstack.config.ts" + }, "license": "MIT", "private": true, "scripts": { diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts index d41651b7e..95598c567 100644 --- a/packages/core/src/logger.ts +++ b/packages/core/src/logger.ts @@ -1,9 +1,6 @@ -import { createRequire } from 'module'; import type { LoggerConfig, LogLevel } from '@objectstack/spec/system'; import type { Logger } from '@objectstack/spec/contracts'; -const require = createRequire(import.meta.url); - /** * Universal Logger Implementation * @@ -24,6 +21,7 @@ export class ObjectLogger implements Logger { private isNode: boolean; private pinoLogger?: any; // Pino logger instance for Node.js private pinoInstance?: any; // Base Pino instance for creating child loggers + private require?: any; // CommonJS require function for Node.js constructor(config: Partial = {}) { // Detect runtime environment @@ -56,8 +54,13 @@ export class ObjectLogger implements Logger { if (!this.isNode) return; try { + // Create require function dynamically for Node.js (avoids bundling issues in browser) + // @ts-ignore - dynamic import of Node.js module + const { createRequire } = eval('require("module")'); + this.require = createRequire(import.meta.url); + // Synchronous import for Pino using createRequire (works in ESM) - const pino = require('pino'); + const pino = this.require('pino'); // Build Pino options const pinoOptions: any = { @@ -81,7 +84,7 @@ export class ObjectLogger implements Logger { // Check if pino-pretty is available let hasPretty = false; try { - require.resolve('pino-pretty'); + this.require.resolve('pino-pretty'); hasPretty = true; } catch (e) { // ignore diff --git a/packages/core/src/security/plugin-signature-verifier.ts b/packages/core/src/security/plugin-signature-verifier.ts index 0766bbf42..b8fc30a12 100644 --- a/packages/core/src/security/plugin-signature-verifier.ts +++ b/packages/core/src/security/plugin-signature-verifier.ts @@ -5,9 +5,9 @@ import type { PluginMetadata } from '../plugin-loader.js'; let cryptoModule: typeof import('crypto') | null = null; if (typeof (globalThis as any).window === 'undefined') { try { - // Dynamic import for Node.js crypto module - // eslint-disable-next-line @typescript-eslint/no-var-requires - cryptoModule = require('crypto'); + // Dynamic import for Node.js crypto module (using eval to avoid bundling issues) + // @ts-ignore - dynamic require for Node.js + cryptoModule = eval('require("crypto")'); } catch { // Crypto module not available (e.g., browser environment) }