@toonstore/torm 0.3.0 → 0.4.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,275 @@
1
+ "use strict";
2
+ /**
3
+ * TORM Migration System
4
+ * Handles data-shape migrations for schemaless 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.MigrationRunner = void 0;
44
+ const ioredis_1 = __importDefault(require("ioredis"));
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ class MigrationRunner {
48
+ constructor(redisOptions, migrationsDir) {
49
+ this.migrationKey = 'toonstore:_migrations';
50
+ if (redisOptions.url) {
51
+ this.redis = new ioredis_1.default(redisOptions.url);
52
+ }
53
+ else {
54
+ this.redis = new ioredis_1.default({
55
+ host: redisOptions.host || 'localhost',
56
+ port: redisOptions.port || 6379,
57
+ });
58
+ }
59
+ this.migrationsDir = migrationsDir || path.join(process.cwd(), 'migrations');
60
+ }
61
+ /**
62
+ * Get list of applied migrations from database
63
+ */
64
+ async getAppliedMigrations() {
65
+ const data = await this.redis.get(this.migrationKey);
66
+ return data ? JSON.parse(data) : [];
67
+ }
68
+ /**
69
+ * Save applied migrations to database
70
+ */
71
+ async saveAppliedMigrations(migrations) {
72
+ await this.redis.set(this.migrationKey, JSON.stringify(migrations));
73
+ }
74
+ /**
75
+ * Get list of migration files from directory
76
+ */
77
+ getMigrationFiles() {
78
+ if (!fs.existsSync(this.migrationsDir)) {
79
+ return [];
80
+ }
81
+ return fs
82
+ .readdirSync(this.migrationsDir)
83
+ .filter(file => file.endsWith('.js') || file.endsWith('.ts'))
84
+ .sort();
85
+ }
86
+ /**
87
+ * Load a migration module
88
+ */
89
+ async loadMigration(filename) {
90
+ const filePath = path.join(this.migrationsDir, filename);
91
+ const module = require(filePath);
92
+ const migration = module.default || module;
93
+ if (!migration.up || !migration.down) {
94
+ throw new Error(`Migration ${filename} must export up() and down() functions`);
95
+ }
96
+ const timestamp = filename.split('_')[0];
97
+ const name = filename.replace(/\.(js|ts)$/, '');
98
+ return {
99
+ name,
100
+ timestamp,
101
+ up: migration.up,
102
+ down: migration.down,
103
+ };
104
+ }
105
+ /**
106
+ * Get pending migrations that haven't been applied yet
107
+ */
108
+ async getPendingMigrations() {
109
+ const applied = await this.getAppliedMigrations();
110
+ const files = this.getMigrationFiles();
111
+ const pending = [];
112
+ for (const file of files) {
113
+ const migration = await this.loadMigration(file);
114
+ if (!applied.includes(migration.name)) {
115
+ pending.push(migration);
116
+ }
117
+ }
118
+ return pending;
119
+ }
120
+ /**
121
+ * Run pending migrations
122
+ */
123
+ async up(count) {
124
+ const pending = await this.getPendingMigrations();
125
+ if (pending.length === 0) {
126
+ console.log('✅ No pending migrations');
127
+ return;
128
+ }
129
+ const toRun = count ? pending.slice(0, count) : pending;
130
+ const applied = await this.getAppliedMigrations();
131
+ console.log(`\n📦 Running ${toRun.length} migration(s)...\n`);
132
+ for (const migration of toRun) {
133
+ try {
134
+ console.log(`⏳ Running: ${migration.name}`);
135
+ await migration.up(this.redis);
136
+ applied.push(migration.name);
137
+ await this.saveAppliedMigrations(applied);
138
+ console.log(`✅ Applied: ${migration.name}\n`);
139
+ }
140
+ catch (error) {
141
+ console.error(`❌ Failed: ${migration.name}`);
142
+ console.error(` ${error.message}\n`);
143
+ throw error;
144
+ }
145
+ }
146
+ console.log(`✅ All migrations applied successfully!\n`);
147
+ }
148
+ /**
149
+ * Rollback last migration
150
+ */
151
+ async down(count = 1) {
152
+ const applied = await this.getAppliedMigrations();
153
+ if (applied.length === 0) {
154
+ console.log('⚠️ No migrations to rollback');
155
+ return;
156
+ }
157
+ const toRollback = applied.slice(-count);
158
+ console.log(`\n📦 Rolling back ${toRollback.length} migration(s)...\n`);
159
+ for (let i = toRollback.length - 1; i >= 0; i--) {
160
+ const name = toRollback[i];
161
+ const filename = this.getMigrationFiles().find(f => f.includes(name));
162
+ if (!filename) {
163
+ console.error(`❌ Migration file not found: ${name}`);
164
+ continue;
165
+ }
166
+ try {
167
+ const migration = await this.loadMigration(filename);
168
+ console.log(`⏳ Rolling back: ${migration.name}`);
169
+ await migration.down(this.redis);
170
+ const index = applied.indexOf(name);
171
+ applied.splice(index, 1);
172
+ await this.saveAppliedMigrations(applied);
173
+ console.log(`✅ Rolled back: ${migration.name}\n`);
174
+ }
175
+ catch (error) {
176
+ console.error(`❌ Failed to rollback: ${name}`);
177
+ console.error(` ${error.message}\n`);
178
+ throw error;
179
+ }
180
+ }
181
+ console.log(`✅ Rollback completed!\n`);
182
+ }
183
+ /**
184
+ * Show migration status
185
+ */
186
+ async status() {
187
+ const applied = await this.getAppliedMigrations();
188
+ const files = this.getMigrationFiles();
189
+ console.log('\n📋 Migration Status:\n');
190
+ if (files.length === 0) {
191
+ console.log(' No migration files found\n');
192
+ return;
193
+ }
194
+ for (const file of files) {
195
+ const migration = await this.loadMigration(file);
196
+ const isApplied = applied.includes(migration.name);
197
+ const status = isApplied ? '✅' : '⏸️ ';
198
+ const label = isApplied ? 'Applied' : 'Pending';
199
+ console.log(` ${status} ${migration.name} - ${label}`);
200
+ }
201
+ console.log();
202
+ }
203
+ /**
204
+ * Create a new migration file
205
+ */
206
+ async create(name) {
207
+ if (!fs.existsSync(this.migrationsDir)) {
208
+ fs.mkdirSync(this.migrationsDir, { recursive: true });
209
+ }
210
+ const timestamp = new Date().toISOString().replace(/[-:]/g, '').split('.')[0];
211
+ const filename = `${timestamp}_${name}.ts`;
212
+ const filepath = path.join(this.migrationsDir, filename);
213
+ const template = `/**
214
+ * Migration: ${name}
215
+ * Created: ${new Date().toISOString()}
216
+ */
217
+
218
+ import { Redis } from 'ioredis';
219
+
220
+ export default {
221
+ async up(client: Redis) {
222
+ // TODO: Implement forward migration
223
+ // Example: Add a field to all documents
224
+ /*
225
+ const pattern = 'toonstore:User:*';
226
+ const keys = await client.keys(pattern);
227
+
228
+ for (const key of keys) {
229
+ const data = JSON.parse(await client.get(key) || '{}');
230
+
231
+ // Add new field with default value
232
+ data.newField = data.newField ?? 'default';
233
+
234
+ await client.set(key, JSON.stringify(data));
235
+ }
236
+
237
+ console.log(\`Updated \${keys.length} documents\`);
238
+ */
239
+ },
240
+
241
+ async down(client: Redis) {
242
+ // TODO: Implement rollback migration
243
+ // Example: Remove the field
244
+ /*
245
+ const pattern = 'toonstore:User:*';
246
+ const keys = await client.keys(pattern);
247
+
248
+ for (const key of keys) {
249
+ const data = JSON.parse(await client.get(key) || '{}');
250
+
251
+ // Remove the field
252
+ delete data.newField;
253
+
254
+ await client.set(key, JSON.stringify(data));
255
+ }
256
+
257
+ console.log(\`Rolled back \${keys.length} documents\`);
258
+ */
259
+ },
260
+ };
261
+ `;
262
+ fs.writeFileSync(filepath, template);
263
+ console.log(`\n✅ Created migration: ${filename}`);
264
+ console.log(` Location: ${filepath}\n`);
265
+ console.log(`📝 Edit the migration file and implement up() and down()\n`);
266
+ }
267
+ /**
268
+ * Close Redis connection
269
+ */
270
+ async close() {
271
+ await this.redis.quit();
272
+ }
273
+ }
274
+ exports.MigrationRunner = MigrationRunner;
275
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare class StudioServer {
17
17
  constructor(options?: StudioServerOptions);
18
18
  private setupMiddleware;
19
19
  private setupRoutes;
20
+ private inferType;
20
21
  start(): Promise<void>;
21
22
  stop(): Promise<void>;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"studio-server.d.ts","sourceRoot":"","sources":["../src/studio-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,GAAE,mBAAwB;IAyB7C,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,WAAW;IAgMb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
1
+ {"version":3,"file":"studio-server.d.ts","sourceRoot":"","sources":["../src/studio-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,GAAE,mBAAwB;IAyB7C,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,WAAW;IA+enB,OAAO,CAAC,SAAS;IAyBX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -215,6 +215,40 @@ class StudioServer {
215
215
  this.app.get('/api/collection/:name', async (req, res) => {
216
216
  try {
217
217
  const collection = req.params.name;
218
+ // Special handling for _migrations
219
+ if (collection === '_migrations') {
220
+ const migrationsData = await this.redis.get('toonstore:_migrations');
221
+ if (migrationsData) {
222
+ try {
223
+ const migrations = JSON.parse(migrationsData);
224
+ const documents = Array.isArray(migrations)
225
+ ? migrations.map((name) => ({
226
+ _id: name,
227
+ name,
228
+ appliedAt: 'N/A'
229
+ }))
230
+ : [];
231
+ return res.json({
232
+ collection,
233
+ count: documents.length,
234
+ documents,
235
+ });
236
+ }
237
+ catch (e) {
238
+ return res.json({
239
+ collection,
240
+ count: 0,
241
+ documents: [],
242
+ });
243
+ }
244
+ }
245
+ return res.json({
246
+ collection,
247
+ count: 0,
248
+ documents: [],
249
+ });
250
+ }
251
+ // Regular collections
218
252
  const pattern = `toonstore:${collection}:*`;
219
253
  const keys = await this.redis.keys(pattern);
220
254
  const documents = [];
@@ -256,6 +290,256 @@ class StudioServer {
256
290
  });
257
291
  }
258
292
  });
293
+ // API: Get migrations status
294
+ this.app.get('/api/migrations/status', async (req, res) => {
295
+ try {
296
+ const { MigrationRunner } = require('./migrations');
297
+ const runner = new MigrationRunner({
298
+ host: this.redis.options.host,
299
+ port: this.redis.options.port,
300
+ }, process.env.MIGRATIONS_DIR || path.join(process.cwd(), 'migrations'));
301
+ const applied = await runner.getAppliedMigrations();
302
+ const pending = await runner.getPendingMigrations();
303
+ await runner.close();
304
+ res.json({
305
+ applied: applied.map((name) => ({
306
+ name,
307
+ appliedAt: new Date().toISOString(), // TODO: Store actual timestamp
308
+ })),
309
+ pending: pending.map((m) => ({
310
+ name: m.name,
311
+ timestamp: m.timestamp,
312
+ })),
313
+ });
314
+ }
315
+ catch (error) {
316
+ res.status(500).json({ error: error.message });
317
+ }
318
+ });
319
+ // API: Run migrations up
320
+ this.app.post('/api/migrations/up', async (req, res) => {
321
+ try {
322
+ const { MigrationRunner } = require('./migrations');
323
+ const { count } = req.body || {};
324
+ const runner = new MigrationRunner({
325
+ host: this.redis.options.host,
326
+ port: this.redis.options.port,
327
+ }, process.env.MIGRATIONS_DIR || path.join(process.cwd(), 'migrations'));
328
+ await runner.up(count);
329
+ await runner.close();
330
+ res.json({ success: true, message: 'Migrations applied successfully' });
331
+ }
332
+ catch (error) {
333
+ res.status(500).json({ error: error.message });
334
+ }
335
+ });
336
+ // API: Rollback migrations
337
+ this.app.post('/api/migrations/down', async (req, res) => {
338
+ try {
339
+ const { MigrationRunner } = require('./migrations');
340
+ const { count } = req.body || { count: 1 };
341
+ const runner = new MigrationRunner({
342
+ host: this.redis.options.host,
343
+ port: this.redis.options.port,
344
+ }, process.env.MIGRATIONS_DIR || path.join(process.cwd(), 'migrations'));
345
+ await runner.down(count);
346
+ await runner.close();
347
+ res.json({ success: true, message: 'Migration rolled back successfully' });
348
+ }
349
+ catch (error) {
350
+ res.status(500).json({ error: error.message });
351
+ }
352
+ });
353
+ // API: Create migration
354
+ this.app.post('/api/migrations/create', async (req, res) => {
355
+ try {
356
+ const { MigrationRunner } = require('./migrations');
357
+ const { name } = req.body;
358
+ if (!name) {
359
+ return res.status(400).json({ error: 'Migration name is required' });
360
+ }
361
+ const runner = new MigrationRunner({
362
+ host: this.redis.options.host,
363
+ port: this.redis.options.port,
364
+ }, process.env.MIGRATIONS_DIR || path.join(process.cwd(), 'migrations'));
365
+ await runner.create(name);
366
+ await runner.close();
367
+ const timestamp = new Date().toISOString().replace(/[-:]/g, '').split('.')[0];
368
+ const filename = `${timestamp}_${name}.js`;
369
+ res.json({ success: true, filename, message: 'Migration created successfully' });
370
+ }
371
+ catch (error) {
372
+ res.status(500).json({ error: error.message });
373
+ }
374
+ });
375
+ // API: Generate TypeScript types
376
+ this.app.post('/api/generate/types', async (req, res) => {
377
+ try {
378
+ const keys = await this.redis.keys('toonstore:*');
379
+ if (keys.length === 0) {
380
+ return res.json({
381
+ success: true,
382
+ models: [],
383
+ message: 'No data found in database'
384
+ });
385
+ }
386
+ // Group by model
387
+ const modelMap = {};
388
+ for (const key of keys) {
389
+ const parts = key.split(':');
390
+ if (parts.length >= 3 && parts[0] === 'toonstore') {
391
+ const modelName = parts[1];
392
+ if (modelName === '_migrations')
393
+ continue;
394
+ if (!modelMap[modelName]) {
395
+ modelMap[modelName] = [];
396
+ }
397
+ const data = await this.redis.get(key);
398
+ if (data) {
399
+ try {
400
+ modelMap[modelName].push(JSON.parse(data));
401
+ }
402
+ catch (e) {
403
+ // Skip invalid JSON
404
+ }
405
+ }
406
+ }
407
+ }
408
+ const modelNames = Object.keys(modelMap);
409
+ // Generate types
410
+ let output = `/**\n * Auto-generated TypeScript types from ToonStoreDB\n * Generated: ${new Date().toISOString()}\n * \n * ⚠️ DO NOT EDIT MANUALLY - This file is auto-generated\n * Run 'npx torm generate' to regenerate\n */\n\n`;
411
+ for (const modelName of modelNames) {
412
+ const documents = modelMap[modelName];
413
+ const fieldTypes = {};
414
+ for (const doc of documents) {
415
+ for (const [field, value] of Object.entries(doc)) {
416
+ if (!fieldTypes[field]) {
417
+ fieldTypes[field] = new Set();
418
+ }
419
+ fieldTypes[field].add(this.inferType(value));
420
+ }
421
+ }
422
+ const interfaceName = modelName.charAt(0).toUpperCase() + modelName.slice(1);
423
+ output += `export interface ${interfaceName} {\n`;
424
+ const fields = Object.keys(fieldTypes).sort((a, b) => {
425
+ if (a.startsWith('_') && !b.startsWith('_'))
426
+ return -1;
427
+ if (!a.startsWith('_') && b.startsWith('_'))
428
+ return 1;
429
+ return a.localeCompare(b);
430
+ });
431
+ for (const field of fields) {
432
+ const types = Array.from(fieldTypes[field]);
433
+ const typeStr = types.length > 1 ? types.join(' | ') : types[0];
434
+ const isOptional = documents.some((doc) => !(field in doc));
435
+ const optionalMarker = isOptional ? '?' : '';
436
+ output += ` ${field}${optionalMarker}: ${typeStr};\n`;
437
+ }
438
+ output += `}\n\n`;
439
+ }
440
+ // Write to file
441
+ const outputDir = path.join(process.cwd(), 'src', 'generated');
442
+ const outputFile = path.join(outputDir, 'torm-types.ts');
443
+ if (!fs.existsSync(outputDir)) {
444
+ fs.mkdirSync(outputDir, { recursive: true });
445
+ }
446
+ fs.writeFileSync(outputFile, output);
447
+ res.json({
448
+ success: true,
449
+ models: modelNames,
450
+ outputFile,
451
+ message: `Generated types for ${modelNames.length} model(s)`,
452
+ });
453
+ }
454
+ catch (error) {
455
+ res.status(500).json({ error: error.message });
456
+ }
457
+ });
458
+ // API: Preview generated types
459
+ this.app.get('/api/generate/preview', async (req, res) => {
460
+ try {
461
+ const keys = await this.redis.keys('toonstore:*');
462
+ if (keys.length === 0) {
463
+ return res.send('// No data found in database');
464
+ }
465
+ // Group by model
466
+ const modelMap = {};
467
+ for (const key of keys) {
468
+ const parts = key.split(':');
469
+ if (parts.length >= 3 && parts[0] === 'toonstore') {
470
+ const modelName = parts[1];
471
+ if (modelName === '_migrations')
472
+ continue;
473
+ if (!modelMap[modelName]) {
474
+ modelMap[modelName] = [];
475
+ }
476
+ const data = await this.redis.get(key);
477
+ if (data) {
478
+ try {
479
+ modelMap[modelName].push(JSON.parse(data));
480
+ }
481
+ catch (e) {
482
+ // Skip
483
+ }
484
+ }
485
+ }
486
+ }
487
+ const modelNames = Object.keys(modelMap);
488
+ // Generate types
489
+ let output = `/**\n * Auto-generated TypeScript types from ToonStoreDB\n * Generated: ${new Date().toISOString()}\n */\n\n`;
490
+ for (const modelName of modelNames) {
491
+ const documents = modelMap[modelName];
492
+ const fieldTypes = {};
493
+ for (const doc of documents) {
494
+ for (const [field, value] of Object.entries(doc)) {
495
+ if (!fieldTypes[field]) {
496
+ fieldTypes[field] = new Set();
497
+ }
498
+ fieldTypes[field].add(this.inferType(value));
499
+ }
500
+ }
501
+ const interfaceName = modelName.charAt(0).toUpperCase() + modelName.slice(1);
502
+ output += `export interface ${interfaceName} {\n`;
503
+ const fields = Object.keys(fieldTypes).sort();
504
+ for (const field of fields) {
505
+ const types = Array.from(fieldTypes[field]);
506
+ const typeStr = types.length > 1 ? types.join(' | ') : types[0];
507
+ const isOptional = documents.some((doc) => !(field in doc));
508
+ output += ` ${field}${isOptional ? '?' : ''}: ${typeStr};\n`;
509
+ }
510
+ output += `}\n\n`;
511
+ }
512
+ res.contentType('text/typescript').send(output);
513
+ }
514
+ catch (error) {
515
+ res.status(500).send(`// Error: ${error.message}`);
516
+ }
517
+ });
518
+ }
519
+ inferType(value) {
520
+ if (value === null)
521
+ return 'null';
522
+ if (value === undefined)
523
+ return 'undefined';
524
+ const type = typeof value;
525
+ if (type === 'string')
526
+ return 'string';
527
+ if (type === 'number')
528
+ return 'number';
529
+ if (type === 'boolean')
530
+ return 'boolean';
531
+ if (Array.isArray(value)) {
532
+ if (value.length === 0)
533
+ return 'any[]';
534
+ const elementTypes = new Set(value.map((v) => this.inferType(v)));
535
+ if (elementTypes.size === 1) {
536
+ return `${Array.from(elementTypes)[0]}[]`;
537
+ }
538
+ return `(${Array.from(elementTypes).join(' | ')})[]`;
539
+ }
540
+ if (type === 'object')
541
+ return 'any';
542
+ return 'any';
259
543
  }
260
544
  async start() {
261
545
  return new Promise(async (resolve, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"studio-server.js","sourceRoot":"","sources":["../src/studio-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio-server.js","sourceRoot":"","sources":["../src/studio-server.ts"],"names":[],"mappings":"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"}