@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/CHANGELOG.md +43 -0
- package/dist/cli.js +107 -36
- package/dist/compiler.cjs +85 -33
- package/dist/compiler.js +85 -33
- package/dist/server.js +80 -30
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +2 -2
- package/out/__next._full.txt +2 -2
- package/out/__next._head.txt +1 -1
- package/out/__next._index.txt +1 -1
- package/out/__next._tree.txt +1 -1
- package/out/_next/static/chunks/{2fd98ca28cbab9a6.js → 0bc0a50347ee5f3c.js} +14 -12
- package/out/_next/static/chunks/{fd3c7cf5ea219c74.js → 58bf94a9d7047ec0.js} +1 -1
- package/out/_not-found/__next._full.txt +1 -1
- package/out/_not-found/__next._head.txt +1 -1
- package/out/_not-found/__next._index.txt +1 -1
- package/out/_not-found/__next._not-found/__PAGE__.txt +1 -1
- package/out/_not-found/__next._not-found.txt +1 -1
- package/out/_not-found/__next._tree.txt +1 -1
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +1 -1
- package/out/index.html +2 -2
- package/out/index.txt +2 -2
- package/package.json +1 -1
- /package/out/_next/static/{4eCLtLp-IPL1tppPGnHZE → Ma0MmC8j1mxpQbtLwNajF}/_buildManifest.js +0 -0
- /package/out/_next/static/{4eCLtLp-IPL1tppPGnHZE → Ma0MmC8j1mxpQbtLwNajF}/_clientMiddlewareManifest.json +0 -0
- /package/out/_next/static/{4eCLtLp-IPL1tppPGnHZE → Ma0MmC8j1mxpQbtLwNajF}/_ssgManifest.js +0 -0
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
|
-
|
|
231
|
-
color.
|
|
232
|
-
|
|
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 "${
|
|
237
|
-
nodeId
|
|
259
|
+
message: `Cycle detected: node "${currentId}" \u2192 "${neighbor}"`,
|
|
260
|
+
nodeId: currentId
|
|
238
261
|
});
|
|
239
262
|
} else if (color.get(neighbor) === WHITE) {
|
|
240
|
-
|
|
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(/^(
|
|
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
|
|
468
|
+
const nonTriggerIncoming = incoming.filter((e) => {
|
|
451
469
|
const src = context.nodeMap.get(e.sourceNodeId);
|
|
452
470
|
return src && src.category !== "trigger" /* TRIGGER */;
|
|
453
|
-
})
|
|
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
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
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['${
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
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
|
-
|
|
2981
|
-
|
|
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.
|
|
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
|
|
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
|
|
3677
|
-
const
|
|
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
|
-
|
|
202
|
-
color.
|
|
203
|
-
|
|
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 "${
|
|
208
|
-
nodeId
|
|
230
|
+
message: `Cycle detected: node "${currentId}" \u2192 "${neighbor}"`,
|
|
231
|
+
nodeId: currentId
|
|
209
232
|
});
|
|
210
233
|
} else if (color.get(neighbor) === WHITE) {
|
|
211
|
-
|
|
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(/^(
|
|
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
|
|
439
|
+
const nonTriggerIncoming = incoming.filter((e) => {
|
|
422
440
|
const src = context.nodeMap.get(e.sourceNodeId);
|
|
423
441
|
return src && src.category !== "trigger" /* TRIGGER */;
|
|
424
|
-
})
|
|
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
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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['${
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2794
|
-
|
|
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.
|
|
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
|
|
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.
|
|
3968
|
-
|
|
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><!--
|
|
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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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>
|
package/out/__next.__PAGE__.txt
CHANGED
|
@@ -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/
|
|
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":"
|
|
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
|
package/out/__next._full.txt
CHANGED
|
@@ -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/
|
|
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":"
|
|
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"}]]
|
package/out/__next._head.txt
CHANGED
|
@@ -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":"
|
|
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}
|
package/out/__next._index.txt
CHANGED
|
@@ -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":"
|
|
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}
|
package/out/__next._tree.txt
CHANGED
|
@@ -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":"
|
|
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}
|