@mmapp/react-compiler 0.1.0-alpha.4 → 0.1.0-alpha.6

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.
Files changed (103) hide show
  1. package/dist/babel/index.d.mts +2 -2
  2. package/dist/babel/index.d.ts +2 -2
  3. package/dist/babel/index.js +5 -5
  4. package/dist/babel/index.mjs +1 -1
  5. package/dist/cli/index.js +797 -1941
  6. package/dist/cli/index.mjs +179 -77
  7. package/dist/codemod/cli.js +1 -1
  8. package/dist/codemod/cli.mjs +1 -1
  9. package/dist/codemod/index.d.mts +3 -3
  10. package/dist/codemod/index.d.ts +3 -3
  11. package/dist/codemod/index.js +1 -1
  12. package/dist/codemod/index.mjs +1 -1
  13. package/dist/dev-server.d.mts +2 -2
  14. package/dist/dev-server.d.ts +2 -2
  15. package/dist/dev-server.js +86 -1218
  16. package/dist/dev-server.mjs +4 -4
  17. package/dist/envelope.d.mts +2 -2
  18. package/dist/envelope.d.ts +2 -2
  19. package/dist/envelope.js +5 -5
  20. package/dist/envelope.mjs +2 -2
  21. package/dist/index.d.mts +8 -8
  22. package/dist/index.d.ts +8 -8
  23. package/dist/index.js +342 -1266
  24. package/dist/index.mjs +8 -8
  25. package/dist/testing/index.d.mts +8 -8
  26. package/dist/testing/index.d.ts +8 -8
  27. package/dist/testing/index.js +5 -5
  28. package/dist/testing/index.mjs +1 -1
  29. package/dist/vite/index.d.mts +1 -1
  30. package/dist/vite/index.d.ts +1 -1
  31. package/dist/vite/index.js +5 -5
  32. package/dist/vite/index.mjs +2 -2
  33. package/examples/authentication/main.workflow.tsx +1 -1
  34. package/examples/authentication/mm.config.ts +1 -1
  35. package/examples/authentication/pages/LoginPage.tsx +2 -2
  36. package/examples/authentication/pages/SignupPage.tsx +2 -2
  37. package/examples/counter.workflow.tsx +1 -1
  38. package/examples/dashboard.workflow.tsx +1 -1
  39. package/examples/invoice-approval/actions/invoice.server.ts +1 -1
  40. package/examples/invoice-approval/main.workflow.tsx +1 -1
  41. package/examples/invoice-approval/mm.config.ts +1 -1
  42. package/examples/invoice-approval/pages/InvoiceDetailPage.tsx +1 -1
  43. package/examples/invoice-approval/pages/InvoiceFormPage.tsx +1 -1
  44. package/examples/invoice-approval/pages/InvoiceListPage.tsx +1 -1
  45. package/examples/todo-app.workflow.tsx +1 -1
  46. package/examples/uber-app/actions/matching.server.ts +1 -1
  47. package/examples/uber-app/actions/notifications.server.ts +1 -1
  48. package/examples/uber-app/actions/payments.server.ts +1 -1
  49. package/examples/uber-app/actions/pricing.server.ts +1 -1
  50. package/examples/uber-app/app/admin/analytics.tsx +2 -2
  51. package/examples/uber-app/app/admin/fleet.tsx +2 -2
  52. package/examples/uber-app/app/admin/surge-pricing.tsx +2 -2
  53. package/examples/uber-app/app/driver/dashboard.tsx +2 -2
  54. package/examples/uber-app/app/driver/earnings.tsx +2 -2
  55. package/examples/uber-app/app/driver/navigation.tsx +2 -2
  56. package/examples/uber-app/app/driver/ride-acceptance.tsx +2 -2
  57. package/examples/uber-app/app/rider/home.tsx +2 -2
  58. package/examples/uber-app/app/rider/payment-methods.tsx +2 -2
  59. package/examples/uber-app/app/rider/ride-history.tsx +2 -2
  60. package/examples/uber-app/app/rider/ride-tracking.tsx +2 -2
  61. package/examples/uber-app/components/DriverCard.tsx +1 -1
  62. package/examples/uber-app/components/MapView.tsx +3 -3
  63. package/examples/uber-app/components/RatingStars.tsx +2 -2
  64. package/examples/uber-app/components/RideCard.tsx +1 -1
  65. package/examples/uber-app/mm.config.ts +1 -1
  66. package/examples/uber-app/workflows/dispute-resolution.workflow.tsx +2 -2
  67. package/examples/uber-app/workflows/driver-onboarding.workflow.tsx +2 -2
  68. package/examples/uber-app/workflows/payment-processing.workflow.tsx +2 -2
  69. package/examples/uber-app/workflows/ride-request.workflow.tsx +2 -2
  70. package/package.json +13 -9
  71. package/dist/auth-3UK75242.mjs +0 -17
  72. package/dist/chunk-5FTDWKHH.mjs +0 -244
  73. package/dist/chunk-7JRAEFRB.mjs +0 -7510
  74. package/dist/chunk-7T6Q5KAA.mjs +0 -7506
  75. package/dist/chunk-ABYPKRSB.mjs +0 -215
  76. package/dist/chunk-BZEXUPDH.mjs +0 -175
  77. package/dist/chunk-HRYR54PT.mjs +0 -175
  78. package/dist/chunk-J3M4GUS7.mjs +0 -161
  79. package/dist/chunk-JRGFBWTN.mjs +0 -2918
  80. package/dist/chunk-O4AUS7EU.mjs +0 -148
  81. package/dist/chunk-R2DD5GTY.mjs +0 -186
  82. package/dist/chunk-UDDTWG5J.mjs +0 -734
  83. package/dist/chunk-VLTKQDJ3.mjs +0 -244
  84. package/dist/chunk-WVYY32LD.mjs +0 -939
  85. package/dist/chunk-XDVM4YHX.mjs +0 -3450
  86. package/dist/chunk-Z2G5RZ4H.mjs +0 -186
  87. package/dist/chunk-ZE3KCHBM.mjs +0 -2918
  88. package/dist/deploy-YAJGW6II.mjs +0 -9
  89. package/dist/dev-server-CrQ041KP.d.mts +0 -79
  90. package/dist/dev-server-CrQ041KP.d.ts +0 -79
  91. package/dist/envelope-ChEkuHij.d.mts +0 -265
  92. package/dist/envelope-ChEkuHij.d.ts +0 -265
  93. package/dist/index-CEKyyazf.d.mts +0 -104
  94. package/dist/index-CEKyyazf.d.ts +0 -104
  95. package/dist/init-7FJENUDK.mjs +0 -407
  96. package/dist/project-compiler-NNK32MPG.mjs +0 -10
  97. package/dist/project-compiler-ZB4RUYVL.mjs +0 -10
  98. package/dist/project-decompiler-U55HQUHW.mjs +0 -7
  99. package/dist/pull-KOL2QAYQ.mjs +0 -109
  100. package/dist/seed-KOGEPGOJ.mjs +0 -154
  101. package/dist/server-VW6UPCHO.mjs +0 -277
  102. package/dist/verify-BYHUKARQ.mjs +0 -1833
  103. package/dist/verify-OQDEQYMS.mjs +0 -1833
@@ -1,148 +0,0 @@
1
- import {
2
- mindmatrixReact
3
- } from "./chunk-HRYR54PT.mjs";
4
- import {
5
- build
6
- } from "./chunk-5FTDWKHH.mjs";
7
-
8
- // src/dev-server.ts
9
- async function createDevServer(options = {}) {
10
- const {
11
- port = 5199,
12
- src = "src/workflows",
13
- mode = "infer",
14
- include = ["**/*.workflow.tsx"],
15
- outDir = "dist/workflows",
16
- seed = false,
17
- apiUrl = "http://localhost:4200/api/v1",
18
- authToken = process.env.MINDMATRIX_TOKEN,
19
- ws: enableWs = true,
20
- open = false
21
- } = options;
22
- const clients = /* @__PURE__ */ new Set();
23
- const pluginOptions = {
24
- mode,
25
- include,
26
- outDir,
27
- seedOnCompile: seed,
28
- apiUrl,
29
- authToken
30
- };
31
- const notifyPlugin = {
32
- name: "mindmatrix-dev-notify",
33
- enforce: "post",
34
- handleHotUpdate(ctx) {
35
- const isWorkflow = include.some((pattern) => {
36
- const regex = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*/g, "<<GLOBSTAR>>").replace(/\*/g, "[^/]*").replace(/<<GLOBSTAR>>/g, ".*").replace(/\?/g, ".");
37
- return new RegExp(regex).test(ctx.file);
38
- });
39
- if (!isWorkflow) return;
40
- const message = JSON.stringify({
41
- type: "workflow:compiled",
42
- file: ctx.file,
43
- timestamp: ctx.timestamp
44
- });
45
- for (const client of clients) {
46
- try {
47
- if (client.readyState === 1) {
48
- client.send(message);
49
- }
50
- } catch {
51
- clients.delete(client);
52
- }
53
- }
54
- console.log(`[mm-dev] Compiled ${ctx.file.split("/").pop()} \u2014 notified ${clients.size} client(s)`);
55
- }
56
- };
57
- const viteConfig = {
58
- root: process.cwd(),
59
- server: {
60
- port,
61
- open,
62
- host: true
63
- },
64
- plugins: [
65
- mindmatrixReact(pluginOptions),
66
- notifyPlugin
67
- ],
68
- logLevel: "info"
69
- };
70
- const { createServer } = await import("vite");
71
- const vite = await createServer(viteConfig);
72
- await vite.listen();
73
- const resolvedPort = vite.config.server.port ?? port;
74
- if (enableWs && vite.httpServer) {
75
- try {
76
- const wsModule = await Function('return import("ws")')();
77
- const WebSocketServer = wsModule.WebSocketServer ?? wsModule.default?.WebSocketServer;
78
- if (WebSocketServer) {
79
- const wss = new WebSocketServer({
80
- server: vite.httpServer,
81
- path: "/__mm_dev"
82
- });
83
- wss.on("connection", (socket) => {
84
- clients.add(socket);
85
- console.log(`[mm-dev] Editor connected (${clients.size} total)`);
86
- socket.on("close", () => {
87
- clients.delete(socket);
88
- console.log(`[mm-dev] Editor disconnected (${clients.size} total)`);
89
- });
90
- socket.send(JSON.stringify({
91
- type: "mm:connected",
92
- version: "0.1.0",
93
- capabilities: ["compile", "seed", "notify"]
94
- }));
95
- });
96
- }
97
- } catch {
98
- console.warn("[mm-dev] ws package not available \u2014 WebSocket notifications disabled");
99
- }
100
- }
101
- console.log(`
102
- [mm-dev] MindMatrix Dev Server running`);
103
- console.log(` Local: http://localhost:${resolvedPort}`);
104
- console.log(` WebSocket: ws://localhost:${resolvedPort}/__mm_dev`);
105
- console.log(` Watching: ${src} (${include.join(", ")})`);
106
- if (seed) {
107
- console.log(` Seeding: ${apiUrl}`);
108
- }
109
- console.log();
110
- return {
111
- vite,
112
- port: resolvedPort,
113
- clients,
114
- async rebuild() {
115
- console.log("[mm-dev] Full rebuild triggered...");
116
- const result = await build({ src, outDir, mode });
117
- const message = JSON.stringify({
118
- type: "workflow:rebuild",
119
- compiled: result.compiled,
120
- errors: result.errors,
121
- timestamp: Date.now()
122
- });
123
- for (const client of clients) {
124
- try {
125
- if (client.readyState === 1) client.send(message);
126
- } catch {
127
- clients.delete(client);
128
- }
129
- }
130
- return result;
131
- },
132
- async close() {
133
- for (const client of clients) {
134
- try {
135
- client.close();
136
- } catch {
137
- }
138
- }
139
- clients.clear();
140
- await vite.close();
141
- console.log("[mm-dev] Server stopped");
142
- }
143
- };
144
- }
145
-
146
- export {
147
- createDevServer
148
- };
@@ -1,186 +0,0 @@
1
- import {
2
- createSourceEnvelope,
3
- generateFsTree
4
- } from "./chunk-5M7DKKBC.mjs";
5
- import {
6
- babelPlugin
7
- } from "./chunk-7T6Q5KAA.mjs";
8
-
9
- // src/envelope.ts
10
- import { createHash } from "crypto";
11
- import { readFileSync } from "fs";
12
- import { resolve, relative, basename } from "path";
13
- import { glob } from "glob";
14
- import { transformSync } from "@babel/core";
15
- async function buildEnvelope(projectDir, options = {}) {
16
- const root = resolve(projectDir);
17
- const slug = options.slug ?? basename(root);
18
- const version = options.version ?? "0.1.0";
19
- const mode = options.mode ?? "infer";
20
- const patterns = options.include ?? [
21
- `${root}/**/*.workflow.{tsx,ts,jsx,js}`,
22
- `${root}/**/models/**/*.{ts,tsx}`,
23
- `${root}/**/*.server.{ts,tsx,js,jsx}`
24
- ];
25
- const discoveredFiles = [];
26
- for (const pattern of patterns) {
27
- const matches = await glob(pattern, { absolute: true });
28
- discoveredFiles.push(...matches);
29
- }
30
- const uniqueFiles = [...new Set(discoveredFiles)];
31
- const allSourceFiles = await glob(`${root}/**/*.{ts,tsx,js,jsx,css,json}`, {
32
- absolute: true,
33
- ignore: ["**/node_modules/**", "**/dist/**", "**/.git/**"]
34
- });
35
- const fsTree = generateFsTree(allSourceFiles, root);
36
- const definitions = [];
37
- const envelopeFiles = [];
38
- const errors = [];
39
- const sourceBindings = [];
40
- for (const file of uniqueFiles) {
41
- const relativePath = relative(root, file);
42
- let fileContent;
43
- try {
44
- fileContent = readFileSync(file);
45
- } catch {
46
- errors.push({ file: relativePath, message: "Could not read file" });
47
- continue;
48
- }
49
- const fileHash = createHash("sha256").update(fileContent).digest("hex");
50
- const code = fileContent.toString("utf-8");
51
- try {
52
- const hasTsx = /\.(tsx|jsx)$/.test(file);
53
- const parserPlugins = ["typescript"];
54
- if (hasTsx) parserPlugins.push("jsx");
55
- const result = transformSync(code, {
56
- filename: file,
57
- plugins: [[babelPlugin, { mode }]],
58
- parserOpts: { plugins: parserPlugins, attachComment: true },
59
- sourceMaps: true
60
- });
61
- const ir = result?.metadata?.mindmatrixIR;
62
- if (ir) {
63
- definitions.push(ir);
64
- const bindings = extractSourceBindings(ir, relativePath);
65
- sourceBindings.push(...bindings);
66
- const irErrors = ir.metadata?.errors;
67
- if (irErrors?.length) {
68
- for (const e of irErrors) {
69
- errors.push({ file: relativePath, message: e.message, line: e.line });
70
- }
71
- }
72
- envelopeFiles.push({
73
- path: relativePath,
74
- hash: fileHash,
75
- size: fileContent.length,
76
- slug: ir.slug,
77
- compiled: true
78
- });
79
- } else {
80
- envelopeFiles.push({
81
- path: relativePath,
82
- hash: fileHash,
83
- size: fileContent.length,
84
- compiled: false
85
- });
86
- }
87
- } catch (error) {
88
- const msg = error instanceof Error ? error.message : String(error);
89
- errors.push({ file: relativePath, message: msg });
90
- envelopeFiles.push({
91
- path: relativePath,
92
- hash: fileHash,
93
- size: fileContent.length,
94
- compiled: false
95
- });
96
- }
97
- }
98
- const envelope = createSourceEnvelope({
99
- blueprintSlug: slug,
100
- blueprintVersion: version,
101
- definitions,
102
- fsTree,
103
- sourceBindings,
104
- environment: options.environment,
105
- mode
106
- });
107
- const envelopeJson = JSON.stringify(envelope);
108
- const manifestHash = createHash("sha256").update(envelopeJson).digest("hex");
109
- const manifest = {
110
- hash: manifestHash,
111
- files: envelopeFiles,
112
- version,
113
- timestamp: envelope.createdAt,
114
- definitionCount: definitions.length,
115
- errorCount: errors.length
116
- };
117
- return {
118
- envelope,
119
- manifest,
120
- files: envelopeFiles,
121
- definitions,
122
- errors
123
- };
124
- }
125
- function extractSourceBindings(ir, filePath) {
126
- const bindings = [];
127
- const slug = ir.slug ?? "";
128
- for (const field of ir.fields) {
129
- const source = field.__source;
130
- bindings.push({
131
- kind: "field",
132
- name: field.name,
133
- workflowSlug: slug,
134
- file: filePath,
135
- startLine: source?.line ?? 0,
136
- startColumn: source?.column ?? 0,
137
- endLine: source?.endLine,
138
- endColumn: source?.endColumn
139
- });
140
- }
141
- for (const state of ir.states) {
142
- const source = state.__source;
143
- bindings.push({
144
- kind: "state",
145
- name: state.name,
146
- workflowSlug: slug,
147
- file: filePath,
148
- startLine: source?.line ?? 0,
149
- startColumn: source?.column ?? 0,
150
- endLine: source?.endLine,
151
- endColumn: source?.endColumn
152
- });
153
- }
154
- for (const transition of ir.transitions) {
155
- const source = transition.__source;
156
- bindings.push({
157
- kind: "transition",
158
- name: transition.name,
159
- workflowSlug: slug,
160
- file: filePath,
161
- startLine: source?.line ?? 0,
162
- startColumn: source?.column ?? 0,
163
- endLine: source?.endLine,
164
- endColumn: source?.endColumn
165
- });
166
- }
167
- if (ir.extensions) {
168
- for (const [tag, islands] of Object.entries(ir.extensions)) {
169
- for (const island of islands) {
170
- bindings.push({
171
- kind: "grammar-island",
172
- name: `${tag}:${island.contextTag}`,
173
- workflowSlug: slug,
174
- file: filePath,
175
- startLine: island.__source?.line ?? 0,
176
- startColumn: island.__source?.column ?? 0
177
- });
178
- }
179
- }
180
- }
181
- return bindings;
182
- }
183
-
184
- export {
185
- buildEnvelope
186
- };