- Create universal adapters for cross-platform support (browser/Node/serverless) - Replace Node.js-specific imports with universal implementations - Add OPFS support for browser persistent storage - Maintain same BrainyData interface across all environments - Enable real Brainy usage in browser console UI - Keep package size optimized (no bloat) Universal adapters in /src/universal/: - uuid.ts: Cross-platform UUID generation - crypto.ts: Browser/Node crypto operations - fs.ts: OPFS/FileSystem/Memory storage adapter - path.ts: Universal path operations - events.ts: EventEmitter compatibility layer This enables 'write once, run anywhere' for Brainy while maintaining the exact same API. No breaking changes to existing code.
261 lines
8.4 KiB
JSON
261 lines
8.4 KiB
JSON
{
|
|
"name": "@soulcraft/brainy",
|
|
"version": "0.58.0",
|
|
"description": "A vector graph database using HNSW indexing with Origin Private File System storage",
|
|
"main": "dist/index.js",
|
|
"module": "dist/index.js",
|
|
"types": "dist/index.d.ts",
|
|
"type": "module",
|
|
"bin": {
|
|
"brainy": "./bin/brainy.js"
|
|
},
|
|
"sideEffects": [
|
|
"./dist/setup.js",
|
|
"./dist/utils/textEncoding.js",
|
|
"./src/setup.ts",
|
|
"./src/utils/textEncoding.ts"
|
|
],
|
|
"browser": {
|
|
"fs": false,
|
|
"fs/promises": false,
|
|
"path": "path-browserify",
|
|
"crypto": "crypto-browserify",
|
|
"./dist/cortex/cortex.js": "./dist/browserFramework.js"
|
|
},
|
|
"exports": {
|
|
".": {
|
|
"browser": "./dist/browserFramework.js",
|
|
"node": "./dist/index.js",
|
|
"import": "./dist/index.js",
|
|
"types": "./dist/index.d.ts"
|
|
},
|
|
"./setup": {
|
|
"import": "./dist/setup.js",
|
|
"types": "./dist/setup.d.ts"
|
|
},
|
|
"./types/graphTypes": {
|
|
"import": "./dist/types/graphTypes.js",
|
|
"types": "./dist/types/graphTypes.d.ts"
|
|
},
|
|
"./types/augmentations": {
|
|
"import": "./dist/types/augmentations.js",
|
|
"types": "./dist/types/augmentations.d.ts"
|
|
},
|
|
"./utils/textEncoding": {
|
|
"import": "./dist/utils/textEncoding.js",
|
|
"types": "./dist/utils/textEncoding.d.ts"
|
|
},
|
|
"./dist/utils/textEncoding.js": {
|
|
"import": "./dist/utils/textEncoding.js",
|
|
"types": "./dist/utils/textEncoding.d.ts"
|
|
},
|
|
"./dist/setup.js": {
|
|
"import": "./dist/setup.js",
|
|
"types": "./dist/setup.d.ts"
|
|
},
|
|
"./browserFramework": {
|
|
"import": "./dist/browserFramework.js",
|
|
"types": "./dist/browserFramework.d.ts"
|
|
},
|
|
"./universal": {
|
|
"import": "./dist/universal/index.js",
|
|
"types": "./dist/universal/index.d.ts"
|
|
},
|
|
"./universal/uuid": {
|
|
"import": "./dist/universal/uuid.js",
|
|
"types": "./dist/universal/uuid.d.ts"
|
|
},
|
|
"./universal/crypto": {
|
|
"import": "./dist/universal/crypto.js",
|
|
"types": "./dist/universal/crypto.d.ts"
|
|
},
|
|
"./universal/fs": {
|
|
"import": "./dist/universal/fs.js",
|
|
"types": "./dist/universal/fs.d.ts"
|
|
},
|
|
"./universal/path": {
|
|
"import": "./dist/universal/path.js",
|
|
"types": "./dist/universal/path.d.ts"
|
|
},
|
|
"./universal/events": {
|
|
"import": "./dist/universal/events.js",
|
|
"types": "./dist/universal/events.d.ts"
|
|
}
|
|
},
|
|
"engines": {
|
|
"node": ">=24.4.0"
|
|
},
|
|
"scripts": {
|
|
"prebuild": "echo 'Prebuild step - no version generation needed'",
|
|
"build": "tsc",
|
|
"build:browser": "npm run build && vite build --config vite.browser.config.ts",
|
|
"build:framework": "tsc",
|
|
"start": "node dist/framework.js",
|
|
"demo": "npm run build && cd demo/brainy-angular-demo && npm run build && npm run serve",
|
|
"prepare": "npm run build",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:node": "vitest run tests/environment.node.test.ts tests/core.test.ts tests/vector-operations.test.ts tests/tensorflow-patch.test.ts",
|
|
"test:browser": "vitest run tests/environment.browser.test.ts --environment jsdom",
|
|
"test:core": "vitest run tests/core.test.ts",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:size": "vitest run tests/package-size-limit.test.ts",
|
|
"test:all": "npm run build && vitest run",
|
|
"test:report:json": "vitest run --reporter json",
|
|
"test:error-handling": "vitest run tests/error-handling.test.ts",
|
|
"test:edge-cases": "vitest run tests/edge-cases.test.ts",
|
|
"test:storage": "vitest run tests/storage-adapter-coverage.test.ts",
|
|
"test:environments": "vitest run tests/multi-environment.test.ts",
|
|
"test:specialized": "vitest run tests/specialized-scenarios.test.ts",
|
|
"test:performance": "vitest run tests/performance.test.ts",
|
|
"test:install": "vitest run tests/package-install.test.ts",
|
|
"test:docker": "vitest run tests/custom-models-path.test.ts",
|
|
"test:extraction": "node tests/auto-extraction.test.js",
|
|
"extract-models": "node scripts/extract-models.js",
|
|
"test:comprehensive": "npm run test:error-handling && npm run test:edge-cases && npm run test:storage && npm run test:environments && npm run test:specialized",
|
|
"_generate-pdf": "node dev/scripts/generate-architecture-pdf.js",
|
|
"_release": "standard-version",
|
|
"_release:patch": "standard-version --release-as patch",
|
|
"_release:minor": "standard-version --release-as minor",
|
|
"_release:major": "standard-version --release-as major",
|
|
"_release:dry-run": "standard-version --dry-run",
|
|
"_github-release": "node scripts/create-github-release.js",
|
|
"_changelog:check": "echo 'Changelog is now automatically generated from commit messages'",
|
|
"_lint": "eslint --ext .ts,.js src/",
|
|
"_lint:fix": "eslint --ext .ts,.js src/ --fix",
|
|
"_format": "prettier --write \"src/**/*.{ts,js}\"",
|
|
"_check:format": "prettier --check \"src/**/*.{ts,js}\"",
|
|
"_check:style": "node scripts/check-code-style.js",
|
|
"_deploy": "npm run build && npm publish",
|
|
"_workflow": "node scripts/release-workflow.js",
|
|
"_workflow:patch": "node scripts/release-workflow.js patch",
|
|
"_workflow:minor": "node scripts/release-workflow.js minor",
|
|
"_workflow:major": "node scripts/release-workflow.js major",
|
|
"_workflow:dry-run": "npm run build && npm test && npm run _release:dry-run",
|
|
"_dry-run": "npm pack --dry-run",
|
|
"download-models": "node scripts/download-models.cjs"
|
|
},
|
|
"keywords": [
|
|
"vector-database",
|
|
"hnsw",
|
|
"opfs",
|
|
"origin-private-file-system",
|
|
"embeddings",
|
|
"graph-database",
|
|
"streaming-data"
|
|
],
|
|
"author": "David Snelling (david@soulcraft.com)",
|
|
"license": "MIT",
|
|
"private": false,
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"homepage": "https://github.com/soulcraft-research/brainy",
|
|
"bugs": {
|
|
"url": "https://github.com/soulcraft-research/brainy/issues"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/soulcraft-research/brainy.git"
|
|
},
|
|
"files": [
|
|
"dist/**/*.js",
|
|
"dist/**/*.js.map",
|
|
"dist/**/*.d.ts",
|
|
"dist/**/*.d.ts.map",
|
|
"!dist/framework.js",
|
|
"!dist/framework.js.map",
|
|
"!dist/framework.min.js",
|
|
"!dist/framework.min.js.map",
|
|
"LICENSE",
|
|
"README.md",
|
|
"brainy.png",
|
|
"scripts/download-models.cjs",
|
|
"OFFLINE_MODELS.md"
|
|
],
|
|
"devDependencies": {
|
|
"@rollup/plugin-commonjs": "^28.0.6",
|
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
"@rollup/plugin-replace": "^6.0.2",
|
|
"@rollup/plugin-terser": "^0.4.4",
|
|
"@types/express": "^5.0.3",
|
|
"@types/jsdom": "^21.1.7",
|
|
"@types/node": "^20.11.30",
|
|
"@types/prompts": "^2.4.9",
|
|
"@types/uuid": "^10.0.0",
|
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
"@typescript-eslint/parser": "^8.0.0",
|
|
"@vitejs/plugin-basic-ssl": "^2.1.0",
|
|
"@vitest/coverage-v8": "^3.2.4",
|
|
"@vitest/ui": "^3.2.4",
|
|
"buffer": "^6.0.3",
|
|
"crypto-browserify": "^3.12.1",
|
|
"eslint": "^9.0.0",
|
|
"express": "^5.1.0",
|
|
"happy-dom": "^18.0.1",
|
|
"jsdom": "^26.1.0",
|
|
"node-fetch": "^3.3.2",
|
|
"process": "^0.11.10",
|
|
"puppeteer": "^22.15.0",
|
|
"standard-version": "^9.5.0",
|
|
"tslib": "^2.6.2",
|
|
"typescript": "^5.4.5",
|
|
"vite": "^7.1.1",
|
|
"vitest": "^3.2.4"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.540.0",
|
|
"@huggingface/transformers": "^3.1.0",
|
|
"@smithy/node-http-handler": "^4.1.1",
|
|
"boxen": "^7.1.1",
|
|
"chalk": "^5.3.0",
|
|
"cli-table3": "^0.6.3",
|
|
"commander": "^11.1.0",
|
|
"dotenv": "^16.4.5",
|
|
"ora": "^8.0.1",
|
|
"prompts": "^2.4.2",
|
|
"uuid": "^9.0.1"
|
|
},
|
|
"prettier": {
|
|
"arrowParens": "always",
|
|
"bracketSameLine": true,
|
|
"bracketSpacing": true,
|
|
"htmlWhitespaceSensitivity": "css",
|
|
"printWidth": 80,
|
|
"proseWrap": "preserve",
|
|
"semi": false,
|
|
"singleQuote": true,
|
|
"tabWidth": 2,
|
|
"trailingComma": "none",
|
|
"useTabs": false
|
|
},
|
|
"eslintConfig": {
|
|
"root": true,
|
|
"extends": [
|
|
"eslint:recommended",
|
|
"plugin:@typescript-eslint/recommended"
|
|
],
|
|
"parser": "@typescript-eslint/parser",
|
|
"plugins": [
|
|
"@typescript-eslint"
|
|
],
|
|
"rules": {
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"no-unused-vars": "off",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"warn",
|
|
{
|
|
"args": "after-used",
|
|
"argsIgnorePattern": "^_"
|
|
}
|
|
],
|
|
"semi": "off",
|
|
"@typescript-eslint/semi": [
|
|
"error",
|
|
"never"
|
|
],
|
|
"no-extra-semi": "off"
|
|
}
|
|
}
|
|
}
|