@mmapp/react-compiler 0.1.0-alpha.7 → 0.1.0-alpha.9
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/dist/auth-3UK75242.mjs +17 -0
- package/dist/babel/index.d.mts +2 -2
- package/dist/babel/index.d.ts +2 -2
- package/dist/babel/index.js +27 -31
- package/dist/babel/index.mjs +1 -1
- package/dist/chunk-7T6Q5KAA.mjs +7506 -0
- package/dist/chunk-ABYPKRSB.mjs +215 -0
- package/dist/chunk-BZEXUPDH.mjs +175 -0
- package/dist/chunk-J3M4GUS7.mjs +161 -0
- package/dist/chunk-JRGFBWTN.mjs +2918 -0
- package/dist/chunk-R2DD5GTY.mjs +186 -0
- package/dist/chunk-UDDTWG5J.mjs +734 -0
- package/dist/chunk-VLTKQDJ3.mjs +244 -0
- package/dist/chunk-WVYY32LD.mjs +939 -0
- package/dist/chunk-XDVM4YHX.mjs +3450 -0
- package/dist/cli/index.js +4372 -3240
- package/dist/cli/index.mjs +77 -179
- package/dist/codemod/cli.js +1 -1
- package/dist/codemod/cli.mjs +1 -1
- package/dist/codemod/index.d.mts +3 -3
- package/dist/codemod/index.d.ts +3 -3
- package/dist/codemod/index.js +1 -1
- package/dist/codemod/index.mjs +1 -1
- package/dist/deploy-YAJGW6II.mjs +9 -0
- package/dist/dev-server-CrQ041KP.d.mts +79 -0
- package/dist/dev-server-CrQ041KP.d.ts +79 -0
- package/dist/dev-server.d.mts +2 -2
- package/dist/dev-server.d.ts +2 -2
- package/dist/dev-server.js +1240 -120
- package/dist/dev-server.mjs +4 -4
- package/dist/envelope-ChEkuHij.d.mts +265 -0
- package/dist/envelope-ChEkuHij.d.ts +265 -0
- package/dist/envelope.d.mts +2 -2
- package/dist/envelope.d.ts +2 -2
- package/dist/envelope.js +27 -31
- package/dist/envelope.mjs +2 -2
- package/dist/index-CEKyyazf.d.mts +104 -0
- package/dist/index-CEKyyazf.d.ts +104 -0
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +1512 -600
- package/dist/index.mjs +8 -8
- package/dist/init-7FJENUDK.mjs +407 -0
- package/dist/project-compiler-ZB4RUYVL.mjs +10 -0
- package/dist/project-decompiler-U55HQUHW.mjs +7 -0
- package/dist/pull-KOL2QAYQ.mjs +109 -0
- package/dist/seed-KOGEPGOJ.mjs +154 -0
- package/dist/server-VW6UPCHO.mjs +277 -0
- package/dist/testing/index.d.mts +8 -8
- package/dist/testing/index.d.ts +8 -8
- package/dist/testing/index.js +27 -31
- package/dist/testing/index.mjs +1 -1
- package/dist/verify-OQDEQYMS.mjs +1833 -0
- package/dist/vite/index.d.mts +1 -1
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.js +27 -31
- package/dist/vite/index.mjs +2 -2
- package/examples/authentication/main.workflow.tsx +1 -1
- package/examples/authentication/mm.config.ts +1 -1
- package/examples/authentication/pages/LoginPage.tsx +2 -2
- package/examples/authentication/pages/SignupPage.tsx +2 -2
- package/examples/counter.workflow.tsx +1 -1
- package/examples/dashboard.workflow.tsx +1 -1
- package/examples/invoice-approval/actions/invoice.server.ts +1 -1
- package/examples/invoice-approval/main.workflow.tsx +1 -1
- package/examples/invoice-approval/mm.config.ts +1 -1
- package/examples/invoice-approval/pages/InvoiceDetailPage.tsx +1 -1
- package/examples/invoice-approval/pages/InvoiceFormPage.tsx +1 -1
- package/examples/invoice-approval/pages/InvoiceListPage.tsx +1 -1
- package/examples/todo-app.workflow.tsx +1 -1
- package/examples/uber-app/actions/matching.server.ts +1 -1
- package/examples/uber-app/actions/notifications.server.ts +1 -1
- package/examples/uber-app/actions/payments.server.ts +1 -1
- package/examples/uber-app/actions/pricing.server.ts +1 -1
- package/examples/uber-app/app/admin/analytics.tsx +2 -2
- package/examples/uber-app/app/admin/fleet.tsx +2 -2
- package/examples/uber-app/app/admin/surge-pricing.tsx +2 -2
- package/examples/uber-app/app/driver/dashboard.tsx +2 -2
- package/examples/uber-app/app/driver/earnings.tsx +2 -2
- package/examples/uber-app/app/driver/navigation.tsx +2 -2
- package/examples/uber-app/app/driver/ride-acceptance.tsx +2 -2
- package/examples/uber-app/app/rider/home.tsx +2 -2
- package/examples/uber-app/app/rider/payment-methods.tsx +2 -2
- package/examples/uber-app/app/rider/ride-history.tsx +2 -2
- package/examples/uber-app/app/rider/ride-tracking.tsx +2 -2
- package/examples/uber-app/components/DriverCard.tsx +1 -1
- package/examples/uber-app/components/MapView.tsx +3 -3
- package/examples/uber-app/components/RatingStars.tsx +2 -2
- package/examples/uber-app/components/RideCard.tsx +1 -1
- package/examples/uber-app/mm.config.ts +1 -1
- package/examples/uber-app/workflows/dispute-resolution.workflow.tsx +2 -2
- package/examples/uber-app/workflows/driver-onboarding.workflow.tsx +2 -2
- package/examples/uber-app/workflows/payment-processing.workflow.tsx +2 -2
- package/examples/uber-app/workflows/ride-request.workflow.tsx +2 -2
- package/package.json +7 -14
package/dist/cli/index.mjs
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
login,
|
|
4
|
+
logout,
|
|
5
|
+
resolveToken,
|
|
6
|
+
whoami
|
|
7
|
+
} from "../chunk-J3M4GUS7.mjs";
|
|
2
8
|
import {
|
|
3
9
|
deploy
|
|
4
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-ABYPKRSB.mjs";
|
|
5
11
|
import {
|
|
6
12
|
build
|
|
7
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-VLTKQDJ3.mjs";
|
|
8
14
|
import "../chunk-5M7DKKBC.mjs";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import
|
|
11
|
-
__require
|
|
12
|
-
} from "../chunk-CIESM3BP.mjs";
|
|
15
|
+
import "../chunk-7T6Q5KAA.mjs";
|
|
16
|
+
import "../chunk-CIESM3BP.mjs";
|
|
13
17
|
|
|
14
18
|
// src/cli/test.ts
|
|
15
19
|
import { glob } from "glob";
|
|
@@ -39,8 +43,8 @@ async function test(options = {}) {
|
|
|
39
43
|
const rel = f.startsWith(srcDir + "/") ? f.slice(srcDir.length + 1) : f;
|
|
40
44
|
fileMap[rel] = readFileSync(f, "utf-8");
|
|
41
45
|
}
|
|
42
|
-
const { compileProject } = await import("../project-compiler-
|
|
43
|
-
const { decompileProjectEnhanced } = await import("../project-decompiler-
|
|
46
|
+
const { compileProject } = await import("../project-compiler-ZB4RUYVL.mjs");
|
|
47
|
+
const { decompileProjectEnhanced } = await import("../project-decompiler-U55HQUHW.mjs");
|
|
44
48
|
process.stdout.write(` Compiling project...`);
|
|
45
49
|
const t0 = performance.now();
|
|
46
50
|
let ir1;
|
|
@@ -285,155 +289,6 @@ function compareTransitions(diffs, transitions1, transitions2) {
|
|
|
285
289
|
return { transitionMatch, transitionCount };
|
|
286
290
|
}
|
|
287
291
|
|
|
288
|
-
// src/cli/auth.ts
|
|
289
|
-
import { readFileSync as readFileSync2, writeFileSync, mkdirSync, existsSync as existsSync2, unlinkSync } from "fs";
|
|
290
|
-
import { join } from "path";
|
|
291
|
-
import { homedir } from "os";
|
|
292
|
-
import { createInterface } from "readline";
|
|
293
|
-
var MMRC_DIR = join(homedir(), ".mmrc");
|
|
294
|
-
var CREDENTIALS_PATH = join(MMRC_DIR, "credentials.json");
|
|
295
|
-
function loadCredentials() {
|
|
296
|
-
if (!existsSync2(CREDENTIALS_PATH)) return {};
|
|
297
|
-
try {
|
|
298
|
-
return JSON.parse(readFileSync2(CREDENTIALS_PATH, "utf-8"));
|
|
299
|
-
} catch {
|
|
300
|
-
return {};
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
function saveCredentials(apiUrl, token) {
|
|
304
|
-
mkdirSync(MMRC_DIR, { recursive: true, mode: 448 });
|
|
305
|
-
const creds = loadCredentials();
|
|
306
|
-
creds[apiUrl] = { token, savedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
307
|
-
writeFileSync(CREDENTIALS_PATH, JSON.stringify(creds, null, 2), "utf-8");
|
|
308
|
-
try {
|
|
309
|
-
const { chmodSync } = __require("fs");
|
|
310
|
-
chmodSync(CREDENTIALS_PATH, 384);
|
|
311
|
-
} catch {
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
function removeCredentials(apiUrl) {
|
|
315
|
-
if (!existsSync2(CREDENTIALS_PATH)) return;
|
|
316
|
-
if (!apiUrl) {
|
|
317
|
-
unlinkSync(CREDENTIALS_PATH);
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
const creds = loadCredentials();
|
|
321
|
-
delete creds[apiUrl];
|
|
322
|
-
if (Object.keys(creds).length === 0) {
|
|
323
|
-
unlinkSync(CREDENTIALS_PATH);
|
|
324
|
-
} else {
|
|
325
|
-
writeFileSync(CREDENTIALS_PATH, JSON.stringify(creds, null, 2), "utf-8");
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
function resolveToken(apiUrl, explicitToken) {
|
|
329
|
-
if (explicitToken) return explicitToken;
|
|
330
|
-
const envToken = process.env.MMRC_TOKEN;
|
|
331
|
-
if (envToken) return envToken;
|
|
332
|
-
const creds = loadCredentials();
|
|
333
|
-
const entry = creds[apiUrl];
|
|
334
|
-
if (entry?.token) return entry.token;
|
|
335
|
-
return null;
|
|
336
|
-
}
|
|
337
|
-
function prompt(question, hidden = false) {
|
|
338
|
-
return new Promise((resolve2) => {
|
|
339
|
-
const rl = createInterface({
|
|
340
|
-
input: process.stdin,
|
|
341
|
-
output: process.stdout
|
|
342
|
-
});
|
|
343
|
-
if (hidden && process.stdin.isTTY) {
|
|
344
|
-
const origWrite = process.stdout.write.bind(process.stdout);
|
|
345
|
-
process.stdout.write = ((chunk, encodingOrCb, cb) => {
|
|
346
|
-
if (typeof chunk === "string" && chunk.includes(question)) {
|
|
347
|
-
return origWrite(chunk, encodingOrCb, cb);
|
|
348
|
-
}
|
|
349
|
-
if (typeof chunk === "string" && !chunk.includes("\n")) {
|
|
350
|
-
return true;
|
|
351
|
-
}
|
|
352
|
-
return origWrite(chunk, encodingOrCb, cb);
|
|
353
|
-
});
|
|
354
|
-
rl.question(question, (answer) => {
|
|
355
|
-
process.stdout.write = origWrite;
|
|
356
|
-
console.log();
|
|
357
|
-
rl.close();
|
|
358
|
-
resolve2(answer.trim());
|
|
359
|
-
});
|
|
360
|
-
} else {
|
|
361
|
-
rl.question(question, (answer) => {
|
|
362
|
-
rl.close();
|
|
363
|
-
resolve2(answer.trim());
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
async function login(apiUrl, email, password) {
|
|
369
|
-
if (!email) {
|
|
370
|
-
email = await prompt("Email: ");
|
|
371
|
-
}
|
|
372
|
-
if (!password) {
|
|
373
|
-
password = await prompt("Password: ", true);
|
|
374
|
-
}
|
|
375
|
-
if (!email || !password) {
|
|
376
|
-
throw new Error("Email and password are required");
|
|
377
|
-
}
|
|
378
|
-
console.log(`[mmrc] Logging in to ${apiUrl}...`);
|
|
379
|
-
const res = await fetch(`${apiUrl}/auth/login`, {
|
|
380
|
-
method: "POST",
|
|
381
|
-
headers: { "Content-Type": "application/json" },
|
|
382
|
-
body: JSON.stringify({ email, password })
|
|
383
|
-
});
|
|
384
|
-
if (!res.ok) {
|
|
385
|
-
const text = await res.text();
|
|
386
|
-
throw new Error(`Login failed: ${res.status} ${text}`);
|
|
387
|
-
}
|
|
388
|
-
const data = await res.json();
|
|
389
|
-
const token = data.token ?? data.access_token ?? data.accessToken;
|
|
390
|
-
if (!token) {
|
|
391
|
-
throw new Error("Login succeeded but no token in response");
|
|
392
|
-
}
|
|
393
|
-
saveCredentials(apiUrl, token);
|
|
394
|
-
const userName = data.name ?? data.user?.name ?? data.user?.email ?? email;
|
|
395
|
-
console.log(`[mmrc] Logged in as ${userName}`);
|
|
396
|
-
console.log(`[mmrc] Token saved to ${CREDENTIALS_PATH}`);
|
|
397
|
-
return token;
|
|
398
|
-
}
|
|
399
|
-
function logout(apiUrl) {
|
|
400
|
-
if (apiUrl) {
|
|
401
|
-
removeCredentials(apiUrl);
|
|
402
|
-
console.log(`[mmrc] Credentials removed for ${apiUrl}`);
|
|
403
|
-
} else {
|
|
404
|
-
removeCredentials();
|
|
405
|
-
console.log("[mmrc] All saved credentials removed");
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
async function whoami(apiUrl) {
|
|
409
|
-
const token = resolveToken(apiUrl);
|
|
410
|
-
if (!token) {
|
|
411
|
-
console.log("[mmrc] Not logged in. Run `mmrc login` to authenticate.");
|
|
412
|
-
return;
|
|
413
|
-
}
|
|
414
|
-
try {
|
|
415
|
-
const res = await fetch(`${apiUrl}/auth/me`, {
|
|
416
|
-
headers: { Authorization: `Bearer ${token}` }
|
|
417
|
-
});
|
|
418
|
-
if (!res.ok) {
|
|
419
|
-
if (res.status === 401) {
|
|
420
|
-
console.log("[mmrc] Token is expired or invalid. Run `mmrc login` to re-authenticate.");
|
|
421
|
-
return;
|
|
422
|
-
}
|
|
423
|
-
console.log(`[mmrc] Failed to fetch user info: ${res.status}`);
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
const user = await res.json();
|
|
427
|
-
console.log(`[mmrc] Logged in to ${apiUrl}`);
|
|
428
|
-
console.log(` Name: ${user.name ?? "(unknown)"}`);
|
|
429
|
-
console.log(` Email: ${user.email ?? "(unknown)"}`);
|
|
430
|
-
if (user.id) console.log(` ID: ${user.id}`);
|
|
431
|
-
if (user.role) console.log(` Role: ${user.role}`);
|
|
432
|
-
} catch (error) {
|
|
433
|
-
console.log(`[mmrc] Could not connect to ${apiUrl}: ${error.message}`);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
|
|
437
292
|
// src/cli/index.ts
|
|
438
293
|
var args = process.argv.slice(2);
|
|
439
294
|
var command = args[0];
|
|
@@ -452,11 +307,11 @@ function getPositional() {
|
|
|
452
307
|
}
|
|
453
308
|
async function loadDevConfig() {
|
|
454
309
|
try {
|
|
455
|
-
const { existsSync:
|
|
310
|
+
const { existsSync: existsSync2, readFileSync: readFileSync2 } = await import("fs");
|
|
456
311
|
const { resolve: resolve2 } = await import("path");
|
|
457
312
|
const configPath = resolve2(process.cwd(), "mm.config.ts");
|
|
458
|
-
if (!
|
|
459
|
-
const content =
|
|
313
|
+
if (!existsSync2(configPath)) return {};
|
|
314
|
+
const content = readFileSync2(configPath, "utf-8");
|
|
460
315
|
const devMatch = content.match(/dev\s*:\s*\{([^}]*)\}/s);
|
|
461
316
|
if (!devMatch) return {};
|
|
462
317
|
const block = devMatch[1];
|
|
@@ -484,7 +339,7 @@ async function main() {
|
|
|
484
339
|
const src = getFlag("--src") ?? devCfg.src;
|
|
485
340
|
const mode = getFlag("--mode") ?? devCfg.mode;
|
|
486
341
|
const seed = hasFlag("--seed") || devCfg.seed === true;
|
|
487
|
-
const apiUrl = getFlag("--api-url") ?? devCfg.apiUrl;
|
|
342
|
+
const apiUrl = hasFlag("--local") ? "local" : getFlag("--api-url") ?? devCfg.apiUrl;
|
|
488
343
|
const authToken = getFlag("--token") ?? devCfg.token;
|
|
489
344
|
const open = hasFlag("--open") || devCfg.open === true;
|
|
490
345
|
const { createDevServer } = await import("../dev-server.mjs");
|
|
@@ -555,19 +410,19 @@ async function main() {
|
|
|
555
410
|
const srcDir = src ?? ".";
|
|
556
411
|
const outDir = dir ?? "dist/workflows";
|
|
557
412
|
console.log("[mmrc] Building before deploy...\n");
|
|
558
|
-
const { existsSync:
|
|
559
|
-
const { resolve: resolve2, join
|
|
413
|
+
const { existsSync: existsSync2, readFileSync: readFileSync2, writeFileSync, mkdirSync } = await import("fs");
|
|
414
|
+
const { resolve: resolve2, join } = await import("path");
|
|
560
415
|
const { glob: glob2 } = await import("glob");
|
|
561
416
|
const configPath = resolve2(srcDir, "mm.config.ts");
|
|
562
|
-
if (
|
|
563
|
-
const { compileProject } = await import("../project-compiler-
|
|
417
|
+
if (existsSync2(configPath)) {
|
|
418
|
+
const { compileProject } = await import("../project-compiler-ZB4RUYVL.mjs");
|
|
564
419
|
const allFiles = await glob2(`${srcDir}/**/*.{ts,tsx}`, {
|
|
565
420
|
ignore: ["**/node_modules/**", "**/dist/**", "**/__tests__/**", "**/*.test.*"]
|
|
566
421
|
});
|
|
567
422
|
const fileMap = {};
|
|
568
423
|
for (const f of allFiles) {
|
|
569
424
|
const rel = f.startsWith(srcDir + "/") ? f.slice(srcDir.length + 1) : f;
|
|
570
|
-
fileMap[rel] =
|
|
425
|
+
fileMap[rel] = readFileSync2(f, "utf-8");
|
|
571
426
|
}
|
|
572
427
|
console.log(` Compiling project (${Object.keys(fileMap).length} files)...`);
|
|
573
428
|
const result = compileProject(fileMap);
|
|
@@ -580,16 +435,16 @@ async function main() {
|
|
|
580
435
|
[mmrc] Build failed with ${errors.length} errors \u2014 aborting deploy.`);
|
|
581
436
|
process.exit(1);
|
|
582
437
|
}
|
|
583
|
-
|
|
584
|
-
const irPath =
|
|
585
|
-
|
|
438
|
+
mkdirSync(outDir, { recursive: true });
|
|
439
|
+
const irPath = join(outDir, `${result.ir.slug}.workflow.json`);
|
|
440
|
+
writeFileSync(irPath, JSON.stringify(result.ir, null, 2), "utf-8");
|
|
586
441
|
console.log(` + ${result.ir.slug}.workflow.json`);
|
|
587
442
|
const seenSlugs = /* @__PURE__ */ new Set([result.ir.slug]);
|
|
588
443
|
for (const child of result.childDefinitions) {
|
|
589
444
|
if (seenSlugs.has(child.slug)) continue;
|
|
590
445
|
seenSlugs.add(child.slug);
|
|
591
|
-
const childPath =
|
|
592
|
-
|
|
446
|
+
const childPath = join(outDir, `${child.slug}.workflow.json`);
|
|
447
|
+
writeFileSync(childPath, JSON.stringify(child, null, 2), "utf-8");
|
|
593
448
|
console.log(` + ${child.slug}.workflow.json`);
|
|
594
449
|
}
|
|
595
450
|
console.log(` Compiled ${1 + result.childDefinitions.length} definitions.
|
|
@@ -623,7 +478,7 @@ async function main() {
|
|
|
623
478
|
console.error('[mmrc] Error: name is required\n Usage: mmrc init <name> [--description "..."] [--icon "..."] [--author "..."]');
|
|
624
479
|
process.exit(1);
|
|
625
480
|
}
|
|
626
|
-
const { init } = await import("../init-
|
|
481
|
+
const { init } = await import("../init-7FJENUDK.mjs");
|
|
627
482
|
await init({
|
|
628
483
|
name,
|
|
629
484
|
description: getFlag("--description"),
|
|
@@ -636,7 +491,7 @@ async function main() {
|
|
|
636
491
|
console.error("[mmrc] Error: target path is required\n Usage: mmrc verify <file-or-dir> [options]");
|
|
637
492
|
process.exit(1);
|
|
638
493
|
}
|
|
639
|
-
const { verifyCommand } = await import("../verify-
|
|
494
|
+
const { verifyCommand } = await import("../verify-OQDEQYMS.mjs");
|
|
640
495
|
const result = await verifyCommand({
|
|
641
496
|
target,
|
|
642
497
|
static: hasFlag("--static"),
|
|
@@ -663,8 +518,24 @@ async function main() {
|
|
|
663
518
|
console.error(" 3. Set MMRC_TOKEN environment variable");
|
|
664
519
|
process.exit(1);
|
|
665
520
|
}
|
|
666
|
-
const { pull } = await import("../pull-
|
|
521
|
+
const { pull } = await import("../pull-KOL2QAYQ.mjs");
|
|
667
522
|
await pull({ slug, apiUrl, token, outDir });
|
|
523
|
+
} else if (command === "seed") {
|
|
524
|
+
const apiUrl = getFlag("--api-url") ?? "http://localhost:4200/api/v1";
|
|
525
|
+
const token = resolveToken(apiUrl, getFlag("--token"));
|
|
526
|
+
const dir = getFlag("--dir");
|
|
527
|
+
const count = getFlag("--count") ? parseInt(getFlag("--count"), 10) : void 0;
|
|
528
|
+
if (!token) {
|
|
529
|
+
console.error("[mmrc] Error: No auth token found. Run `mmrc login` first.");
|
|
530
|
+
process.exit(1);
|
|
531
|
+
}
|
|
532
|
+
const { seedInstances } = await import("../seed-KOGEPGOJ.mjs");
|
|
533
|
+
const result = await seedInstances({ apiUrl, token, dir, count });
|
|
534
|
+
console.log(`
|
|
535
|
+
[mmrc] Seed complete: ${result.created} instances across ${result.definitions} definitions`);
|
|
536
|
+
if (result.errors.length > 0) {
|
|
537
|
+
console.warn(` ${result.errors.length} error(s)`);
|
|
538
|
+
}
|
|
668
539
|
} else if (command === "config") {
|
|
669
540
|
const subcommand = args[1];
|
|
670
541
|
const { getConfig, getConfigValue, setConfigValue, flattenConfig, findConfigPath, writeConfigFile } = await import("../config-PL24KEWL.mjs");
|
|
@@ -709,17 +580,44 @@ async function main() {
|
|
|
709
580
|
console.error(" Usage: mmrc config [get <key> | set <key> <value> | list]");
|
|
710
581
|
process.exit(1);
|
|
711
582
|
}
|
|
583
|
+
} else if (command === "server") {
|
|
584
|
+
const subcommand = args[1];
|
|
585
|
+
const { serverStart, serverMigrate, serverInit, serverStatus, serverConfig } = await import("../server-VW6UPCHO.mjs");
|
|
586
|
+
if (subcommand === "start") {
|
|
587
|
+
await serverStart({
|
|
588
|
+
config: getFlag("--config"),
|
|
589
|
+
port: getFlag("--port") ? parseInt(getFlag("--port"), 10) : void 0,
|
|
590
|
+
migrate: hasFlag("--migrate"),
|
|
591
|
+
binary: getFlag("--binary")
|
|
592
|
+
});
|
|
593
|
+
} else if (subcommand === "migrate") {
|
|
594
|
+
await serverMigrate({ apiUrl: getFlag("--api-url"), config: getFlag("--config") });
|
|
595
|
+
} else if (subcommand === "init") {
|
|
596
|
+
serverInit({
|
|
597
|
+
mode: getFlag("--mode"),
|
|
598
|
+
db: getFlag("--db"),
|
|
599
|
+
output: getFlag("--output")
|
|
600
|
+
});
|
|
601
|
+
} else if (subcommand === "status") {
|
|
602
|
+
await serverStatus({ apiUrl: getFlag("--api-url") });
|
|
603
|
+
} else if (subcommand === "config") {
|
|
604
|
+
serverConfig({ config: getFlag("--config") });
|
|
605
|
+
} else {
|
|
606
|
+
console.error(`[mmrc] Unknown server subcommand: ${subcommand ?? "(none)"}`);
|
|
607
|
+
console.error(" Usage: mmrc server [start|migrate|init|status|config]");
|
|
608
|
+
process.exit(1);
|
|
609
|
+
}
|
|
712
610
|
} else if (command === "version" || command === "-v" || command === "--version" || hasFlag("--version") || hasFlag("-v")) {
|
|
713
|
-
const { readFileSync:
|
|
611
|
+
const { readFileSync: readFileSync2 } = await import("fs");
|
|
714
612
|
const { resolve: resolve2, dirname } = await import("path");
|
|
715
613
|
try {
|
|
716
614
|
const pkgPath = resolve2(dirname(new URL(import.meta.url).pathname), "../../package.json");
|
|
717
|
-
const pkg = JSON.parse(
|
|
615
|
+
const pkg = JSON.parse(readFileSync2(pkgPath, "utf-8"));
|
|
718
616
|
console.log(`mmrc ${pkg.version}`);
|
|
719
617
|
} catch {
|
|
720
618
|
try {
|
|
721
619
|
const pkgPath = resolve2(__dirname, "../../package.json");
|
|
722
|
-
const pkg = JSON.parse(
|
|
620
|
+
const pkg = JSON.parse(readFileSync2(pkgPath, "utf-8"));
|
|
723
621
|
console.log(`mmrc ${pkg.version}`);
|
|
724
622
|
} catch {
|
|
725
623
|
console.log("mmrc (version unknown)");
|
|
@@ -728,10 +626,10 @@ async function main() {
|
|
|
728
626
|
} else {
|
|
729
627
|
let version = "";
|
|
730
628
|
try {
|
|
731
|
-
const { readFileSync:
|
|
629
|
+
const { readFileSync: readFileSync2 } = await import("fs");
|
|
732
630
|
const { resolve: resolve2 } = await import("path");
|
|
733
631
|
const pkgPath = resolve2(__dirname, "../../package.json");
|
|
734
|
-
const pkg = JSON.parse(
|
|
632
|
+
const pkg = JSON.parse(readFileSync2(pkgPath, "utf-8"));
|
|
735
633
|
version = ` v${pkg.version}`;
|
|
736
634
|
} catch {
|
|
737
635
|
}
|
package/dist/codemod/cli.js
CHANGED
package/dist/codemod/cli.mjs
CHANGED
package/dist/codemod/index.d.mts
CHANGED
|
@@ -105,7 +105,7 @@ declare const REVERSE_RULES: ReverseRule[];
|
|
|
105
105
|
/**
|
|
106
106
|
* Atom import source
|
|
107
107
|
*/
|
|
108
|
-
declare const ATOM_IMPORT_SOURCE = "@
|
|
108
|
+
declare const ATOM_IMPORT_SOURCE = "@mmapp/react/atoms";
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* Bidirectional React ↔ Workflow Atom Codemod
|
|
@@ -113,10 +113,10 @@ declare const ATOM_IMPORT_SOURCE = "@mindmatrix/react/atoms";
|
|
|
113
113
|
* Babel plugin entry point. Dispatches by `direction` option.
|
|
114
114
|
*
|
|
115
115
|
* Usage as Babel plugin:
|
|
116
|
-
* plugins: [['@
|
|
116
|
+
* plugins: [['@mmapp/react-compiler/codemod', { direction: 'forward' }]]
|
|
117
117
|
*
|
|
118
118
|
* Usage programmatic:
|
|
119
|
-
* import { transform } from '@
|
|
119
|
+
* import { transform } from '@mmapp/react-compiler/codemod';
|
|
120
120
|
* const result = transform(source, { direction: 'forward' });
|
|
121
121
|
*/
|
|
122
122
|
|
package/dist/codemod/index.d.ts
CHANGED
|
@@ -105,7 +105,7 @@ declare const REVERSE_RULES: ReverseRule[];
|
|
|
105
105
|
/**
|
|
106
106
|
* Atom import source
|
|
107
107
|
*/
|
|
108
|
-
declare const ATOM_IMPORT_SOURCE = "@
|
|
108
|
+
declare const ATOM_IMPORT_SOURCE = "@mmapp/react/atoms";
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* Bidirectional React ↔ Workflow Atom Codemod
|
|
@@ -113,10 +113,10 @@ declare const ATOM_IMPORT_SOURCE = "@mindmatrix/react/atoms";
|
|
|
113
113
|
* Babel plugin entry point. Dispatches by `direction` option.
|
|
114
114
|
*
|
|
115
115
|
* Usage as Babel plugin:
|
|
116
|
-
* plugins: [['@
|
|
116
|
+
* plugins: [['@mmapp/react-compiler/codemod', { direction: 'forward' }]]
|
|
117
117
|
*
|
|
118
118
|
* Usage programmatic:
|
|
119
|
-
* import { transform } from '@
|
|
119
|
+
* import { transform } from '@mmapp/react-compiler/codemod';
|
|
120
120
|
* const result = transform(source, { direction: 'forward' });
|
|
121
121
|
*/
|
|
122
122
|
|
package/dist/codemod/index.js
CHANGED
package/dist/codemod/index.mjs
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ViteDevServer } from 'vite';
|
|
2
|
+
import { IRWorkflowDefinition } from '@mmapp/player-core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* CLI Build Command — compiles workflow files to Pure Form JSON.
|
|
6
|
+
*
|
|
7
|
+
* Supports three file types:
|
|
8
|
+
* - *.workflow.tsx — React workflow components
|
|
9
|
+
* - models/*.ts — TypeScript model files
|
|
10
|
+
* - *.server.ts — Server action files
|
|
11
|
+
*
|
|
12
|
+
* Produces:
|
|
13
|
+
* - *.workflow.json — IR (Pure Form)
|
|
14
|
+
* - *.json — Engine-compatible definition
|
|
15
|
+
* - envelope.json — Source envelope with file manifest
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
interface BuildOptions {
|
|
19
|
+
src?: string;
|
|
20
|
+
outDir?: string;
|
|
21
|
+
mode?: 'strict' | 'infer';
|
|
22
|
+
/** Generate source envelope. */
|
|
23
|
+
envelope?: boolean;
|
|
24
|
+
/** Blueprint slug for envelope. */
|
|
25
|
+
slug?: string;
|
|
26
|
+
/** Blueprint version for envelope. */
|
|
27
|
+
version?: string;
|
|
28
|
+
/** Skip TypeScript type checking (not recommended). */
|
|
29
|
+
skipTypeCheck?: boolean;
|
|
30
|
+
/** Watch mode: auto-recompile on file changes. */
|
|
31
|
+
watch?: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface BuildResult {
|
|
34
|
+
compiled: number;
|
|
35
|
+
errors: number;
|
|
36
|
+
warnings: number;
|
|
37
|
+
definitions: IRWorkflowDefinition[];
|
|
38
|
+
errorDetails: {
|
|
39
|
+
file: string;
|
|
40
|
+
message: string;
|
|
41
|
+
line?: number;
|
|
42
|
+
}[];
|
|
43
|
+
}
|
|
44
|
+
declare function build(options?: BuildOptions): Promise<BuildResult>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Dev Server -- Vite dev server for MindMatrix React workflows.
|
|
48
|
+
*
|
|
49
|
+
* Design 39 Phase 2 + ISS-083 (error overlay) + ISS-084 (auto-seed).
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
interface WsClient {
|
|
53
|
+
readyState: number;
|
|
54
|
+
send(data: string): void;
|
|
55
|
+
close(): void;
|
|
56
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
57
|
+
}
|
|
58
|
+
interface DevServerOptions {
|
|
59
|
+
port?: number;
|
|
60
|
+
src?: string;
|
|
61
|
+
mode?: 'strict' | 'infer';
|
|
62
|
+
include?: string[];
|
|
63
|
+
outDir?: string;
|
|
64
|
+
seed?: boolean;
|
|
65
|
+
apiUrl?: string;
|
|
66
|
+
authToken?: string;
|
|
67
|
+
ws?: boolean;
|
|
68
|
+
open?: boolean;
|
|
69
|
+
}
|
|
70
|
+
interface DevServerInstance {
|
|
71
|
+
vite: ViteDevServer;
|
|
72
|
+
port: number;
|
|
73
|
+
clients: Set<WsClient>;
|
|
74
|
+
rebuild: () => Promise<BuildResult>;
|
|
75
|
+
close: () => Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
declare function createDevServer(options?: DevServerOptions): Promise<DevServerInstance>;
|
|
78
|
+
|
|
79
|
+
export { type BuildOptions as B, type DevServerOptions as D, type DevServerInstance as a, build as b, createDevServer as c, type BuildResult as d };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ViteDevServer } from 'vite';
|
|
2
|
+
import { IRWorkflowDefinition } from '@mmapp/player-core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* CLI Build Command — compiles workflow files to Pure Form JSON.
|
|
6
|
+
*
|
|
7
|
+
* Supports three file types:
|
|
8
|
+
* - *.workflow.tsx — React workflow components
|
|
9
|
+
* - models/*.ts — TypeScript model files
|
|
10
|
+
* - *.server.ts — Server action files
|
|
11
|
+
*
|
|
12
|
+
* Produces:
|
|
13
|
+
* - *.workflow.json — IR (Pure Form)
|
|
14
|
+
* - *.json — Engine-compatible definition
|
|
15
|
+
* - envelope.json — Source envelope with file manifest
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
interface BuildOptions {
|
|
19
|
+
src?: string;
|
|
20
|
+
outDir?: string;
|
|
21
|
+
mode?: 'strict' | 'infer';
|
|
22
|
+
/** Generate source envelope. */
|
|
23
|
+
envelope?: boolean;
|
|
24
|
+
/** Blueprint slug for envelope. */
|
|
25
|
+
slug?: string;
|
|
26
|
+
/** Blueprint version for envelope. */
|
|
27
|
+
version?: string;
|
|
28
|
+
/** Skip TypeScript type checking (not recommended). */
|
|
29
|
+
skipTypeCheck?: boolean;
|
|
30
|
+
/** Watch mode: auto-recompile on file changes. */
|
|
31
|
+
watch?: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface BuildResult {
|
|
34
|
+
compiled: number;
|
|
35
|
+
errors: number;
|
|
36
|
+
warnings: number;
|
|
37
|
+
definitions: IRWorkflowDefinition[];
|
|
38
|
+
errorDetails: {
|
|
39
|
+
file: string;
|
|
40
|
+
message: string;
|
|
41
|
+
line?: number;
|
|
42
|
+
}[];
|
|
43
|
+
}
|
|
44
|
+
declare function build(options?: BuildOptions): Promise<BuildResult>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Dev Server -- Vite dev server for MindMatrix React workflows.
|
|
48
|
+
*
|
|
49
|
+
* Design 39 Phase 2 + ISS-083 (error overlay) + ISS-084 (auto-seed).
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
interface WsClient {
|
|
53
|
+
readyState: number;
|
|
54
|
+
send(data: string): void;
|
|
55
|
+
close(): void;
|
|
56
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
57
|
+
}
|
|
58
|
+
interface DevServerOptions {
|
|
59
|
+
port?: number;
|
|
60
|
+
src?: string;
|
|
61
|
+
mode?: 'strict' | 'infer';
|
|
62
|
+
include?: string[];
|
|
63
|
+
outDir?: string;
|
|
64
|
+
seed?: boolean;
|
|
65
|
+
apiUrl?: string;
|
|
66
|
+
authToken?: string;
|
|
67
|
+
ws?: boolean;
|
|
68
|
+
open?: boolean;
|
|
69
|
+
}
|
|
70
|
+
interface DevServerInstance {
|
|
71
|
+
vite: ViteDevServer;
|
|
72
|
+
port: number;
|
|
73
|
+
clients: Set<WsClient>;
|
|
74
|
+
rebuild: () => Promise<BuildResult>;
|
|
75
|
+
close: () => Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
declare function createDevServer(options?: DevServerOptions): Promise<DevServerInstance>;
|
|
78
|
+
|
|
79
|
+
export { type BuildOptions as B, type DevServerOptions as D, type DevServerInstance as a, build as b, createDevServer as c, type BuildResult as d };
|
package/dist/dev-server.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'vite';
|
|
2
|
-
export { a as DevServerInstance, D as DevServerOptions, c as createDevServer } from './dev-server-
|
|
3
|
-
import '@
|
|
2
|
+
export { a as DevServerInstance, D as DevServerOptions, c as createDevServer } from './dev-server-CrQ041KP.mjs';
|
|
3
|
+
import '@mmapp/player-core';
|
package/dist/dev-server.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'vite';
|
|
2
|
-
export { a as DevServerInstance, D as DevServerOptions, c as createDevServer } from './dev-server-
|
|
3
|
-
import '@
|
|
2
|
+
export { a as DevServerInstance, D as DevServerOptions, c as createDevServer } from './dev-server-CrQ041KP.js';
|
|
3
|
+
import '@mmapp/player-core';
|