@opensaas/stack-cli 0.1.0 → 0.1.1
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +13 -0
- package/CLAUDE.md +249 -0
- package/LICENSE +21 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +6 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/generator/context.d.ts.map +1 -1
- package/dist/generator/context.js +78 -3
- package/dist/generator/context.js.map +1 -1
- package/dist/generator/index.d.ts +1 -0
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +1 -0
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/mcp.d.ts +14 -0
- package/dist/generator/mcp.d.ts.map +1 -0
- package/dist/generator/mcp.js +193 -0
- package/dist/generator/mcp.js.map +1 -0
- package/dist/generator/types.d.ts.map +1 -1
- package/dist/generator/types.js +11 -33
- package/dist/generator/types.js.map +1 -1
- package/package.json +9 -3
- package/src/commands/__snapshots__/generate.test.ts.snap +265 -0
- package/src/commands/dev.test.ts +216 -0
- package/src/commands/generate.test.ts +272 -0
- package/src/commands/generate.ts +7 -0
- package/src/commands/init.test.ts +308 -0
- package/src/commands/init.ts +2 -2
- package/src/generator/__snapshots__/context.test.ts.snap +137 -0
- package/src/generator/__snapshots__/prisma.test.ts.snap +182 -0
- package/src/generator/__snapshots__/types.test.ts.snap +512 -0
- package/src/generator/context.test.ts +145 -0
- package/src/generator/context.ts +80 -3
- package/src/generator/index.ts +1 -0
- package/src/generator/mcp.test.ts +393 -0
- package/src/generator/mcp.ts +221 -0
- package/src/generator/prisma.test.ts +221 -0
- package/src/generator/types.test.ts +280 -0
- package/src/generator/types.ts +14 -36
- package/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +26 -0
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @opensaas/stack-cli
|
|
2
|
+
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f8ebc0e: Add base mcp server
|
|
8
|
+
- 045c071: Add field and image upload
|
|
9
|
+
- Updated dependencies [9a3fda5]
|
|
10
|
+
- Updated dependencies [f8ebc0e]
|
|
11
|
+
- Updated dependencies [045c071]
|
|
12
|
+
- @opensaas/stack-core@0.1.1
|
|
13
|
+
- @opensaas/stack-mcp@0.1.1
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# @opensaas/stack-cli
|
|
2
|
+
|
|
3
|
+
Command-line tools for OpenSaas Stack providing code generation and development utilities.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Converts `opensaas.config.ts` into Prisma schema and TypeScript types. Provides watch mode for automatic regeneration during development.
|
|
8
|
+
|
|
9
|
+
## Key Files & Commands
|
|
10
|
+
|
|
11
|
+
### Binary (`bin/opensaas.js`)
|
|
12
|
+
|
|
13
|
+
Entry point exposing `opensaas` CLI command
|
|
14
|
+
|
|
15
|
+
### Commands (`src/commands/`)
|
|
16
|
+
|
|
17
|
+
- `generate.ts` - One-time generation
|
|
18
|
+
- `dev.ts` - Watch mode with automatic regeneration
|
|
19
|
+
- `init.ts` - Project scaffolding (future)
|
|
20
|
+
|
|
21
|
+
### Generators (`src/generator/`)
|
|
22
|
+
|
|
23
|
+
- `prisma.ts` - Generates `prisma/schema.prisma` from config
|
|
24
|
+
- `types.ts` - Generates `.opensaas/types.ts` TypeScript types
|
|
25
|
+
- `context.ts` - Generates `.opensaas/context.ts` context factory
|
|
26
|
+
- `mcp.ts` - Generates MCP tools metadata
|
|
27
|
+
- `type-patcher.ts` - Patches Prisma types for relationships
|
|
28
|
+
|
|
29
|
+
## Architecture
|
|
30
|
+
|
|
31
|
+
### Config Loading
|
|
32
|
+
|
|
33
|
+
Uses `jiti` to execute TypeScript config:
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
const jiti = createJiti(import.meta.url)
|
|
37
|
+
const config = jiti('./opensaas.config.ts').default
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Generator Pipeline
|
|
41
|
+
|
|
42
|
+
1. Load config from `opensaas.config.ts`
|
|
43
|
+
2. Generate Prisma schema → `prisma/schema.prisma`
|
|
44
|
+
3. Generate TypeScript types → `.opensaas/types.ts`
|
|
45
|
+
4. Generate context factory → `.opensaas/context.ts`
|
|
46
|
+
5. Generate MCP tools (if enabled) → `.opensaas/mcp-tools.json`
|
|
47
|
+
|
|
48
|
+
### Watch Mode
|
|
49
|
+
|
|
50
|
+
Uses `chokidar` to watch `opensaas.config.ts`:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const watcher = chokidar.watch('opensaas.config.ts')
|
|
54
|
+
watcher.on('change', () => runGenerator())
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## CLI Usage
|
|
58
|
+
|
|
59
|
+
### Generate Command
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
opensaas generate
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Outputs:
|
|
66
|
+
|
|
67
|
+
- `✅ Prisma schema generated`
|
|
68
|
+
- `✅ TypeScript types generated`
|
|
69
|
+
- Next steps (run `prisma generate` and `db push`)
|
|
70
|
+
|
|
71
|
+
### Dev Command
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
opensaas dev
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Outputs:
|
|
78
|
+
|
|
79
|
+
- Initial generation
|
|
80
|
+
- `👀 Watching opensaas.config.ts for changes...`
|
|
81
|
+
- Auto-regenerates on file changes
|
|
82
|
+
|
|
83
|
+
## Generated Files
|
|
84
|
+
|
|
85
|
+
### Prisma Schema (`prisma/schema.prisma`)
|
|
86
|
+
|
|
87
|
+
```prisma
|
|
88
|
+
datasource db {
|
|
89
|
+
provider = "sqlite"
|
|
90
|
+
url = env("DATABASE_URL")
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
generator client {
|
|
94
|
+
provider = "prisma-client-js"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
model Post {
|
|
98
|
+
id String @id @default(cuid())
|
|
99
|
+
title String
|
|
100
|
+
createdAt DateTime @default(now())
|
|
101
|
+
updatedAt DateTime @updatedAt
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Types (`.opensaas/types.ts`)
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
export type Post = {
|
|
109
|
+
id: string
|
|
110
|
+
title: string
|
|
111
|
+
createdAt: Date
|
|
112
|
+
updatedAt: Date
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export type PostCreateInput = {
|
|
116
|
+
title: string
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export type PostUpdateInput = {
|
|
120
|
+
title?: string
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Context Factory (`.opensaas/context.ts`)
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
import { createContext } from '@opensaas/stack-core'
|
|
128
|
+
import { PrismaClient } from '@prisma/client'
|
|
129
|
+
import config from '../opensaas.config'
|
|
130
|
+
|
|
131
|
+
const prisma = new PrismaClient()
|
|
132
|
+
|
|
133
|
+
export function getContext(session?: any) {
|
|
134
|
+
return createContext(config, prisma, session)
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Integration Points
|
|
139
|
+
|
|
140
|
+
### With @opensaas/stack-core
|
|
141
|
+
|
|
142
|
+
- Imports generator functions from core
|
|
143
|
+
- Delegates Prisma/TS generation to field methods via core
|
|
144
|
+
|
|
145
|
+
### With @opensaas/stack-auth
|
|
146
|
+
|
|
147
|
+
- Context factory supports custom `prismaClientConstructor` for Better-auth session provider
|
|
148
|
+
|
|
149
|
+
### With @opensaas/stack-mcp
|
|
150
|
+
|
|
151
|
+
- Generates MCP tools metadata when MCP enabled in config
|
|
152
|
+
|
|
153
|
+
### With Prisma
|
|
154
|
+
|
|
155
|
+
Workflow:
|
|
156
|
+
|
|
157
|
+
1. `opensaas generate` → creates `prisma/schema.prisma`
|
|
158
|
+
2. `npx prisma generate` → creates Prisma Client
|
|
159
|
+
3. `npx prisma db push` → pushes schema to database
|
|
160
|
+
|
|
161
|
+
## Common Patterns
|
|
162
|
+
|
|
163
|
+
### Development Workflow
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Terminal 1: Watch and regenerate
|
|
167
|
+
opensaas dev
|
|
168
|
+
|
|
169
|
+
# Terminal 2: Run Next.js
|
|
170
|
+
pnpm next dev
|
|
171
|
+
|
|
172
|
+
# Edit opensaas.config.ts - auto regenerates!
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Package.json Scripts
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"scripts": {
|
|
180
|
+
"generate": "opensaas generate",
|
|
181
|
+
"db:push": "prisma db push",
|
|
182
|
+
"db:studio": "prisma studio",
|
|
183
|
+
"dev": "opensaas dev"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### CI/CD Integration
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
- run: pnpm install
|
|
192
|
+
- run: opensaas generate
|
|
193
|
+
- run: npx prisma generate
|
|
194
|
+
- run: pnpm test
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Custom Prisma Client
|
|
198
|
+
|
|
199
|
+
Config with custom constructor:
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
config({
|
|
203
|
+
db: {
|
|
204
|
+
provider: 'postgresql',
|
|
205
|
+
url: process.env.DATABASE_URL,
|
|
206
|
+
prismaClientConstructor: (PrismaClient) => {
|
|
207
|
+
// Custom adapter setup
|
|
208
|
+
return new PrismaClient({ adapter })
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
})
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Generated context uses custom constructor:
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// .opensaas/context.ts
|
|
218
|
+
const prisma = config.db.prismaClientConstructor
|
|
219
|
+
? config.db.prismaClientConstructor(PrismaClient)
|
|
220
|
+
: new PrismaClient()
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Type Patching
|
|
224
|
+
|
|
225
|
+
CLI patches Prisma types for relationship fields to handle access control:
|
|
226
|
+
|
|
227
|
+
- Relationships can be `null` when access denied
|
|
228
|
+
- Adds `| null` to relationship field types in generated types
|
|
229
|
+
|
|
230
|
+
## Error Handling
|
|
231
|
+
|
|
232
|
+
Common errors:
|
|
233
|
+
|
|
234
|
+
- Config not found → check file exists in CWD
|
|
235
|
+
- TypeScript errors in config → fix syntax in `opensaas.config.ts`
|
|
236
|
+
- Permission denied → ensure write access to `prisma/` and `.opensaas/`
|
|
237
|
+
|
|
238
|
+
## Output Styling
|
|
239
|
+
|
|
240
|
+
Uses `chalk` and `ora` for colored, animated output:
|
|
241
|
+
|
|
242
|
+
- ✅ Green checkmarks for success
|
|
243
|
+
- ❌ Red X for errors
|
|
244
|
+
- 🚀 Emoji for branding
|
|
245
|
+
- Spinner animations during generation
|
|
246
|
+
|
|
247
|
+
## Future Commands
|
|
248
|
+
|
|
249
|
+
`opensaas init` - Project scaffolding with templates (planned)
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 OpenSaas Stack Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAeA,wBAAsB,eAAe,kBA8FpC"}
|
|
@@ -4,7 +4,7 @@ import { execSync } from 'child_process';
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import ora from 'ora';
|
|
6
6
|
import { createJiti } from 'jiti';
|
|
7
|
-
import { writePrismaSchema, writeTypes, writeContext, patchPrismaTypes, } from '../generator/index.js';
|
|
7
|
+
import { writePrismaSchema, writeTypes, writeContext, patchPrismaTypes, writeMcp, } from '../generator/index.js';
|
|
8
8
|
export async function generateCommand() {
|
|
9
9
|
console.log(chalk.bold('\n🚀 OpenSaas Generator\n'));
|
|
10
10
|
const cwd = process.cwd();
|
|
@@ -29,10 +29,15 @@ export async function generateCommand() {
|
|
|
29
29
|
writePrismaSchema(config, path.join(cwd, 'prisma', 'schema.prisma'));
|
|
30
30
|
writeTypes(config, path.join(cwd, '.opensaas', 'types.ts'));
|
|
31
31
|
writeContext(config, path.join(cwd, '.opensaas', 'context.ts'));
|
|
32
|
+
// Generate MCP metadata if enabled
|
|
33
|
+
const mcpGenerated = writeMcp(config, cwd);
|
|
32
34
|
generatorSpinner.succeed(chalk.green('Schema generation complete'));
|
|
33
35
|
console.log(chalk.green('✅ Prisma schema generated'));
|
|
34
36
|
console.log(chalk.green('✅ TypeScript types generated'));
|
|
35
37
|
console.log(chalk.green('✅ Context factory generated'));
|
|
38
|
+
if (mcpGenerated) {
|
|
39
|
+
console.log(chalk.green('✅ MCP metadata generated'));
|
|
40
|
+
}
|
|
36
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
42
|
}
|
|
38
43
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -70,8 +70,8 @@ export async function initCommand(projectName) {
|
|
|
70
70
|
devDependencies: {
|
|
71
71
|
'@opensaas/stack-cli': '^0.1.0',
|
|
72
72
|
'@types/node': '^20.10.0',
|
|
73
|
-
'@types/react': '^
|
|
74
|
-
'@types/react-dom': '^
|
|
73
|
+
'@types/react': '^19.2.2',
|
|
74
|
+
'@types/react-dom': '^19.2.2',
|
|
75
75
|
prisma: '^5.7.1',
|
|
76
76
|
tsx: '^4.7.0',
|
|
77
77
|
typescript: '^5.3.3',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA8H9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAU7E"}
|
|
@@ -9,10 +9,78 @@ import * as path from 'path';
|
|
|
9
9
|
export function generateContext(config) {
|
|
10
10
|
// Check if custom Prisma client constructor is provided
|
|
11
11
|
const hasCustomConstructor = !!config.db.prismaClientConstructor;
|
|
12
|
+
// Check if storage is configured
|
|
13
|
+
const hasStorage = !!config.storage && Object.keys(config.storage).length > 0;
|
|
12
14
|
// Generate the Prisma client instantiation code
|
|
13
15
|
const prismaInstantiation = hasCustomConstructor
|
|
14
16
|
? `config.db.prismaClientConstructor!(PrismaClient)`
|
|
15
17
|
: `new PrismaClient()`;
|
|
18
|
+
// Generate storage utilities if storage is configured
|
|
19
|
+
const storageUtilities = hasStorage
|
|
20
|
+
? `
|
|
21
|
+
/**
|
|
22
|
+
* Lazy-loaded storage runtime functions
|
|
23
|
+
* Prevents sharp and other storage dependencies from being bundled in client code
|
|
24
|
+
*/
|
|
25
|
+
let storageRuntime: typeof import('@opensaas/stack-storage/runtime') | null = null
|
|
26
|
+
|
|
27
|
+
async function getStorageRuntime() {
|
|
28
|
+
if (!storageRuntime) {
|
|
29
|
+
try {
|
|
30
|
+
storageRuntime = await import('@opensaas/stack-storage/runtime')
|
|
31
|
+
} catch (error) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
'Failed to load @opensaas/stack-storage/runtime. Make sure @opensaas/stack-storage is installed.'
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return storageRuntime
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Storage utilities for file/image uploads
|
|
42
|
+
*/
|
|
43
|
+
const storage = {
|
|
44
|
+
uploadFile: async (providerName: string, file: File, buffer: Buffer, options?: unknown) => {
|
|
45
|
+
const runtime = await getStorageRuntime()
|
|
46
|
+
return runtime.uploadFile(config, providerName, { file, buffer }, options as any)
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
uploadImage: async (providerName: string, file: File, buffer: Buffer, options?: unknown) => {
|
|
50
|
+
const runtime = await getStorageRuntime()
|
|
51
|
+
return runtime.uploadImage(config, providerName, { file, buffer }, options as any)
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
deleteFile: async (providerName: string, filename: string) => {
|
|
55
|
+
const runtime = await getStorageRuntime()
|
|
56
|
+
return runtime.deleteFile(config, providerName, filename)
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
deleteImage: async (metadata: unknown) => {
|
|
60
|
+
const runtime = await getStorageRuntime()
|
|
61
|
+
return runtime.deleteImage(config, metadata as any)
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
`
|
|
65
|
+
: `
|
|
66
|
+
/**
|
|
67
|
+
* Storage utilities (not configured)
|
|
68
|
+
*/
|
|
69
|
+
const storage = {
|
|
70
|
+
uploadFile: async () => {
|
|
71
|
+
throw new Error('Storage is not configured. Add storage providers to your opensaas.config.ts')
|
|
72
|
+
},
|
|
73
|
+
uploadImage: async () => {
|
|
74
|
+
throw new Error('Storage is not configured. Add storage providers to your opensaas.config.ts')
|
|
75
|
+
},
|
|
76
|
+
deleteFile: async () => {
|
|
77
|
+
throw new Error('Storage is not configured. Add storage providers to your opensaas.config.ts')
|
|
78
|
+
},
|
|
79
|
+
deleteImage: async () => {
|
|
80
|
+
throw new Error('Storage is not configured. Add storage providers to your opensaas.config.ts')
|
|
81
|
+
},
|
|
82
|
+
}
|
|
83
|
+
`;
|
|
16
84
|
return `/**
|
|
17
85
|
* Auto-generated context factory
|
|
18
86
|
*
|
|
@@ -23,14 +91,16 @@ export function generateContext(config) {
|
|
|
23
91
|
*/
|
|
24
92
|
|
|
25
93
|
import { getContext as getOpensaasContext } from '@opensaas/stack-core'
|
|
94
|
+
import type { Session as OpensaasSession } from '@opensaas/stack-core'
|
|
26
95
|
import { PrismaClient } from './prisma-client'
|
|
96
|
+
import type { Context } from './types'
|
|
27
97
|
import config from '../opensaas.config'
|
|
28
98
|
|
|
29
99
|
// Internal Prisma singleton - managed automatically
|
|
30
100
|
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined }
|
|
31
101
|
const prisma = globalForPrisma.prisma ?? ${prismaInstantiation}
|
|
32
102
|
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
|
|
33
|
-
|
|
103
|
+
${storageUtilities}
|
|
34
104
|
/**
|
|
35
105
|
* Get OpenSaas context with optional session
|
|
36
106
|
*
|
|
@@ -45,10 +115,15 @@ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
|
|
|
45
115
|
* // Authenticated access
|
|
46
116
|
* const context = getContext({ userId: 'user-123' })
|
|
47
117
|
* const myPosts = await context.db.post.findMany()
|
|
118
|
+
*
|
|
119
|
+
* // With custom session type
|
|
120
|
+
* type CustomSession = { userId: string; email: string; role: string } | null
|
|
121
|
+
* const context = getContext<CustomSession>({ userId: '123', email: 'user@example.com', role: 'admin' })
|
|
122
|
+
* // context.session is now typed as CustomSession
|
|
48
123
|
* \`\`\`
|
|
49
124
|
*/
|
|
50
|
-
export function getContext
|
|
51
|
-
return getOpensaasContext(config, prisma, session ?? null)
|
|
125
|
+
export function getContext<TSession extends OpensaasSession = OpensaasSession>(session?: TSession): Context<TSession> {
|
|
126
|
+
return getOpensaasContext(config, prisma, session ?? null, storage) as Context<TSession>
|
|
52
127
|
}
|
|
53
128
|
|
|
54
129
|
export const rawOpensaasContext = getContext()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAA;IAEhE,gDAAgD;IAChD,MAAM,mBAAmB,GAAG,oBAAoB;QAC9C,CAAC,CAAC,kDAAkD;QACpD,CAAC,CAAC,oBAAoB,CAAA;IAExB,OAAO
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAA;IAEhE,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAE7E,gDAAgD;IAChD,MAAM,mBAAmB,GAAG,oBAAoB;QAC9C,CAAC,CAAC,kDAAkD;QACpD,CAAC,CAAC,oBAAoB,CAAA;IAExB,sDAAsD;IACtD,MAAM,gBAAgB,GAAG,UAAU;QACjC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CL;QACG,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAkBL,CAAA;IAEC,OAAO;;;;;;;;;;;;;;;;;2CAiBkC,mBAAmB;;EAE5D,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BjB,CAAA;AACD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAsB,EAAE,UAAkB;IACrE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEvC,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -2,4 +2,5 @@ export { generatePrismaSchema, writePrismaSchema } from './prisma.js';
|
|
|
2
2
|
export { generateTypes, writeTypes } from './types.js';
|
|
3
3
|
export { patchPrismaTypes } from './type-patcher.js';
|
|
4
4
|
export { generateContext, writeContext } from './context.js';
|
|
5
|
+
export { generateMcp, writeMcp } from './mcp.js';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/generator/index.js
CHANGED
|
@@ -2,4 +2,5 @@ export { generatePrismaSchema, writePrismaSchema } from './prisma.js';
|
|
|
2
2
|
export { generateTypes, writeTypes } from './types.js';
|
|
3
3
|
export { patchPrismaTypes } from './type-patcher.js';
|
|
4
4
|
export { generateContext, writeContext } from './context.js';
|
|
5
|
+
export { generateMcp, writeMcp } from './mcp.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP metadata generation
|
|
3
|
+
* Generates reference files for MCP configuration
|
|
4
|
+
*/
|
|
5
|
+
import type { OpenSaasConfig } from '@opensaas/stack-core';
|
|
6
|
+
/**
|
|
7
|
+
* Generate MCP metadata if MCP is enabled
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateMcp(config: OpenSaasConfig, outputPath: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Write MCP metadata to disk
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeMcp(config: OpenSaasConfig, outputPath: string): boolean;
|
|
14
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/generator/mcp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CA8L/E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAYlE"}
|