@timo9378/flow2code 0.1.7 → 0.1.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/compiler.js CHANGED
@@ -171,6 +171,17 @@ function validateFlowIR(ir) {
171
171
  }
172
172
  idSet.add(node.id);
173
173
  }
174
+ const edgeIdSet = /* @__PURE__ */ new Set();
175
+ for (const edge of workingIR.edges) {
176
+ if (edgeIdSet.has(edge.id)) {
177
+ errors.push({
178
+ code: "DUPLICATE_EDGE_ID",
179
+ message: `Duplicate edge ID: ${edge.id}`,
180
+ edgeId: edge.id
181
+ });
182
+ }
183
+ edgeIdSet.add(edge.id);
184
+ }
174
185
  for (const edge of workingIR.edges) {
175
186
  if (!workingNodeMap.has(edge.sourceNodeId)) {
176
187
  errors.push({
@@ -227,25 +238,32 @@ function detectCycles(nodes, edges) {
227
238
  for (const node of nodes) {
228
239
  color.set(node.id, WHITE);
229
240
  }
230
- function dfs(nodeId) {
231
- color.set(nodeId, GRAY);
232
- for (const neighbor of adjacency.get(nodeId) ?? []) {
241
+ for (const node of nodes) {
242
+ if (color.get(node.id) !== WHITE) continue;
243
+ const stack = [[node.id, 0]];
244
+ color.set(node.id, GRAY);
245
+ while (stack.length > 0) {
246
+ const top = stack[stack.length - 1];
247
+ const [currentId, idx] = top;
248
+ const neighbors = adjacency.get(currentId) ?? [];
249
+ if (idx >= neighbors.length) {
250
+ color.set(currentId, BLACK);
251
+ stack.pop();
252
+ continue;
253
+ }
254
+ top[1] = idx + 1;
255
+ const neighbor = neighbors[idx];
233
256
  if (color.get(neighbor) === GRAY) {
234
257
  errors.push({
235
258
  code: "CYCLE_DETECTED",
236
- message: `Cycle detected: node "${nodeId}" \u2192 "${neighbor}"`,
237
- nodeId
259
+ message: `Cycle detected: node "${currentId}" \u2192 "${neighbor}"`,
260
+ nodeId: currentId
238
261
  });
239
262
  } else if (color.get(neighbor) === WHITE) {
240
- dfs(neighbor);
263
+ color.set(neighbor, GRAY);
264
+ stack.push([neighbor, 0]);
241
265
  }
242
266
  }
243
- color.set(nodeId, BLACK);
244
- }
245
- for (const node of nodes) {
246
- if (color.get(node.id) === WHITE) {
247
- dfs(node.id);
248
- }
249
267
  }
250
268
  return errors;
251
269
  }
@@ -389,7 +407,7 @@ function tokenize(input) {
389
407
  return tokens;
390
408
  }
391
409
  function parseReference(ref) {
392
- const match = ref.match(/^(\$?\w+)((?:\.[\w]+|\[.+?\])*)$/);
410
+ const match = ref.match(/^(\$?[\w-]+)((?:\.[\w]+|\[.+?\])*)$/);
393
411
  if (!match) {
394
412
  const dotIndex = ref.indexOf(".");
395
413
  const bracketIndex = ref.indexOf("[");
@@ -447,10 +465,16 @@ function resolveInputRef(path, context) {
447
465
  const incoming = context.ir.edges.filter(
448
466
  (e) => e.targetNodeId === context.currentNodeId
449
467
  );
450
- const dataSource = incoming.find((e) => {
468
+ const nonTriggerIncoming = incoming.filter((e) => {
451
469
  const src = context.nodeMap.get(e.sourceNodeId);
452
470
  return src && src.category !== "trigger" /* TRIGGER */;
453
- }) || incoming[0];
471
+ });
472
+ if (nonTriggerIncoming.length > 1 && typeof console !== "undefined") {
473
+ console.warn(
474
+ `[flow2code] $input is ambiguous: node "${context.currentNodeId}" has ${nonTriggerIncoming.length} non-trigger upstream edges. Using first match "${nonTriggerIncoming[0].sourceNodeId}".`
475
+ );
476
+ }
477
+ const dataSource = nonTriggerIncoming[0] || incoming[0];
454
478
  if (dataSource) {
455
479
  const srcId = dataSource.sourceNodeId;
456
480
  if (context.blockScopedNodeIds?.has(srcId)) {
@@ -465,15 +489,21 @@ function resolveInputRef(path, context) {
465
489
  `Expression parser error: Node "${context.currentNodeId}" has no input connected`
466
490
  );
467
491
  }
492
+ var _cachedTriggerIR = null;
493
+ var _cachedTriggerId = null;
468
494
  function resolveTriggerRef(path, context) {
469
- const trigger = context.ir.nodes.find(
470
- (n) => n.category === "trigger" /* TRIGGER */
471
- );
472
- if (trigger) {
473
- if (context.symbolTable?.hasVar(trigger.id)) {
474
- return `${context.symbolTable.getVarName(trigger.id)}${path}`;
495
+ if (_cachedTriggerIR !== context.ir) {
496
+ _cachedTriggerIR = context.ir;
497
+ const trigger = context.ir.nodes.find(
498
+ (n) => n.category === "trigger" /* TRIGGER */
499
+ );
500
+ _cachedTriggerId = trigger?.id ?? null;
501
+ }
502
+ if (_cachedTriggerId) {
503
+ if (context.symbolTable?.hasVar(_cachedTriggerId)) {
504
+ return `${context.symbolTable.getVarName(_cachedTriggerId)}${path}`;
475
505
  }
476
- return `flowState['${trigger.id}']${path}`;
506
+ return `flowState['${_cachedTriggerId}']${path}`;
477
507
  }
478
508
  return "undefined";
479
509
  }
@@ -2169,13 +2199,15 @@ function sanitizeId(id) {
2169
2199
  function resolveEnvVars(url, context) {
2170
2200
  const hasEnvVar = /\$\{(\w+)\}/.test(url);
2171
2201
  if (hasEnvVar) {
2172
- return "`" + url.replace(/\$\{(\w+)\}/g, (_match, varName) => {
2202
+ const escaped = url.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
2203
+ return "`" + escaped.replace(/\$\{(\w+)\}/g, (_match, varName) => {
2173
2204
  context.envVars.add(varName);
2174
2205
  return "${process.env." + varName + "}";
2175
2206
  }) + "`";
2176
2207
  }
2177
2208
  if (url.includes("${")) {
2178
- return "`" + url + "`";
2209
+ const escaped = url.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
2210
+ return "`" + escaped + "`";
2179
2211
  }
2180
2212
  return `"${url}"`;
2181
2213
  }
@@ -2237,9 +2269,18 @@ function buildSourceMap(code, ir, filePath) {
2237
2269
  };
2238
2270
  }
2239
2271
  function traceLineToNode(sourceMap, line) {
2240
- for (const [nodeId, range] of Object.entries(sourceMap.mappings)) {
2241
- if (line >= range.startLine && line <= range.endLine) {
2242
- return { nodeId, ...range };
2272
+ const entries = Object.entries(sourceMap.mappings).map(([nodeId, range]) => ({ nodeId, ...range })).sort((a, b) => a.startLine - b.startLine);
2273
+ let lo = 0;
2274
+ let hi = entries.length - 1;
2275
+ while (lo <= hi) {
2276
+ const mid = lo + hi >>> 1;
2277
+ const e = entries[mid];
2278
+ if (line < e.startLine) {
2279
+ hi = mid - 1;
2280
+ } else if (line > e.endLine) {
2281
+ lo = mid + 1;
2282
+ } else {
2283
+ return e;
2243
2284
  }
2244
2285
  }
2245
2286
  return null;
@@ -2977,12 +3018,18 @@ function computeAuditHints(ctx) {
2977
3018
  return hints;
2978
3019
  }
2979
3020
  function isFetchCall(node) {
2980
- const text = node.getText();
2981
- return text.includes("fetch(") && (text.includes("await") || node.getKind() === SyntaxKind.AwaitExpression);
3021
+ if (node.getKind() === SyntaxKind.CallExpression) {
3022
+ const expr = node.getExpression();
3023
+ if (expr.getKind() === SyntaxKind.Identifier && expr.getText() === "fetch") return true;
3024
+ }
3025
+ if (node.getKind() === SyntaxKind.AwaitExpression) {
3026
+ return isFetchCall(node.getChildAtIndex(1) ?? node);
3027
+ }
3028
+ return node.forEachChild((child) => isFetchCall(child) || void 0) ?? false;
2982
3029
  }
2983
3030
  function hasAwaitExpression(node) {
2984
3031
  if (node.getKind() === SyntaxKind.AwaitExpression) return true;
2985
- return node.getText().startsWith("await ");
3032
+ return node.forEachChild((child) => hasAwaitExpression(child) || void 0) ?? false;
2986
3033
  }
2987
3034
  function extractAwaitedExpression(node) {
2988
3035
  const text = node.getText();
@@ -3052,7 +3099,8 @@ function inferLabel(code, varName) {
3052
3099
  return truncate2(code, 30);
3053
3100
  }
3054
3101
  function trackVariableUses(nodeId, expression, ctx) {
3055
- const identifiers = expression.match(/\b([a-zA-Z_]\w*)\b/g);
3102
+ const stripped = expression.replace(/(["'`])(?:(?!\1|\\).|\\.)*\1/g, "");
3103
+ const identifiers = stripped.match(/\b([a-zA-Z_]\w*)\b/g);
3056
3104
  if (!identifiers) return;
3057
3105
  const uses = [];
3058
3106
  const seen = /* @__PURE__ */ new Set();
@@ -3673,8 +3721,12 @@ function mergeIR(files) {
3673
3721
  }
3674
3722
  const edgesRaw = parse(files.edges);
3675
3723
  const edges = (edgesRaw ?? []).map((e) => {
3676
- const [sourceNodeId, sourcePortId] = e.source.split(":");
3677
- const [targetNodeId, targetPortId] = e.target.split(":");
3724
+ const srcIdx = e.source.indexOf(":");
3725
+ const tgtIdx = e.target.indexOf(":");
3726
+ const sourceNodeId = srcIdx > 0 ? e.source.slice(0, srcIdx) : e.source;
3727
+ const sourcePortId = srcIdx > 0 ? e.source.slice(srcIdx + 1) : "output";
3728
+ const targetNodeId = tgtIdx > 0 ? e.target.slice(0, tgtIdx) : e.target;
3729
+ const targetPortId = tgtIdx > 0 ? e.target.slice(tgtIdx + 1) : "input";
3678
3730
  return {
3679
3731
  id: e.id,
3680
3732
  sourceNodeId,
package/dist/server.js CHANGED
@@ -142,6 +142,17 @@ function validateFlowIR(ir) {
142
142
  }
143
143
  idSet.add(node.id);
144
144
  }
145
+ const edgeIdSet = /* @__PURE__ */ new Set();
146
+ for (const edge of workingIR.edges) {
147
+ if (edgeIdSet.has(edge.id)) {
148
+ errors.push({
149
+ code: "DUPLICATE_EDGE_ID",
150
+ message: `Duplicate edge ID: ${edge.id}`,
151
+ edgeId: edge.id
152
+ });
153
+ }
154
+ edgeIdSet.add(edge.id);
155
+ }
145
156
  for (const edge of workingIR.edges) {
146
157
  if (!workingNodeMap.has(edge.sourceNodeId)) {
147
158
  errors.push({
@@ -198,25 +209,32 @@ function detectCycles(nodes, edges) {
198
209
  for (const node of nodes) {
199
210
  color.set(node.id, WHITE);
200
211
  }
201
- function dfs(nodeId) {
202
- color.set(nodeId, GRAY);
203
- for (const neighbor of adjacency.get(nodeId) ?? []) {
212
+ for (const node of nodes) {
213
+ if (color.get(node.id) !== WHITE) continue;
214
+ const stack = [[node.id, 0]];
215
+ color.set(node.id, GRAY);
216
+ while (stack.length > 0) {
217
+ const top = stack[stack.length - 1];
218
+ const [currentId, idx] = top;
219
+ const neighbors = adjacency.get(currentId) ?? [];
220
+ if (idx >= neighbors.length) {
221
+ color.set(currentId, BLACK);
222
+ stack.pop();
223
+ continue;
224
+ }
225
+ top[1] = idx + 1;
226
+ const neighbor = neighbors[idx];
204
227
  if (color.get(neighbor) === GRAY) {
205
228
  errors.push({
206
229
  code: "CYCLE_DETECTED",
207
- message: `Cycle detected: node "${nodeId}" \u2192 "${neighbor}"`,
208
- nodeId
230
+ message: `Cycle detected: node "${currentId}" \u2192 "${neighbor}"`,
231
+ nodeId: currentId
209
232
  });
210
233
  } else if (color.get(neighbor) === WHITE) {
211
- dfs(neighbor);
234
+ color.set(neighbor, GRAY);
235
+ stack.push([neighbor, 0]);
212
236
  }
213
237
  }
214
- color.set(nodeId, BLACK);
215
- }
216
- for (const node of nodes) {
217
- if (color.get(node.id) === WHITE) {
218
- dfs(node.id);
219
- }
220
238
  }
221
239
  return errors;
222
240
  }
@@ -360,7 +378,7 @@ function tokenize(input) {
360
378
  return tokens;
361
379
  }
362
380
  function parseReference(ref) {
363
- const match = ref.match(/^(\$?\w+)((?:\.[\w]+|\[.+?\])*)$/);
381
+ const match = ref.match(/^(\$?[\w-]+)((?:\.[\w]+|\[.+?\])*)$/);
364
382
  if (!match) {
365
383
  const dotIndex = ref.indexOf(".");
366
384
  const bracketIndex = ref.indexOf("[");
@@ -418,10 +436,16 @@ function resolveInputRef(path, context) {
418
436
  const incoming = context.ir.edges.filter(
419
437
  (e) => e.targetNodeId === context.currentNodeId
420
438
  );
421
- const dataSource = incoming.find((e) => {
439
+ const nonTriggerIncoming = incoming.filter((e) => {
422
440
  const src = context.nodeMap.get(e.sourceNodeId);
423
441
  return src && src.category !== "trigger" /* TRIGGER */;
424
- }) || incoming[0];
442
+ });
443
+ if (nonTriggerIncoming.length > 1 && typeof console !== "undefined") {
444
+ console.warn(
445
+ `[flow2code] $input is ambiguous: node "${context.currentNodeId}" has ${nonTriggerIncoming.length} non-trigger upstream edges. Using first match "${nonTriggerIncoming[0].sourceNodeId}".`
446
+ );
447
+ }
448
+ const dataSource = nonTriggerIncoming[0] || incoming[0];
425
449
  if (dataSource) {
426
450
  const srcId = dataSource.sourceNodeId;
427
451
  if (context.blockScopedNodeIds?.has(srcId)) {
@@ -436,15 +460,21 @@ function resolveInputRef(path, context) {
436
460
  `Expression parser error: Node "${context.currentNodeId}" has no input connected`
437
461
  );
438
462
  }
463
+ var _cachedTriggerIR = null;
464
+ var _cachedTriggerId = null;
439
465
  function resolveTriggerRef(path, context) {
440
- const trigger = context.ir.nodes.find(
441
- (n) => n.category === "trigger" /* TRIGGER */
442
- );
443
- if (trigger) {
444
- if (context.symbolTable?.hasVar(trigger.id)) {
445
- return `${context.symbolTable.getVarName(trigger.id)}${path}`;
466
+ if (_cachedTriggerIR !== context.ir) {
467
+ _cachedTriggerIR = context.ir;
468
+ const trigger = context.ir.nodes.find(
469
+ (n) => n.category === "trigger" /* TRIGGER */
470
+ );
471
+ _cachedTriggerId = trigger?.id ?? null;
472
+ }
473
+ if (_cachedTriggerId) {
474
+ if (context.symbolTable?.hasVar(_cachedTriggerId)) {
475
+ return `${context.symbolTable.getVarName(_cachedTriggerId)}${path}`;
446
476
  }
447
- return `flowState['${trigger.id}']${path}`;
477
+ return `flowState['${_cachedTriggerId}']${path}`;
448
478
  }
449
479
  return "undefined";
450
480
  }
@@ -2122,13 +2152,15 @@ function sanitizeId(id) {
2122
2152
  function resolveEnvVars(url, context) {
2123
2153
  const hasEnvVar = /\$\{(\w+)\}/.test(url);
2124
2154
  if (hasEnvVar) {
2125
- return "`" + url.replace(/\$\{(\w+)\}/g, (_match, varName) => {
2155
+ const escaped = url.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
2156
+ return "`" + escaped.replace(/\$\{(\w+)\}/g, (_match, varName) => {
2126
2157
  context.envVars.add(varName);
2127
2158
  return "${process.env." + varName + "}";
2128
2159
  }) + "`";
2129
2160
  }
2130
2161
  if (url.includes("${")) {
2131
- return "`" + url + "`";
2162
+ const escaped = url.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
2163
+ return "`" + escaped + "`";
2132
2164
  }
2133
2165
  return `"${url}"`;
2134
2166
  }
@@ -2790,12 +2822,18 @@ function computeAuditHints(ctx) {
2790
2822
  return hints;
2791
2823
  }
2792
2824
  function isFetchCall(node) {
2793
- const text = node.getText();
2794
- return text.includes("fetch(") && (text.includes("await") || node.getKind() === SyntaxKind.AwaitExpression);
2825
+ if (node.getKind() === SyntaxKind.CallExpression) {
2826
+ const expr = node.getExpression();
2827
+ if (expr.getKind() === SyntaxKind.Identifier && expr.getText() === "fetch") return true;
2828
+ }
2829
+ if (node.getKind() === SyntaxKind.AwaitExpression) {
2830
+ return isFetchCall(node.getChildAtIndex(1) ?? node);
2831
+ }
2832
+ return node.forEachChild((child) => isFetchCall(child) || void 0) ?? false;
2795
2833
  }
2796
2834
  function hasAwaitExpression(node) {
2797
2835
  if (node.getKind() === SyntaxKind.AwaitExpression) return true;
2798
- return node.getText().startsWith("await ");
2836
+ return node.forEachChild((child) => hasAwaitExpression(child) || void 0) ?? false;
2799
2837
  }
2800
2838
  function extractAwaitedExpression(node) {
2801
2839
  const text = node.getText();
@@ -2865,7 +2903,8 @@ function inferLabel(code, varName) {
2865
2903
  return truncate(code, 30);
2866
2904
  }
2867
2905
  function trackVariableUses(nodeId, expression, ctx) {
2868
- const identifiers = expression.match(/\b([a-zA-Z_]\w*)\b/g);
2906
+ const stripped = expression.replace(/(["'`])(?:(?!\1|\\).|\\.)*\1/g, "");
2907
+ const identifiers = stripped.match(/\b([a-zA-Z_]\w*)\b/g);
2869
2908
  if (!identifiers) return;
2870
2909
  const uses = [];
2871
2910
  const seen = /* @__PURE__ */ new Set();
@@ -3646,6 +3685,13 @@ function handleImportOpenAPI(body) {
3646
3685
  (flow) => paths.some((p) => flow.meta.name.includes(p))
3647
3686
  );
3648
3687
  }
3688
+ if (body.filter?.tags && Array.isArray(body.filter.tags)) {
3689
+ const tags = body.filter.tags.map((t) => t.toLowerCase());
3690
+ filteredFlows = filteredFlows.filter((flow) => {
3691
+ const flowTags = flow.meta.tags ?? [];
3692
+ return flowTags.some((t) => tags.includes(t.toLowerCase()));
3693
+ });
3694
+ }
3649
3695
  return {
3650
3696
  status: 200,
3651
3697
  body: {
@@ -3964,10 +4010,14 @@ function startServer(options = {}) {
3964
4010
  const server = createServer((req, res) => {
3965
4011
  handleRequest(req, res, staticDir, projectRoot).catch((err) => {
3966
4012
  logger.error("Internal error:", err);
3967
- res.writeHead(500, { "Content-Type": "text/plain" });
3968
- res.end("Internal Server Error");
4013
+ if (!res.headersSent) {
4014
+ res.writeHead(500, { "Content-Type": "text/plain" });
4015
+ res.end("Internal Server Error");
4016
+ }
3969
4017
  });
3970
4018
  });
4019
+ server.headersTimeout = 3e4;
4020
+ server.requestTimeout = 6e4;
3971
4021
  const hasUI = existsSync2(join2(staticDir, "index.html"));
3972
4022
  server.listen(port, host, () => {
3973
4023
  const url = `http://localhost:${port}`;
package/out/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><!--4eCLtLp_IPL1tppPGnHZE--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/83ab8820627f8bfe.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b6e8711267bccbbd.js"/><script src="/_next/static/chunks/fbca595129527827.js" async=""></script><script src="/_next/static/chunks/ab8888d4b78b94be.js" async=""></script><script src="/_next/static/chunks/turbopack-576234c945ffdc44.js" async=""></script><script src="/_next/static/chunks/acf223168ac429f7.js" async=""></script><script src="/_next/static/chunks/b163b5d7cccbcf42.js" async=""></script><script src="/_next/static/chunks/6b84376656bd9887.js" async=""></script><script src="/_next/static/chunks/b112c2f519e4b429.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Flow2Code | Visual AST Compiler</title><meta name="description" content="Visual backend logic generator: compile canvas nodes directly into native TypeScript code"/><link rel="manifest" href="/site.webmanifest"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b6e8711267bccbbd.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46798,[\"/_next/static/chunks/acf223168ac429f7.js\"],\"TooltipProvider\"]\n3:I[95731,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n4:I[58298,[\"/_next/static/chunks/acf223168ac429f7.js\",\"/_next/static/chunks/b112c2f519e4b429.js\"],\"default\"]\n5:I[32294,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n6:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"ViewportBoundary\"]\nb:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"MetadataBoundary\"]\nd:I[63491,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n:HL[\"/_next/static/chunks/83ab8820627f8bfe.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"4eCLtLp-IPL1tppPGnHZE\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/83ab8820627f8bfe.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/acf223168ac429f7.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"delayDuration\":200,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$4\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/b112c2f519e4b429.js\",\"async\":true}]],\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[22192,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"IconMark\"]\n8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Flow2Code | Visual AST Compiler\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visual backend logic generator: compile canvas nodes directly into native TypeScript code\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Le\",\"7\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--Ma0MmC8j1mxpQbtLwNajF--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/83ab8820627f8bfe.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b6e8711267bccbbd.js"/><script src="/_next/static/chunks/fbca595129527827.js" async=""></script><script src="/_next/static/chunks/ab8888d4b78b94be.js" async=""></script><script src="/_next/static/chunks/turbopack-576234c945ffdc44.js" async=""></script><script src="/_next/static/chunks/acf223168ac429f7.js" async=""></script><script src="/_next/static/chunks/b163b5d7cccbcf42.js" async=""></script><script src="/_next/static/chunks/6b84376656bd9887.js" async=""></script><script src="/_next/static/chunks/b112c2f519e4b429.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Flow2Code | Visual AST Compiler</title><meta name="description" content="Visual backend logic generator: compile canvas nodes directly into native TypeScript code"/><link rel="manifest" href="/site.webmanifest"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b6e8711267bccbbd.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46798,[\"/_next/static/chunks/acf223168ac429f7.js\"],\"TooltipProvider\"]\n3:I[95731,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n4:I[58298,[\"/_next/static/chunks/acf223168ac429f7.js\",\"/_next/static/chunks/b112c2f519e4b429.js\"],\"default\"]\n5:I[32294,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n6:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"ViewportBoundary\"]\nb:I[5806,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"MetadataBoundary\"]\nd:I[63491,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"default\"]\n:HL[\"/_next/static/chunks/83ab8820627f8bfe.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Ma0MmC8j1mxpQbtLwNajF\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/83ab8820627f8bfe.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/acf223168ac429f7.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"delayDuration\":200,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$4\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/b112c2f519e4b429.js\",\"async\":true}]],\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[22192,[\"/_next/static/chunks/b163b5d7cccbcf42.js\",\"/_next/static/chunks/6b84376656bd9887.js\"],\"IconMark\"]\n8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Flow2Code | Visual AST Compiler\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visual backend logic generator: compile canvas nodes directly into native TypeScript code\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Le\",\"7\",{}]]\n"])</script></body></html>
@@ -1,10 +1,10 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[55026,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"ClientPageRoot"]
3
- 3:I[52683,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/fd3c7cf5ea219c74.js","/_next/static/chunks/2fd98ca28cbab9a6.js"],"default"]
3
+ 3:I[52683,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/58bf94a9d7047ec0.js","/_next/static/chunks/0bc0a50347ee5f3c.js"],"default"]
4
4
  6:I[5806,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
6
  :HL["/_next/static/chunks/8a5bd6fe3abc8091.css","style"]
7
- 0:{"buildId":"4eCLtLp-IPL1tppPGnHZE","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/8a5bd6fe3abc8091.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/fd3c7cf5ea219c74.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/2fd98ca28cbab9a6.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
7
+ 0:{"buildId":"Ma0MmC8j1mxpQbtLwNajF","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/8a5bd6fe3abc8091.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/58bf94a9d7047ec0.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0bc0a50347ee5f3c.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
8
8
  4:{}
9
9
  5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
10
10
  8:null
@@ -4,7 +4,7 @@
4
4
  4:I[58298,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/b112c2f519e4b429.js"],"default"]
5
5
  5:I[32294,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"default"]
6
6
  6:I[55026,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"ClientPageRoot"]
7
- 7:I[52683,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/fd3c7cf5ea219c74.js","/_next/static/chunks/2fd98ca28cbab9a6.js"],"default"]
7
+ 7:I[52683,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/58bf94a9d7047ec0.js","/_next/static/chunks/0bc0a50347ee5f3c.js"],"default"]
8
8
  a:I[5806,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"OutletBoundary"]
9
9
  b:"$Sreact.suspense"
10
10
  d:I[5806,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"ViewportBoundary"]
@@ -12,7 +12,7 @@ f:I[5806,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b843
12
12
  11:I[63491,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"default"]
13
13
  :HL["/_next/static/chunks/83ab8820627f8bfe.css","style"]
14
14
  :HL["/_next/static/chunks/8a5bd6fe3abc8091.css","style"]
15
- 0:{"P":null,"b":"4eCLtLp-IPL1tppPGnHZE","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/83ab8820627f8bfe.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/acf223168ac429f7.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased overflow-hidden","children":["$","$L2",null,{"delayDuration":200,"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/b112c2f519e4b429.js","async":true}]],"template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@8","$@9"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/8a5bd6fe3abc8091.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/fd3c7cf5ea219c74.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/2fd98ca28cbab9a6.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L10"}]}]}],null]}],false]],"m":"$undefined","G":["$11",[]],"S":true}
15
+ 0:{"P":null,"b":"Ma0MmC8j1mxpQbtLwNajF","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/83ab8820627f8bfe.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/acf223168ac429f7.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased overflow-hidden","children":["$","$L2",null,{"delayDuration":200,"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/b112c2f519e4b429.js","async":true}]],"template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@8","$@9"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/8a5bd6fe3abc8091.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/58bf94a9d7047ec0.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0bc0a50347ee5f3c.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L10"}]}]}],null]}],false]],"m":"$undefined","G":["$11",[]],"S":true}
16
16
  8:{}
17
17
  9:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
18
18
  e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -3,4 +3,4 @@
3
3
  3:I[5806,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[22192,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"IconMark"]
6
- 0:{"buildId":"4eCLtLp-IPL1tppPGnHZE","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Flow2Code | Visual AST Compiler"}],["$","meta","1",{"name":"description","content":"Visual backend logic generator: compile canvas nodes directly into native TypeScript code"}],["$","link","2",{"rel":"manifest","href":"/site.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico","sizes":"any"}],["$","link","4",{"rel":"icon","href":"/favicon-16x16.png","sizes":"16x16","type":"image/png"}],["$","link","5",{"rel":"icon","href":"/favicon-32x32.png","sizes":"32x32","type":"image/png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","7",{}]]}]}]}],null]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"Ma0MmC8j1mxpQbtLwNajF","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Flow2Code | Visual AST Compiler"}],["$","meta","1",{"name":"description","content":"Visual backend logic generator: compile canvas nodes directly into native TypeScript code"}],["$","link","2",{"rel":"manifest","href":"/site.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico","sizes":"any"}],["$","link","4",{"rel":"icon","href":"/favicon-16x16.png","sizes":"16x16","type":"image/png"}],["$","link","5",{"rel":"icon","href":"/favicon-32x32.png","sizes":"32x32","type":"image/png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","7",{}]]}]}]}],null]}],"loading":null,"isPartial":false}
@@ -4,4 +4,4 @@
4
4
  4:I[58298,["/_next/static/chunks/acf223168ac429f7.js","/_next/static/chunks/b112c2f519e4b429.js"],"default"]
5
5
  5:I[32294,["/_next/static/chunks/b163b5d7cccbcf42.js","/_next/static/chunks/6b84376656bd9887.js"],"default"]
6
6
  :HL["/_next/static/chunks/83ab8820627f8bfe.css","style"]
7
- 0:{"buildId":"4eCLtLp-IPL1tppPGnHZE","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/83ab8820627f8bfe.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/acf223168ac429f7.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased overflow-hidden","children":["$","$L2",null,{"delayDuration":200,"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/b112c2f519e4b429.js","async":true}]],"template":["$","$L5",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false}
7
+ 0:{"buildId":"Ma0MmC8j1mxpQbtLwNajF","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/83ab8820627f8bfe.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/acf223168ac429f7.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased overflow-hidden","children":["$","$L2",null,{"delayDuration":200,"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/b112c2f519e4b429.js","async":true}]],"template":["$","$L5",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false}
@@ -1,3 +1,3 @@
1
1
  :HL["/_next/static/chunks/83ab8820627f8bfe.css","style"]
2
2
  :HL["/_next/static/chunks/8a5bd6fe3abc8091.css","style"]
3
- 0:{"buildId":"4eCLtLp-IPL1tppPGnHZE","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
3
+ 0:{"buildId":"Ma0MmC8j1mxpQbtLwNajF","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}