@toonstore/torm 0.1.0 → 0.3.0

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.
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ /**
3
+ * TORM Studio Server (Node.js)
4
+ * Web-based visual database manager for ToonStoreDB
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.StudioServer = void 0;
44
+ const express_1 = __importDefault(require("express"));
45
+ const ioredis_1 = __importDefault(require("ioredis"));
46
+ const path = __importStar(require("path"));
47
+ const fs = __importStar(require("fs"));
48
+ class StudioServer {
49
+ constructor(options = {}) {
50
+ this.app = (0, express_1.default)();
51
+ this.port = options.port || 4983; // Drizzle Studio uses 4983
52
+ this.host = options.host || 'localhost';
53
+ // Connect to ToonStoreDB from environment or options
54
+ const redisUrl = process.env.TOONSTORE_URL || options.redisUrl;
55
+ const redisHost = process.env.TOONSTORE_HOST || options.redisHost || 'localhost';
56
+ const redisPort = Number(process.env.TOONSTORE_PORT) || options.redisPort || 6379;
57
+ const redisPassword = process.env.TOONSTORE_PASSWORD || undefined;
58
+ if (redisUrl) {
59
+ this.redis = new ioredis_1.default(redisUrl);
60
+ }
61
+ else {
62
+ this.redis = new ioredis_1.default({
63
+ host: redisHost,
64
+ port: redisPort,
65
+ password: redisPassword,
66
+ });
67
+ }
68
+ this.setupMiddleware();
69
+ this.setupRoutes();
70
+ }
71
+ setupMiddleware() {
72
+ this.app.use(express_1.default.json());
73
+ this.app.use(express_1.default.urlencoded({ extended: true }));
74
+ // CORS
75
+ this.app.use((req, res, next) => {
76
+ res.header('Access-Control-Allow-Origin', '*');
77
+ res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
78
+ res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
79
+ if (req.method === 'OPTIONS') {
80
+ return res.sendStatus(200);
81
+ }
82
+ next();
83
+ });
84
+ }
85
+ setupRoutes() {
86
+ // Serve Studio UI
87
+ this.app.get('/', (req, res) => {
88
+ const htmlPath = path.join(__dirname, '..', 'studio', 'index.html');
89
+ if (fs.existsSync(htmlPath)) {
90
+ let html = fs.readFileSync(htmlPath, 'utf-8');
91
+ // Replace the title to show "local.torm.studio"
92
+ html = html.replace('<title>TORM Studio - ToonStore Database Manager</title>', '<title>local.torm.studio - TORM Studio</title>');
93
+ res.send(html);
94
+ }
95
+ else {
96
+ res.status(500).send('Studio UI not found');
97
+ }
98
+ });
99
+ // API: Get all keys (collections)
100
+ this.app.get('/api/keys', async (req, res) => {
101
+ try {
102
+ const pattern = req.query.pattern || '*';
103
+ const keys = await this.redis.keys(pattern);
104
+ // Group keys by collection
105
+ const collections = new Map();
106
+ keys.forEach(key => {
107
+ const parts = key.split(':');
108
+ if (parts.length >= 2 && parts[0] === 'toonstore') {
109
+ const collection = parts[1];
110
+ if (!collections.has(collection)) {
111
+ collections.set(collection, []);
112
+ }
113
+ collections.get(collection).push(key);
114
+ }
115
+ });
116
+ res.json({
117
+ total: keys.length,
118
+ collections: Array.from(collections.entries()).map(([name, keys]) => ({
119
+ name,
120
+ count: keys.length,
121
+ keys,
122
+ })),
123
+ });
124
+ }
125
+ catch (error) {
126
+ res.status(500).json({ error: error.message });
127
+ }
128
+ });
129
+ // API: Get value by key
130
+ this.app.get('/api/key/:key', async (req, res) => {
131
+ try {
132
+ const key = decodeURIComponent(req.params.key);
133
+ const value = await this.redis.get(key);
134
+ if (value === null) {
135
+ return res.status(404).json({ error: 'Key not found' });
136
+ }
137
+ // Try to parse as JSON
138
+ let parsedValue;
139
+ try {
140
+ parsedValue = JSON.parse(value);
141
+ }
142
+ catch {
143
+ parsedValue = value;
144
+ }
145
+ res.json({
146
+ key,
147
+ value: parsedValue,
148
+ type: typeof parsedValue,
149
+ });
150
+ }
151
+ catch (error) {
152
+ res.status(500).json({ error: error.message });
153
+ }
154
+ });
155
+ // API: Set value
156
+ this.app.post('/api/key/:key', async (req, res) => {
157
+ try {
158
+ const key = decodeURIComponent(req.params.key);
159
+ const { value } = req.body;
160
+ const stringValue = typeof value === 'string'
161
+ ? value
162
+ : JSON.stringify(value);
163
+ await this.redis.set(key, stringValue);
164
+ res.json({
165
+ success: true,
166
+ key,
167
+ message: 'Key set successfully'
168
+ });
169
+ }
170
+ catch (error) {
171
+ res.status(500).json({ error: error.message });
172
+ }
173
+ });
174
+ // API: Delete key
175
+ this.app.delete('/api/key/:key', async (req, res) => {
176
+ try {
177
+ const key = decodeURIComponent(req.params.key);
178
+ const result = await this.redis.del(key);
179
+ res.json({
180
+ success: result > 0,
181
+ deleted: result,
182
+ });
183
+ }
184
+ catch (error) {
185
+ res.status(500).json({ error: error.message });
186
+ }
187
+ });
188
+ // API: Database stats
189
+ this.app.get('/api/stats', async (req, res) => {
190
+ try {
191
+ const info = await this.redis.info();
192
+ const dbsize = await this.redis.dbsize();
193
+ // Parse info string
194
+ const lines = info.split('\r\n');
195
+ const stats = {};
196
+ lines.forEach(line => {
197
+ if (line.includes(':')) {
198
+ const [key, value] = line.split(':');
199
+ stats[key.trim()] = value.trim();
200
+ }
201
+ });
202
+ res.json({
203
+ total_keys: dbsize,
204
+ used_memory: stats.used_memory_human || 'N/A',
205
+ connected_clients: stats.connected_clients || 'N/A',
206
+ uptime_days: stats.uptime_in_days || 'N/A',
207
+ redis_version: stats.redis_version || 'N/A',
208
+ });
209
+ }
210
+ catch (error) {
211
+ res.status(500).json({ error: error.message });
212
+ }
213
+ });
214
+ // API: Get collection data
215
+ this.app.get('/api/collection/:name', async (req, res) => {
216
+ try {
217
+ const collection = req.params.name;
218
+ const pattern = `toonstore:${collection}:*`;
219
+ const keys = await this.redis.keys(pattern);
220
+ const documents = [];
221
+ for (const key of keys) {
222
+ const value = await this.redis.get(key);
223
+ if (value) {
224
+ try {
225
+ documents.push(JSON.parse(value));
226
+ }
227
+ catch {
228
+ documents.push({ _raw: value });
229
+ }
230
+ }
231
+ }
232
+ res.json({
233
+ collection,
234
+ count: documents.length,
235
+ documents,
236
+ });
237
+ }
238
+ catch (error) {
239
+ res.status(500).json({ error: error.message });
240
+ }
241
+ });
242
+ // API: Health check
243
+ this.app.get('/api/health', async (req, res) => {
244
+ try {
245
+ await this.redis.ping();
246
+ res.json({
247
+ status: 'ok',
248
+ database: 'connected',
249
+ timestamp: new Date().toISOString(),
250
+ });
251
+ }
252
+ catch (error) {
253
+ res.status(500).json({
254
+ status: 'error',
255
+ error: error.message
256
+ });
257
+ }
258
+ });
259
+ }
260
+ async start() {
261
+ return new Promise(async (resolve, reject) => {
262
+ // Test connection first
263
+ console.log('šŸ”Œ Testing database connection...');
264
+ try {
265
+ await this.redis.ping();
266
+ console.log('āœ… Connected to ToonStoreDB\n');
267
+ }
268
+ catch (error) {
269
+ console.error('āŒ Failed to connect to ToonStoreDB:');
270
+ console.error(' ', error.message);
271
+ console.error('\nšŸ’” Check your torm.config.ts credentials');
272
+ console.error(' or make sure ToonStoreDB is running\n');
273
+ process.exit(1);
274
+ }
275
+ this.app.listen(this.port, '127.0.0.1', () => {
276
+ console.log(`\nšŸŽØ TORM Studio running at:`);
277
+ console.log(` → http://localhost:${this.port}\n`);
278
+ console.log(`šŸ’” Press Ctrl+C to stop\n`);
279
+ resolve();
280
+ });
281
+ });
282
+ }
283
+ async stop() {
284
+ await this.redis.quit();
285
+ }
286
+ }
287
+ exports.StudioServer = StudioServer;
288
+ // CLI usage
289
+ if (require.main === module) {
290
+ const port = process.env.PORT ? parseInt(process.env.PORT) : 4983;
291
+ const server = new StudioServer({ port });
292
+ server.start().catch((err) => {
293
+ console.error('Failed to start studio server:', err);
294
+ process.exit(1);
295
+ });
296
+ process.on('SIGINT', async () => {
297
+ console.log('\n\nšŸ‘‹ Shutting down TORM Studio...');
298
+ await server.stop();
299
+ process.exit(0);
300
+ });
301
+ }
302
+ //# sourceMappingURL=studio-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-server.js","sourceRoot":"","sources":["../src/studio-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,29 +1,41 @@
1
1
  {
2
2
  "name": "@toonstore/torm",
3
- "version": "0.1.0",
4
- "description": "ToonStore ORM client for Node.js",
3
+ "version": "0.3.0",
4
+ "description": "ToonStoreDB ORM client for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
- "build": "tsc",
9
- "dev": "tsc --watch",
8
+ "build": "npx tsc",
9
+ "dev": "npx tsc --watch",
10
10
  "example": "node examples/basic-usage.js",
11
- "test": "echo \"No tests yet\" && exit 0"
11
+ "test": "echo \"No tests yet\" && exit 0",
12
+ "prepublishOnly": "npm run build",
13
+ "studio": "node dist/cli.js studio",
14
+ "generate": "node dist/cli.js generate",
15
+ "migrate": "node dist/cli.js migrate"
16
+ },
17
+ "bin": {
18
+ "torm": "dist/cli.js"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
12
22
  },
13
23
  "keywords": [
24
+ "toonstoredb",
14
25
  "toonstore",
15
26
  "orm",
16
27
  "database",
17
- "redis",
18
28
  "toon"
19
29
  ],
20
30
  "author": "ToonStore Team",
21
31
  "license": "MIT",
22
32
  "dependencies": {
23
- "axios": "^1.6.0"
33
+ "express": "^4.18.2",
34
+ "ioredis": "^5.3.0"
24
35
  },
25
36
  "devDependencies": {
26
- "@types/node": "^20.10.0",
27
- "typescript": "^5.3.0"
37
+ "@types/express": "^4.17.21",
38
+ "@types/node": "^20.19.27",
39
+ "typescript": "^5.9.3"
28
40
  }
29
41
  }