@code0-tech/triangulum 0.7.0 → 0.8.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.
package/dist/index.d.ts CHANGED
@@ -1,10 +1 @@
1
- export * from './extraction/getTypeFromValue';
2
- export * from './extraction/getTypeVariant';
3
- export * from './extraction/getValueFromType';
4
- export * from './extraction/getTypesFromNode';
5
- export * from './extraction/getTypesFromFunction';
6
- export * from './suggestion/getNodeSuggestions';
7
- export * from './suggestion/getReferenceSuggestions';
8
- export * from './suggestion/getValueSuggestions';
9
- export * from './validation/getFlowValidation';
10
- export * from './validation/getValueValidation';
1
+ export {}
@@ -1,5 +1,5 @@
1
- import { LiteralValue } from '@code0-tech/sagittarius-graphql-types';
1
+ import { DataType, LiteralValue } from '@code0-tech/sagittarius-graphql-types';
2
2
  /**
3
3
  * Uses the TypeScript compiler to generate a precise type string from any runtime value.
4
4
  */
5
- export declare const getTypeFromValue: (value?: LiteralValue | null) => string;
5
+ export declare const getTypeFromValue: (value?: LiteralValue | null, dataTypes?: DataType[]) => string;
@@ -0,0 +1,19 @@
1
+ import { DataType } from '@code0-tech/sagittarius-graphql-types';
2
+ export declare enum DataTypeVariant {
3
+ PRIMITIVE = 0,
4
+ TYPE = 1,
5
+ ARRAY = 2,
6
+ OBJECT = 3,
7
+ NODE = 4
8
+ }
9
+ export interface TypeVariantResult {
10
+ identifier: string;
11
+ variant: DataTypeVariant;
12
+ }
13
+ /**
14
+ * Determines the variant of a given TypeScript types string or DataType(s) using the TS compiler.
15
+ * - If types is a string: returns one result with the string as identifier
16
+ * - If types is a DataType: returns one result with DataType.identifier
17
+ * - If types is a DataType[]: returns results for each DataType with their identifiers
18
+ */
19
+ export declare const getTypeVariant: (types?: string | DataType | DataType[], dataTypes?: DataType[]) => TypeVariantResult[];
@@ -0,0 +1,10 @@
1
+ export * from './extraction/getTypeFromValue';
2
+ export * from './extraction/getTypeVariant';
3
+ export * from './extraction/getValueFromType';
4
+ export * from './extraction/getTypesFromNode';
5
+ export * from './extraction/getTypesFromFunction';
6
+ export * from './suggestion/getNodeSuggestions';
7
+ export * from './suggestion/getReferenceSuggestions';
8
+ export * from './suggestion/getValueSuggestions';
9
+ export * from './validation/getFlowValidation';
10
+ export * from './validation/getValueValidation';
@@ -0,0 +1,16 @@
1
+ import { DataType, Flow, FunctionDefinition, NodeFunction, ReferenceValue } from '@code0-tech/sagittarius-graphql-types';
2
+ /**
3
+ * Calculates all available reference suggestions for a specific target parameter in a flow.
4
+ *
5
+ * This function analyzes the flow's generated source code to find all variables
6
+ * (node_ and p_ prefixed) that are in scope and compatible with the target parameter's
7
+ * expected type. For object types, it also extracts nested properties and their access paths.
8
+ *
9
+ * @param flow The flow configuration
10
+ * @param nodeId The ID of the node containing the target parameter
11
+ * @param targetIndex The index of the target parameter
12
+ * @param functions Available function definitions for type resolution
13
+ * @param dataTypes Available data type definitions
14
+ * @returns Array of ReferenceValue objects representing available suggestions
15
+ */
16
+ export declare const getReferenceSuggestions: (flow?: Flow, nodeId?: NodeFunction["id"], targetIndex?: number, functions?: FunctionDefinition[], dataTypes?: DataType[]) => ReferenceValue[];
@@ -18,7 +18,7 @@ export interface ValidationResult {
18
18
  /**
19
19
  * Minimal TypeScript library definitions for the virtual compiler environment.
20
20
  */
21
- export declare const MINIMAL_LIB = "\n interface Array<T> { \n [n: number]: T; \n length: number; \n }\n interface String { readonly length: number; }\n interface Number { }\n interface Boolean { }\n interface Object { }\n interface Function { }\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n interface IArguments { }\n interface RegExp { }\n type Record<K extends keyof any, T> = { [P in K]: T; };\n type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n";
21
+ export declare const MINIMAL_LIB = "\n interface Array<T> { \n [n: number]: T; \n length: number; \n }\n interface String { readonly length: number; }\n interface Number { }\n interface Boolean { }\n interface Object { }\n interface Function { }\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n interface IArguments { }\n interface RegExp { }\n";
22
22
  /**
23
23
  * Common configuration for the TypeScript compiler host across different validation/inference tasks.
24
24
  */
@@ -30,7 +30,7 @@ export declare const DEFAULT_COMPILER_OPTIONS: ts.CompilerOptions;
30
30
  /**
31
31
  * Extracts and returns common type and generic declarations from DATA_TYPES.
32
32
  */
33
- export declare function getSharedTypeDeclarations(dataTypes?: DataType[], genericType?: string): string;
33
+ export declare function getSharedTypeDeclarations(dataTypes?: DataType[], genericType?: string, useGenericDeclarations?: boolean): string;
34
34
  /**
35
35
  * Sanitizes an ID for use as a TypeScript variable name.
36
36
  */
@@ -1,9 +1,9 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("typescript");function R(){return R=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var a in i)({}).hasOwnProperty.call(i,a)&&(t[a]=i[a])}return t},R.apply(null,arguments)}var Y=!1;try{Y=typeof localStorage<"u"}catch{}var X=typeof process<"u",ee=Y&&typeof localStorage.getItem=="function"&&localStorage.getItem("DEBUG")||X&&process.env.DEBUG,J=ee?console.log:function(t){return""};function te(t,n,i,a,c){a===void 0&&(a={});var g=R({},q(i),a),f=re(t,n,g,i,c),p=f.languageServiceHost,u=f.updateFile,m=f.deleteFile,r=i.createLanguageService(p),d=r.getCompilerOptionsDiagnostics();if(d.length){var o=G(t,a,i);throw new Error(i.formatDiagnostics(d,o.compilerHost))}return{name:"vfs",sys:t,languageService:r,getSourceFile:function(e){var s;return(s=r.getProgram())==null?void 0:s.getSourceFile(e)},createFile:function(e,s){u(i.createSourceFile(e,s,g.target,!1))},updateFile:function(e,s,l){var T=r.getProgram().getSourceFile(e);if(!T)throw new Error("Did not find a source file for "+e);var h=T.text,v=l??i.createTextSpan(0,h.length),N=h.slice(0,v.start)+s+h.slice(v.start+v.length),E=i.updateSourceFile(T,N,{span:v,newLength:s.length});u(E)},deleteFile:function(e){var s=r.getProgram().getSourceFile(e);s&&m(s)}}}function O(t){throw new Error("Method '"+t+"' is not implemented.")}function I(t,n){return function(){for(var i=arguments.length,a=new Array(i),c=0;c<i;c++)a[c]=arguments[c];var g=n.apply(void 0,a),f=typeof g=="string"?g.slice(0,80)+"...":g;return J.apply(void 0,["> "+t].concat(a)),J("< "+f),g}}var q=function(n){return R({},n.getDefaultCompilerOptions(),{jsx:n.JsxEmit.React,strict:!0,esModuleInterop:!0,module:n.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},n.versionMajorMinor&&Number(n.versionMajorMinor.split(".")[0])>=6?{ignoreDeprecations:"6.0"}:{moduleResolution:n.ModuleResolutionKind.NodeJs})},K=function(n){return n.replace("/","/lib.").toLowerCase()};function ne(t){return{args:[],createDirectory:function(){return O("createDirectory")},directoryExists:I("directoryExists",function(n){return Array.from(t.keys()).some(function(i){return i.startsWith(n)})}),exit:function(){return O("exit")},fileExists:I("fileExists",function(n){return t.has(n)||t.has(K(n))}),getCurrentDirectory:function(){return"/"},getDirectories:function(){return[]},getExecutingFilePath:function(){return O("getExecutingFilePath")},readDirectory:I("readDirectory",function(n){return n==="/"?Array.from(t.keys()):[]}),readFile:I("readFile",function(n){var i;return(i=t.get(n))!=null?i:t.get(K(n))}),resolvePath:function(i){return i},newLine:`
2
- `,useCaseSensitiveFileNames:!0,write:function(){return O("write")},writeFile:function(i,a){t.set(i,a)},deleteFile:function(i){t.delete(i)}}}function G(t,n,i){var a=new Map,c=function(p){return a.set(p.fileName,p),p},g={compilerHost:R({},t,{getCanonicalFileName:function(p){return p},getDefaultLibFileName:function(){return"/"+i.getDefaultLibFileName(n)},getNewLine:function(){return t.newLine},getSourceFile:function(p,u){var m;return a.get(p)||c(i.createSourceFile(p,t.readFile(p),(m=u??n.target)!=null?m:q(i).target,!1))},useCaseSensitiveFileNames:function(){return t.useCaseSensitiveFileNames}}),updateFile:function(p){var u=a.has(p.fileName);return t.writeFile(p.fileName,p.text),a.set(p.fileName,p),u},deleteFile:function(p){var u=a.has(p.fileName);return a.delete(p.fileName),t.deleteFile(p.fileName),u}};return g}function re(t,n,i,a,c){var g=[].concat(n),f=G(t,i,a),p=f.compilerHost,u=f.updateFile,m=f.deleteFile,r=new Map,d=0,o=R({},p,{getProjectVersion:function(){return d.toString()},getCompilationSettings:function(){return i},getCustomTransformers:function(){return c},getScriptFileNames:function(){return g.slice()},getScriptSnapshot:function(s){var l=t.readFile(s);if(l&&typeof l=="string")return a.ScriptSnapshot.fromString(l)},getScriptVersion:function(s){return r.get(s)||"0"},writeFile:t.writeFile}),y={languageServiceHost:o,updateFile:function(s){d++,r.set(s.fileName,d.toString()),g.includes(s.fileName)||g.push(s.fileName),u(s)},deleteFile:function(s){d++,r.set(s.fileName,d.toString());var l=g.indexOf(s.fileName);l!==-1&&g.splice(l,1),m(s)}};return y}var j=(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))(j||{});const H=(t,n)=>{const a=`
3
- ${k(n)}
4
- type TargetType = ${t};
5
- const val: TargetType = {} as any;
6
- `,c="index.ts",g=L(c,a),f=g.getSourceFile(c),u=g.languageService.getProgram().getTypeChecker();let m=1;const r=d=>{if(F.isVariableDeclaration(d)&&d.name.getText()==="val"){const o=u.getTypeAtLocation(d);o.getCallSignatures().length>0?m=4:u.isArrayType(o)?m=2:o.isStringLiteral()||o.isNumberLiteral()||(o.getFlags()&(F.TypeFlags.String|F.TypeFlags.Number|F.TypeFlags.Boolean|F.TypeFlags.EnumLiteral|F.TypeFlags.BigInt|F.TypeFlags.ESSymbol))!==0?m=0:o.isClassOrInterface()||(o.getFlags()&F.TypeFlags.Object)!==0?m=3:m=1}F.forEachChild(d,r)};return r(f),m},Q=t=>{const n=t.signature;if(!n)return{parameters:[],returnType:"any"};let i=0;if(n.trim().startsWith("<")){let r=0;for(let d=0;d<n.length;d++){const o=n[d];if(o==="<")r++;else if(o===">"&&(r--,r===0)){i=d+1;break}}}const a=n.indexOf("(",i);if(a===-1)return{parameters:[],returnType:"any"};let c=-1,g=0;for(let r=a;r<n.length;r++){const d=n[r];if(d==="(")g++;else if(d===")"&&(g--,g===0)){c=r;break}}if(c===-1)return{parameters:[],returnType:"any"};const f=n.substring(a+1,c);let p=n.substring(c+1).trim();p.startsWith(":")&&(p=p.substring(1).trim());const u=p||"void",m=[];if(f.trim()){let r="",d=0,o=0,y=0,e=0;const s=l=>{let T=-1,h=0,v=0,N=0,E=0;for(let D=0;D<l.length;D++){const S=l[D];if(S==="{")h++;else if(S==="}")h--;else if(S==="[")v++;else if(S==="]")v--;else if(S==="(")N++;else if(S===")")N--;else if(S==="<")E++;else if(S===">")E--;else if(S===":"&&h===0&&v===0&&N===0&&E===0){T=D;break}}T!==-1?m.push(l.substring(T+1).trim()):m.push("any")};for(const l of f){if(l==="(")d++;else if(l===")")d--;else if(l==="<")o++;else if(l===">")o--;else if(l==="{")y++;else if(l==="}")y--;else if(l==="[")e++;else if(l==="]")e--;else if(l===","&&d===0&&o===0&&y===0&&e===0){s(r.trim()),r="";continue}r+=l}r.trim()&&s(r.trim())}return{parameters:m,returnType:u}},ie=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`typescript`);c=s(c);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}var u=!1;try{u=typeof localStorage<`u`}catch{}var d=typeof process<`u`,f=u&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||d&&process.env.DEBUG?console.log:function(e){return``};function p(e,t,n,r,i){r===void 0&&(r={});var a=l({},g(n),r),o=b(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,u=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=y(e,r,n);throw Error(n.formatDiagnostics(f,p.compilerHost))}return{name:`vfs`,sys:e,languageService:d,getSourceFile:function(e){return d.getProgram()?.getSourceFile(e)},createFile:function(e,t){c(n.createSourceFile(e,t,a.target,!1))},updateFile:function(e,t,r){var i=d.getProgram().getSourceFile(e);if(!i)throw Error(`Did not find a source file for `+e);var a=i.text,o=r??n.createTextSpan(0,a.length),s=a.slice(0,o.start)+t+a.slice(o.start+o.length);c(n.updateSourceFile(i,s,{span:o,newLength:t.length}))},deleteFile:function(e){var t=d.getProgram().getSourceFile(e);t&&u(t)}}}function m(e){throw Error(`Method '`+e+`' is not implemented.`)}function h(e,t){return function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=t.apply(void 0,r),o=typeof a==`string`?a.slice(0,80)+`...`:a;return f.apply(void 0,[`> `+e].concat(r)),f(`< `+o),a}}var g=function(e){return l({},e.getDefaultCompilerOptions(),{jsx:e.JsxEmit.React,strict:!0,esModuleInterop:!0,module:e.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},e.versionMajorMinor&&Number(e.versionMajorMinor.split(`.`)[0])>=6?{ignoreDeprecations:`6.0`}:{moduleResolution:e.ModuleResolutionKind.NodeJs})},_=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function v(e){return{args:[],createDirectory:function(){return m(`createDirectory`)},directoryExists:h(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return m(`exit`)},fileExists:h(`fileExists`,function(t){return e.has(t)||e.has(_(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return m(`getExecutingFilePath`)},readDirectory:h(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:h(`readFile`,function(t){return e.get(t)??e.get(_(t))}),resolvePath:function(e){return e},newLine:`
2
+ `,useCaseSensitiveFileNames:!0,write:function(){return m(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function y(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:l({},e,{getCanonicalFileName:function(e){return e},getDefaultLibFileName:function(){return`/`+n.getDefaultLibFileName(t)},getNewLine:function(){return e.newLine},getSourceFile:function(a,o){return r.get(a)||i(n.createSourceFile(a,e.readFile(a),o??t.target??g(n).target,!1))},useCaseSensitiveFileNames:function(){return e.useCaseSensitiveFileNames}}),updateFile:function(t){var n=r.has(t.fileName);return e.writeFile(t.fileName,t.text),r.set(t.fileName,t),n},deleteFile:function(t){var n=r.has(t.fileName);return r.delete(t.fileName),e.deleteFile(t.fileName),n}}}function b(e,t,n,r,i){var a=[].concat(t),o=y(e,n,r),s=o.compilerHost,c=o.updateFile,u=o.deleteFile,d=new Map,f=0;return{languageServiceHost:l({},s,{getProjectVersion:function(){return f.toString()},getCompilationSettings:function(){return n},getCustomTransformers:function(){return i},getScriptFileNames:function(){return a.slice()},getScriptSnapshot:function(t){var n=e.readFile(t);if(n&&typeof n==`string`)return r.ScriptSnapshot.fromString(n)},getScriptVersion:function(e){return d.get(e)||`0`},writeFile:e.writeFile}),updateFile:function(e){f++,d.set(e.fileName,f.toString()),a.includes(e.fileName)||a.push(e.fileName),c(e)},deleteFile:function(e){f++,d.set(e.fileName,f.toString());var t=a.indexOf(e.fileName);t!==-1&&a.splice(t,1),u(e)}}}var x=function(e){return 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}({}),S=(e,t)=>{let n=D(t),r=typeof e==`string`,i=Array.isArray(e),a=i?e:r?[{identifier:e,type:e}]:[e],o=i?e.map(e=>e.identifier):r?[e]:[e.identifier],s=[];for(let t=0;t<a.length;t++){let i=a[t],l=o[t],u=r?e:i.type,d=`
3
+ ${n}
4
+ ${u?`type TargetType = ${u};`:``}
5
+ const val: TargetType = {} as any;
6
+ `,f=`index.ts`,p=T(f,d),m=p.getSourceFile(f),h=p.languageService.getProgram().getTypeChecker(),g=x.TYPE,_=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText()===`val`){let t=h.getTypeAtLocation(e);g=t.getCallSignatures().length>0?x.NODE:h.isArrayType(t)?x.ARRAY:t.isStringLiteral()||t.isNumberLiteral()||(t.getFlags()&(c.default.TypeFlags.String|c.default.TypeFlags.Number|c.default.TypeFlags.Boolean|c.default.TypeFlags.EnumLiteral|c.default.TypeFlags.BigInt|c.default.TypeFlags.ESSymbol))!==0?x.PRIMITIVE:t.isClassOrInterface()||(t.getFlags()&c.default.TypeFlags.Object)!==0?x.OBJECT:x.TYPE}c.default.forEachChild(e,_)};_(m),s.push({identifier:l,variant:g})}return s},C=e=>{let t=e.signature;if(!t)return{parameters:[],returnType:`any`};let n=0;if(t.trim().startsWith(`<`)){let e=0;for(let r=0;r<t.length;r++){let i=t[r];if(i===`<`)e++;else if(i===`>`&&(e--,e===0)){n=r+1;break}}}let r=t.indexOf(`(`,n);if(r===-1)return{parameters:[],returnType:`any`};let i=-1,a=0;for(let e=r;e<t.length;e++){let n=t[e];if(n===`(`)a++;else if(n===`)`&&(a--,a===0)){i=e;break}}if(i===-1)return{parameters:[],returnType:`any`};let o=t.substring(r+1,i),s=t.substring(i+1).trim();s.startsWith(`:`)&&(s=s.substring(1).trim());let c=s||`void`,l=[];if(o.trim()){let e=``,t=0,n=0,r=0,i=0,a=e=>{let t=-1,n=0,r=0,i=0,a=0;for(let o=0;o<e.length;o++){let s=e[o];if(s===`{`)n++;else if(s===`}`)n--;else if(s===`[`)r++;else if(s===`]`)r--;else if(s===`(`)i++;else if(s===`)`)i--;else if(s===`<`)a++;else if(s===`>`)a--;else if(s===`:`&&n===0&&r===0&&i===0&&a===0){t=o;break}}t===-1?l.push(`any`):l.push(e.substring(t+1).trim())};for(let s of o){if(s===`(`)t++;else if(s===`)`)t--;else if(s===`<`)n++;else if(s===`>`)n--;else if(s===`{`)r++;else if(s===`}`)r--;else if(s===`[`)i++;else if(s===`]`)i--;else if(s===`,`&&t===0&&n===0&&r===0&&i===0){a(e.trim()),e=``;continue}e+=s}e.trim()&&a(e.trim())}return{parameters:l,returnType:c}},w=`
7
7
  interface Array<T> {
8
8
  [n: number]: T;
9
9
  length: number;
@@ -17,41 +17,33 @@
17
17
  interface NewableFunction extends Function {}
18
18
  interface IArguments { }
19
19
  interface RegExp { }
20
- type Record<K extends keyof any, T> = { [P in K]: T; };
21
- type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
22
- `;function L(t,n){const i=new Map;i.set(t,n),i.set("lib.codezero.d.ts",ie);const a=ne(i);return te(a,[t,"lib.codezero.d.ts"],F,ae)}const ae={target:F.ScriptTarget.Latest,lib:["lib.codezero.d.ts"],noEmit:!0,strictNullChecks:!0};function k(t,n="any"){const i=Array.from(new Set(t?.flatMap(c=>c.genericKeys||[]))).map(c=>`type ${c} = ${n};`).join(`
23
- `),a=t?.map(c=>`type ${c.identifier}${(c.genericKeys?.length??0)>0?`<${c.genericKeys?.join(",")}>`:""} = ${c.type};`).join(`
24
- `);return`${i}
25
- ${a}`}const A=t=>t.replace(/[^a-zA-Z0-9]/g,"_");function U(t,n,i,a=!1){const c=t?.nodes?.nodes||[],g=new Map(n?.map(e=>[e.identifier,e])),f=new Set,p=(e,s,l)=>{const T=c.find(D=>D?.id===e);if(!T||!T.functionDefinition?.identifier)return"undefined";const v=(T.parameters?.nodes||[]).map((D,S)=>{const w=D.value;if(!w)return a?`/* @pos ${e} ${S} */ {}`:`/* @pos ${e} ${S} */ undefined`;if(w.__typename==="ReferenceValue"){const _=w;if(!_.nodeFunctionId)return`/* @pos ${e} ${S} */ undefined`;let C=_.inputIndex!==void 0?`p_${A(_.nodeFunctionId)}_${_.parameterIndex}[${_.inputIndex}]`:`node_${A(_.nodeFunctionId)}`;return _.referencePath?.forEach($=>{C+=`?.${$.path}`}),`/* @pos ${e} ${S} */ ${C}`}return w.__typename==="LiteralValue"?`/* @pos ${e} ${S} */ ${JSON.stringify(w.value)}`:w.__typename==="NodeFunctionIdWrapper"?p(w.id,e,S):a?`/* @pos ${e} ${S} */ ({} as any)`:`/* @pos ${e} ${S} */ undefined`}).join(", "),E=`${`fn_${T.functionDefinition.identifier.replace(/::/g,"_")}`}(${v})`;return s!==void 0&&l!==void 0?`${E}`:E},u=(e,s="")=>{if(f.has(e))return"";const l=c.find(C=>C?.id===e);if(!l||!l.functionDefinition)return"";f.add(e);const T=g.get(l.functionDefinition.identifier);if(!T)return`${s}// Error: Function ${l.functionDefinition.identifier} not found
26
- `;let h={parameters:[]};a||(h=Q(T));const N=(l.parameters?.nodes||[]).map((C,$)=>{const x=C.value;if(!x)return a?`/* @pos ${e} ${$} */ {}`:`/* @pos ${e} ${$} */ undefined`;if(x.__typename==="ReferenceValue"){const b=x;if(!b.nodeFunctionId)return`/* @pos ${e} ${$} */ undefined`;let P=b.inputIndex!==void 0?`p_${A(b.nodeFunctionId)}_${b.parameterIndex}[${b.inputIndex}]`:`node_${A(b.nodeFunctionId)}`;return b.referencePath?.forEach(V=>{P+=`?.${V.path}`}),`/* @pos ${e} ${$} */ ${P}`}if(x.__typename==="LiteralValue")return`/* @pos ${e} ${$} */ ${JSON.stringify(x.value)}`;if(x.__typename==="NodeFunctionIdWrapper"){const b=x;if(a){const P=`p_${A(e)}_${$}`,V=u(b.id,s+" ");return`/* @pos ${e} ${$} */ (...${P}) => {
27
- ${V}${s}}`}else{const P=h.parameters[$];if(P?H(P,i)===j.NODE:!1){const M=`p_${A(e)}_${$}`,B=u(b.id,s+" ");return`/* @pos ${e} ${$} */ (...${M}) => {
28
- ${B}${s}}`}else{const M=p(b.id,e,$);return`/* @pos ${e} ${$} */ ${M}`}}}return a?`/* @pos ${e} ${$} */ {}`:`/* @pos ${e} ${$} */ undefined`}).join(", "),E=`node_${A(l.id)}`,D=`fn_${l?.functionDefinition?.identifier?.replace(/::/g,"_")}`,S=N.includes("undefined"),w=l.functionDefinition.identifier==="std::control::return";let _=`${s}${w?"return ":`const ${E} = `}${D}(${N}) ;
29
- `;return l.nextNodeId&&(_+=u(l.nextNodeId,s)),_},m=k(i),r=n?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,"_")}${e.signature}`).join(`
30
- `),d=new Set(c.map(e=>e?.nextNodeId).filter(e=>!!e)),o=new Set;c.forEach(e=>e?.parameters?.nodes?.forEach(s=>{s?.value?.__typename==="NodeFunctionIdWrapper"&&s.value.id&&o.add(s.value.id)}));const y=c.filter(e=>e?.id&&!d.has(e.id)&&!o.has(e.id)).map(e=>u(e.id)).join(`
31
- `);return`${m}
32
- ${r}
33
-
34
- // --- Flow ---
35
- ${y}`}function oe(t,n,i){const a=U(t,n,i,!0),c="index.ts",g=L(c,a),f=g.getSourceFile(c),u=g.languageService.getProgram().getTypeChecker(),m=new Map,r=new Map,d=new Map;(t?.nodes?.nodes||[]).forEach(e=>{e?.id&&d.set(A(e.id),e)});const y=e=>{if(F.isVariableDeclaration(e)&&e.name.getText().startsWith("node_")){const s=e.name.getText().replace("node_",""),l=u.getTypeAtLocation(e);if(m.set(s,u.typeToString(l,e,F.TypeFormatFlags.NoTruncation)),e.initializer&&F.isCallExpression(e.initializer)){const T=u.getResolvedSignature(e.initializer);if(T){const h=T.getParameters().map(v=>{const N=u.getTypeOfSymbolAtLocation(v,e.initializer);return u.typeToString(N,e.initializer,F.TypeFormatFlags.NoTruncation)});r.set(s,h)}}}if(F.isReturnStatement(e)&&e.expression&&F.isCallExpression(e.expression)){const s=e.expression;u.getResolvedSignature(s)}F.forEachChild(e,y)};return y(f),{nodes:m,parameters:r}}const se=t=>{const i=`const tempValue = ${JSON.stringify(t?.value)??"any"};`,a="index.ts",c=L(a,i),g=c.getSourceFile(a),p=c.languageService.getProgram().getTypeChecker();let u="any";const m=r=>{if(F.isVariableDeclaration(r)&&r.name.getText()==="tempValue"){const d=p.getTypeAtLocation(r);u=p.typeToString(d,r,F.TypeFormatFlags.NoTruncation|F.TypeFormatFlags.UseFullyQualifiedType)}F.forEachChild(r,m)};return m(g),u},ce=(t,n)=>{const i=`
36
- ${k(n)}
37
- type Target = ${t};
38
- `,a="index.ts",c=L(a,i),g=c.getSourceFile(a),p=c.languageService.getProgram().getTypeChecker(),u=g.statements.find(o=>F.isTypeAliasDeclaration(o)&&o.name.text==="Target");if(!u)return{__typename:"LiteralValue",value:null};const m=p.getTypeAtLocation(u.type),r=(o,y,e=new Set)=>{if(e.has(o))return null;e.add(o);const s=o.getFlags();if(o.isUnion()){if(y.type,F.isTypeAliasDeclaration(y)&&y.type&&F.isUnionTypeNode(y.type)){const h=p.getTypeFromTypeNode(y.type.types[0]);return r(h,y,e)}const l=o.types.filter(h=>{const v=h.getFlags();return!(v&F.TypeFlags.Undefined)&&!(v&F.TypeFlags.Null)}),T=l.length>0?l[0]:o.types[0];return r(T,y,e)}if(s&F.TypeFlags.StringLiteral)return o.value;if(s&F.TypeFlags.String)return"";if(s&F.TypeFlags.NumberLiteral)return o.value;if(s&F.TypeFlags.Number)return 0;if(s&F.TypeFlags.BooleanLiteral)return o.intrinsicName==="true";if(s&F.TypeFlags.Boolean)return!1;if(p.isArrayType(o)){const T=o.typeArguments?.[0]||p.getAnyType(),h=r(T,y,e);return h!==null?[h]:[]}if(o.isClassOrInterface()||s&F.TypeFlags.Object||o.getProperties().length>0){const l={};return o.getProperties().forEach(h=>{const v=p.getTypeOfSymbolAtLocation(h,y);v&&(l[h.getName()]=r(v,y,e))}),l}return null};return{__typename:"LiteralValue",value:r(m,u)}},le=(t,n,i)=>{if(!t)return{parameters:[],returnType:"any"};const a=t.id||"temp_node_id",c={...t,id:a,parameters:{...t.parameters,nodes:t.parameters?.nodes?.map(e=>e?.value?e:{...e,value:null})||[]}},g=a+"_params",f={...c,id:g,parameters:{...c.parameters,nodes:c.parameters.nodes.map(e=>e.value?.__typename==="LiteralValue"&&e.value.value!==null&&typeof e.value.value!="object"?{...e,value:null}:e)}},u=oe({nodes:{__typename:"NodeFunctionConnection",nodes:[c,f]}},n,i),m=A(a),r=A(g),d=u.parameters.get(m)||[],o=u.parameters.get(r)||[];return{parameters:d.map((e,s)=>{const l=o[s];return l&&l!=="any"&&l!=="unknown"?l:e}),returnType:u.nodes.get(m)||"any"}},ue=(t,n,i)=>{let a=n;const c=t?H(t,i):null;if(t&&n&&c!==j.NODE){let g=function(y){const e=y.trim().match(/^<([^>]+)>/);return e?e[1].split(",").map(s=>s.trim()).filter(Boolean).length:0};const f=`
39
- ${k(i)}
40
- type TargetType = ${t};
41
- ${n?.map((y,e)=>`
42
- declare function Fu${e}${y.signature};
43
- type F${e} = ReturnType<typeof Fu${e}${g(y.signature)>0?`<${Array(g(y.signature)).fill("any").join(", ")}>`:""}>;
20
+ `;function T(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,w),p(v(n),[e,`lib.codezero.d.ts`],c.default,E)}var E={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function D(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]))).map(e=>`type ${e} = ${t};`).join(`
21
+ `),i=e?.map(e=>`type ${e.identifier}${(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``} = ${e.type};`).join(`
22
+ `);return`${n?r:``}\n${i}`}var O=e=>e.replace(/[^a-zA-Z0-9]/g,`_`);function k(e,t,n,r=!1){let i=e?.nodes?.nodes||[],a=new Map(t?.map(e=>[e.identifier,e])),o=new Set,s=(e,t,n)=>{let a=i.find(t=>t?.id===e);if(!a||!a.functionDefinition?.identifier)return`undefined`;let o=(a.parameters?.nodes||[]).map((t,n)=>{let i=t.value;if(!i)return r?`/* @pos ${e} ${n} */ {}`:`/* @pos ${e} ${n} */ undefined`;if(i.__typename===`ReferenceValue`){let t=i;if(!t.nodeFunctionId)return`/* @pos ${e} ${n} */ undefined`;let r=t.inputIndex===void 0?`node_${O(t.nodeFunctionId)}`:`p_${O(t.nodeFunctionId)}_${t.parameterIndex}[${t.inputIndex}]`;return t.referencePath?.forEach(e=>{r+=`?.${e.path}`}),`/* @pos ${e} ${n} */ ${r}`}return i.__typename===`LiteralValue`?`/* @pos ${e} ${n} */ ${JSON.stringify(i.value)}`:i.__typename===`NodeFunctionIdWrapper`?s(i.id,e,n):r?`/* @pos ${e} ${n} */ ({} as any)`:`/* @pos ${e} ${n} */ undefined`}).join(`, `),c=`${`fn_${a.functionDefinition.identifier.replace(/::/g,`_`)}`}(${o})`;return t!==void 0&&n!==void 0?`${c}`:c},c=(e,t=``)=>{if(o.has(e))return``;let l=i.find(t=>t?.id===e);if(!l||!l.functionDefinition)return``;o.add(e);let u=a.get(l.functionDefinition.identifier);if(!u)return`${t}// Error: Function ${l.functionDefinition.identifier} not found\n`;let d={parameters:[]};r||(d=C(u));let f=(l.parameters?.nodes||[]).map((i,a)=>{let o=i.value;if(!o)return r?`/* @pos ${e} ${a} */ {}`:`/* @pos ${e} ${a} */ undefined`;if(o.__typename===`ReferenceValue`){let t=o;if(!t.nodeFunctionId)return`/* @pos ${e} ${a} */ undefined`;let n=t.inputIndex===void 0?`node_${O(t.nodeFunctionId)}`:`p_${O(t.nodeFunctionId)}_${t.parameterIndex}[${t.inputIndex}]`;return t.referencePath?.forEach(e=>{n+=`?.${e.path}`}),`/* @pos ${e} ${a} */ ${n}`}if(o.__typename===`LiteralValue`)return`/* @pos ${e} ${a} */ ${JSON.stringify(o.value)}`;if(o.__typename===`NodeFunctionIdWrapper`){let i=o;if(r)return`/* @pos ${e} ${a} */ (...${`p_${O(e)}_${a}`}) => {\n${c(i.id,t+` `)}${t}}`;{let r=d.parameters[a];return r&&S(r,n)[0].variant===x.NODE?`/* @pos ${e} ${a} */ (...${`p_${O(e)}_${a}`}) => {\n${c(i.id,t+` `)}${t}}`:`/* @pos ${e} ${a} */ ${s(i.id,e,a)}`}}return r?`/* @pos ${e} ${a} */ {}`:`/* @pos ${e} ${a} */ undefined`}).join(`, `),p=`node_${O(l.id)}`,m=`fn_${l?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;f.includes(`undefined`);let h=`${t}${l.functionDefinition.identifier===`std::control::return`?`return `:`const ${p} = `}${m}(${f}) ;\n`;return l.nextNodeId&&(h+=c(l.nextNodeId,t)),h},l=D(n),u=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
23
+ `),d=new Set(i.map(e=>e?.nextNodeId).filter(e=>!!e)),f=new Set;return i.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`NodeFunctionIdWrapper`&&e.value.id&&f.add(e.value.id)})),`${l}\n${u}\n\n// --- Flow ---\n${i.filter(e=>e?.id&&!d.has(e.id)&&!f.has(e.id)).map(e=>c(e.id)).join(`
24
+ `)}`}function A(e,t,n){let r=k(e,t,n,!0),i=`index.ts`,a=T(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getTypeChecker(),l=new Map,u=new Map,d=new Map;(e?.nodes?.nodes||[]).forEach(e=>{e?.id&&d.set(O(e.id),e)});let f=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText().startsWith(`node_`)){let t=e.name.getText().replace(`node_`,``),n=s.getTypeAtLocation(e);if(l.set(t,s.typeToString(n,e,c.default.TypeFormatFlags.NoTruncation)),e.initializer&&c.default.isCallExpression(e.initializer)){let n=s.getResolvedSignature(e.initializer);if(n){let r=n.getParameters().map(t=>{let n=s.getTypeOfSymbolAtLocation(t,e.initializer);return s.typeToString(n,e.initializer,c.default.TypeFormatFlags.NoTruncation)});u.set(t,r)}}}if(c.default.isReturnStatement(e)&&e.expression&&c.default.isCallExpression(e.expression)){let t=e.expression;s.getResolvedSignature(t)}c.default.forEachChild(e,f)};return f(o),{nodes:l,parameters:u}}var j=(e,t)=>{let n=JSON.stringify(e?.value);if(!n)return`any`;let r=`
25
+ ${D(t,`unknown`)}
26
+ const tempValue = ${n??`any`};
27
+ `,i=`index.ts`,a=T(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getTypeChecker(),l=`any`,u=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let t=s.getTypeAtLocation(e),n=s.getSymbolsInScope(e,c.default.SymbolFlags.TypeAlias),r=t=>{if(t.isUnion()){let e=t.types.map(r);return Array.from(new Set(e)).sort().join(` | `)}if(s.isArrayType(t)){let e=t.typeArguments||[],n=e.length>0?r(e[0]):`any`;return e[0]?.isUnion()?`(${n})[]`:`${n}[]`}if(t.getFlags()&c.default.TypeFlags.Object||t.isClassOrInterface()){let n=s.getPropertiesOfType(t);if(n.length>0)return`{ ${n.map(t=>{let n=s.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${r(n)}`}).join(`, `)} }`}let i=n.filter(e=>s.isTypeAssignableTo(t,s.getDeclaredTypeOfSymbol(e)));return i.length>0?i.sort((e,t)=>{let n=s.getDeclaredTypeOfSymbol(e),r=s.getDeclaredTypeOfSymbol(t),i=s.isTypeAssignableTo(n,r),a=s.isTypeAssignableTo(r,n);return i&&!a?-1:a&&!i?1:e.getName().length-t.getName().length||e.getName().localeCompare(t.getName())})[0].getName():s.typeToString(t,e)};l=r(t)}c.default.forEachChild(e,u)};return u(o),l},M=(e,t)=>{let n=`
28
+ ${D(t)}
29
+ type Target = ${e};
30
+ `,r=`index.ts`,i=T(r,n),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=a.statements.find(e=>c.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!s)return{__typename:`LiteralValue`,value:null};let l=o.getTypeAtLocation(s.type),u=(e,t,n=new Set)=>{if(n.has(e))return null;n.add(e);let r=e.getFlags();if(e.isUnion()){if(t.type,c.default.isTypeAliasDeclaration(t)&&t.type&&c.default.isUnionTypeNode(t.type))return u(o.getTypeFromTypeNode(t.type.types[0]),t,n);let r=e.types.filter(e=>{let t=e.getFlags();return!(t&c.default.TypeFlags.Undefined)&&!(t&c.default.TypeFlags.Null)});return u(r.length>0?r[0]:e.types[0],t,n)}if(r&c.default.TypeFlags.StringLiteral)return e.value;if(r&c.default.TypeFlags.String)return``;if(r&c.default.TypeFlags.NumberLiteral)return e.value;if(r&c.default.TypeFlags.Number)return 0;if(r&c.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(r&c.default.TypeFlags.Boolean)return!1;if(o.isArrayType(e)){let r=u(e.typeArguments?.[0]||o.getAnyType(),t,n);return r===null?[]:[r]}if(e.isClassOrInterface()||r&c.default.TypeFlags.Object||e.getProperties().length>0){let r={};return e.getProperties().forEach(e=>{let i=o.getTypeOfSymbolAtLocation(e,t);i&&(r[e.getName()]=u(i,t,n))}),r}return null};return{__typename:`LiteralValue`,value:u(l,s)}},N=(e,t,n)=>{if(!e)return{parameters:[],returnType:`any`};let r=e.id||`temp_node_id`,i={...e,id:r,parameters:{...e.parameters,nodes:e.parameters?.nodes?.map(e=>e?.value?e:{...e,value:null})||[]}},a=r+`_params`,o=A({id:`gid://sagittarius/Flow/0`,nodes:{__typename:`NodeFunctionConnection`,nodes:[i,{...i,id:a,parameters:{...i.parameters,nodes:i.parameters.nodes.map(e=>e.value?.__typename===`LiteralValue`&&e.value.value!==null&&typeof e.value.value!=`object`?{...e,value:null}:e)}}]}},t,n),s=O(r),c=O(a),l=o.parameters.get(s)||[],u=o.parameters.get(c)||[];return{parameters:l.map((e,t)=>{let n=u[t];return n&&n!==`any`&&n!==`unknown`?n:e}),returnType:o.nodes.get(s)||`any`}},P=(e,t,n)=>{let r=t,i=e?S(e,n)[0].variant:null;if(e&&t&&i!==x.NODE){function i(e){let t=e.trim().match(/^<([^>]+)>/);return t?t[1].split(`,`).map(e=>e.trim()).filter(Boolean).length:0}let a=`
31
+ ${D(n)}
32
+ type TargetType = ${e};
33
+ ${t?.map((e,t)=>`
34
+ declare function Fu${t}${e.signature};
35
+ type F${t} = ReturnType<typeof Fu${t}${i(e.signature)>0?`<${Array(i(e.signature)).fill(`any`).join(`, `)}>`:``}>;
44
36
  `).join(`
45
37
  `)}
46
- ${n?.map((y,e)=>`const check${e}: TargetType = {} as F${e};`).join(`
38
+ ${t?.map((e,t)=>`const check${t}: TargetType = {} as F${t};`).join(`
47
39
  `)}
48
- `,p="index.ts",u=L(p,f),m=u.getSourceFile(p),d=u.languageService.getProgram().getSemanticDiagnostics(),o=new Set;d.forEach(y=>{y.file===m&&y.start!==void 0&&o.add(m.getLineAndCharacterOfPosition(y.start).line)}),a=n.filter((y,e)=>{const s=`const check${e}: TargetType = {} as F${e};`,T=f.split(`
49
- `).findIndex(h=>h.includes(s));return T!==-1&&!o.has(T)})}return a?.map(g=>({__typename:"NodeFunction",id:"gid://sagittarius/NodeFunction/1",functionDefinition:{__typename:"FunctionDefinition",id:g.id,identifier:g.identifier},parameters:{__typename:"NodeParameterConnection",nodes:(g.parameterDefinitions?.nodes||[]).map(f=>({__typename:"NodeParameter",parameterDefinition:{__typename:"ParameterDefinition",id:f?.id,identifier:f?.identifier},value:null}))}})).filter(g=>g!==null)??[]},ge=(t,n,i,a,c)=>{const g=U(t,a,c,!0),f="index.ts",p=L(f,g),u=p.getSourceFile(f),r=p.languageService.getProgram().getTypeChecker(),d=u.getFullText(),o=`/* @pos ${n} ${i} */`,e=d.indexOf(o)+o.length;function s(_,C){let $=_;return F.forEachChild(_,x=>{x.getStart(u,!0)<=C&&x.getEnd()>=C&&($=s(x,C))}),$}const T=s(u,e);let h;if(F.isCallExpression(T)&&(h=T),!h)return[];const v=r.getResolvedSignature(h);if(!v)return[];const N=v.getParameters(),E=N[i]||N[N.length-1],D=r.getTypeOfSymbolAtLocation(E,T),S=r.getSymbolsInScope(T,F.SymbolFlags.Variable),w=[];return S.forEach(_=>{const C=_.getName();if(!C.startsWith("node_")&&!C.startsWith("p_"))return;const $=_.valueDeclaration||_.declarations?.[0];if(!$||$.getEnd()>=e)return;const x=r.getTypeOfSymbolAtLocation(_,T);if(C.startsWith("node_")){if((x.flags&F.TypeFlags.Void)===0&&r.isTypeAssignableTo(x,D)){const b=C.replace("node_","").replace(/___/g,"://").replace(/__/g,"/").replace(/_/g,"/");w.push({__typename:"ReferenceValue",nodeFunctionId:b})}}else if(C.startsWith("p_")){const b=C.replace("p_",""),P=b.lastIndexOf("_"),V=b.substring(0,P),M=parseInt(b.substring(P+1),10),B=V.replace("p_","").replace(/___/g,"://").replace(/__/g,"/").replace(/_/g,"/");if(r.isTupleType(x)){const z=x;r.getTypeArguments(z).forEach((Z,W)=>{r.isTypeAssignableTo(Z,D)&&w.push({__typename:"ReferenceValue",nodeFunctionId:B,parameterIndex:isNaN(M)?0:M,inputIndex:W,inputTypeIdentifier:z.target.labeledElementDeclarations?.[W].name.getText()})})}}}),w},pe=(t,n)=>{if(!t)return[];const i=`
50
- ${k(n)}
51
- type VALUE = ${t}; const val: VALUE = {} as any;
52
- `,a="index.ts",c=L(a,i),g=c.getSourceFile(a),p=c.languageService.getProgram().getTypeChecker(),u=g.statements.find(o=>F.isTypeAliasDeclaration(o)&&o.name.text==="VALUE");if(!u||!F.isTypeAliasDeclaration(u))return[];const m=p.getTypeAtLocation(u),r=o=>o.isUnion()?o.types.flatMap(r):o.isStringLiteral()?[o.value]:o.isNumberLiteral()?[o.value.toString()]:o.intrinsicName==="true"?["true"]:o.intrinsicName==="false"?["false"]:[];return Array.from(new Set(r(m))).map(o=>({__typename:"LiteralValue",value:o}))},fe=(t,n,i)=>{const a=U(t,n,i),c="index.ts",g=L(c,a),f=g.getSourceFile(c),m=g.languageService.getProgram().getSemanticDiagnostics(f).map(r=>{const d=F.flattenDiagnosticMessageText(r.messageText,`
53
- `);let o,y;if(r.start!==void 0){const e=f.getFullText(),s=Math.max(0,r.start-300),l=Math.min(e.length,r.start),T=e.substring(s,l),h=/\/\* @pos ([^ ]+) (\d+) \*\//g;let v,N=null,E=-1;for(;(v=h.exec(T))!==null;){const S=s+v.index+v[0].length;S<=r.start&&S>E&&(E=S,N=v)}N&&(o=N[1],y=parseInt(N[2],10))}return{message:d,code:r.code,severity:"error",nodeId:o,parameterIndex:y}}).filter(r=>r!==null);return{isValid:!m.some(r=>r?.severity==="error"),returnType:"void",diagnostics:m}},me=(t,n,i)=>{const a=JSON.stringify(n?.value),c=`
54
- ${k(i)}
55
- const testValue: ${t} = ${a};
56
- `,g="index.ts",u=L(g,c).languageService.getSemanticDiagnostics(g).map(m=>{const r=F.flattenDiagnosticMessageText(m.messageText,`
57
- `),d=r.includes("not assignable to parameter of type")&&(r.includes("'{}'")||r.includes("undefined"))||r.includes("not assignable to type 'undefined'")||r.includes("not assignable to type 'void'")||r.includes("may be a mistake because neither type sufficiently overlaps");return{message:r,code:m.code,severity:d?"warning":"error"}});return{isValid:!u.some(m=>m.severity==="error"),returnType:"void",diagnostics:u}};exports.DataTypeVariant=j;exports.getFlowValidation=fe;exports.getNodeSuggestions=ue;exports.getReferenceSuggestions=ge;exports.getTypeFromValue=se;exports.getTypeVariant=H;exports.getTypesFromFunction=Q;exports.getTypesFromNode=le;exports.getValueFromType=ce;exports.getValueSuggestions=pe;exports.getValueValidation=me;
40
+ `,o=`index.ts`,s=T(o,a),c=s.getSourceFile(o),l=s.languageService.getProgram().getSemanticDiagnostics(),u=new Set;l.forEach(e=>{e.file===c&&e.start!==void 0&&u.add(c.getLineAndCharacterOfPosition(e.start).line)}),r=t.filter((e,t)=>{let n=`const check${t}: TargetType = {} as F${t};`,r=a.split(`
41
+ `).findIndex(e=>e.includes(n));return r!==-1&&!u.has(r)})}return r?.map(e=>({__typename:`NodeFunction`,id:`gid://sagittarius/NodeFunction/1`,functionDefinition:{__typename:`FunctionDefinition`,id:e.id,identifier:e.identifier},parameters:{__typename:`NodeParameterConnection`,nodes:(e.parameterDefinitions?.nodes||[]).map(e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:null}))}})).filter(e=>e!==null)??[]},F=e=>{let t=c.default.TypeFlags.String|c.default.TypeFlags.Number|c.default.TypeFlags.Boolean|c.default.TypeFlags.Undefined|c.default.TypeFlags.Null|c.default.TypeFlags.BigInt|c.default.TypeFlags.ESSymbol;return(e.flags&t)===0},I=(e,t,n,r=[])=>{let i=[];if(t.isTypeAssignableTo(e,n)&&i.push({path:r,type:e}),F(e)){let a=e.getProperties();a&&a.length>0&&a.forEach(e=>{let a=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),o=e.getName(),s=[...r,o];i.push(...I(a,t,n,s))})}return i},L=(e,t,n,r,i)=>{let a=k(e,r,i,!0),o=`index.ts`,s=T(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram().getTypeChecker(),d=l.getFullText(),f=`/* @pos ${t} ${n} */`,p=d.indexOf(f)+f.length;function m(e,t){let n=e;return c.default.forEachChild(e,e=>{e.getStart(l,!0)<=t&&e.getEnd()>=t&&(n=m(e,t))}),n}let h=m(l,p),g;if(c.default.isCallExpression(h)&&(g=h),!g)return[];let _=u.getResolvedSignature(g);if(!_)return[];let v=_.getParameters(),y=v[n]||v[v.length-1],b=u.getTypeOfSymbolAtLocation(y,h),x=u.getSymbolsInScope(h,c.default.SymbolFlags.Variable),S=[];return x.forEach(e=>{let t=e.getName();if(!t.startsWith(`node_`)&&!t.startsWith(`p_`))return;let n=e.valueDeclaration||e.declarations?.[0];if(!n||n.getEnd()>=p)return;let r=u.getTypeOfSymbolAtLocation(e,h);if(t.startsWith(`node_`)){if((r.flags&c.default.TypeFlags.Void)===0){let e=t.replace(`node_`,``).replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`);I(r,u,b).forEach(({path:t})=>{let n={__typename:`ReferenceValue`,nodeFunctionId:e};t.length>0&&(n.referencePath=t),S.push(n)})}}else if(t.startsWith(`p_`)){let e=t.replace(`p_`,``),n=e.lastIndexOf(`_`),i=e.substring(0,n),a=parseInt(e.substring(n+1),10),o=i.replace(`p_`,``).replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`);if(u.isTupleType(r)){let e=r;u.getTypeArguments(e).forEach((t,n)=>{I(t,u,b).forEach(({path:t})=>{let r={__typename:`ReferenceValue`,nodeFunctionId:o,parameterIndex:isNaN(a)?0:a,inputIndex:n,inputTypeIdentifier:e.target.labeledElementDeclarations?.[n].name.getText()};t.length>0&&(r.referencePath=t),S.push(r)})})}}}),S},R=(e,t)=>{if(!e)return[];let n=`
42
+ ${D(t)}
43
+ type VALUE = ${e}; const val: VALUE = {} as any;
44
+ `,r=`index.ts`,i=T(r,n),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=a.statements.find(e=>c.default.isTypeAliasDeclaration(e)&&e.name.text===`VALUE`);if(!s||!c.default.isTypeAliasDeclaration(s))return[];let l=o.getTypeAtLocation(s),u=e=>e.isUnion()?e.types.flatMap(u):e.isStringLiteral()?[e.value]:e.isNumberLiteral()?[e.value.toString()]:e.intrinsicName===`true`?[`true`]:e.intrinsicName===`false`?[`false`]:[];return Array.from(new Set(u(l))).map(e=>({__typename:`LiteralValue`,value:e}))},z=(e,t,n)=>{let r=k(e,t,n),i=`index.ts`,a=T(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getSemanticDiagnostics(o).map(e=>{let t=(0,c.flattenDiagnosticMessageText)(e.messageText,`
45
+ `),n,r;if(e.start!==void 0){let t=o.getFullText(),i=Math.max(0,e.start-300),a=Math.min(t.length,e.start),s=t.substring(i,a),c=/\/\* @pos ([^ ]+) (\d+) \*\//g,l,u=null,d=-1;for(;(l=c.exec(s))!==null;){let t=i+l.index+l[0].length;t<=e.start&&t>d&&(d=t,u=l)}u&&(n=u[1],r=parseInt(u[2],10))}return{message:t,code:e.code,severity:`error`,nodeId:n,parameterIndex:r}}).filter(e=>e!==null);return{isValid:!s.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:s}},B=(e,t,n)=>{let r=JSON.stringify(t?.value),i=`
46
+ ${D(n)}
47
+ const testValue: ${e} = ${r};
48
+ `,a=`index.ts`,o=T(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
49
+ `),n=t.includes(`not assignable to parameter of type`)&&(t.includes(`'{}'`)||t.includes(`undefined`))||t.includes(`not assignable to type 'undefined'`)||t.includes(`not assignable to type 'void'`)||t.includes(`may be a mistake because neither type sufficiently overlaps`);return{message:t,code:e.code,severity:n?`warning`:`error`}});return{isValid:!o.some(e=>e.severity===`error`),returnType:`void`,diagnostics:o}};exports.DataTypeVariant=x,exports.getFlowValidation=z,exports.getNodeSuggestions=P,exports.getReferenceSuggestions=L,exports.getTypeFromValue=j,exports.getTypeVariant=S,exports.getTypesFromFunction=C,exports.getTypesFromNode=N,exports.getValueFromType=M,exports.getValueSuggestions=R,exports.getValueValidation=B;