@powerhousedao/switchboard 4.1.0-dev.1 → 4.1.0-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +101 -0
- package/README.md +218 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +71 -50
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,104 @@
|
|
|
1
|
+
## 4.1.0-dev.11 (2025-08-07)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **switchboard:** added dev mode to switchboard where local document models are loaded ([449e730b6](https://github.com/powerhouse-inc/powerhouse/commit/449e730b6))
|
|
6
|
+
- **switchboard,reactor-local,reactor-api:** moved vite loader to reactor-api package ([c84f0a2a3](https://github.com/powerhouse-inc/powerhouse/commit/c84f0a2a3))
|
|
7
|
+
- vetra package documents and app integration ([0e4053302](https://github.com/powerhouse-inc/powerhouse/commit/0e4053302))
|
|
8
|
+
- **vetra:** added vetra drive editor ([4ebafd143](https://github.com/powerhouse-inc/powerhouse/commit/4ebafd143))
|
|
9
|
+
- integrate package documents into reactor system ([939fe8e80](https://github.com/powerhouse-inc/powerhouse/commit/939fe8e80))
|
|
10
|
+
- **connect:** integrate Vetra package documents and editors ([2ecb9bd15](https://github.com/powerhouse-inc/powerhouse/commit/2ecb9bd15))
|
|
11
|
+
|
|
12
|
+
### ❤️ Thank You
|
|
13
|
+
|
|
14
|
+
- acaldas @acaldas
|
|
15
|
+
- Guillermo Puente @gpuente
|
|
16
|
+
- Guillermo Puente Sandoval @gpuente
|
|
17
|
+
|
|
18
|
+
## 4.1.0-dev.10 (2025-08-07)
|
|
19
|
+
|
|
20
|
+
### 🚀 Features
|
|
21
|
+
|
|
22
|
+
- **builder-tools,codegen,design-system,reactor-api:** updated document-engineering version ([e74068b43](https://github.com/powerhouse-inc/powerhouse/commit/e74068b43))
|
|
23
|
+
|
|
24
|
+
### ❤️ Thank You
|
|
25
|
+
|
|
26
|
+
- acaldas @acaldas
|
|
27
|
+
|
|
28
|
+
## 4.1.0-dev.9 (2025-08-07)
|
|
29
|
+
|
|
30
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
31
|
+
|
|
32
|
+
## 4.1.0-dev.8 (2025-08-06)
|
|
33
|
+
|
|
34
|
+
### 🚀 Features
|
|
35
|
+
|
|
36
|
+
- **switchboard,config,reactor-api:** handle auth in reactor-api ([f33c921ee](https://github.com/powerhouse-inc/powerhouse/commit/f33c921ee))
|
|
37
|
+
|
|
38
|
+
### ❤️ Thank You
|
|
39
|
+
|
|
40
|
+
- acaldas @acaldas
|
|
41
|
+
|
|
42
|
+
## 4.1.0-dev.7 (2025-08-06)
|
|
43
|
+
|
|
44
|
+
### 🚀 Features
|
|
45
|
+
|
|
46
|
+
- **switchboard:** added readme ([fbadfca11](https://github.com/powerhouse-inc/powerhouse/commit/fbadfca11))
|
|
47
|
+
|
|
48
|
+
### ❤️ Thank You
|
|
49
|
+
|
|
50
|
+
- Frank
|
|
51
|
+
|
|
52
|
+
## 4.1.0-dev.6 (2025-08-06)
|
|
53
|
+
|
|
54
|
+
### 🚀 Features
|
|
55
|
+
|
|
56
|
+
- **reactor-mcp:** load local document models and reload when they change ([0408a017c](https://github.com/powerhouse-inc/powerhouse/commit/0408a017c))
|
|
57
|
+
- **reactor-local,reactor-api,document-drive:** reload local document models when they change ([5d9af3951](https://github.com/powerhouse-inc/powerhouse/commit/5d9af3951))
|
|
58
|
+
|
|
59
|
+
### ❤️ Thank You
|
|
60
|
+
|
|
61
|
+
- acaldas @acaldas
|
|
62
|
+
|
|
63
|
+
## 4.1.0-dev.5 (2025-08-05)
|
|
64
|
+
|
|
65
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
66
|
+
|
|
67
|
+
## 4.1.0-dev.4 (2025-08-02)
|
|
68
|
+
|
|
69
|
+
### 🚀 Features
|
|
70
|
+
|
|
71
|
+
- ts morph integration ([#1729](https://github.com/powerhouse-inc/powerhouse/pull/1729))
|
|
72
|
+
|
|
73
|
+
### ❤️ Thank You
|
|
74
|
+
|
|
75
|
+
- Guillermo Puente Sandoval @gpuente
|
|
76
|
+
|
|
77
|
+
## 4.1.0-dev.3 (2025-08-01)
|
|
78
|
+
|
|
79
|
+
### 🚀 Features
|
|
80
|
+
|
|
81
|
+
- **reactor-mcp:** setup of modular reactor tools ([ceab98b08](https://github.com/powerhouse-inc/powerhouse/commit/ceab98b08))
|
|
82
|
+
|
|
83
|
+
### ❤️ Thank You
|
|
84
|
+
|
|
85
|
+
- acaldas @acaldas
|
|
86
|
+
|
|
87
|
+
## 4.1.0-dev.2 (2025-07-31)
|
|
88
|
+
|
|
89
|
+
### 🚀 Features
|
|
90
|
+
|
|
91
|
+
- **reactor-mcp,document/model:** initial implementation of reactor mcp ([4eaab9ab0](https://github.com/powerhouse-inc/powerhouse/commit/4eaab9ab0))
|
|
92
|
+
|
|
93
|
+
### 🩹 Fixes
|
|
94
|
+
|
|
95
|
+
- linter issues ([e55a16456](https://github.com/powerhouse-inc/powerhouse/commit/e55a16456))
|
|
96
|
+
|
|
97
|
+
### ❤️ Thank You
|
|
98
|
+
|
|
99
|
+
- acaldas @acaldas
|
|
100
|
+
- Benjamin Jordan (@thegoldenmule)
|
|
101
|
+
|
|
1
102
|
## 4.1.0-dev.1 (2025-07-29)
|
|
2
103
|
|
|
3
104
|
### 🚀 Features
|
package/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Switchboard
|
|
2
|
+
|
|
3
|
+
A powerful document-driven server that provides a unified API for managing and serving document models, drives, and reactors in the Powerhouse ecosystem.
|
|
4
|
+
|
|
5
|
+
## 🚀 Features
|
|
6
|
+
|
|
7
|
+
- **Document Model Management**: Serve and manage document models with GraphQL API
|
|
8
|
+
- **Document Drive Support**: Handle document drives with filesystem and PostgreSQL storage
|
|
9
|
+
- **Reactor Integration**: Built-in support for Powerhouse reactors
|
|
10
|
+
- **Flexible Storage**: Support for filesystem, PostgreSQL, and Redis caching
|
|
11
|
+
- **Docker Ready**: Containerized deployment with comprehensive environment configuration
|
|
12
|
+
- **Authentication**: Configurable authentication with guest, user, and admin roles
|
|
13
|
+
- **HTTPS Support**: Built-in HTTPS server with custom certificates
|
|
14
|
+
- **Profiling**: Integration with Pyroscope for performance monitoring
|
|
15
|
+
- **Error Tracking**: Sentry integration for error monitoring and reporting
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
### Prerequisites
|
|
20
|
+
|
|
21
|
+
- Node.js 22+
|
|
22
|
+
- pnpm (recommended) or npm
|
|
23
|
+
- Redis (optional, for caching)
|
|
24
|
+
- PostgreSQL (optional, for persistent storage)
|
|
25
|
+
|
|
26
|
+
### Local Development
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Clone the repository
|
|
30
|
+
git clone https://github.com/powerhouse-inc/powerhouse.git
|
|
31
|
+
cd powerhouse
|
|
32
|
+
|
|
33
|
+
# Install dependencies
|
|
34
|
+
pnpm install
|
|
35
|
+
|
|
36
|
+
# Build the switchboard
|
|
37
|
+
pnpm --filter @powerhousedao/switchboard build
|
|
38
|
+
|
|
39
|
+
# Start in development mode
|
|
40
|
+
pnpm --filter @powerhousedao/switchboard dev
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Global Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Install globally
|
|
47
|
+
npm install -g @powerhousedao/switchboard
|
|
48
|
+
|
|
49
|
+
# Or using pnpm
|
|
50
|
+
pnpm add -g @powerhousedao/switchboard
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 🏃♂️ Quick Start
|
|
54
|
+
|
|
55
|
+
## ⚙️ Configuration
|
|
56
|
+
|
|
57
|
+
### Environment Variables
|
|
58
|
+
|
|
59
|
+
| Variable | Description | Default |
|
|
60
|
+
|----------|-------------|---------|
|
|
61
|
+
| `PORT` | Server port | `4001` |
|
|
62
|
+
| `DATABASE_URL` | Database connection string | `./.ph/drive-storage` |
|
|
63
|
+
| `REDIS_URL` | Redis connection URL | - |
|
|
64
|
+
| `REDIS_TLS_URL` | Redis TLS connection URL | - |
|
|
65
|
+
| `SENTRY_DSN` | Sentry DSN for error tracking | - |
|
|
66
|
+
| `SENTRY_ENV` | Sentry environment | - |
|
|
67
|
+
| `PYROSCOPE_SERVER_ADDRESS` | Pyroscope server address | - |
|
|
68
|
+
|
|
69
|
+
### Authentication Configuration
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
const options = {
|
|
73
|
+
auth: {
|
|
74
|
+
enabled: true,
|
|
75
|
+
guests: ['0x123', '0x456'],
|
|
76
|
+
users: ['0x789', '0xabc'],
|
|
77
|
+
admins: ['0xdef', '0xghi']
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Storage Options
|
|
83
|
+
|
|
84
|
+
Switchboard supports multiple storage backends:
|
|
85
|
+
|
|
86
|
+
- **Filesystem**: Local file-based storage (default)
|
|
87
|
+
- **PostgreSQL**: Persistent database storage
|
|
88
|
+
- **Redis**: Caching layer (optional)
|
|
89
|
+
|
|
90
|
+
## 🐳 Docker Deployment
|
|
91
|
+
|
|
92
|
+
### Using Docker Compose
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
version: '3.8'
|
|
96
|
+
services:
|
|
97
|
+
switchboard:
|
|
98
|
+
image: powerhouse/switchboard:latest
|
|
99
|
+
ports:
|
|
100
|
+
- "4001:4001"
|
|
101
|
+
environment:
|
|
102
|
+
- PORT=4001
|
|
103
|
+
- DATABASE_URL=postgresql://user:pass@db:5432/switchboard
|
|
104
|
+
- REDIS_URL=redis://redis:6379
|
|
105
|
+
depends_on:
|
|
106
|
+
- db
|
|
107
|
+
- redis
|
|
108
|
+
|
|
109
|
+
db:
|
|
110
|
+
image: postgres:15
|
|
111
|
+
environment:
|
|
112
|
+
POSTGRES_DB: switchboard
|
|
113
|
+
POSTGRES_USER: user
|
|
114
|
+
POSTGRES_PASSWORD: pass
|
|
115
|
+
|
|
116
|
+
redis:
|
|
117
|
+
image: redis:7-alpine
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Environment Variables for Docker
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Database
|
|
124
|
+
PH_SWITCHBOARD_DATABASE_URL="postgresql://user:pass@db:5432/switchboard"
|
|
125
|
+
PH_SWITCHBOARD_REDIS_URL="redis://redis:6379"
|
|
126
|
+
|
|
127
|
+
# Authentication
|
|
128
|
+
PH_SWITCHBOARD_AUTH_ENABLED=true
|
|
129
|
+
PH_SWITCHBOARD_ADMINS_LIST="0x123,0x456"
|
|
130
|
+
PH_SWITCHBOARD_USERS_LIST="0x789,0xabc"
|
|
131
|
+
PH_SWITCHBOARD_GUESTS_LIST="0xdef,0xghi"
|
|
132
|
+
|
|
133
|
+
# Packages
|
|
134
|
+
PH_PACKAGES="package1,package2,package3"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 🔧 Development
|
|
138
|
+
|
|
139
|
+
### Project Structure
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
src/
|
|
143
|
+
├── index.ts # Main entry point
|
|
144
|
+
├── server.ts # Server implementation
|
|
145
|
+
├── config.ts # Configuration management
|
|
146
|
+
├── types.ts # TypeScript type definitions
|
|
147
|
+
├── utils.ts # Utility functions
|
|
148
|
+
├── profiler.ts # Profiling integration
|
|
149
|
+
├── install-packages.ts # Package installation
|
|
150
|
+
└── clients/ # External client integrations
|
|
151
|
+
└── redis.ts # Redis client
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Available Scripts
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Build the project
|
|
158
|
+
pnpm build
|
|
159
|
+
|
|
160
|
+
# Start in development mode
|
|
161
|
+
pnpm dev
|
|
162
|
+
|
|
163
|
+
# Start production server
|
|
164
|
+
pnpm start
|
|
165
|
+
|
|
166
|
+
# Lint code
|
|
167
|
+
pnpm lint
|
|
168
|
+
|
|
169
|
+
# Clean build artifacts
|
|
170
|
+
pnpm clean
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Adding New Features
|
|
174
|
+
|
|
175
|
+
1. **Document Models**: Add new document model modules to the reactor builder
|
|
176
|
+
2. **Storage Backends**: Implement new storage adapters
|
|
177
|
+
3. **Authentication**: Extend authentication logic
|
|
178
|
+
4. **API Endpoints**: Add new GraphQL resolvers
|
|
179
|
+
|
|
180
|
+
## 📚 API Reference
|
|
181
|
+
|
|
182
|
+
### GraphQL Endpoints
|
|
183
|
+
|
|
184
|
+
Switchboard exposes a GraphQL API for document operations:
|
|
185
|
+
|
|
186
|
+
- **Document Models**: Query and mutate document models
|
|
187
|
+
- **Document Drives**: Manage document drives
|
|
188
|
+
- **Reactor Operations**: Execute reactor operations
|
|
189
|
+
|
|
190
|
+
### REST Endpoints
|
|
191
|
+
|
|
192
|
+
- `GET /health` - Health check endpoint
|
|
193
|
+
- `POST /graphql` - GraphQL endpoint
|
|
194
|
+
- `GET /graphql` - GraphQL playground (development)
|
|
195
|
+
|
|
196
|
+
## 🤝 Contributing
|
|
197
|
+
|
|
198
|
+
1. Fork the repository
|
|
199
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
200
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
201
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
202
|
+
5. Open a Pull Request
|
|
203
|
+
|
|
204
|
+
## 📄 License
|
|
205
|
+
|
|
206
|
+
This project is licensed under the ISC License - see the [LICENSE](LICENSE) file for details.
|
|
207
|
+
|
|
208
|
+
## 🆘 Support
|
|
209
|
+
|
|
210
|
+
- **Documentation**: [Powerhouse Docs](https://docs.powerhouse.com)
|
|
211
|
+
- **Issues**: [GitHub Issues](https://github.com/powerhouse-inc/powerhouse/issues)
|
|
212
|
+
- **Discussions**: [GitHub Discussions](https://github.com/powerhouse-inc/powerhouse/discussions)
|
|
213
|
+
|
|
214
|
+
## 🔗 Related Projects
|
|
215
|
+
|
|
216
|
+
- [@powerhousedao/reactor-api](https://github.com/powerhouse-inc/powerhouse/tree/main/packages/reactor-api) - Reactor API package
|
|
217
|
+
- [@powerhousedao/document-drive](https://github.com/powerhouse-inc/powerhouse/tree/main/packages/document-drive) - Document drive management
|
|
218
|
+
- [@powerhousedao/document-model](https://github.com/powerhouse-inc/powerhouse/tree/main/packages/document-model) - Document model system
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwG9E,eAAO,MAAM,gBAAgB,GAC3B,UAAS,kBAAuB,KAC/B,OAAO,CAAC,kBAAkB,CAmB5B,CAAC;AAEF,cAAc,YAAY,CAAC"}
|
package/dist/src/server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { startAPI } from "@powerhousedao/reactor-api";
|
|
3
|
+
import { VitePackageLoader, startViteServer, } from "@powerhousedao/reactor-api/packages/vite-loader";
|
|
3
4
|
import * as Sentry from "@sentry/node";
|
|
4
5
|
import { InMemoryCache, ReactorBuilder, driveDocumentModelModule, } from "document-drive";
|
|
5
6
|
import RedisCache from "document-drive/cache/redis";
|
|
@@ -24,6 +25,75 @@ if (process.env.SENTRY_DSN) {
|
|
|
24
25
|
Sentry.setupExpressErrorHandler(app);
|
|
25
26
|
}
|
|
26
27
|
const DEFAULT_PORT = process.env.PORT ? Number(process.env.PORT) : 4001;
|
|
28
|
+
async function initServer(serverPort, options) {
|
|
29
|
+
const { dev, packages = [] } = options;
|
|
30
|
+
// start redis if configured
|
|
31
|
+
const redisUrl = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
|
|
32
|
+
let redis;
|
|
33
|
+
if (redisUrl) {
|
|
34
|
+
try {
|
|
35
|
+
redis = await initRedis(redisUrl);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.error(e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const connectionString = process.env.DATABASE_URL ?? "./.ph/drive-storage";
|
|
42
|
+
const dbUrl = connectionString.includes("amazonaws") &&
|
|
43
|
+
!connectionString.includes("sslmode=no-verify")
|
|
44
|
+
? connectionString + "?sslmode=no-verify"
|
|
45
|
+
: connectionString;
|
|
46
|
+
const cache = redis ? new RedisCache(redis) : new InMemoryCache();
|
|
47
|
+
const storageFactory = dbUrl.startsWith("postgresql")
|
|
48
|
+
? new PrismaStorageFactory(dbUrl, cache)
|
|
49
|
+
: undefined;
|
|
50
|
+
const storage = storageFactory
|
|
51
|
+
? storageFactory.build()
|
|
52
|
+
: new FilesystemStorage(path.join(process.cwd(), dbUrl));
|
|
53
|
+
const reactor = new ReactorBuilder([
|
|
54
|
+
documentModelDocumentModelModule,
|
|
55
|
+
driveDocumentModelModule,
|
|
56
|
+
])
|
|
57
|
+
.withStorage(storage)
|
|
58
|
+
.withCache(cache)
|
|
59
|
+
.build();
|
|
60
|
+
// init drive server
|
|
61
|
+
await reactor.initialize();
|
|
62
|
+
const dbPath = dbUrl.startsWith("postgresql") ? dbUrl : ".ph/read-storage";
|
|
63
|
+
let defaultDriveUrl = undefined;
|
|
64
|
+
if (options.drive) {
|
|
65
|
+
defaultDriveUrl = await addDefaultDrive(reactor, options.drive, serverPort);
|
|
66
|
+
}
|
|
67
|
+
// start vite server if dev mode is enabled
|
|
68
|
+
const vite = dev ? await startViteServer() : undefined;
|
|
69
|
+
// get paths to local document models
|
|
70
|
+
if (dev) {
|
|
71
|
+
// TODO get path from powerhouse config
|
|
72
|
+
const basePath = process.cwd();
|
|
73
|
+
packages.push(basePath);
|
|
74
|
+
}
|
|
75
|
+
// create loader
|
|
76
|
+
const packageLoader = vite ? await VitePackageLoader.build(vite) : undefined;
|
|
77
|
+
// Start the API with the reactor and options
|
|
78
|
+
const api = await startAPI(reactor, {
|
|
79
|
+
express: app,
|
|
80
|
+
port: serverPort,
|
|
81
|
+
dbPath: options.dbPath ?? dbPath,
|
|
82
|
+
https: options.https,
|
|
83
|
+
packageLoader,
|
|
84
|
+
packages: options.packages,
|
|
85
|
+
configFile: options.configFile ?? path.join(process.cwd(), "powerhouse.config.json"),
|
|
86
|
+
});
|
|
87
|
+
// add vite middleware after express app is initialized if applicable
|
|
88
|
+
if (vite) {
|
|
89
|
+
api.app.use(vite.middlewares);
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
defaultDriveUrl,
|
|
93
|
+
api,
|
|
94
|
+
reactor,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
27
97
|
export const startSwitchboard = async (options = {}) => {
|
|
28
98
|
const serverPort = options.port ?? DEFAULT_PORT;
|
|
29
99
|
if (process.env.PYROSCOPE_SERVER_ADDRESS) {
|
|
@@ -36,56 +106,7 @@ export const startSwitchboard = async (options = {}) => {
|
|
|
36
106
|
}
|
|
37
107
|
}
|
|
38
108
|
try {
|
|
39
|
-
|
|
40
|
-
let redis;
|
|
41
|
-
if (redisUrl) {
|
|
42
|
-
try {
|
|
43
|
-
redis = await initRedis(redisUrl);
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
console.error(e);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const connectionString = process.env.DATABASE_URL ?? "./.ph/drive-storage";
|
|
50
|
-
const dbUrl = connectionString.includes("amazonaws") &&
|
|
51
|
-
!connectionString.includes("sslmode=no-verify")
|
|
52
|
-
? connectionString + "?sslmode=no-verify"
|
|
53
|
-
: connectionString;
|
|
54
|
-
const cache = redis ? new RedisCache(redis) : new InMemoryCache();
|
|
55
|
-
const storageFactory = dbUrl.startsWith("postgresql")
|
|
56
|
-
? new PrismaStorageFactory(dbUrl, cache)
|
|
57
|
-
: undefined;
|
|
58
|
-
const storage = storageFactory
|
|
59
|
-
? storageFactory.build()
|
|
60
|
-
: new FilesystemStorage(path.join(process.cwd(), dbUrl));
|
|
61
|
-
const reactor = new ReactorBuilder([
|
|
62
|
-
documentModelDocumentModelModule,
|
|
63
|
-
driveDocumentModelModule,
|
|
64
|
-
])
|
|
65
|
-
.withStorage(storage)
|
|
66
|
-
.withCache(cache)
|
|
67
|
-
.build();
|
|
68
|
-
// init drive server
|
|
69
|
-
await reactor.initialize();
|
|
70
|
-
const dbPath = dbUrl.startsWith("postgresql") ? dbUrl : ".ph/read-storage";
|
|
71
|
-
let defaultDriveUrl = undefined;
|
|
72
|
-
if (options.drive) {
|
|
73
|
-
defaultDriveUrl = await addDefaultDrive(reactor, options.drive, serverPort);
|
|
74
|
-
}
|
|
75
|
-
// Start the API with the reactor and options
|
|
76
|
-
await startAPI(reactor, {
|
|
77
|
-
express: app,
|
|
78
|
-
port: serverPort,
|
|
79
|
-
dbPath: options.dbPath ?? dbPath,
|
|
80
|
-
https: options.https,
|
|
81
|
-
packages: options.packages,
|
|
82
|
-
configFile: options.configFile ??
|
|
83
|
-
path.join(process.cwd(), "powerhouse.config.json"),
|
|
84
|
-
});
|
|
85
|
-
return {
|
|
86
|
-
defaultDriveUrl,
|
|
87
|
-
reactor,
|
|
88
|
-
};
|
|
109
|
+
return await initServer(serverPort, options);
|
|
89
110
|
}
|
|
90
111
|
catch (e) {
|
|
91
112
|
Sentry.captureException(e);
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,aAAa,EACb,cAAc,EACd,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAEL,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,kDAAkD;AAClD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;KACpC,CAAC,CAAC;IAEH,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAExE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC"}
|