@code0-tech/triangulum 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,101 +1,101 @@
1
- import y, { flattenDiagnosticMessageText as Z } from "typescript";
2
- function A() {
3
- return A = Object.assign ? Object.assign.bind() : function(e) {
4
- for (var t = 1; t < arguments.length; t++) {
5
- var n = arguments[t];
6
- for (var r in n) ({}).hasOwnProperty.call(n, r) && (e[r] = n[r]);
1
+ import m, { flattenDiagnosticMessageText as Z } from "typescript";
2
+ function R() {
3
+ return R = Object.assign ? Object.assign.bind() : function(t) {
4
+ for (var n = 1; n < arguments.length; n++) {
5
+ var i = arguments[n];
6
+ for (var r in i) ({}).hasOwnProperty.call(i, r) && (t[r] = i[r]);
7
7
  }
8
- return e;
9
- }, A.apply(null, arguments);
8
+ return t;
9
+ }, R.apply(null, arguments);
10
10
  }
11
- var W = !1;
11
+ var K = !1;
12
12
  try {
13
- W = typeof localStorage < "u";
13
+ K = typeof localStorage < "u";
14
14
  } catch {
15
15
  }
16
- var X = typeof process < "u", ee = W && typeof localStorage.getItem == "function" && /* @__PURE__ */ localStorage.getItem("DEBUG") || X && process.env.DEBUG, J = ee ? console.log : function(e) {
16
+ var X = typeof process < "u", ee = K && typeof localStorage.getItem == "function" && /* @__PURE__ */ localStorage.getItem("DEBUG") || X && process.env.DEBUG, W = ee ? console.log : function(t) {
17
17
  return "";
18
18
  };
19
- function te(e, t, n, r, o) {
19
+ function te(t, n, i, r, g) {
20
20
  r === void 0 && (r = {});
21
- var s = A({}, G(n), r), c = re(e, t, s, n, o), a = c.languageServiceHost, u = c.updateFile, p = c.deleteFile, l = n.createLanguageService(a), h = l.getCompilerOptionsDiagnostics();
22
- if (h.length) {
23
- var i = Y(e, r, n);
24
- throw new Error(n.formatDiagnostics(h, i.compilerHost));
21
+ var l = R({}, Y(i), r), p = re(t, n, l, i, g), u = p.languageServiceHost, c = p.updateFile, d = p.deleteFile, a = i.createLanguageService(u), F = a.getCompilerOptionsDiagnostics();
22
+ if (F.length) {
23
+ var s = G(t, r, i);
24
+ throw new Error(i.formatDiagnostics(F, s.compilerHost));
25
25
  }
26
26
  return {
27
27
  // @ts-ignore
28
28
  name: "vfs",
29
- sys: e,
30
- languageService: l,
31
- getSourceFile: function(v) {
32
- var d;
33
- return (d = l.getProgram()) == null ? void 0 : d.getSourceFile(v);
29
+ sys: t,
30
+ languageService: a,
31
+ getSourceFile: function(e) {
32
+ var o;
33
+ return (o = a.getProgram()) == null ? void 0 : o.getSourceFile(e);
34
34
  },
35
- createFile: function(v, d) {
36
- u(n.createSourceFile(v, d, s.target, !1));
35
+ createFile: function(e, o) {
36
+ c(i.createSourceFile(e, o, l.target, !1));
37
37
  },
38
- updateFile: function(v, d, T) {
39
- var g = l.getProgram().getSourceFile(v);
40
- if (!g)
41
- throw new Error("Did not find a source file for " + v);
42
- var S = g.text, m = T ?? n.createTextSpan(0, S.length), $ = S.slice(0, m.start) + d + S.slice(m.start + m.length), F = n.updateSourceFile(g, $, {
43
- span: m,
44
- newLength: d.length
38
+ updateFile: function(e, o, f) {
39
+ var v = a.getProgram().getSourceFile(e);
40
+ if (!v)
41
+ throw new Error("Did not find a source file for " + e);
42
+ var T = v.text, S = f ?? i.createTextSpan(0, T.length), C = T.slice(0, S.start) + o + T.slice(S.start + S.length), w = i.updateSourceFile(v, C, {
43
+ span: S,
44
+ newLength: o.length
45
45
  });
46
- u(F);
46
+ c(w);
47
47
  },
48
- deleteFile: function(v) {
49
- var d = l.getProgram().getSourceFile(v);
50
- d && p(d);
48
+ deleteFile: function(e) {
49
+ var o = a.getProgram().getSourceFile(e);
50
+ o && d(o);
51
51
  }
52
52
  };
53
53
  }
54
- function R(e) {
55
- throw new Error("Method '" + e + "' is not implemented.");
54
+ function I(t) {
55
+ throw new Error("Method '" + t + "' is not implemented.");
56
56
  }
57
- function w(e, t) {
57
+ function k(t, n) {
58
58
  return function() {
59
- for (var n = arguments.length, r = new Array(n), o = 0; o < n; o++)
60
- r[o] = arguments[o];
61
- var s = t.apply(void 0, r), c = typeof s == "string" ? s.slice(0, 80) + "..." : s;
62
- return J.apply(void 0, ["> " + e].concat(r)), J("< " + c), s;
59
+ for (var i = arguments.length, r = new Array(i), g = 0; g < i; g++)
60
+ r[g] = arguments[g];
61
+ var l = n.apply(void 0, r), p = typeof l == "string" ? l.slice(0, 80) + "..." : l;
62
+ return W.apply(void 0, ["> " + t].concat(r)), W("< " + p), l;
63
63
  };
64
64
  }
65
- var G = function(t) {
66
- return A({}, t.getDefaultCompilerOptions(), {
67
- jsx: t.JsxEmit.React,
65
+ var Y = function(n) {
66
+ return R({}, n.getDefaultCompilerOptions(), {
67
+ jsx: n.JsxEmit.React,
68
68
  strict: !0,
69
69
  esModuleInterop: !0,
70
- module: t.ModuleKind.ESNext,
70
+ module: n.ModuleKind.ESNext,
71
71
  suppressOutputPathCheck: !0,
72
72
  skipLibCheck: !0,
73
73
  skipDefaultLibCheck: !0
74
- }, t.versionMajorMinor && Number(t.versionMajorMinor.split(".")[0]) >= 6 ? {
74
+ }, n.versionMajorMinor && Number(n.versionMajorMinor.split(".")[0]) >= 6 ? {
75
75
  ignoreDeprecations: "6.0"
76
76
  } : {
77
- moduleResolution: t.ModuleResolutionKind.NodeJs
77
+ moduleResolution: n.ModuleResolutionKind.NodeJs
78
78
  });
79
- }, K = function(t) {
80
- return t.replace("/", "/lib.").toLowerCase();
79
+ }, J = function(n) {
80
+ return n.replace("/", "/lib.").toLowerCase();
81
81
  };
82
- function ne(e) {
82
+ function ne(t) {
83
83
  return {
84
84
  args: [],
85
85
  createDirectory: function() {
86
- return R("createDirectory");
86
+ return I("createDirectory");
87
87
  },
88
88
  // TODO: could make a real file tree
89
- directoryExists: w("directoryExists", function(t) {
90
- return Array.from(e.keys()).some(function(n) {
91
- return n.startsWith(t);
89
+ directoryExists: k("directoryExists", function(n) {
90
+ return Array.from(t.keys()).some(function(i) {
91
+ return i.startsWith(n);
92
92
  });
93
93
  }),
94
94
  exit: function() {
95
- return R("exit");
95
+ return I("exit");
96
96
  },
97
- fileExists: w("fileExists", function(t) {
98
- return e.has(t) || e.has(K(t));
97
+ fileExists: k("fileExists", function(n) {
98
+ return t.has(n) || t.has(J(n));
99
99
  }),
100
100
  getCurrentDirectory: function() {
101
101
  return "/";
@@ -104,77 +104,77 @@ function ne(e) {
104
104
  return [];
105
105
  },
106
106
  getExecutingFilePath: function() {
107
- return R("getExecutingFilePath");
107
+ return I("getExecutingFilePath");
108
108
  },
109
- readDirectory: w("readDirectory", function(t) {
110
- return t === "/" ? Array.from(e.keys()) : [];
109
+ readDirectory: k("readDirectory", function(n) {
110
+ return n === "/" ? Array.from(t.keys()) : [];
111
111
  }),
112
- readFile: w("readFile", function(t) {
113
- var n;
114
- return (n = e.get(t)) != null ? n : e.get(K(t));
112
+ readFile: k("readFile", function(n) {
113
+ var i;
114
+ return (i = t.get(n)) != null ? i : t.get(J(n));
115
115
  }),
116
- resolvePath: function(n) {
117
- return n;
116
+ resolvePath: function(i) {
117
+ return i;
118
118
  },
119
119
  newLine: `
120
120
  `,
121
121
  useCaseSensitiveFileNames: !0,
122
122
  write: function() {
123
- return R("write");
123
+ return I("write");
124
124
  },
125
- writeFile: function(n, r) {
126
- e.set(n, r);
125
+ writeFile: function(i, r) {
126
+ t.set(i, r);
127
127
  },
128
- deleteFile: function(n) {
129
- e.delete(n);
128
+ deleteFile: function(i) {
129
+ t.delete(i);
130
130
  }
131
131
  };
132
132
  }
133
- function Y(e, t, n) {
134
- var r = /* @__PURE__ */ new Map(), o = function(a) {
135
- return r.set(a.fileName, a), a;
136
- }, s = {
137
- compilerHost: A({}, e, {
138
- getCanonicalFileName: function(a) {
139
- return a;
133
+ function G(t, n, i) {
134
+ var r = /* @__PURE__ */ new Map(), g = function(u) {
135
+ return r.set(u.fileName, u), u;
136
+ }, l = {
137
+ compilerHost: R({}, t, {
138
+ getCanonicalFileName: function(u) {
139
+ return u;
140
140
  },
141
141
  getDefaultLibFileName: function() {
142
- return "/" + n.getDefaultLibFileName(t);
142
+ return "/" + i.getDefaultLibFileName(n);
143
143
  },
144
144
  // '/lib.d.ts',
145
145
  // getDefaultLibLocation: () => '/',
146
146
  getNewLine: function() {
147
- return e.newLine;
147
+ return t.newLine;
148
148
  },
149
- getSourceFile: function(a, u) {
150
- var p;
151
- return r.get(a) || o(n.createSourceFile(a, e.readFile(a), (p = u ?? t.target) != null ? p : G(n).target, !1));
149
+ getSourceFile: function(u, c) {
150
+ var d;
151
+ return r.get(u) || g(i.createSourceFile(u, t.readFile(u), (d = c ?? n.target) != null ? d : Y(i).target, !1));
152
152
  },
153
153
  useCaseSensitiveFileNames: function() {
154
- return e.useCaseSensitiveFileNames;
154
+ return t.useCaseSensitiveFileNames;
155
155
  }
156
156
  }),
157
- updateFile: function(a) {
158
- var u = r.has(a.fileName);
159
- return e.writeFile(a.fileName, a.text), r.set(a.fileName, a), u;
157
+ updateFile: function(u) {
158
+ var c = r.has(u.fileName);
159
+ return t.writeFile(u.fileName, u.text), r.set(u.fileName, u), c;
160
160
  },
161
- deleteFile: function(a) {
162
- var u = r.has(a.fileName);
163
- return r.delete(a.fileName), e.deleteFile(a.fileName), u;
161
+ deleteFile: function(u) {
162
+ var c = r.has(u.fileName);
163
+ return r.delete(u.fileName), t.deleteFile(u.fileName), c;
164
164
  }
165
165
  };
166
- return s;
166
+ return l;
167
167
  }
168
- function re(e, t, n, r, o) {
169
- var s = [].concat(t), c = Y(e, n, r), a = c.compilerHost, u = c.updateFile, p = c.deleteFile, l = /* @__PURE__ */ new Map(), h = 0, i = A({}, a, {
168
+ function re(t, n, i, r, g) {
169
+ var l = [].concat(n), p = G(t, i, r), u = p.compilerHost, c = p.updateFile, d = p.deleteFile, a = /* @__PURE__ */ new Map(), F = 0, s = R({}, u, {
170
170
  getProjectVersion: function() {
171
- return h.toString();
171
+ return F.toString();
172
172
  },
173
173
  getCompilationSettings: function() {
174
- return n;
174
+ return i;
175
175
  },
176
176
  getCustomTransformers: function() {
177
- return o;
177
+ return g;
178
178
  },
179
179
  // A couple weeks of 4.8 TypeScript nightlies had a bug where the Program's
180
180
  // list of files was just a reference to the array returned by this host method,
@@ -185,31 +185,74 @@ function re(e, t, n, r, o) {
185
185
  // is used in bisecting for changes, it needs to guard against being busted in that
186
186
  // couple-week period, so we defensively make a slice here.
187
187
  getScriptFileNames: function() {
188
- return s.slice();
188
+ return l.slice();
189
189
  },
190
- getScriptSnapshot: function(d) {
191
- var T = e.readFile(d);
192
- if (T && typeof T == "string")
193
- return r.ScriptSnapshot.fromString(T);
190
+ getScriptSnapshot: function(o) {
191
+ var f = t.readFile(o);
192
+ if (f && typeof f == "string")
193
+ return r.ScriptSnapshot.fromString(f);
194
194
  },
195
- getScriptVersion: function(d) {
196
- return l.get(d) || "0";
195
+ getScriptVersion: function(o) {
196
+ return a.get(o) || "0";
197
197
  },
198
- writeFile: e.writeFile
199
- }), f = {
200
- languageServiceHost: i,
201
- updateFile: function(d) {
202
- h++, l.set(d.fileName, h.toString()), s.includes(d.fileName) || s.push(d.fileName), u(d);
198
+ writeFile: t.writeFile
199
+ }), y = {
200
+ languageServiceHost: s,
201
+ updateFile: function(o) {
202
+ F++, a.set(o.fileName, F.toString()), l.includes(o.fileName) || l.push(o.fileName), c(o);
203
203
  },
204
- deleteFile: function(d) {
205
- h++, l.set(d.fileName, h.toString());
206
- var T = s.indexOf(d.fileName);
207
- T !== -1 && s.splice(T, 1), p(d);
204
+ deleteFile: function(o) {
205
+ F++, a.set(o.fileName, F.toString());
206
+ var f = l.indexOf(o.fileName);
207
+ f !== -1 && l.splice(f, 1), d(o);
208
208
  }
209
209
  };
210
- return f;
210
+ return y;
211
211
  }
212
- const ie = `
212
+ const ie = (t, n, i) => {
213
+ if (!t) return { parameters: [], returnType: "any" };
214
+ const r = t.id || "temp_node_id", g = {
215
+ ...t,
216
+ id: r,
217
+ parameters: {
218
+ ...t.parameters,
219
+ nodes: t.parameters?.nodes?.map((e) => e?.value ? e : { ...e, value: null }) || []
220
+ }
221
+ }, l = r + "_params", p = {
222
+ ...g,
223
+ id: l,
224
+ parameters: {
225
+ ...g.parameters,
226
+ nodes: g.parameters.nodes.map((e) => e.value?.__typename === "LiteralValue" && e.value.value !== null && typeof e.value.value != "object" ? { ...e, value: null } : e)
227
+ }
228
+ }, c = se({
229
+ nodes: { __typename: "NodeFunctionConnection", nodes: [g, p] }
230
+ }, n, i), d = L(r), a = L(l), F = c.parameters.get(d) || [], s = c.parameters.get(a) || [];
231
+ return {
232
+ parameters: F.map((e, o) => {
233
+ const f = s[o];
234
+ return f && f !== "any" && f !== "unknown" ? f : e;
235
+ }),
236
+ returnType: c.nodes.get(d) || "any"
237
+ };
238
+ };
239
+ var H = /* @__PURE__ */ ((t) => (t[t.PRIMITIVE = 0] = "PRIMITIVE", t[t.TYPE = 1] = "TYPE", t[t.ARRAY = 2] = "ARRAY", t[t.OBJECT = 3] = "OBJECT", t[t.NODE = 4] = "NODE", t))(H || {});
240
+ const q = (t, n) => {
241
+ const r = `
242
+ ${O(n)}
243
+ type TargetType = ${t};
244
+ const val: TargetType = {} as any;
245
+ `, g = "index.ts", l = P(g, r), p = l.getSourceFile(g), c = l.languageService.getProgram().getTypeChecker();
246
+ let d = 1;
247
+ const a = (F) => {
248
+ if (m.isVariableDeclaration(F) && F.name.getText() === "val") {
249
+ const s = c.getTypeAtLocation(F);
250
+ s.getCallSignatures().length > 0 ? d = 4 : c.isArrayType(s) ? d = 2 : s.isStringLiteral() || s.isNumberLiteral() || (s.getFlags() & (m.TypeFlags.String | m.TypeFlags.Number | m.TypeFlags.Boolean | m.TypeFlags.EnumLiteral | m.TypeFlags.BigInt | m.TypeFlags.ESSymbol)) !== 0 ? d = 0 : s.isClassOrInterface() || (s.getFlags() & m.TypeFlags.Object) !== 0 ? d = 3 : d = 1;
251
+ }
252
+ m.forEachChild(F, a);
253
+ };
254
+ return a(p), d;
255
+ }, ae = `
213
256
  interface Array<T> {
214
257
  [n: number]: T;
215
258
  length: number;
@@ -223,573 +266,359 @@ const ie = `
223
266
  interface NewableFunction extends Function {}
224
267
  interface IArguments { }
225
268
  interface RegExp { }
269
+ type Record<K extends keyof any, T> = { [P in K]: T; };
226
270
  type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
227
271
  `;
228
- function I(e, t) {
229
- const n = /* @__PURE__ */ new Map();
230
- n.set(e, t), n.set("lib.codezero.d.ts", ie);
231
- const r = ne(n);
232
- return te(r, [e, "lib.codezero.d.ts"], y, oe);
272
+ function P(t, n) {
273
+ const i = /* @__PURE__ */ new Map();
274
+ i.set(t, n), i.set("lib.codezero.d.ts", ae);
275
+ const r = ne(i);
276
+ return te(r, [t, "lib.codezero.d.ts"], m, oe);
233
277
  }
234
278
  const oe = {
235
- target: y.ScriptTarget.Latest,
279
+ target: m.ScriptTarget.Latest,
236
280
  lib: ["lib.codezero.d.ts"],
237
281
  noEmit: !0,
238
282
  strictNullChecks: !0
239
283
  };
240
- function V(e) {
241
- const t = Array.from(new Set(e?.flatMap((r) => r.genericKeys || []))).map((r) => `type ${r} = any;`).join(`
242
- `), n = e?.map(
243
- (r) => `type ${r.identifier}${r.genericKeys ? `<${r.genericKeys.join(",")}>` : ""} = ${r.type};`
284
+ function O(t) {
285
+ const n = Array.from(new Set(t?.flatMap((r) => r.genericKeys || []))).map((r) => `type ${r} = any;`).join(`
286
+ `), i = t?.map(
287
+ (r) => `type ${r.identifier}${(r.genericKeys?.length ?? 0) > 0 ? `<${r.genericKeys?.join(",")}>` : ""} = ${r.type};`
244
288
  ).join(`
245
289
  `);
246
- return `${t}
247
- ${n}`;
290
+ return `${n}
291
+ ${i}`;
248
292
  }
249
- function ae(e, t) {
250
- let n = e;
251
- for (const r of t) {
252
- if (n == null) return "unknown";
253
- typeof r.path == "string" && (n = n[r.path]);
254
- }
255
- return typeof n;
256
- }
257
- function B(e, t) {
258
- const n = e?.nodes;
259
- if (n)
260
- return Array.isArray(n) ? n.find((r) => r.id === t) : n.nodes?.find((r) => r.id === t);
293
+ const L = (t) => t.replace(/[^a-zA-Z0-9]/g, "_");
294
+ function U(t, n, i, r = !1) {
295
+ const g = t?.nodes?.nodes || [], l = new Map(n?.map((e) => [e.identifier, e])), p = /* @__PURE__ */ new Set(), u = (e, o, f) => {
296
+ const v = g.find((A) => A?.id === e);
297
+ if (!v || !v.functionDefinition?.identifier) return "undefined";
298
+ const S = (v.parameters?.nodes || []).map((A, x) => {
299
+ const E = A.value;
300
+ if (!E) return r ? `/* @pos ${e} ${x} */ {}` : `/* @pos ${e} ${x} */ undefined`;
301
+ if (E.__typename === "ReferenceValue") {
302
+ const $ = E;
303
+ if (!$.nodeFunctionId) return `/* @pos ${e} ${x} */ undefined`;
304
+ let _ = $.inputIndex !== void 0 ? `p_${L($.nodeFunctionId)}_${$.parameterIndex}[${$.inputIndex}]` : `node_${L($.nodeFunctionId)}`;
305
+ return $.referencePath?.forEach((h) => {
306
+ _ += `?.${h.path}`;
307
+ }), `/* @pos ${e} ${x} */ ${_}`;
308
+ }
309
+ return E.__typename === "LiteralValue" ? `/* @pos ${e} ${x} */ ${JSON.stringify(E.value)}` : E.__typename === "NodeFunctionIdWrapper" ? u(E.id, e, x) : r ? `/* @pos ${e} ${x} */ ({} as any)` : `/* @pos ${e} ${x} */ undefined`;
310
+ }).join(", "), w = `${`fn_${v.functionDefinition.identifier.replace(/::/g, "_")}`}(${S})`;
311
+ return o !== void 0 && f !== void 0 ? `${w}` : w;
312
+ }, c = (e, o = "") => {
313
+ if (p.has(e)) return "";
314
+ const f = g.find((_) => _?.id === e);
315
+ if (!f || !f.functionDefinition) return "";
316
+ if (p.add(e), !l.get(f.functionDefinition.identifier)) return `${o}// Error: Function ${f.functionDefinition.identifier} not found
317
+ `;
318
+ let T = { parameters: [] };
319
+ r || (T = ie(f, n, i));
320
+ const C = (f.parameters?.nodes || []).map((_, h) => {
321
+ const b = _.value;
322
+ if (!b) return r ? `/* @pos ${e} ${h} */ {}` : `/* @pos ${e} ${h} */ undefined`;
323
+ if (b.__typename === "ReferenceValue") {
324
+ const N = b;
325
+ if (!N.nodeFunctionId) return `/* @pos ${e} ${h} */ undefined`;
326
+ let D = N.inputIndex !== void 0 ? `p_${L(N.nodeFunctionId)}_${N.parameterIndex}[${N.inputIndex}]` : `node_${L(N.nodeFunctionId)}`;
327
+ return N.referencePath?.forEach((V) => {
328
+ D += `?.${V.path}`;
329
+ }), `/* @pos ${e} ${h} */ ${D}`;
330
+ }
331
+ if (b.__typename === "LiteralValue") return `/* @pos ${e} ${h} */ ${JSON.stringify(b.value)}`;
332
+ if (b.__typename === "NodeFunctionIdWrapper") {
333
+ const N = b;
334
+ if (r) {
335
+ const D = `p_${L(e)}_${h}`, V = c(N.id, o + " ");
336
+ return `/* @pos ${e} ${h} */ (...${D}) => {
337
+ ${V}${o}}`;
338
+ } else {
339
+ const D = T.parameters[h];
340
+ if (D ? q(D, i) === H.NODE : !1) {
341
+ const M = `p_${L(e)}_${h}`, j = c(N.id, o + " ");
342
+ return `/* @pos ${e} ${h} */ (...${M}) => {
343
+ ${j}${o}}`;
344
+ } else {
345
+ const M = u(N.id, e, h);
346
+ return `/* @pos ${e} ${h} */ ${M}`;
347
+ }
348
+ }
349
+ }
350
+ return r ? `/* @pos ${e} ${h} */ {}` : `/* @pos ${e} ${h} */ undefined`;
351
+ }).join(", "), w = `node_${L(f.id)}`, A = `fn_${f?.functionDefinition?.identifier?.replace(/::/g, "_")}`, x = C.includes("undefined"), E = f.functionDefinition.identifier === "std::control::return";
352
+ let $ = `${o}${E ? "return " : `const ${w} = `}${A}(${C}) ;
353
+ `;
354
+ return f.nextNodeId && ($ += c(f.nextNodeId, o)), $;
355
+ }, d = O(i), a = n?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join(`
356
+ `), F = new Set(g.map((e) => e?.nextNodeId).filter((e) => !!e)), s = /* @__PURE__ */ new Set();
357
+ g.forEach((e) => e?.parameters?.nodes?.forEach((o) => {
358
+ o?.value?.__typename === "NodeFunctionIdWrapper" && o.value.id && s.add(o.value.id);
359
+ }));
360
+ const y = g.filter((e) => e?.id && !F.has(e.id) && !s.has(e.id)).map((e) => c(e.id)).join(`
361
+ `);
362
+ return `${d}
363
+ ${a}
364
+
365
+ // --- Flow ---
366
+ ${y}`;
261
367
  }
262
- function q(e, t, n) {
263
- const r = e?.value;
264
- if (!r) return "undefined";
265
- if (r.__typename === "ReferenceValue") {
266
- const o = r, s = B(t, o.nodeFunctionId);
267
- if (!s) return "undefined";
268
- let c = n?.(t, s).returnType;
269
- if (o.referencePath && o.referencePath.length > 0) {
270
- let a;
271
- const u = s.parameters?.nodes;
272
- if (u && u.length > 0) {
273
- const p = u[0];
274
- p?.value?.__typename === "LiteralValue" && (a = p.value.value);
368
+ function se(t, n, i) {
369
+ const r = U(t, n, i, !0), g = "index.ts", l = P(g, r), p = l.getSourceFile(g), c = l.languageService.getProgram().getTypeChecker(), d = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map();
370
+ (t?.nodes?.nodes || []).forEach((e) => {
371
+ e?.id && F.set(L(e.id), e);
372
+ });
373
+ const y = (e) => {
374
+ if (m.isVariableDeclaration(e) && e.name.getText().startsWith("node_")) {
375
+ const o = e.name.getText().replace("node_", ""), f = c.getTypeAtLocation(e);
376
+ if (d.set(o, c.typeToString(f, e, m.TypeFormatFlags.NoTruncation)), e.initializer && m.isCallExpression(e.initializer)) {
377
+ const v = c.getResolvedSignature(e.initializer);
378
+ if (v) {
379
+ const T = v.getParameters().map((S) => {
380
+ const C = c.getTypeOfSymbolAtLocation(S, e.initializer);
381
+ return c.typeToString(C, e.initializer, m.TypeFormatFlags.NoTruncation);
382
+ });
383
+ a.set(o, T);
384
+ }
275
385
  }
276
- c = ae(a, o.referencePath);
277
386
  }
278
- return `({} as ${c})`;
279
- }
280
- if (r.__typename === "NodeFunctionIdWrapper") {
281
- const o = r.id, s = B(t, o);
282
- if (!s) return "(() => undefined)";
283
- const c = (p) => {
284
- if (p.functionDefinition?.identifier === "std::control::return")
285
- return p;
286
- const l = p.nextNodeId ? B(t, p.nextNodeId) : void 0;
287
- return l ? c(l) : void 0;
288
- }, a = c(s);
289
- return a ? `(() => ({} as ${n?.(t, a)?.returnType}))` : "(() => undefined)";
290
- }
291
- return r.__typename === "LiteralValue" ? JSON.stringify(r.value) : "undefined";
292
- }
293
- const H = (e, t) => {
294
- const n = e?.nodes?.nodes;
295
- if (n)
296
- return n.find(
297
- (r) => r?.parameters?.nodes?.some(
298
- (o) => o?.value?.__typename === "NodeFunctionIdWrapper" && o.value.id === t
299
- )
300
- );
301
- }, Q = (e, t, n, r = /* @__PURE__ */ new Set()) => {
302
- const o = t?.id;
303
- if (!o || r.has(o)) return !1;
304
- r.add(o);
305
- const s = (a) => {
306
- const u = e?.nodes?.nodes?.find((p) => p?.nextNodeId === a);
307
- return u ? u.id === n ? !0 : s(u.id) : !1;
308
- };
309
- if (s(o)) return !0;
310
- const c = H(e, o);
311
- return c ? c.id === n ? !0 : Q(e, c, n, r) : !1;
312
- }, se = (e, t, n) => {
313
- if (!n?.nodeFunctionId)
314
- return { isValid: !0 };
315
- if (n.parameterIndex !== void 0 && n.inputIndex !== void 0) {
316
- if (t?.id === n.nodeFunctionId) return { isValid: !0 };
317
- let r = H(e, t?.id);
318
- for (; r; ) {
319
- if (r.id === n.nodeFunctionId) return { isValid: !0 };
320
- r = H(e, r.id);
387
+ if (m.isReturnStatement(e) && e.expression && m.isCallExpression(e.expression)) {
388
+ const o = e.expression;
389
+ c.getResolvedSignature(o);
321
390
  }
322
- return {
323
- isValid: !1,
324
- error: `Invalid input reference: Node ${t?.id} is not in the scope of Node ${n.nodeFunctionId}.`
325
- };
326
- }
327
- return Q(e, t, n.nodeFunctionId) ? { isValid: !0 } : {
328
- isValid: !1,
329
- error: `Node ${n.nodeFunctionId} has not been executed yet or is not visible in this scope.`
391
+ m.forEachChild(e, y);
330
392
  };
331
- }, fe = (e) => {
332
- const n = `const tempValue = ${JSON.stringify(e?.value) ?? "any"};`, r = "index.ts", o = I(r, n), s = o.getSourceFile(r), a = o.languageService.getProgram().getTypeChecker();
333
- let u = "any";
334
- const p = (l) => {
335
- if (y.isVariableDeclaration(l) && l.name.getText() === "tempValue") {
336
- const h = a.getTypeAtLocation(l);
337
- u = a.typeToString(
338
- h,
339
- l,
340
- y.TypeFormatFlags.NoTruncation | y.TypeFormatFlags.UseFullyQualifiedType
393
+ return y(p), { nodes: d, parameters: a };
394
+ }
395
+ const ue = (t) => {
396
+ const i = `const tempValue = ${JSON.stringify(t?.value) ?? "any"};`, r = "index.ts", g = P(r, i), l = g.getSourceFile(r), u = g.languageService.getProgram().getTypeChecker();
397
+ let c = "any";
398
+ const d = (a) => {
399
+ if (m.isVariableDeclaration(a) && a.name.getText() === "tempValue") {
400
+ const F = u.getTypeAtLocation(a);
401
+ c = u.typeToString(
402
+ F,
403
+ a,
404
+ m.TypeFormatFlags.NoTruncation | m.TypeFormatFlags.UseFullyQualifiedType
341
405
  );
342
406
  }
343
- y.forEachChild(l, p);
407
+ m.forEachChild(a, d);
344
408
  };
345
- return p(s), u;
346
- };
347
- var ce = /* @__PURE__ */ ((e) => (e[e.PRIMITIVE = 0] = "PRIMITIVE", e[e.TYPE = 1] = "TYPE", e[e.ARRAY = 2] = "ARRAY", e[e.OBJECT = 3] = "OBJECT", e[e.NODE = 4] = "NODE", e))(ce || {});
348
- const de = (e, t) => {
349
- const r = `
350
- ${V(t)}
351
- type TargetType = ${e};
352
- const val: TargetType = {} as any;
353
- `, o = "index.ts", s = I(o, r), c = s.getSourceFile(o), u = s.languageService.getProgram().getTypeChecker();
354
- let p = 1;
355
- const l = (h) => {
356
- if (y.isVariableDeclaration(h) && h.name.getText() === "val") {
357
- const i = u.getTypeAtLocation(h);
358
- i.getCallSignatures().length > 0 ? p = 4 : u.isArrayType(i) ? p = 2 : i.isStringLiteral() || i.isNumberLiteral() || (i.getFlags() & (y.TypeFlags.String | y.TypeFlags.Number | y.TypeFlags.Boolean | y.TypeFlags.EnumLiteral | y.TypeFlags.BigInt | y.TypeFlags.ESSymbol)) !== 0 ? p = 0 : (i.isClassOrInterface() || (i.getFlags() & y.TypeFlags.Object) !== 0) && i.getProperties().length > 0 ? p = 3 : p = 1;
359
- }
360
- y.forEachChild(h, l);
361
- };
362
- return l(c), p;
363
- }, ge = (e, t) => {
364
- const n = `
365
- ${V(t)}
366
- type Target = ${e};
367
- `, r = "index.ts", o = I(r, n), s = o.getSourceFile(r), a = o.languageService.getProgram().getTypeChecker(), u = s.statements.find(
368
- (i) => y.isTypeAliasDeclaration(i) && i.name.text === "Target"
409
+ return d(l), c;
410
+ }, ge = (t, n) => {
411
+ const i = `
412
+ ${O(n)}
413
+ type Target = ${t};
414
+ `, r = "index.ts", g = P(r, i), l = g.getSourceFile(r), u = g.languageService.getProgram().getTypeChecker(), c = l.statements.find(
415
+ (s) => m.isTypeAliasDeclaration(s) && s.name.text === "Target"
369
416
  );
370
- if (!u)
417
+ if (!c)
371
418
  return { __typename: "LiteralValue", value: null };
372
- const p = a.getTypeAtLocation(u.type), l = (i, f, v = /* @__PURE__ */ new Set()) => {
373
- if (v.has(i)) return null;
374
- v.add(i);
375
- const d = i.getFlags();
376
- if (i.isUnion()) {
377
- if (f.type, y.isTypeAliasDeclaration(f) && f.type && y.isUnionTypeNode(f.type)) {
378
- const S = a.getTypeFromTypeNode(f.type.types[0]);
379
- return l(S, f, v);
419
+ const d = u.getTypeAtLocation(c.type), a = (s, y, e = /* @__PURE__ */ new Set()) => {
420
+ if (e.has(s)) return null;
421
+ e.add(s);
422
+ const o = s.getFlags();
423
+ if (s.isUnion()) {
424
+ if (y.type, m.isTypeAliasDeclaration(y) && y.type && m.isUnionTypeNode(y.type)) {
425
+ const T = u.getTypeFromTypeNode(y.type.types[0]);
426
+ return a(T, y, e);
380
427
  }
381
- const T = i.types.filter((S) => {
382
- const m = S.getFlags();
383
- return !(m & y.TypeFlags.Undefined) && !(m & y.TypeFlags.Null);
384
- }), g = T.length > 0 ? T[0] : i.types[0];
385
- return l(g, f, v);
428
+ const f = s.types.filter((T) => {
429
+ const S = T.getFlags();
430
+ return !(S & m.TypeFlags.Undefined) && !(S & m.TypeFlags.Null);
431
+ }), v = f.length > 0 ? f[0] : s.types[0];
432
+ return a(v, y, e);
386
433
  }
387
- if (d & y.TypeFlags.StringLiteral) return i.value;
388
- if (d & y.TypeFlags.String) return "sample";
389
- if (d & y.TypeFlags.NumberLiteral) return i.value;
390
- if (d & y.TypeFlags.Number) return 1;
391
- if (d & y.TypeFlags.BooleanLiteral) return i.intrinsicName === "true";
392
- if (d & y.TypeFlags.Boolean) return !1;
393
- if (a.isArrayType(i)) {
394
- const g = i.typeArguments?.[0] || a.getAnyType();
395
- return [l(g, f, v)];
434
+ if (o & m.TypeFlags.StringLiteral) return s.value;
435
+ if (o & m.TypeFlags.String) return "";
436
+ if (o & m.TypeFlags.NumberLiteral) return s.value;
437
+ if (o & m.TypeFlags.Number) return 0;
438
+ if (o & m.TypeFlags.BooleanLiteral) return s.intrinsicName === "true";
439
+ if (o & m.TypeFlags.Boolean) return !1;
440
+ if (u.isArrayType(s)) {
441
+ const v = s.typeArguments?.[0] || u.getAnyType();
442
+ return a(v, y, e) === "null" ? [a(v, y, e)] : [];
396
443
  }
397
- if (i.isClassOrInterface() || d & y.TypeFlags.Object || i.getProperties().length > 0) {
398
- const T = {};
399
- return i.getProperties().forEach((S) => {
400
- const m = a.getTypeOfSymbolAtLocation(S, f);
401
- m && (T[S.getName()] = l(m, f, v));
402
- }), T;
444
+ if (s.isClassOrInterface() || o & m.TypeFlags.Object || s.getProperties().length > 0) {
445
+ const f = {};
446
+ return s.getProperties().forEach((T) => {
447
+ const S = u.getTypeOfSymbolAtLocation(T, y);
448
+ S && (f[T.getName()] = a(S, y, e));
449
+ }), f;
403
450
  }
404
451
  return null;
405
452
  };
406
453
  return {
407
- value: l(p, u)
408
- };
409
- }, z = (e, t, n, r) => {
410
- const s = new Map(n?.map((F) => [F.identifier, F])).get(t?.functionDefinition?.identifier);
411
- if (!s)
412
- return {
413
- isValid: !1,
414
- returnType: "any",
415
- diagnostics: [{ message: `Function ${t?.id} not found`, nodeId: t?.id, code: 404, severity: "error" }]
416
- };
417
- const c = t?.parameters?.nodes || [], a = [];
418
- for (const F of c) {
419
- const N = F.value;
420
- if (N?.__typename === "ReferenceValue") {
421
- const x = se(e, t, N);
422
- x.isValid || a.push({
423
- message: x.error || "Scope error",
424
- code: 403,
425
- nodeId: t?.id,
426
- parameterIndex: c.indexOf(F),
427
- severity: "error"
428
- });
429
- }
430
- }
431
- if (a.length > 0)
432
- return {
433
- isValid: !1,
434
- returnType: "any",
435
- diagnostics: a
436
- };
437
- const u = c.map((F) => q(F, e, (N, x) => z(N, x, n, r))), p = u.map(
438
- (F) => F === "undefined" ? "({} as any)" : F
439
- ).join(", ");
440
- let l = s.signature;
441
- const h = `
442
- ${V(r)}
443
- declare function testFunc${l};
444
- const result = testFunc(${p});
445
- `, i = "index.ts", f = I(i, h), v = f.getSourceFile(i), d = f.languageService.getProgram(), T = d.getTypeChecker(), g = d.getSemanticDiagnostics(v);
446
- let S = "any";
447
- const m = (F) => {
448
- if (y.isVariableDeclaration(F) && F.name.getText() === "result") {
449
- const N = T.getTypeAtLocation(F);
450
- S = T.typeToString(
451
- N,
452
- F,
453
- y.TypeFormatFlags.NoTruncation | y.TypeFormatFlags.UseFullyQualifiedType
454
- );
455
- }
456
- y.forEachChild(F, m);
457
- };
458
- m(v);
459
- const $ = g.map((F) => {
460
- const N = y.flattenDiagnosticMessageText(F.messageText, `
461
- `), x = /\b([TRKV])\b/.test(N), C = N.includes("not assignable to parameter of type") && (N.includes("'{}'") || N.includes("undefined")) || N.includes("not assignable to type 'undefined'") || N.includes("not assignable to type 'void'") || N.includes("may be a mistake because neither type sufficiently overlaps");
462
- return {
463
- message: N,
464
- code: F.code,
465
- nodeId: t?.id,
466
- parameterIndex: (() => {
467
- if (F.start !== void 0) {
468
- const P = c.findIndex((M, L) => {
469
- const b = h.indexOf(u[L]);
470
- return F.start >= b && F.start < b + u[L].length;
471
- });
472
- if (P !== -1) return P;
473
- }
474
- })(),
475
- severity: x || C ? "warning" : "error"
476
- };
477
- });
478
- return {
479
- isValid: !$.some((F) => F.severity === "error"),
480
- returnType: S,
481
- diagnostics: $
482
- };
483
- }, pe = (e, t, n) => {
484
- const o = new Map(t?.map((m) => [m.identifier, m])).get(e?.functionDefinition?.identifier);
485
- if (!o)
486
- return {
487
- parameters: [],
488
- returnType: "any"
489
- };
490
- const s = {
491
- id: "gid://sagittarius/Flow/0",
492
- nodes: { __typename: "NodeFunctionConnection", nodes: [e] }
493
- }, u = (e?.parameters?.nodes || []).map((m) => q(m, s, ($, F) => z($, F, t, n))).map((m) => m === "undefined" ? "({} as any)" : m).join(", "), p = o.signature, l = `
494
- ${V(n)}
495
- declare function testFunc${p};
496
- const result = testFunc(${u});
497
- `, h = "index.ts", i = I(h, l), f = i.getSourceFile(h), d = i.languageService.getProgram().getTypeChecker();
498
- let T = "any", g = [];
499
- const S = (m) => {
500
- if (y.isVariableDeclaration(m) && m.name.getText() === "result") {
501
- const $ = d.getTypeAtLocation(m);
502
- if (T = d.typeToString(
503
- $,
504
- m,
505
- y.TypeFormatFlags.NoTruncation
506
- ), y.isCallExpression(m.initializer)) {
507
- const F = m.initializer, N = d.getResolvedSignature(F);
508
- N && (g = N.getParameters().map((x) => {
509
- const C = d.getTypeOfSymbolAtLocation(x, F);
510
- return d.typeToString(
511
- C,
512
- F,
513
- y.TypeFormatFlags.NoTruncation
514
- );
515
- }));
516
- }
517
- }
518
- y.forEachChild(m, S);
519
- };
520
- return S(f), {
521
- parameters: g,
522
- returnType: T
454
+ __typename: "LiteralValue",
455
+ value: a(d, c)
523
456
  };
524
- }, me = (e, t, n) => {
525
- let r = t;
526
- if (e && t) {
527
- let o = function(i) {
528
- const f = i.match(/<([^>]+)>/);
529
- return f ? f[1].split(",").map((v) => v.trim()).filter(Boolean).length : 0;
457
+ }, pe = (t, n, i) => {
458
+ let r = n;
459
+ const g = t ? q(t, i) : null;
460
+ if (t && n && g !== H.NODE) {
461
+ let l = function(y) {
462
+ const e = y.trim().match(/^<([^>]+)>/);
463
+ return e ? e[1].split(",").map((o) => o.trim()).filter(Boolean).length : 0;
530
464
  };
531
- const s = `
532
- ${V(n)}
533
- type TargetType = ${e};
534
- ${t?.map((i, f) => `
535
- declare function Fu${f}${i.signature};
536
- type F${f} = ReturnType<typeof Fu${f}${o(i.signature) > 0 ? `<${Array(o(i.signature)).fill("any").join(", ")}>` : ""}>;
465
+ const p = `
466
+ ${O(i)}
467
+ type TargetType = ${t};
468
+ ${n?.map((y, e) => `
469
+ declare function Fu${e}${y.signature};
470
+ type F${e} = ReturnType<typeof Fu${e}${l(y.signature) > 0 ? `<${Array(l(y.signature)).fill("any").join(", ")}>` : ""}>;
537
471
  `).join(`
538
472
  `)}
539
- ${t?.map((i, f) => `const check${f}: TargetType = {} as F${f};`).join(`
473
+ ${n?.map((y, e) => `const check${e}: TargetType = {} as F${e};`).join(`
540
474
  `)}
541
- `, c = "index.ts", a = I(c, s), u = a.getSourceFile(c), l = a.languageService.getProgram().getSemanticDiagnostics(), h = /* @__PURE__ */ new Set();
542
- l.forEach((i) => {
543
- i.file === u && i.start !== void 0 && h.add(u.getLineAndCharacterOfPosition(i.start).line);
544
- }), r = t.filter((i, f) => {
545
- const v = `const check${f}: TargetType = {} as F${f};`, T = s.split(`
546
- `).findIndex((g) => g.includes(v));
547
- return T !== -1 && !h.has(T);
475
+ `, u = "index.ts", c = P(u, p), d = c.getSourceFile(u), F = c.languageService.getProgram().getSemanticDiagnostics(), s = /* @__PURE__ */ new Set();
476
+ F.forEach((y) => {
477
+ y.file === d && y.start !== void 0 && s.add(d.getLineAndCharacterOfPosition(y.start).line);
478
+ }), r = n.filter((y, e) => {
479
+ const o = `const check${e}: TargetType = {} as F${e};`, v = p.split(`
480
+ `).findIndex((T) => T.includes(o));
481
+ return v !== -1 && !s.has(v);
548
482
  });
549
483
  }
550
- return r?.map((o) => ({
484
+ return r?.map((l) => ({
551
485
  __typename: "NodeFunction",
552
486
  id: "gid://sagittarius/NodeFunction/1",
553
487
  functionDefinition: {
554
488
  __typename: "FunctionDefinition",
555
- id: o.identifier,
556
- identifier: o.identifier
489
+ id: l.id,
490
+ identifier: l.identifier
557
491
  },
558
492
  parameters: {
559
493
  __typename: "NodeParameterConnection",
560
- nodes: (o.parameterDefinitions?.nodes || []).map((s) => ({
494
+ nodes: (l.parameterDefinitions?.nodes || []).map((p) => ({
561
495
  __typename: "NodeParameter",
562
496
  parameterDefinition: {
563
497
  __typename: "ParameterDefinition",
564
- id: s?.identifier,
565
- identifier: s?.identifier
498
+ id: p?.id,
499
+ identifier: p?.identifier
566
500
  },
567
501
  value: null
568
502
  }))
569
503
  }
570
- })).filter((o) => o !== null) ?? [];
571
- }, ye = (e, t, n = "any", r, o) => {
572
- if (!e) return [];
573
- if (!t) return [];
574
- const s = [], c = e?.nodes?.nodes || [], a = c.find((i) => i?.id === t);
575
- if (!a) return [];
576
- const u = V(o), p = (i, f) => {
577
- if (!n || n === "any" || i === "any") return !0;
578
- const v = "index.ts", d = `
579
- ${u}
580
- const val: ${i} = {} as any;
581
- const test: ${n} = val${f ? `.${f}` : ""};
582
- `, T = I(v, d), g = T.getSourceFile(v);
583
- return !T.languageService.getProgram().getSemanticDiagnostics(g).some(($) => $.category === y.DiagnosticCategory.Error);
584
- }, l = (i, f) => {
585
- const v = [], d = "index.ts", T = `
586
- ${u}
587
- const val: ${i} = {} as any;
588
- `, g = I(d, T), S = g.getSourceFile(d), m = g.languageService.getProgram(), $ = m.getTypeChecker();
589
- p(i) && v.push({ ...f, referencePath: [] });
590
- const F = (x, C = []) => {
591
- if (C.length > 3) return;
592
- const P = x.getProperties();
593
- for (const M of P) {
594
- const L = M.getName();
595
- let b;
596
- if ($.getPropertyOfType) {
597
- const _ = $.getPropertyOfType(x, L);
598
- _ && (b = $.getTypeOfSymbolAtLocation(_, S));
599
- } else {
600
- const _ = x.getProperty(L);
601
- _ && (b = $.getTypeOfSymbolAtLocation(_, S));
602
- }
603
- if (!b) continue;
604
- const D = [...C, L], E = D.join(".");
605
- p(i, E) && v.push({
606
- ...f,
607
- referencePath: D.map((_) => ({
608
- __typename: "ReferencePath",
609
- path: _
610
- }))
611
- }), F(b, D);
612
- }
613
- };
614
- if (m.getSemanticDiagnostics(S).length === 0) {
615
- let x;
616
- const C = (P) => {
617
- y.isVariableDeclaration(P) && P.name.getText() === "val" && (x = $.getTypeAtLocation(P)), y.forEachChild(P, C);
618
- };
619
- C(S), x && F(x);
620
- }
621
- return v;
622
- };
623
- if (e.inputType) {
624
- const i = e.inputType || "any";
625
- s.push(...l(i, {}));
504
+ })).filter((l) => l !== null) ?? [];
505
+ }, fe = (t, n, i, r, g) => {
506
+ const l = U(t, r, g, !0), p = "index.ts", u = P(p, l), c = u.getSourceFile(p), a = u.languageService.getProgram().getTypeChecker(), F = c.getFullText(), s = `/* @pos ${n} ${i} */`, e = F.indexOf(s) + s.length;
507
+ function o($, _) {
508
+ let h = $;
509
+ return m.forEachChild($, (b) => {
510
+ b.getStart(c, !0) <= _ && b.getEnd() >= _ && (h = o(b, _));
511
+ }), h;
626
512
  }
627
- c.forEach((i) => {
628
- if (!(!i || i.id === t) && ue(e, i, a)) {
629
- const f = z(e, i, r, o);
630
- s.push(...l(f.returnType, {
631
- __typename: "ReferenceValue",
632
- nodeFunctionId: i.id,
633
- referencePath: []
634
- }));
635
- }
636
- });
637
- let h = O(e, t);
638
- for (; h; ) {
639
- if (r?.find((f) => f.identifier === h.functionDefinition?.identifier)) {
640
- const f = h.parameters?.nodes?.findIndex((v) => {
641
- const d = v?.value;
642
- if (d?.__typename === "NodeFunctionIdWrapper") {
643
- const T = d;
644
- return T.id === t || U(e, T.id || void 0, t);
645
- }
646
- return !1;
647
- });
648
- f !== void 0 && f !== -1 && s.push(...l("any", {
649
- __typename: "ReferenceValue",
650
- nodeFunctionId: h.id,
651
- parameterIndex: f,
652
- inputIndex: 0,
653
- referencePath: []
654
- }));
513
+ const v = o(c, e);
514
+ let T;
515
+ if (m.isCallExpression(v) && (T = v), !T)
516
+ return [];
517
+ const S = a.getResolvedSignature(T);
518
+ if (!S) return [];
519
+ const C = S.getParameters(), w = C[i] || C[C.length - 1], A = a.getTypeOfSymbolAtLocation(w, v), x = a.getSymbolsInScope(v, m.SymbolFlags.Variable), E = [];
520
+ return x.forEach(($) => {
521
+ const _ = $.getName();
522
+ if (!_.startsWith("node_") && !_.startsWith("p_")) return;
523
+ const h = $.valueDeclaration || $.declarations?.[0];
524
+ if (!h || h.getEnd() >= e)
525
+ return;
526
+ const b = a.getTypeOfSymbolAtLocation($, v);
527
+ if (_.startsWith("node_")) {
528
+ if ((b.flags & m.TypeFlags.Void) === 0 && a.isTypeAssignableTo(b, A)) {
529
+ const N = _.replace("node_", "").replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/");
530
+ E.push({
531
+ __typename: "ReferenceValue",
532
+ nodeFunctionId: N
533
+ // Bei node_ keine Indizes laut Vorgabe
534
+ });
535
+ }
536
+ } else if (_.startsWith("p_")) {
537
+ const N = _.replace("p_", ""), D = N.lastIndexOf("_"), V = N.substring(0, D), M = parseInt(N.substring(D + 1), 10), j = V.replace("p_", "").replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/");
538
+ if (a.isTupleType(b)) {
539
+ const z = b;
540
+ a.getTypeArguments(z).forEach((Q, B) => {
541
+ a.isTypeAssignableTo(Q, A) && E.push({
542
+ __typename: "ReferenceValue",
543
+ nodeFunctionId: j,
544
+ parameterIndex: isNaN(M) ? 0 : M,
545
+ inputIndex: B,
546
+ //@ts-ignore
547
+ inputTypeIdentifier: z.target.labeledElementDeclarations?.[B].name.getText()
548
+ });
549
+ });
550
+ }
655
551
  }
656
- h = O(e, h.id);
657
- }
658
- return s;
659
- };
660
- function ue(e, t, n) {
661
- const r = e.nodes?.nodes || [];
662
- let o = t.nextNodeId;
663
- const s = /* @__PURE__ */ new Set();
664
- for (; o; ) {
665
- if (o === n.id) return !0;
666
- if (s.has(o)) break;
667
- s.add(o), o = r.find((u) => u?.id === o)?.nextNodeId;
668
- }
669
- let c = O(e, n.id);
670
- for (; c; ) {
671
- if (c.id === t.id) return !0;
672
- c = O(e, c.id);
673
- }
674
- return !1;
675
- }
676
- function O(e, t) {
677
- return e.nodes?.nodes?.find(
678
- (r) => r?.parameters?.nodes?.some(
679
- (o) => o?.value?.__typename === "NodeFunctionIdWrapper" && o.value.id === t
680
- )
681
- ) || void 0;
682
- }
683
- function U(e, t, n) {
684
- if (!t) return !1;
685
- if (t === n) return !0;
686
- const o = (e.nodes?.nodes || []).find((c) => c?.id === t);
687
- return o ? o.nextNodeId && U(e, o.nextNodeId || void 0, n) ? !0 : !!o.parameters?.nodes?.some((c) => {
688
- const a = c?.value;
689
- return a?.__typename === "NodeFunctionIdWrapper" ? U(e, a.id || void 0, n) : !1;
690
- }) : !1;
691
- }
692
- const ve = (e, t) => {
693
- if (!e) return [];
694
- const n = `
695
- ${V(t)}
696
- type T = ${e}; const val: T = {} as any;
697
- `, r = "index.ts", o = I(r, n), s = o.getSourceFile(r), a = o.languageService.getProgram().getTypeChecker(), u = s.statements.find(y.isTypeAliasDeclaration);
698
- if (!u) return [];
699
- const p = a.getTypeAtLocation(u), l = (i) => i.isUnion() ? i.types.flatMap(l) : i.isStringLiteral() ? [i.value] : i.isNumberLiteral() ? [i.value.toString()] : i.intrinsicName === "true" ? ["true"] : i.intrinsicName === "false" ? ["false"] : [];
700
- return Array.from(new Set(l(p))).map((i) => ({
552
+ }), E;
553
+ }, me = (t, n) => {
554
+ if (!t) return [];
555
+ const i = `
556
+ ${O(n)}
557
+ type VALUE = ${t}; const val: VALUE = {} as any;
558
+ `, r = "index.ts", g = P(r, i), l = g.getSourceFile(r), u = g.languageService.getProgram().getTypeChecker(), c = l.statements.find(
559
+ (s) => m.isTypeAliasDeclaration(s) && s.name.text === "VALUE"
560
+ );
561
+ if (!c || !m.isTypeAliasDeclaration(c)) return [];
562
+ const d = u.getTypeAtLocation(c), a = (s) => s.isUnion() ? s.types.flatMap(a) : s.isStringLiteral() ? [s.value] : s.isNumberLiteral() ? [s.value.toString()] : s.intrinsicName === "true" ? ["true"] : s.intrinsicName === "false" ? ["false"] : [];
563
+ return Array.from(new Set(a(d))).map((s) => ({
701
564
  __typename: "LiteralValue",
702
- value: i
565
+ value: s
703
566
  }));
704
- }, k = (e) => e.replace(/[^a-zA-Z0-9]/g, "_"), Fe = (e, t, n) => {
705
- const r = /* @__PURE__ */ new Set(), o = e?.nodes?.nodes || [], s = new Map(t?.map((g) => [g.identifier, g])), c = (g, S = "") => {
706
- if (r.has(g)) return "";
707
- const m = o.find((L) => L?.id === g);
708
- if (!m || !m.functionDefinition) return "";
709
- r.add(g);
710
- const $ = s.get(m.functionDefinition?.identifier);
711
- if (!$) return `${S}// Error: Function ${m.functionDefinition.identifier} not found
712
- `;
713
- const N = (m.parameters?.nodes || []).map((L, b) => {
714
- const D = L.value;
715
- if (!D) return "undefined";
716
- if (D.__typename === "ReferenceValue") {
717
- const E = D;
718
- if (!E.nodeFunctionId) return "undefined";
719
- let _ = E.parameterIndex !== void 0 ? `/* @pos ${g} ${b} */ p_${k(E.nodeFunctionId)}_${E.parameterIndex}` : `/* @pos ${g} ${b} */ node_${k(E.nodeFunctionId)}`;
720
- return E.referencePath?.forEach((j) => {
721
- _ += `?.${j.path}`;
722
- }), _;
723
- }
724
- if (D.__typename === "LiteralValue")
725
- return `/* @pos ${g} ${b} */ ${JSON.stringify(D.value)}`;
726
- if (D.__typename === "NodeFunctionIdWrapper") {
727
- const E = D, _ = `p_${k(m.id)}_${b}`, j = c(E.id, S + " ");
728
- return `/* @pos ${g} ${b} */ (${_}) => {
729
- ${j}${S}}`;
730
- }
731
- return "undefined";
732
- }).join(", "), x = `node_${k(m.id)}`, C = `fn_${$.identifier?.replace(/::/g, "_")}`, P = N.includes("undefined");
733
- let M = `${S}const ${x} = ${C}(${N})${P ? " as any" : ""} ;
734
- `;
735
- return m.nextNodeId && (M += c(m.nextNodeId, S)), M;
736
- }, a = V(n), u = t?.map((g) => `declare function fn_${g.identifier?.replace(/::/g, "_")}${g.signature}`).join(`
737
- `), p = o.map((g) => g?.id ? c(g.id) : "").filter((g) => g !== "").join(`
738
- `), l = `${a}
739
- ${u}
740
-
741
- // --- Flow ---
742
- ${p}`, h = "index.ts", i = I(h, l), f = i.getSourceFile(h), T = i.languageService.getProgram().getSemanticDiagnostics(f).map((g) => {
743
- const S = Z(g.messageText, `
567
+ }, de = (t, n, i) => {
568
+ const r = U(t, n, i), g = "index.ts", l = P(g, r), p = l.getSourceFile(g), d = l.languageService.getProgram().getSemanticDiagnostics(p).map((a) => {
569
+ const F = Z(a.messageText, `
744
570
  `);
745
- if (S.includes("Argument of type 'undefined'") || S.includes("not assignable to type 'undefined'")) return null;
746
- let $, F;
747
- if (g.start !== void 0) {
748
- const C = f.getFullText().substring(0, g.start).match(/\/\* @pos ([^ ]+) (\d+) \*\/\s*$/);
749
- C && ($ = C[1], F = parseInt(C[2], 10));
571
+ let s, y;
572
+ if (a.start !== void 0) {
573
+ const e = p.getFullText(), o = Math.max(0, a.start - 300), f = Math.min(e.length, a.start), v = e.substring(o, f), T = /\/\* @pos ([^ ]+) (\d+) \*\//g;
574
+ let S, C = null, w = -1;
575
+ for (; (S = T.exec(v)) !== null; ) {
576
+ const x = o + S.index + S[0].length;
577
+ x <= a.start && x > w && (w = x, C = S);
578
+ }
579
+ C && (s = C[1], y = parseInt(C[2], 10));
750
580
  }
751
581
  return {
752
- message: S,
753
- code: g.code,
582
+ message: F,
583
+ code: a.code,
754
584
  severity: "error",
755
- nodeId: $,
756
- parameterIndex: F
585
+ nodeId: s,
586
+ parameterIndex: y
757
587
  };
758
- }).filter((g) => g !== null);
588
+ }).filter((a) => a !== null);
759
589
  return {
760
- isValid: !T.some((g) => g?.severity === "error"),
590
+ isValid: !d.some((a) => a?.severity === "error"),
761
591
  returnType: "void",
762
- diagnostics: T
592
+ diagnostics: d
763
593
  };
764
- }, he = (e, t, n) => {
765
- const r = JSON.stringify(t?.value), o = `
766
- ${V(n)}
767
- const testValue: ${e} = ${r};
768
- `, s = "index.ts", u = I(s, o).languageService.getSemanticDiagnostics(s).map((p) => {
769
- const l = y.flattenDiagnosticMessageText(p.messageText, `
770
- `), h = /\b([TRKV])\b/.test(l), i = l.includes("not assignable to parameter of type") && (l.includes("'{}'") || l.includes("undefined")) || l.includes("not assignable to type 'undefined'") || l.includes("not assignable to type 'void'") || l.includes("may be a mistake because neither type sufficiently overlaps");
594
+ }, ye = (t, n, i) => {
595
+ const r = JSON.stringify(n?.value), g = `
596
+ ${O(i)}
597
+ const testValue: ${t} = ${r};
598
+ `, l = "index.ts", c = P(l, g).languageService.getSemanticDiagnostics(l).map((d) => {
599
+ const a = m.flattenDiagnosticMessageText(d.messageText, `
600
+ `), F = a.includes("not assignable to parameter of type") && (a.includes("'{}'") || a.includes("undefined")) || a.includes("not assignable to type 'undefined'") || a.includes("not assignable to type 'void'") || a.includes("may be a mistake because neither type sufficiently overlaps");
771
601
  return {
772
- message: l,
773
- code: p.code,
774
- severity: h || i ? "warning" : "error"
602
+ message: a,
603
+ code: d.code,
604
+ severity: F ? "warning" : "error"
775
605
  };
776
606
  });
777
607
  return {
778
- isValid: !u.some((p) => p.severity === "error"),
608
+ isValid: !c.some((d) => d.severity === "error"),
779
609
  returnType: "void",
780
- diagnostics: u
610
+ diagnostics: c
781
611
  };
782
612
  };
783
613
  export {
784
- ce as DataTypeVariant,
785
- Fe as getFlowValidation,
786
- me as getNodeSuggestions,
787
- z as getNodeValidation,
788
- ye as getReferenceSuggestions,
789
- fe as getTypeFromValue,
790
- de as getTypeVariant,
791
- pe as getTypesFromNode,
614
+ H as DataTypeVariant,
615
+ de as getFlowValidation,
616
+ pe as getNodeSuggestions,
617
+ fe as getReferenceSuggestions,
618
+ ue as getTypeFromValue,
619
+ q as getTypeVariant,
620
+ ie as getTypesFromNode,
792
621
  ge as getValueFromType,
793
- ve as getValueSuggestions,
794
- he as getValueValidation
622
+ me as getValueSuggestions,
623
+ ye as getValueValidation
795
624
  };