@code0-tech/triangulum 0.28.0 → 0.29.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.
@@ -3,7 +3,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
3
3
  `:`[`;for(let n=0;n<e.length;n++){let s=typeof t==`function`?t.call(e,String(n),e[n]):e[n];i&&(o+=r),s!==void 0&&typeof s!=`function`?o+=a(s,r):o+=`null`,n<e.length-1&&(o+=i?`,
4
4
  `:`,`)}return o+=i?`\n${n}]`:`]`,o}function s(e,r){if(typeof e.toJSON==`function`)return C(e.toJSON(),t,n,void 0);let o=Array.isArray(t)?t.map(String):Object.keys(e);if(o.length===0)return`{}`;let s=i?r+i:void 0,l=!0,u=i?`{
5
5
  `:`{`;for(let n of o){let r=typeof t==`function`?t.call(e,n,e[n]):e[n];if(c(n,r)){l?l=!1:u+=i?`,
6
- `:`,`;let e=JSON.stringify(n);u+=i?`${s+e}: `:`${e}:`,u+=a(r,s)}}return u+=i?`\n${r}}`:`}`,u}function c(e,t){return t!==void 0&&typeof t!=`function`&&typeof t!=`symbol`}}function ee(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var te=`
6
+ `:`,`;let e=JSON.stringify(n);u+=i?`${s+e}: `:`${e}:`,u+=a(r,s)}}return u+=i?`\n${r}}`:`}`,u}function c(e,t){return t!==void 0&&typeof t!=`function`&&typeof t!=`symbol`}}function ee(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var w=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(w);if(c.default.isLiteralTypeNode(e)){let t=e.literal;if(c.default.isStringLiteral(t))return[{value:t.text,__typename:`LiteralValue`}];if(c.default.isNumericLiteral(t))return[{value:Number(t.text)}];if(t.kind===c.default.SyntaxKind.TrueKeyword)return[{value:!0,__typename:`LiteralValue`}];if(t.kind===c.default.SyntaxKind.FalseKeyword)return[{value:!1,__typename:`LiteralValue`}]}return[]},T=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return w(t.type)}return e.isUnion()?e.types.flatMap(e=>T(e,t)):e.isStringLiteral()?[{value:e.value,__typename:`LiteralValue`}]:e.isNumberLiteral()?[{value:e.value.toString()}]:e.intrinsicName===`true`?[{value:!0,__typename:`LiteralValue`}]:e.intrinsicName===`false`?[{value:!1,__typename:`LiteralValue`}]:[]},te=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!ne(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?re(i,o,e,n):i.startsWith(`p_`)?E(i,o,e,n):i.startsWith(`flow_`)?D(o,e,n):[]}),ne=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),re=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=O(e.replace(`node_`,``));return j(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},E=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=ie(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>j(e,n,r).flatMap(({path:e})=>{let n={__typename:`ReferenceValue`,nodeFunctionId:i,parameterIndex:isNaN(a)?0:a,inputIndex:t,inputTypeIdentifier:o.target.labeledElementDeclarations?.[t].name.getText()};return e.length>0&&(n.referencePath=e),n}))},D=(e,t,n)=>j(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),O=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),ie=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:O(r),paramIndexFromName:i}},ae=7,k=(e,t,n)=>{let r=n.get(e);if(r!==void 0)return r;let i=new Set,a=n=>{if(i.has(n)||!M(n))return!1;i.add(n);for(let r of n.getProperties()){if(!r.valueDeclaration)continue;let n=t.getNonNullableType(t.getTypeOfSymbolAtLocation(r,r.valueDeclaration));if(n===e||a(n))return!0}return!1},o=a(e);return n.set(e,o),o},A=(e,t,n)=>e.isUnion()?e.types.some(e=>A(t.getNonNullableType(e),t,n)):(e.flags&c.default.TypeFlags.Never)===0&&t.isTypeAssignableTo(e,n),oe=(e,t)=>e.isUnion()?e.types.map(e=>t.getNonNullableType(e)).filter(M):M(e)?[e]:[],j=(e,t,n,r=[],i=new Set,a=new Map)=>{let o=[],s=t.getNonNullableType(e);return A(s,t,n)&&o.push({path:r,type:e}),oe(s,t).forEach(e=>{if(i.has(e)||r.length>=ae&&k(e,t,a))return;let s=e.getProperties();s&&s.length>0&&(i.add(e),s.forEach(e=>{let s=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),c=e.getName(),l=[...r,{path:c}];o.push(...j(s,t,n,l,i,a))}),i.delete(e))}),o},M=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},se=(e,t,n,r)=>K(r)?[]:t.flatMap(t=>{let i=ce(e,t,n,r);return i?[i]:[]}),ce=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=le(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=ue(t.name?.getText());return de(n.find(e=>e.identifier===s))},le=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,ue=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,de=e=>{let t=(e?.parameterDefinitions?.nodes?.length??0)>0,n={__typename:`NodeFunction`,id:`gid://sagittarius/NodeFunction/1`,functionDefinition:{__typename:`FunctionDefinition`,id:e?.id,identifier:e?.identifier,names:e?.names,descriptions:e?.descriptions,displayIcon:e?.displayIcon}};return t&&(n.parameters=fe(e?.parameterDefinitions?.nodes||[])),n},fe=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>N(e))}),N=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),P=(e,t,n,r)=>K(r)?t.flatMap(t=>{let i=F(e,t,n,r);return i?[i]:[]}):[],F=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=I(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?L(o):null},I=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,L=e=>({__typename:`SubFlowValue`,functionDefinition:e,signature:e.signature,settings:e.parameterDefinitions?.nodes?.map(e=>({__typename:`SubFlowValueSetting`,identifier:e?.identifier,defaultValue:e?.defaultValue??null,hidden:e?.hidden??!1,optional:e?.optional??!1}))}),R={DATE:`date`},z=e=>e!=null&&e in R,B=7,V=(e,t,n,r,i,a=!0,o,s=new Set,l=new Map)=>{if((n.flags&c.default.TypeFlags.TypeParameter)!==0){let u=n.symbol?.declarations?.[0];if(u&&c.default.isTypeParameterDeclaration(u)&&u.constraint)return V(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(n),d=o??n,f=a?{suggestions:[...T(d,e),...t?te(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...se(e,r,i,d),...P(e,r,i,d)]}:{};if(n.isUnion()){let a=n.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);if(a.length===1)return{...V(e,t,a[0],r,i,!1,void 0,s,l),type:u,...f}}let p=_e(n);if(p)return{input:p,type:u,...f};if(U(n))return{input:`boolean`,type:u,...f};if(be(n)||ye(n))return{input:`select`,type:u,...f};if(W(n))return{input:`number`,type:u,...f};if(G(n))return{input:`text`,type:u,...f};if(K(n))return{input:`sub-flow`,type:u,...f};if(xe(e,n))return{input:`list`,type:u,items:e.getTypeArguments(n).flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>V(e,t,n,r,i,a,void 0,s,l))),...f};if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=B&&k(n,e,l))return{input:`data`,type:u,...f};s.add(n);let o={},d=[];for(let u of e.getPropertiesOfType(n)){let n=u.valueDeclaration??u.declarations?.[0];if(!n)continue;let f=e.getTypeOfSymbolAtLocation(u,n),p=(u.flags&c.default.SymbolFlags.Optional)!==0||f.isUnion()&&f.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),m=(f.isUnion()?f.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[f]).map(n=>V(e,t,n,r,i,a,void 0,s,l));o[u.name]=m.length===1?m[0]:m,p||d.push(u.name)}return s.delete(n),{input:`data`,type:u,properties:o,required:d,...f}}return{input:`generic`,type:u,...f}},H=(e,t,n=!1)=>{if(!e||e.input===`generic`)return he(ge(t),n);let r=me(e.suggestions,t.suggestions);if(e.input===`data`){let n=e.properties??{},i=t.input===`data`?t.properties??{}:{},a={},o=new Set([...Object.keys(n),...Object.keys(i)]);for(let e of o){let t=n[e],r=i[e];a[e]=pe(t,r)}return{...e,properties:a,...r?{suggestions:r}:{}}}if(e.input===`list`){let n=e.items??[],i=t.input===`list`?t.items??[]:[],a=n.length===i.length&&n.length>0?n.map((e,t)=>H(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},pe=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?H(e,t):e??t,me=(e,t)=>{let n=[...e??[],...t??[]];if(n.length===0)return;let r=new Set,i=[];for(let e of n){let t=JSON.stringify(e);r.has(t)||(r.add(t),i.push(e))}return i},he=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},ge=e=>{if(e.input!==`select`)return e;let t=e.suggestions??[],n=new Set;for(let e of t){let t=typeof e.value;(t===`string`||t===`number`||t===`boolean`)&&n.add(t)}return{input:n.size===1?{string:`text`,number:`number`,boolean:`boolean`}[[...n][0]]:`text`,...e.type?{type:e.type}:{},...t.length>0?{suggestions:t}:{}}};function _e(e){let t=e.aliasSymbol?.getName();return z(t)?R[t]:void 0}function U(e){if((e.flags&c.default.TypeFlags.Boolean)!==0||(e.flags&c.default.TypeFlags.BooleanLiteral)!==0)return!0;if(e.isUnion()){let t=e.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);return t.length>0&&t.every(e=>(e.flags&c.default.TypeFlags.Boolean)!==0||(e.flags&c.default.TypeFlags.BooleanLiteral)!==0)}return!1}function W(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function G(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function ve(e){return G(e)||W(e)||U(e)}function ye(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function be(e){if(!e.isUnion())return!1;let t=e.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);return t.length>0&&t.every(ve)}function xe(e,t){return e.isArrayType(t)||e.isTupleType(t)}function K(e){return e.getCallSignatures().length>0}var Se=`
7
7
  interface Array<T> {
8
8
  [n: number]: T;
9
9
  length: number;
@@ -23,34 +23,34 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
23
23
  }
24
24
 
25
25
  import ReturnType = Utils.ReturnType;
26
- `;function w(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,te),p(v(n),[e,`lib.codezero.d.ts`],c.default,ne)}var ne={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function T(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]))).map(e=>`type ${e} = ${t};`).join(`
27
- `),i=e?.map(e=>`type ${e.identifier}${(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``} = ${e.type};`).join(`
26
+ `;function q(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,Se),p(v(n),[e,`lib.codezero.d.ts`],c.default,Ce)}var Ce={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function J(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]))).map(e=>`type ${e} = ${t};`).join(`
27
+ `),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=z(e.identifier)?`${e.type} & {}`:e.type;return`type ${e.identifier}${t} = ${n};`}).join(`
28
28
  `),a=e?.filter(e=>(e.genericKeys?.length??0)>0).map(e=>`declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(()=>`any`).join(`, `)}>;`).join(`
29
- `)??``;return`${n?r:``}\n${i}\n${a}`}var E=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`);function D(e,t,n,r=!1,i=!0){let a=e?.nodes?.nodes||[],o=new Map(t?.map(e=>[e.identifier,e])),s=new Set,c=(t,n=``)=>{let l=a.find(e=>e?.id===t);if(!l||!l.functionDefinition)return``;if(t?.includes(`NodeFunction`)&&s.add(t),!o.get(l.functionDefinition.identifier))return`${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;let u=(l.parameters?.nodes||[]).map((a,o)=>{let s=a.value;if(!s)return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`;if(s.__typename===`ReferenceValue`){let n=s,r=typeof n.inputIndex==`number`?`p_${E(n.nodeFunctionId??`undefined`)}_${n.parameterIndex}[${n.inputIndex}]`:n.nodeFunctionId?`node_${E(n.nodeFunctionId)}`:`flow_${E(e?.id??`undefined`)}`;return n.referencePath?.forEach(e=>{r+=`?.${e.path}`}),`/* @pos ${t} ${o} */ (${r})${i?`!`:``}`}if(s.__typename===`LiteralValue`)return`/* @pos ${t} ${o} */ ${s?.value!==null&&s?.value!==void 0?C(s?.value):void 0}`;if(s.__typename===`SubFlowValue`){let e=s;return`/* @pos ${t} ${o} */ (...${`p_${E(t)}_${o}`}) => {\n${c(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`}),d=`node_${E(l.id)}`,f=`fn_${l?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;u.includes(`undefined`);let p=`${n}`;return l.functionDefinition.identifier===`std::control::return`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`return ${d};\n`):l.functionDefinition.identifier===`std::control::if`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
29
+ `)??``;return`${n?r:``}\n${i}\n${a}`}var Y=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`);function X(e,t,n,r=!1,i=!0){let a=e?.nodes?.nodes||[],o=new Map(t?.map(e=>[e.identifier,e])),s=new Set,c=(t,n=``)=>{let l=a.find(e=>e?.id===t);if(!l||!l.functionDefinition)return``;if(t?.includes(`NodeFunction`)&&s.add(t),!o.get(l.functionDefinition.identifier))return`${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;let u=(l.parameters?.nodes||[]).map((a,o)=>{let s=a.value;if(!s)return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`;if(s.__typename===`ReferenceValue`){let n=s,r=typeof n.inputIndex==`number`?`p_${Y(n.nodeFunctionId??`undefined`)}_${n.parameterIndex}[${n.inputIndex}]`:n.nodeFunctionId?`node_${Y(n.nodeFunctionId)}`:`flow_${Y(e?.id??`undefined`)}`;return n.referencePath?.forEach(e=>{r+=`?.${e.path}`}),`/* @pos ${t} ${o} */ (${r})${i?`!`:``}`}if(s.__typename===`LiteralValue`)return`/* @pos ${t} ${o} */ ${s?.value!==null&&s?.value!==void 0?C(s?.value):void 0}`;if(s.__typename===`SubFlowValue`){let e=s;return`/* @pos ${t} ${o} */ (...${`p_${Y(t)}_${o}`}) => {\n${c(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`}),d=`node_${Y(l.id)}`,f=`fn_${l?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;u.includes(`undefined`);let p=`${n}`;return l.functionDefinition.identifier===`std::control::return`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`return ${d};\n`):l.functionDefinition.identifier===`std::control::if`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
30
30
  ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
31
31
  }`):l.functionDefinition.identifier===`std::control::if_else`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
32
32
  ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
33
33
  } else {
34
34
  ${c(l.parameters?.nodes?.[2]?.value?.startingNodeId||(l.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier,n+` `)}
35
- }`):p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,l.nextNodeId&&(p+=c(l.nextNodeId,n)),p},l=T(n),u=`declare function flow${e?.signature??`(): void`}`,d=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
35
+ }`):p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,l.nextNodeId&&(p+=c(l.nextNodeId,n)),p},l=J(n),u=`declare function flow${e?.signature??`(): void`}`,d=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
36
36
  `),f=new Set(a.map(e=>e?.nextNodeId).filter(e=>!!e)),p=new Set;return a.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`SubFlowValue`&&(e.value.startingNodeId||e.value.functionDefinition?.id)&&p.add(e.value.startingNodeId||e.value.functionDefinition?.id)})),`
37
37
  ${l}\n
38
38
  ${u}\n
39
39
  ${d}\n
40
40
  (() =>
41
- ${e?`const flow_${E(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?C(e?.value):void 0}`).join(`, `)??``});`:``}
41
+ ${e?`const flow_${Y(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?C(e?.value):void 0}`).join(`, `)??``});`:``}
42
42
  ${a.filter(e=>e?.id&&!f.has(e.id)&&!p.has(e.id)).map(e=>c(e.id)).join(`
43
43
  `)}
44
44
  )();
45
- `}var O=(e,t)=>{let n=C(e?.value);if(!n)return`any`;let r=`
46
- ${T(t,`unknown`)}
45
+ `}var we=(e,t)=>{let n=C(e?.value);if(!n)return`any`;let r=`
46
+ ${J(t,`unknown`)}
47
47
  const tempValue = ${n??`any`};
48
- `,i=`index.ts`,a=w(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},k=(e,t)=>{let n=`
49
- ${T(t)}
48
+ `,i=`index.ts`,a=q(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=t=>{if(t.isUnion()){let e=t.types.map(n);return Array.from(new Set(e)).sort().join(` | `)}if(s.isArrayType(t)){let e=t.typeArguments||[],r=e.length>0?n(e[0]):`any`;return e[0]?.isUnion()?`(${r})[]`:`${r}[]`}if(t.getFlags()&c.default.TypeFlags.Object||t.isClassOrInterface()){let r=s.getPropertiesOfType(t);if(r.length>0)return`{ ${r.map(t=>{let r=s.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${n(r)}`}).join(`, `)} }`}let r=s.getBaseTypeOfLiteralType(t);return s.typeToString(r,e)};l=n(t)}c.default.forEachChild(e,u)};return u(o),l},Te=(e,t)=>{let n=`
49
+ ${J(t)}
50
50
  type Target = ${e};
51
- `,r=`index.ts`,i=w(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)=>{let r=new Set(n);if(r.has(e))return null;let i=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,r);let n=e.types.filter(e=>{let t=e.getFlags();return!(t&c.default.TypeFlags.Undefined)&&!(t&c.default.TypeFlags.Null)});return u(n.length>0?n[0]:e.types[0],t,r)}if(i&c.default.TypeFlags.StringLiteral)return e.value;if(i&c.default.TypeFlags.String)return``;if(i&c.default.TypeFlags.NumberLiteral)return e.value;if(i&c.default.TypeFlags.Number)return 0;if(i&c.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(i&c.default.TypeFlags.Boolean)return!1;if(o.isArrayType(e)){r.add(e);let n=u(e.typeArguments?.[0]||o.getAnyType(),t,r);return n===null?[]:[n]}if(e.isClassOrInterface()||i&c.default.TypeFlags.Object||e.getProperties().length>0){r.add(e);let n={};return e.getProperties().forEach(e=>{let i=o.getTypeOfSymbolAtLocation(e,t),a=e.valueDeclaration;i&&(n[e.getName()]=u(i,a||t,r))}),n}return null};return{__typename:`LiteralValue`,value:u(l,s)}},A=2345,j=2339,M=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=M(e,t,n);i&&(r=i)}),r},re=(e,t,n)=>{if(e.start===void 0||e.length===void 0)return!1;let r=M(t,e.start,e.start+e.length);if(!r)return!1;if(e.code===A&&c.default.isExpression(r)){let e=n.getTypeAtLocation(r);if(!e.isUnion())return!1;let t=n.getContextualType(r);return t?e.types.some(e=>(e.flags&(c.default.TypeFlags.Null|c.default.TypeFlags.Undefined))===0&&n.isTypeAssignableTo(e,t)):!1}if(e.code===j&&c.default.isPropertyAccessExpression(r.parent)){let e=n.getNonNullableType(n.getTypeAtLocation(r.parent.expression));if(!e.isUnion())return!1;let t=r.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},ie=(e,t,n)=>{if(!e?.startingNodeId)return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`You need to provide a starting node to be able to execute this flow.`,severity:`error`}]};if(!e.nodes?.nodes?.find(t=>t?.id==e.startingNodeId))return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.`,severity:`error`}]};let r=new Set(t?.map(e=>e.identifier)),i=(e.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!r.has(e.functionDefinition.identifier)).map(e=>({nodeId:e.id,parameterIndex:null,code:0,message:`The function definition "${e.functionDefinition.identifier}" is not reachable.`,severity:`error`}));if(i.length>0)return{isValid:!1,returnType:`void`,diagnostics:i};let a=D(e,t,n,!1,!1),o=`index.ts`,s=w(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram(),d=u.getTypeChecker(),f=u.getSemanticDiagnostics(l).map(e=>{let t=(0,c.flattenDiagnosticMessageText)(e.messageText,`
52
- `),n,r=null;if(e.start!==void 0){let t=l.getFullText(),i=Math.max(0,e.start-300),a=Math.min(t.length,e.start),o=t.substring(i,a),s=/\/\* @pos ([^ ]+) (\d+|null) \*\//g,c,u=null,d=-1;for(;(c=s.exec(o))!==null;){let t=i+c.index+c[0].length;t<=e.start&&t>d&&(d=t,u=c)}u&&(n=u[1]===`null`?null:u[1],r=parseInt(u[2],10))}let i=re(e,l,d)?`warning`:`error`;return{message:t,code:e.code,severity:i,nodeId:n,parameterIndex:typeof r==`number`&&Number.isSafeInteger(r)?r:null}}).filter(e=>e!==null);return{isValid:!f.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:f}},ae=(e,t,n)=>{let r=C(t?.value),i=`
53
- ${T(n)}
51
+ `,r=`index.ts`,i=q(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)=>{let r=new Set(n);if(r.has(e))return null;let i=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,r);let n=e.types.filter(e=>{let t=e.getFlags();return!(t&c.default.TypeFlags.Undefined)&&!(t&c.default.TypeFlags.Null)});return u(n.length>0?n[0]:e.types[0],t,r)}if(i&c.default.TypeFlags.StringLiteral)return e.value;if(i&c.default.TypeFlags.String)return``;if(i&c.default.TypeFlags.NumberLiteral)return e.value;if(i&c.default.TypeFlags.Number)return 0;if(i&c.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(i&c.default.TypeFlags.Boolean)return!1;if(o.isArrayType(e)){r.add(e);let n=u(e.typeArguments?.[0]||o.getAnyType(),t,r);return n===null?[]:[n]}if(e.isClassOrInterface()||i&c.default.TypeFlags.Object||e.getProperties().length>0){r.add(e);let n={};return e.getProperties().forEach(e=>{let i=o.getTypeOfSymbolAtLocation(e,t),a=e.valueDeclaration;i&&(n[e.getName()]=u(i,a||t,r))}),n}return null};return{__typename:`LiteralValue`,value:u(l,s)}},Ee=2345,De=2339,Z=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=Z(e,t,n);i&&(r=i)}),r},Oe=(e,t,n)=>{if(e.start===void 0||e.length===void 0)return!1;let r=Z(t,e.start,e.start+e.length);if(!r)return!1;if(e.code===Ee&&c.default.isExpression(r)){let e=n.getTypeAtLocation(r);if(!e.isUnion())return!1;let t=n.getContextualType(r);return t?e.types.some(e=>(e.flags&(c.default.TypeFlags.Null|c.default.TypeFlags.Undefined))===0&&n.isTypeAssignableTo(e,t)):!1}if(e.code===De&&c.default.isPropertyAccessExpression(r.parent)){let e=n.getNonNullableType(n.getTypeAtLocation(r.parent.expression));if(!e.isUnion())return!1;let t=r.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},Q=(e,t,n)=>{if(!e?.startingNodeId)return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`You need to provide a starting node to be able to execute this flow.`,severity:`error`}]};if(!e.nodes?.nodes?.find(t=>t?.id==e.startingNodeId))return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.`,severity:`error`}]};let r=new Set(t?.map(e=>e.identifier)),i=(e.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!r.has(e.functionDefinition.identifier)).map(e=>({nodeId:e.id,parameterIndex:null,code:0,message:`The function definition "${e.functionDefinition.identifier}" is not reachable.`,severity:`error`}));if(i.length>0)return{isValid:!1,returnType:`void`,diagnostics:i};let a=X(e,t,n,!1,!1),o=`index.ts`,s=q(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram(),d=u.getTypeChecker(),f=u.getSemanticDiagnostics(l).map(e=>{let t=(0,c.flattenDiagnosticMessageText)(e.messageText,`
52
+ `),n,r=null;if(e.start!==void 0){let t=l.getFullText(),i=Math.max(0,e.start-300),a=Math.min(t.length,e.start),o=t.substring(i,a),s=/\/\* @pos ([^ ]+) (\d+|null) \*\//g,c,u=null,d=-1;for(;(c=s.exec(o))!==null;){let t=i+c.index+c[0].length;t<=e.start&&t>d&&(d=t,u=c)}u&&(n=u[1]===`null`?null:u[1],r=parseInt(u[2],10))}let i=Oe(e,l,d)?`warning`:`error`;return{message:t,code:e.code,severity:i,nodeId:n,parameterIndex:typeof r==`number`&&Number.isSafeInteger(r)?r:null}}).filter(e=>e!==null);return{isValid:!f.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:f}},ke=(e,t,n)=>{let r=C(t?.value),i=`
53
+ ${J(n)}
54
54
  const testValue: ${e} = ${r};
55
- `,a=`index.ts`,o=w(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
56
- `),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}},N=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(N);if(c.default.isLiteralTypeNode(e)){let t=e.literal;if(c.default.isStringLiteral(t))return[{value:t.text,__typename:`LiteralValue`}];if(c.default.isNumericLiteral(t))return[{value:Number(t.text)}];if(t.kind===c.default.SyntaxKind.TrueKeyword)return[{value:!0,__typename:`LiteralValue`}];if(t.kind===c.default.SyntaxKind.FalseKeyword)return[{value:!1,__typename:`LiteralValue`}]}return[]},P=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return N(t.type)}return e.isUnion()?e.types.flatMap(e=>P(e,t)):e.isStringLiteral()?[{value:e.value,__typename:`LiteralValue`}]:e.isNumberLiteral()?[{value:e.value.toString()}]:e.intrinsicName===`true`?[{value:!0,__typename:`LiteralValue`}]:e.intrinsicName===`false`?[{value:!1,__typename:`LiteralValue`}]:[]},oe=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!se(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?ce(i,o,e,n):i.startsWith(`p_`)?F(i,o,e,n):i.startsWith(`flow_`)?I(o,e,n):[]}),se=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),ce=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=L(e.replace(`node_`,``));return U(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},F=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=R(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>U(e,n,r).flatMap(({path:e})=>{let n={__typename:`ReferenceValue`,nodeFunctionId:i,parameterIndex:isNaN(a)?0:a,inputIndex:t,inputTypeIdentifier:o.target.labeledElementDeclarations?.[t].name.getText()};return e.length>0&&(n.referencePath=e),n}))},I=(e,t,n)=>U(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),L=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),R=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:L(r),paramIndexFromName:i}},z=7,B=(e,t,n)=>{let r=n.get(e);if(r!==void 0)return r;let i=new Set,a=n=>{if(i.has(n)||!W(n))return!1;i.add(n);for(let r of n.getProperties()){if(!r.valueDeclaration)continue;let n=t.getNonNullableType(t.getTypeOfSymbolAtLocation(r,r.valueDeclaration));if(n===e||a(n))return!0}return!1},o=a(e);return n.set(e,o),o},V=(e,t,n)=>e.isUnion()?e.types.some(e=>V(t.getNonNullableType(e),t,n)):(e.flags&c.default.TypeFlags.Never)===0&&t.isTypeAssignableTo(e,n),H=(e,t)=>e.isUnion()?e.types.map(e=>t.getNonNullableType(e)).filter(W):W(e)?[e]:[],U=(e,t,n,r=[],i=new Set,a=new Map)=>{let o=[],s=t.getNonNullableType(e);return V(s,t,n)&&o.push({path:r,type:e}),H(s,t).forEach(e=>{if(i.has(e)||r.length>=z&&B(e,t,a))return;let s=e.getProperties();s&&s.length>0&&(i.add(e),s.forEach(e=>{let s=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),c=e.getName(),l=[...r,{path:c}];o.push(...U(s,t,n,l,i,a))}),i.delete(e))}),o},W=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},G=(e,t,n,r)=>Z(r)?[]:t.flatMap(t=>{let i=le(e,t,n,r);return i?[i]:[]}),le=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=ue(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=de(t.name?.getText());return fe(n.find(e=>e.identifier===s))},ue=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,de=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,fe=e=>{let t=(e?.parameterDefinitions?.nodes?.length??0)>0,n={__typename:`NodeFunction`,id:`gid://sagittarius/NodeFunction/1`,functionDefinition:{__typename:`FunctionDefinition`,id:e?.id,identifier:e?.identifier,names:e?.names,descriptions:e?.descriptions,displayIcon:e?.displayIcon}};return t&&(n.parameters=pe(e?.parameterDefinitions?.nodes||[])),n},pe=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>me(e))}),me=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),he=(e,t,n,r)=>Z(r)?t.flatMap(t=>{let i=ge(e,t,n,r);return i?[i]:[]}):[],ge=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=_e(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?ve(o):null},_e=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,ve=e=>({__typename:`SubFlowValue`,functionDefinition:e,signature:e.signature,settings:e.parameterDefinitions?.nodes?.map(e=>({__typename:`SubFlowValueSetting`,identifier:e?.identifier,defaultValue:e?.defaultValue??null,hidden:e?.hidden??!1,optional:e?.optional??!1}))}),ye=7,K=(e,t,n,r,i,a=!0,o,s=new Set,l=new Map)=>{if((n.flags&c.default.TypeFlags.TypeParameter)!==0){let u=n.symbol?.declarations?.[0];if(u&&c.default.isTypeParameterDeclaration(u)&&u.constraint)return K(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(n),d=o??n,f=a?{suggestions:[...P(d,e),...t?oe(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...G(e,r,i,d),...he(e,r,i,d)]}:{};if(n.isUnion()){let a=n.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);if(a.length===1)return{...K(e,t,a[0],r,i,!1,void 0,s,l),type:u,...f}}if(J(n))return{input:`boolean`,type:u,...f};if(Ee(n)||Te(n))return{input:`select`,type:u,...f};if(Y(n))return{input:`number`,type:u,...f};if(X(n))return{input:`text`,type:u,...f};if(Z(n))return{input:`sub-flow`,type:u,...f};if(De(e,n))return{input:`list`,type:u,items:e.getTypeArguments(n).flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>K(e,t,n,r,i,a,void 0,s,l))),...f};if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=ye&&B(n,e,l))return{input:`data`,type:u,...f};s.add(n);let o={},d=[];for(let u of e.getPropertiesOfType(n)){let n=u.valueDeclaration??u.declarations?.[0];if(!n)continue;let f=e.getTypeOfSymbolAtLocation(u,n),p=(u.flags&c.default.SymbolFlags.Optional)!==0||f.isUnion()&&f.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),m=(f.isUnion()?f.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[f]).map(n=>K(e,t,n,r,i,a,void 0,s,l));o[u.name]=m.length===1?m[0]:m,p||d.push(u.name)}return s.delete(n),{input:`data`,type:u,properties:o,required:d,...f}}return{input:`generic`,type:u,...f}},q=(e,t,n=!1)=>{if(!e||e.input===`generic`)return Se(Ce(t),n);let r=xe(e.suggestions,t.suggestions);if(e.input===`data`){let n=e.properties??{},i=t.input===`data`?t.properties??{}:{},a={},o=new Set([...Object.keys(n),...Object.keys(i)]);for(let e of o){let t=n[e],r=i[e];a[e]=be(t,r)}return{...e,properties:a,...r?{suggestions:r}:{}}}if(e.input===`list`){let n=e.items??[],i=t.input===`list`?t.items??[]:[],a=n.length===i.length&&n.length>0?n.map((e,t)=>q(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},be=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?q(e,t):e??t,xe=(e,t)=>{let n=[...e??[],...t??[]];if(n.length===0)return;let r=new Set,i=[];for(let e of n){let t=JSON.stringify(e);r.has(t)||(r.add(t),i.push(e))}return i},Se=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},Ce=e=>{if(e.input!==`select`)return e;let t=e.suggestions??[],n=new Set;for(let e of t){let t=typeof e.value;(t===`string`||t===`number`||t===`boolean`)&&n.add(t)}return{input:n.size===1?{string:`text`,number:`number`,boolean:`boolean`}[[...n][0]]:`text`,...e.type?{type:e.type}:{},...t.length>0?{suggestions:t}:{}}};function J(e){if((e.flags&c.default.TypeFlags.Boolean)!==0||(e.flags&c.default.TypeFlags.BooleanLiteral)!==0)return!0;if(e.isUnion()){let t=e.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);return t.length>0&&t.every(e=>(e.flags&c.default.TypeFlags.Boolean)!==0||(e.flags&c.default.TypeFlags.BooleanLiteral)!==0)}return!1}function Y(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function X(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function we(e){return X(e)||Y(e)||J(e)}function Te(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function Ee(e){if(!e.isUnion())return!1;let t=e.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);return t.length>0&&t.every(we)}function De(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Z(e){return e.getCallSignatures().length>0}var Oe=(e,t,n,r)=>{let i=D(e,n,t),a=`index.ts`,o=w(a,i),s=o.getSourceFile(a),l=o.languageService.getProgram().getTypeChecker(),u=e.nodes?.nodes?.find(e=>e?.id===r),d=r?`fn_${u?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,f=r?`node_${E(r)}`:`flow_${E(e.id)}`,p=ke(s),m=Ae(s).get(f),h=p.get(d),g=je(l,m),_=Me(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=(u?.parameters?.nodes??[]).map(e=>e?.value!=null),b=Pe(l,m,v,_,Ne(h,g,y),r?p:new Map,r?n:[],y),x=Q(l,m,h);return{nodeId:r,parameters:b,return:x?K(l,m,x,Array.from(p.values()),n,!1):{input:`generic`}}},Q=(e,t,n)=>{if(t?.initializer&&c.default.isCallExpression(t.initializer)){let n=e.getResolvedSignature(t.initializer);if(n)return e.getReturnTypeOfSignature(n)}if(n){let t=e.getSignatureFromDeclaration(n);if(t)return e.getReturnTypeOfSignature(t)}},ke=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),Ae=e=>{let t=[];return e.statements.forEach(e=>{e.forEachChild(function e(n){c.default.isVariableDeclaration(n)&&(n.parent.flags&c.default.NodeFlags.Const)!==0&&t.push([n.name.getText(),n]),n.forEachChild(e)})}),new Map(t)},je=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},Me=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},Ne=(e,t,n=[])=>{let r=e.typeParameters?.map(e=>e.name.getText())||[],i={};e.parameters.forEach((e,t)=>{if(!e.type)return;let n=new Set;e.type.forEachChild(function t(i){if(c.default.isTypeReferenceNode(i)&&c.default.isIdentifier(i.typeName)){let e=i.typeName.text;r.includes(e)&&n.add(e)}if(c.default.isTypeReferenceNode(e.type)&&c.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;r.includes(t)&&n.add(t)}i.forEachChild(t)}),n.forEach(e=>{i[e]||(i[e]=[]),i[e].push(t)})});let a=Object.values(i).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return t?a.filter(e=>{if(n[e.dependsOnIndex])return!1;let r=t[e.parameterIndex];if(!r)return!0;let i=(r.flags&c.default.TypeFlags.Null)!==0,a=(r.flags&c.default.TypeFlags.Undefined)!==0;return i||a}):a},Pe=(e,t,n,r,i,a,o,s)=>n?n.map((n,c)=>{let l=r?.[c],u=l?Fe(e,l,t):void 0,d=K(e,t,n,Array.from(a.values()),o,!0,u);return{schema:q(l?K(e,t,l,Array.from(a.values()),o,!1):void 0,d,s[c]??!1),blockedBy:i.filter(e=>e.parameterIndex===c).map(e=>e.dependsOnIndex)}}):[],Fe=(e,t,n)=>{if((t.flags&c.default.TypeFlags.TypeParameter)!==0){let n=t.symbol?.declarations?.[0];return n&&c.default.isTypeParameterDeclaration(n)&&n.constraint?e.getTypeFromTypeNode(n.constraint):e.getAnyType()}if((t.flags&c.default.TypeFlags.Conditional)!==0)return e.getBaseConstraintOfType(t)??e.getAnyType();if((t.flags&c.default.TypeFlags.Object)!==0&&$(t,e,new Set)){let r=t.aliasSymbol?.getName();if(r){let t=e.getSymbolsInScope(n,c.default.SymbolFlags.Variable).find(e=>e.getName()===`__widen_${r}`);if(t)return e.getTypeOfSymbolAtLocation(t,n)}return e.getAnyType()}return t},$=(e,t,n)=>n.has(e)?!1:(n.add(e),!!((e.flags&c.default.TypeFlags.TypeParameter)!==0||(e.flags&c.default.TypeFlags.Object)!==0&&(t.getTypeArguments(e).some(e=>$(e,t,n))||e.aliasTypeArguments?.some(e=>$(e,t,n))))),Ie=(e,t=[])=>{let n=`index.ts`,r=w(n,`${T(t)}\ntype MyType = ${e}`).languageService.getProgram(),i=r?.getSourceFile(n),a=r?.getTypeChecker();if(!i||!a)return;let o=i.statements.filter(e=>c.default.isTypeAliasDeclaration(e)||c.default.isInterfaceDeclaration(e)||c.default.isClassDeclaration(e)).pop();if(!o)return;let s=a.getTypeAtLocation(o);if(s)return K(a,void 0,s,[],[],!1)};exports.getFlowValidation=ie,exports.getSignatureSchema=Oe,exports.getTypeFromValue=O,exports.getTypeSchema=Ie,exports.getValueFromType=k,exports.getValueValidation=ae;
55
+ `,a=`index.ts`,o=q(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
56
+ `),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}},Ae=(e,t,n,r)=>{let i=X(e,n,t),a=`index.ts`,o=q(a,i),s=o.getSourceFile(a),l=o.languageService.getProgram().getTypeChecker(),u=e.nodes?.nodes?.find(e=>e?.id===r),d=r?`fn_${u?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,f=r?`node_${Y(r)}`:`flow_${Y(e.id)}`,p=Me(s),m=Ne(s).get(f),h=p.get(d),g=Pe(l,m),_=Fe(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=(u?.parameters?.nodes??[]).map(e=>e?.value!=null),b=Le(l,m,v,_,Ie(h,g,y),r?p:new Map,r?n:[],y),x=je(l,m,h);return{nodeId:r,parameters:b,return:x?V(l,m,x,Array.from(p.values()),n,!1):{input:`generic`}}},je=(e,t,n)=>{if(t?.initializer&&c.default.isCallExpression(t.initializer)){let n=e.getResolvedSignature(t.initializer);if(n)return e.getReturnTypeOfSignature(n)}if(n){let t=e.getSignatureFromDeclaration(n);if(t)return e.getReturnTypeOfSignature(t)}},Me=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),Ne=e=>{let t=[];return e.statements.forEach(e=>{e.forEachChild(function e(n){c.default.isVariableDeclaration(n)&&(n.parent.flags&c.default.NodeFlags.Const)!==0&&t.push([n.name.getText(),n]),n.forEachChild(e)})}),new Map(t)},Pe=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},Fe=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},Ie=(e,t,n=[])=>{let r=e.typeParameters?.map(e=>e.name.getText())||[],i={};e.parameters.forEach((e,t)=>{if(!e.type)return;let n=new Set;e.type.forEachChild(function t(i){if(c.default.isTypeReferenceNode(i)&&c.default.isIdentifier(i.typeName)){let e=i.typeName.text;r.includes(e)&&n.add(e)}if(c.default.isTypeReferenceNode(e.type)&&c.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;r.includes(t)&&n.add(t)}i.forEachChild(t)}),n.forEach(e=>{i[e]||(i[e]=[]),i[e].push(t)})});let a=Object.values(i).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return t?a.filter(e=>{if(n[e.dependsOnIndex])return!1;let r=t[e.parameterIndex];if(!r)return!0;let i=(r.flags&c.default.TypeFlags.Null)!==0,a=(r.flags&c.default.TypeFlags.Undefined)!==0;return i||a}):a},Le=(e,t,n,r,i,a,o,s)=>n?n.map((n,c)=>{let l=r?.[c],u=l?Re(e,l,t):void 0,d=V(e,t,n,Array.from(a.values()),o,!0,u);return{schema:H(l?V(e,t,l,Array.from(a.values()),o,!1):void 0,d,s[c]??!1),blockedBy:i.filter(e=>e.parameterIndex===c).map(e=>e.dependsOnIndex)}}):[],Re=(e,t,n)=>{if((t.flags&c.default.TypeFlags.TypeParameter)!==0){let n=t.symbol?.declarations?.[0];return n&&c.default.isTypeParameterDeclaration(n)&&n.constraint?e.getTypeFromTypeNode(n.constraint):e.getAnyType()}if((t.flags&c.default.TypeFlags.Conditional)!==0)return e.getBaseConstraintOfType(t)??e.getAnyType();if((t.flags&c.default.TypeFlags.Object)!==0&&$(t,e,new Set)){let r=t.aliasSymbol?.getName();if(r){let t=e.getSymbolsInScope(n,c.default.SymbolFlags.Variable).find(e=>e.getName()===`__widen_${r}`);if(t)return e.getTypeOfSymbolAtLocation(t,n)}return e.getAnyType()}return t},$=(e,t,n)=>n.has(e)?!1:(n.add(e),!!((e.flags&c.default.TypeFlags.TypeParameter)!==0||(e.flags&c.default.TypeFlags.Object)!==0&&(t.getTypeArguments(e).some(e=>$(e,t,n))||e.aliasTypeArguments?.some(e=>$(e,t,n))))),ze=(e,t=[])=>{let n=`index.ts`,r=q(n,`${J(t)}\ntype MyType = ${e}`).languageService.getProgram(),i=r?.getSourceFile(n),a=r?.getTypeChecker();if(!i||!a)return;let o=i.statements.filter(e=>c.default.isTypeAliasDeclaration(e)||c.default.isInterfaceDeclaration(e)||c.default.isClassDeclaration(e)).pop();if(!o)return;let s=a.getTypeAtLocation(o);if(s)return V(a,void 0,s,[],[],!1)};exports.getFlowValidation=Q,exports.getSignatureSchema=Ae,exports.getTypeFromValue=we,exports.getTypeSchema=ze,exports.getValueFromType=Te,exports.getValueValidation=ke;
@@ -243,251 +243,9 @@ function _(e) {
243
243
  if (typeof e == "string" && e !== "") return e;
244
244
  }
245
245
  //#endregion
246
- //#region src/utils.ts
247
- var v = "\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 \n declare namespace Utils {\n type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n }\n\n import ReturnType = Utils.ReturnType;\n";
248
- function y(t, n) {
249
- let r = /* @__PURE__ */ new Map();
250
- return r.set(t, n), r.set("lib.codezero.d.ts", v), o(d(r), [t, "lib.codezero.d.ts"], e, b);
251
- }
252
- var b = {
253
- target: e.ScriptTarget.Latest,
254
- lib: ["lib.codezero.d.ts"],
255
- noEmit: !0,
256
- strictNullChecks: !0
257
- };
258
- function x(e, t = "any", n = !0) {
259
- let r = Array.from(new Set(e?.flatMap((e) => e.genericKeys || []))).map((e) => `type ${e} = ${t};`).join("\n"), i = e?.map((e) => `type ${e.identifier}${(e.genericKeys?.length ?? 0) > 0 ? `<${e.genericKeys?.join(",")}>` : ""} = ${e.type};`).join("\n"), a = e?.filter((e) => (e.genericKeys?.length ?? 0) > 0).map((e) => `declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(() => "any").join(", ")}>;`).join("\n") ?? "";
260
- return `${n ? r : ""}\n${i}\n${a}`;
261
- }
262
- var S = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_");
263
- function C(e, t, n, r = !1, i = !0) {
264
- let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t, n = "") => {
265
- let l = a.find((e) => e?.id === t);
266
- if (!l || !l.functionDefinition) return "";
267
- if (t?.includes("NodeFunction") && s.add(t), !o.get(l.functionDefinition.identifier)) return `${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;
268
- let u = (l.parameters?.nodes || []).map((a, o) => {
269
- let s = a.value;
270
- if (!s) return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
271
- if (s.__typename === "ReferenceValue") {
272
- let n = s, r = typeof n.inputIndex == "number" ? `p_${S(n.nodeFunctionId ?? "undefined")}_${n.parameterIndex}[${n.inputIndex}]` : n.nodeFunctionId ? `node_${S(n.nodeFunctionId)}` : `flow_${S(e?.id ?? "undefined")}`;
273
- return n.referencePath?.forEach((e) => {
274
- r += `?.${e.path}`;
275
- }), `/* @pos ${t} ${o} */ (${r})${i ? "!" : ""}`;
276
- }
277
- if (s.__typename === "LiteralValue") return `/* @pos ${t} ${o} */ ${s?.value !== null && s?.value !== void 0 ? g(s?.value) : void 0}`;
278
- if (s.__typename === "SubFlowValue") {
279
- let e = s;
280
- return `/* @pos ${t} ${o} */ (...${`p_${S(t)}_${o}`}) => {\n${c(e.startingNodeId || e.functionDefinition?.id, n + " ")}${n}}`;
281
- }
282
- return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
283
- }), d = `node_${S(l.id)}`, f = `fn_${l?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
284
- u.includes("undefined");
285
- let p = `${n}`;
286
- return l.functionDefinition.identifier === "std::control::return" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `return ${d};\n`) : l.functionDefinition.identifier === "std::control::if" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
287
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
288
- }`) : l.functionDefinition.identifier === "std::control::if_else" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
289
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
290
- } else {
291
- ${c(l.parameters?.nodes?.[2]?.value?.startingNodeId || (l.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, n + " ")}
292
- }`) : p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, l.nextNodeId && (p += c(l.nextNodeId, n)), p;
293
- }, l = x(n), u = `declare function flow${e?.signature ?? "(): void"}`, d = t?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join("\n"), f = new Set(a.map((e) => e?.nextNodeId).filter((e) => !!e)), p = /* @__PURE__ */ new Set();
294
- return a.forEach((e) => e?.parameters?.nodes?.forEach((e) => {
295
- e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && p.add(e.value.startingNodeId || e.value.functionDefinition?.id);
296
- })), `
297
- ${l}\n
298
- ${u}\n
299
- ${d}\n
300
- (() =>
301
- ${e ? `const flow_${S(e.id ?? "")} = /* @pos null null */ flow(${e.settings?.nodes?.map((e, t) => `/* @pos null ${t} */ ${e?.value !== null && e?.value !== void 0 ? g(e?.value) : void 0}`).join(", ") ?? ""});` : ""}
302
- ${a.filter((e) => e?.id && !f.has(e.id) && !p.has(e.id)).map((e) => c(e.id)).join("\n")}
303
- )();
304
- `;
305
- }
306
- //#endregion
307
- //#region src/extraction/getTypeFromValue.ts
308
- var w = (t, n) => {
309
- let r = g(t?.value);
310
- if (!r) return "any";
311
- let i = `
312
- ${x(n, "unknown")}
313
- const tempValue = ${r ?? "any"};
314
- `, a = "index.ts", o = y(a, i), s = o.getSourceFile(a), c = o.languageService.getProgram().getTypeChecker(), l = "any", u = (t) => {
315
- if (e.isVariableDeclaration(t) && t.name.getText() === "tempValue") {
316
- let n = c.getTypeAtLocation(t), r = c.getSymbolsInScope(t, e.SymbolFlags.TypeAlias), i = (n) => {
317
- if (n.isUnion()) {
318
- let e = n.types.map(i);
319
- return Array.from(new Set(e)).sort().join(" | ");
320
- }
321
- if (c.isArrayType(n)) {
322
- let e = n.typeArguments || [], t = e.length > 0 ? i(e[0]) : "any";
323
- return e[0]?.isUnion() ? `(${t})[]` : `${t}[]`;
324
- }
325
- if (n.getFlags() & e.TypeFlags.Object || n.isClassOrInterface()) {
326
- let e = c.getPropertiesOfType(n);
327
- if (e.length > 0) return `{ ${e.map((e) => {
328
- let n = c.getTypeOfSymbolAtLocation(e, t);
329
- return `${e.getName()}: ${i(n)}`;
330
- }).join(", ")} }`;
331
- }
332
- let a = r.filter((e) => c.isTypeAssignableTo(n, c.getDeclaredTypeOfSymbol(e)));
333
- return a.length > 0 ? a.sort((e, t) => {
334
- let n = c.getDeclaredTypeOfSymbol(e), r = c.getDeclaredTypeOfSymbol(t), i = c.isTypeAssignableTo(n, r), a = c.isTypeAssignableTo(r, n);
335
- return i && !a ? -1 : a && !i ? 1 : e.getName().length - t.getName().length || e.getName().localeCompare(t.getName());
336
- })[0].getName() : c.typeToString(n, t);
337
- };
338
- l = i(n);
339
- }
340
- e.forEachChild(t, u);
341
- };
342
- return u(s), l;
343
- }, ee = (t, n) => {
344
- let r = `
345
- ${x(n)}
346
- type Target = ${t};
347
- `, i = "index.ts", a = y(i, r), o = a.getSourceFile(i), s = a.languageService.getProgram().getTypeChecker(), c = o.statements.find((t) => e.isTypeAliasDeclaration(t) && t.name.text === "Target");
348
- if (!c) return {
349
- __typename: "LiteralValue",
350
- value: null
351
- };
352
- let l = s.getTypeAtLocation(c.type), u = (t, n, r = /* @__PURE__ */ new Set()) => {
353
- let i = new Set(r);
354
- if (i.has(t)) return null;
355
- let a = t.getFlags();
356
- if (t.isUnion()) {
357
- if (n.type, e.isTypeAliasDeclaration(n) && n.type && e.isUnionTypeNode(n.type)) return u(s.getTypeFromTypeNode(n.type.types[0]), n, i);
358
- let r = t.types.filter((t) => {
359
- let n = t.getFlags();
360
- return !(n & e.TypeFlags.Undefined) && !(n & e.TypeFlags.Null);
361
- });
362
- return u(r.length > 0 ? r[0] : t.types[0], n, i);
363
- }
364
- if (a & e.TypeFlags.StringLiteral) return t.value;
365
- if (a & e.TypeFlags.String) return "";
366
- if (a & e.TypeFlags.NumberLiteral) return t.value;
367
- if (a & e.TypeFlags.Number) return 0;
368
- if (a & e.TypeFlags.BooleanLiteral) return t.intrinsicName === "true";
369
- if (a & e.TypeFlags.Boolean) return !1;
370
- if (s.isArrayType(t)) {
371
- i.add(t);
372
- let e = u(t.typeArguments?.[0] || s.getAnyType(), n, i);
373
- return e === null ? [] : [e];
374
- }
375
- if (t.isClassOrInterface() || a & e.TypeFlags.Object || t.getProperties().length > 0) {
376
- i.add(t);
377
- let e = {};
378
- return t.getProperties().forEach((t) => {
379
- let r = s.getTypeOfSymbolAtLocation(t, n), a = t.valueDeclaration;
380
- r && (e[t.getName()] = u(r, a || n, i));
381
- }), e;
382
- }
383
- return null;
384
- };
385
- return {
386
- __typename: "LiteralValue",
387
- value: u(l, c)
388
- };
389
- }, T = 2345, te = 2339, E = (e, t, n) => {
390
- if (e.getStart() > t || e.getEnd() < n) return;
391
- let r = e;
392
- return e.forEachChild((e) => {
393
- let i = E(e, t, n);
394
- i && (r = i);
395
- }), r;
396
- }, D = (t, n, r) => {
397
- if (t.start === void 0 || t.length === void 0) return !1;
398
- let i = E(n, t.start, t.start + t.length);
399
- if (!i) return !1;
400
- if (t.code === T && e.isExpression(i)) {
401
- let t = r.getTypeAtLocation(i);
402
- if (!t.isUnion()) return !1;
403
- let n = r.getContextualType(i);
404
- return n ? t.types.some((t) => (t.flags & (e.TypeFlags.Null | e.TypeFlags.Undefined)) === 0 && r.isTypeAssignableTo(t, n)) : !1;
405
- }
406
- if (t.code === te && e.isPropertyAccessExpression(i.parent)) {
407
- let e = r.getNonNullableType(r.getTypeAtLocation(i.parent.expression));
408
- if (!e.isUnion()) return !1;
409
- let t = i.getText();
410
- return e.types.some((e) => e.getProperty(t) !== void 0);
411
- }
412
- return !1;
413
- }, O = (e, n, r) => {
414
- if (!e?.startingNodeId) return {
415
- isValid: !1,
416
- returnType: "void",
417
- diagnostics: [{
418
- nodeId: null,
419
- parameterIndex: null,
420
- code: 0,
421
- message: "You need to provide a starting node to be able to execute this flow.",
422
- severity: "error"
423
- }]
424
- };
425
- if (!e.nodes?.nodes?.find((t) => t?.id == e.startingNodeId)) return {
426
- isValid: !1,
427
- returnType: "void",
428
- diagnostics: [{
429
- nodeId: null,
430
- parameterIndex: null,
431
- code: 0,
432
- message: "The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.",
433
- severity: "error"
434
- }]
435
- };
436
- let i = new Set(n?.map((e) => e.identifier)), a = (e.nodes?.nodes ?? []).filter((e) => e?.functionDefinition && !i.has(e.functionDefinition.identifier)).map((e) => ({
437
- nodeId: e.id,
438
- parameterIndex: null,
439
- code: 0,
440
- message: `The function definition "${e.functionDefinition.identifier}" is not reachable.`,
441
- severity: "error"
442
- }));
443
- if (a.length > 0) return {
444
- isValid: !1,
445
- returnType: "void",
446
- diagnostics: a
447
- };
448
- let o = C(e, n, r, !1, !1), s = "index.ts", c = y(s, o), l = c.getSourceFile(s), u = c.languageService.getProgram(), d = u.getTypeChecker(), f = u.getSemanticDiagnostics(l).map((e) => {
449
- let n = t(e.messageText, "\n"), r, i = null;
450
- if (e.start !== void 0) {
451
- let t = l.getFullText(), n = Math.max(0, e.start - 300), a = Math.min(t.length, e.start), o = t.substring(n, a), s = /\/\* @pos ([^ ]+) (\d+|null) \*\//g, c, u = null, d = -1;
452
- for (; (c = s.exec(o)) !== null;) {
453
- let t = n + c.index + c[0].length;
454
- t <= e.start && t > d && (d = t, u = c);
455
- }
456
- u && (r = u[1] === "null" ? null : u[1], i = parseInt(u[2], 10));
457
- }
458
- let a = D(e, l, d) ? "warning" : "error";
459
- return {
460
- message: n,
461
- code: e.code,
462
- severity: a,
463
- nodeId: r,
464
- parameterIndex: typeof i == "number" && Number.isSafeInteger(i) ? i : null
465
- };
466
- }).filter((e) => e !== null);
467
- return {
468
- isValid: !f.some((e) => e?.severity === "error"),
469
- returnType: "void",
470
- diagnostics: f
471
- };
472
- }, k = (t, n, r) => {
473
- let i = g(n?.value), a = `
474
- ${x(r)}
475
- const testValue: ${t} = ${i};
476
- `, o = "index.ts", s = y(o, a).languageService.getSemanticDiagnostics(o).map((t) => {
477
- let n = e.flattenDiagnosticMessageText(t.messageText, "\n"), r = 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");
478
- return {
479
- message: n,
480
- code: t.code,
481
- severity: r ? "warning" : "error"
482
- };
483
- });
484
- return {
485
- isValid: !s.some((e) => e.severity === "error"),
486
- returnType: "void",
487
- diagnostics: s
488
- };
489
- }, A = (t) => {
490
- if (e.isUnionTypeNode(t)) return t.types.flatMap(A);
246
+ //#region src/util/values.util.ts
247
+ var v = (t) => {
248
+ if (e.isUnionTypeNode(t)) return t.types.flatMap(v);
491
249
  if (e.isLiteralTypeNode(t)) {
492
250
  let n = t.literal;
493
251
  if (e.isStringLiteral(n)) return [{
@@ -505,12 +263,12 @@ var w = (t, n) => {
505
263
  }];
506
264
  }
507
265
  return [];
508
- }, j = (t, n) => {
266
+ }, y = (t, n) => {
509
267
  if (n && t.aliasSymbol) {
510
268
  let n = t.aliasSymbol.declarations?.[0];
511
- if (n && e.isTypeAliasDeclaration(n)) return A(n.type);
269
+ if (n && e.isTypeAliasDeclaration(n)) return v(n.type);
512
270
  }
513
- return t.isUnion() ? t.types.flatMap((e) => j(e, n)) : t.isStringLiteral() ? [{
271
+ return t.isUnion() ? t.types.flatMap((e) => y(e, n)) : t.isStringLiteral() ? [{
514
272
  value: t.value,
515
273
  __typename: "LiteralValue"
516
274
  }] : t.isNumberLiteral() ? [{ value: t.value.toString() }] : t.intrinsicName === "true" ? [{
@@ -520,28 +278,28 @@ var w = (t, n) => {
520
278
  value: !1,
521
279
  __typename: "LiteralValue"
522
280
  }] : [];
523
- }, ne = (e, t, n, r) => r.flatMap((r) => {
281
+ }, b = (e, t, n, r) => r.flatMap((r) => {
524
282
  let i = r.getName();
525
- if (!re(i)) return [];
283
+ if (!x(i)) return [];
526
284
  let a = r.getDeclarations()?.[0];
527
285
  if (!a || a.getEnd() >= t.getEnd()) return [];
528
286
  let o = e.getTypeOfSymbolAtLocation(r, t);
529
- return i.startsWith("node_") ? ie(i, o, e, n) : i.startsWith("p_") ? ae(i, o, e, n) : i.startsWith("flow_") ? oe(o, e, n) : [];
530
- }), re = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), ie = (t, n, r, i) => {
287
+ return i.startsWith("node_") ? ee(i, o, e, n) : i.startsWith("p_") ? S(i, o, e, n) : i.startsWith("flow_") ? C(o, e, n) : [];
288
+ }), x = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), ee = (t, n, r, i) => {
531
289
  if ((n.flags & e.TypeFlags.Void) !== 0) return [];
532
- let a = M(t.replace("node_", ""));
533
- return I(n, r, i).flatMap(({ path: e }) => {
290
+ let a = w(t.replace("node_", ""));
291
+ return D(n, r, i).flatMap(({ path: e }) => {
534
292
  let t = {
535
293
  __typename: "ReferenceValue",
536
294
  nodeFunctionId: a
537
295
  };
538
296
  return e.length > 0 && (t.referencePath = e), t;
539
297
  });
540
- }, ae = (e, t, n, r) => {
541
- let { nodeFunctionId: i, paramIndexFromName: a } = se(e);
298
+ }, S = (e, t, n, r) => {
299
+ let { nodeFunctionId: i, paramIndexFromName: a } = te(e);
542
300
  if (!n.isTupleType(t)) return [];
543
301
  let o = t;
544
- return n.getTypeArguments(o).flatMap((e, t) => I(e, n, r).flatMap(({ path: e }) => {
302
+ return n.getTypeArguments(o).flatMap((e, t) => D(e, n, r).flatMap(({ path: e }) => {
545
303
  let n = {
546
304
  __typename: "ReferenceValue",
547
305
  nodeFunctionId: i,
@@ -551,23 +309,23 @@ var w = (t, n) => {
551
309
  };
552
310
  return e.length > 0 && (n.referencePath = e), n;
553
311
  }));
554
- }, oe = (e, t, n) => I(e, t, n).flatMap(({ path: e }) => {
312
+ }, C = (e, t, n) => D(e, t, n).flatMap(({ path: e }) => {
555
313
  let t = {
556
314
  __typename: "ReferenceValue",
557
315
  nodeFunctionId: null
558
316
  };
559
317
  return e.length > 0 && (t.referencePath = e), t;
560
- }), M = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), se = (e) => {
318
+ }), w = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), te = (e) => {
561
319
  let t = e.replace("p_", ""), n = t.lastIndexOf("_"), r = t.substring(0, n), i = parseInt(t.substring(n + 1), 10);
562
320
  return {
563
- nodeFunctionId: M(r),
321
+ nodeFunctionId: w(r),
564
322
  paramIndexFromName: i
565
323
  };
566
- }, ce = 7, N = (e, t, n) => {
324
+ }, ne = 7, T = (e, t, n) => {
567
325
  let r = n.get(e);
568
326
  if (r !== void 0) return r;
569
327
  let i = /* @__PURE__ */ new Set(), a = (n) => {
570
- if (i.has(n) || !L(n)) return !1;
328
+ if (i.has(n) || !O(n)) return !1;
571
329
  i.add(n);
572
330
  for (let r of n.getProperties()) {
573
331
  if (!r.valueDeclaration) continue;
@@ -577,32 +335,32 @@ var w = (t, n) => {
577
335
  return !1;
578
336
  }, o = a(e);
579
337
  return n.set(e, o), o;
580
- }, P = (t, n, r) => t.isUnion() ? t.types.some((e) => P(n.getNonNullableType(e), n, r)) : (t.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(t, r), F = (e, t) => e.isUnion() ? e.types.map((e) => t.getNonNullableType(e)).filter(L) : L(e) ? [e] : [], I = (e, t, n, r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map()) => {
338
+ }, E = (t, n, r) => t.isUnion() ? t.types.some((e) => E(n.getNonNullableType(e), n, r)) : (t.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(t, r), re = (e, t) => e.isUnion() ? e.types.map((e) => t.getNonNullableType(e)).filter(O) : O(e) ? [e] : [], D = (e, t, n, r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map()) => {
581
339
  let o = [], s = t.getNonNullableType(e);
582
- return P(s, t, n) && o.push({
340
+ return E(s, t, n) && o.push({
583
341
  path: r,
584
342
  type: e
585
- }), F(s, t).forEach((e) => {
586
- if (i.has(e) || r.length >= ce && N(e, t, a)) return;
343
+ }), re(s, t).forEach((e) => {
344
+ if (i.has(e) || r.length >= ne && T(e, t, a)) return;
587
345
  let s = e.getProperties();
588
346
  s && s.length > 0 && (i.add(e), s.forEach((e) => {
589
347
  let s = t.getTypeOfSymbolAtLocation(e, e.valueDeclaration), c = e.getName(), l = [...r, { path: c }];
590
- o.push(...I(s, t, n, l, i, a));
348
+ o.push(...D(s, t, n, l, i, a));
591
349
  }), i.delete(e));
592
350
  }), o;
593
- }, L = (t) => {
351
+ }, O = (t) => {
594
352
  let n = e.TypeFlags.String | e.TypeFlags.Number | e.TypeFlags.Boolean | e.TypeFlags.Undefined | e.TypeFlags.Null | e.TypeFlags.BigInt | e.TypeFlags.ESSymbol;
595
353
  return (t.flags & n) === 0;
596
- }, R = (e, t, n, r) => Z(r) ? [] : t.flatMap((t) => {
597
- let i = z(e, t, n, r);
354
+ }, k = (e, t, n, r) => K(r) ? [] : t.flatMap((t) => {
355
+ let i = A(e, t, n, r);
598
356
  return i ? [i] : [];
599
- }), z = (t, n, r, i) => {
357
+ }), A = (t, n, r, i) => {
600
358
  if (n.parameters.length > 0) return null;
601
- let a = t.getSignatureFromDeclaration(n), o = B(t, t.getReturnTypeOfSignature(a)), s = t.getNonNullableType(o);
359
+ let a = t.getSignatureFromDeclaration(n), o = j(t, t.getReturnTypeOfSignature(a)), s = t.getNonNullableType(o);
602
360
  if ((s.flags & e.TypeFlags.Never) !== 0 || !t.isTypeAssignableTo(s, i)) return null;
603
- let c = V(n.name?.getText());
604
- return H(r.find((e) => e.identifier === c));
605
- }, B = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, V = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", H = (e) => {
361
+ let c = ie(n.name?.getText());
362
+ return ae(r.find((e) => e.identifier === c));
363
+ }, j = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, ie = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", ae = (e) => {
606
364
  let t = (e?.parameterDefinitions?.nodes?.length ?? 0) > 0, n = {
607
365
  __typename: "NodeFunction",
608
366
  id: "gid://sagittarius/NodeFunction/1",
@@ -615,11 +373,11 @@ var w = (t, n) => {
615
373
  displayIcon: e?.displayIcon
616
374
  }
617
375
  };
618
- return t && (n.parameters = U(e?.parameterDefinitions?.nodes || [])), n;
619
- }, U = (e) => ({
376
+ return t && (n.parameters = oe(e?.parameterDefinitions?.nodes || [])), n;
377
+ }, oe = (e) => ({
620
378
  __typename: "NodeParameterConnection",
621
- nodes: e.map((e) => W(e))
622
- }), W = (e) => ({
379
+ nodes: e.map((e) => se(e))
380
+ }), se = (e) => ({
623
381
  __typename: "NodeParameter",
624
382
  parameterDefinition: {
625
383
  __typename: "ParameterDefinition",
@@ -630,15 +388,15 @@ var w = (t, n) => {
630
388
  __typename: "LiteralValue",
631
389
  value: e.defaultValue.value
632
390
  } : null
633
- }), G = (e, t, n, r) => Z(r) ? t.flatMap((t) => {
391
+ }), ce = (e, t, n, r) => K(r) ? t.flatMap((t) => {
634
392
  let i = le(e, t, n, r);
635
393
  return i ? [i] : [];
636
394
  }) : [], le = (e, t, n, r) => {
637
395
  let i = e.getTypeAtLocation(t);
638
396
  if (!e.isTypeAssignableTo(i, r)) return null;
639
397
  let a = ue(t.name?.getText()), o = n.find((e) => e.identifier === a);
640
- return o ? de(o) : null;
641
- }, ue = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", de = (e) => ({
398
+ return o ? M(o) : null;
399
+ }, ue = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", M = (e) => ({
642
400
  __typename: "SubFlowValue",
643
401
  functionDefinition: e,
644
402
  signature: e.signature,
@@ -649,58 +407,64 @@ var w = (t, n) => {
649
407
  hidden: e?.hidden ?? !1,
650
408
  optional: e?.optional ?? !1
651
409
  }))
652
- }), fe = 7, K = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
410
+ }), N = { DATE: "date" }, P = (e) => e != null && e in N, F = 7, I = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
653
411
  if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
654
412
  let u = r.symbol?.declarations?.[0];
655
- if (u && e.isTypeParameterDeclaration(u) && u.constraint) return K(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
413
+ if (u && e.isTypeParameterDeclaration(u) && u.constraint) return I(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
656
414
  }
657
415
  let u = t.typeToString(r), d = s ?? r, f = o ? { suggestions: [
658
- ...j(d, t),
659
- ...n ? ne(t, n, d, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
660
- ...R(t, i, a, d),
661
- ...G(t, i, a, d)
416
+ ...y(d, t),
417
+ ...n ? b(t, n, d, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
418
+ ...k(t, i, a, d),
419
+ ...ce(t, i, a, d)
662
420
  ] } : {};
663
421
  if (r.isUnion()) {
664
422
  let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
665
423
  if (o.length === 1) return {
666
- ...K(t, n, o[0], i, a, !1, void 0, c, l),
424
+ ...I(t, n, o[0], i, a, !1, void 0, c, l),
667
425
  type: u,
668
426
  ...f
669
427
  };
670
428
  }
671
- if (J(r)) return {
429
+ let p = H(r);
430
+ if (p) return {
431
+ input: p,
432
+ type: u,
433
+ ...f
434
+ };
435
+ if (U(r)) return {
672
436
  input: "boolean",
673
437
  type: u,
674
438
  ...f
675
439
  };
676
- if (ye(r) || ve(r)) return {
440
+ if (pe(r) || fe(r)) return {
677
441
  input: "select",
678
442
  type: u,
679
443
  ...f
680
444
  };
681
- if (Y(r)) return {
445
+ if (W(r)) return {
682
446
  input: "number",
683
447
  type: u,
684
448
  ...f
685
449
  };
686
- if (X(r)) return {
450
+ if (G(r)) return {
687
451
  input: "text",
688
452
  type: u,
689
453
  ...f
690
454
  };
691
- if (Z(r)) return {
455
+ if (K(r)) return {
692
456
  input: "sub-flow",
693
457
  type: u,
694
458
  ...f
695
459
  };
696
- if (be(t, r)) return {
460
+ if (me(t, r)) return {
697
461
  input: "list",
698
462
  type: u,
699
- items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => K(t, n, e, i, a, o, void 0, c, l))),
463
+ items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => I(t, n, e, i, a, o, void 0, c, l))),
700
464
  ...f
701
465
  };
702
466
  if ((r.flags & e.TypeFlags.Object) !== 0) {
703
- if (c.has(r) || c.size >= fe && N(r, t, l)) return {
467
+ if (c.has(r) || c.size >= F && T(r, t, l)) return {
704
468
  input: "data",
705
469
  type: u,
706
470
  ...f
@@ -710,7 +474,7 @@ var w = (t, n) => {
710
474
  for (let u of t.getPropertiesOfType(r)) {
711
475
  let r = u.valueDeclaration ?? u.declarations?.[0];
712
476
  if (!r) continue;
713
- let f = t.getTypeOfSymbolAtLocation(u, r), p = (u.flags & e.SymbolFlags.Optional) !== 0 || f.isUnion() && f.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), m = (f.isUnion() ? f.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [f]).map((e) => K(t, n, e, i, a, o, void 0, c, l));
477
+ let f = t.getTypeOfSymbolAtLocation(u, r), p = (u.flags & e.SymbolFlags.Optional) !== 0 || f.isUnion() && f.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), m = (f.isUnion() ? f.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [f]).map((e) => I(t, n, e, i, a, o, void 0, c, l));
714
478
  s[u.name] = m.length === 1 ? m[0] : m, p || d.push(u.name);
715
479
  }
716
480
  return c.delete(r), {
@@ -726,14 +490,14 @@ var w = (t, n) => {
726
490
  type: u,
727
491
  ...f
728
492
  };
729
- }, q = (e, t, n = !1) => {
730
- if (!e || e.input === "generic") return he(ge(t), n);
731
- let r = me(e.suggestions, t.suggestions);
493
+ }, L = (e, t, n = !1) => {
494
+ if (!e || e.input === "generic") return B(V(t), n);
495
+ let r = z(e.suggestions, t.suggestions);
732
496
  if (e.input === "data") {
733
497
  let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = new Set([...Object.keys(n), ...Object.keys(i)]);
734
498
  for (let e of o) {
735
499
  let t = n[e], r = i[e];
736
- a[e] = pe(t, r);
500
+ a[e] = R(t, r);
737
501
  }
738
502
  return {
739
503
  ...e,
@@ -742,7 +506,7 @@ var w = (t, n) => {
742
506
  };
743
507
  }
744
508
  if (e.input === "list") {
745
- let n = e.items ?? [], i = t.input === "list" ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) => q(e, i[t])) : n;
509
+ let n = e.items ?? [], i = t.input === "list" ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) => L(e, i[t])) : n;
746
510
  return {
747
511
  ...e,
748
512
  items: a,
@@ -753,7 +517,7 @@ var w = (t, n) => {
753
517
  ...e,
754
518
  ...r ? { suggestions: r } : {}
755
519
  };
756
- }, pe = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? q(e, t) : e ?? t, me = (e, t) => {
520
+ }, R = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? L(e, t) : e ?? t, z = (e, t) => {
757
521
  let n = [...e ?? [], ...t ?? []];
758
522
  if (n.length === 0) return;
759
523
  let r = /* @__PURE__ */ new Set(), i = [];
@@ -762,13 +526,13 @@ var w = (t, n) => {
762
526
  r.has(t) || (r.add(t), i.push(e));
763
527
  }
764
528
  return i;
765
- }, he = (e, t) => !t || e.input !== "generic" ? e : {
529
+ }, B = (e, t) => !t || e.input !== "generic" ? e : {
766
530
  input: "data",
767
531
  ...e.type ? { type: e.type } : {},
768
532
  properties: {},
769
533
  required: [],
770
534
  ...e.suggestions ? { suggestions: e.suggestions } : {}
771
- }, ge = (e) => {
535
+ }, V = (e) => {
772
536
  if (e.input !== "select") return e;
773
537
  let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
774
538
  for (let e of t) {
@@ -785,7 +549,11 @@ var w = (t, n) => {
785
549
  ...t.length > 0 ? { suggestions: t } : {}
786
550
  };
787
551
  };
788
- function J(t) {
552
+ function H(e) {
553
+ let t = e.aliasSymbol?.getName();
554
+ return P(t) ? N[t] : void 0;
555
+ }
556
+ function U(t) {
789
557
  if ((t.flags & e.TypeFlags.Boolean) !== 0 || (t.flags & e.TypeFlags.BooleanLiteral) !== 0) return !0;
790
558
  if (t.isUnion()) {
791
559
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
@@ -793,39 +561,281 @@ function J(t) {
793
561
  }
794
562
  return !1;
795
563
  }
796
- function Y(t) {
564
+ function W(t) {
797
565
  return (t.flags & e.TypeFlags.Number) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
798
566
  }
799
- function X(t) {
567
+ function G(t) {
800
568
  return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
801
569
  }
802
- function _e(e) {
803
- return X(e) || Y(e) || J(e);
570
+ function de(e) {
571
+ return G(e) || W(e) || U(e);
804
572
  }
805
- function ve(t) {
573
+ function fe(t) {
806
574
  return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
807
575
  }
808
- function ye(t) {
576
+ function pe(t) {
809
577
  if (!t.isUnion()) return !1;
810
578
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
811
- return n.length > 0 && n.every(_e);
579
+ return n.length > 0 && n.every(de);
812
580
  }
813
- function be(e, t) {
581
+ function me(e, t) {
814
582
  return e.isArrayType(t) || e.isTupleType(t);
815
583
  }
816
- function Z(e) {
584
+ function K(e) {
817
585
  return e.getCallSignatures().length > 0;
818
586
  }
819
587
  //#endregion
820
- //#region src/schema/getSignatureSchema.ts
821
- var xe = (t, n, r, i) => {
822
- let a = C(t, r, n), o = "index.ts", s = y(o, a), c = s.getSourceFile(o), l = s.languageService.getProgram().getTypeChecker(), u = t.nodes?.nodes?.find((e) => e?.id === i), d = i ? `fn_${u?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", f = i ? `node_${S(i)}` : `flow_${S(t.id)}`, p = Se(c), m = Ce(c).get(f), h = p.get(d), g = we(l, m), _ = Te(l, h, m), v = g?.map((t, n) => (t.flags & e.TypeFlags.Undefined) === 0 ? t : _?.[n] ?? t), b = (u?.parameters?.nodes ?? []).map((e) => e?.value != null), x = De(l, m, v, _, Ee(h, g, b), i ? p : /* @__PURE__ */ new Map(), i ? r : [], b), w = Q(l, m, h);
588
+ //#region src/utils.ts
589
+ var he = "\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 \n declare namespace Utils {\n type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n }\n\n import ReturnType = Utils.ReturnType;\n";
590
+ function q(t, n) {
591
+ let r = /* @__PURE__ */ new Map();
592
+ return r.set(t, n), r.set("lib.codezero.d.ts", he), o(d(r), [t, "lib.codezero.d.ts"], e, ge);
593
+ }
594
+ var ge = {
595
+ target: e.ScriptTarget.Latest,
596
+ lib: ["lib.codezero.d.ts"],
597
+ noEmit: !0,
598
+ strictNullChecks: !0
599
+ };
600
+ function J(e, t = "any", n = !0) {
601
+ let r = Array.from(new Set(e?.flatMap((e) => e.genericKeys || []))).map((e) => `type ${e} = ${t};`).join("\n"), i = e?.map((e) => {
602
+ let t = (e.genericKeys?.length ?? 0) > 0 ? `<${e.genericKeys?.join(",")}>` : "", n = P(e.identifier) ? `${e.type} & {}` : e.type;
603
+ return `type ${e.identifier}${t} = ${n};`;
604
+ }).join("\n"), a = e?.filter((e) => (e.genericKeys?.length ?? 0) > 0).map((e) => `declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(() => "any").join(", ")}>;`).join("\n") ?? "";
605
+ return `${n ? r : ""}\n${i}\n${a}`;
606
+ }
607
+ var Y = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_");
608
+ function X(e, t, n, r = !1, i = !0) {
609
+ let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t, n = "") => {
610
+ let l = a.find((e) => e?.id === t);
611
+ if (!l || !l.functionDefinition) return "";
612
+ if (t?.includes("NodeFunction") && s.add(t), !o.get(l.functionDefinition.identifier)) return `${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;
613
+ let u = (l.parameters?.nodes || []).map((a, o) => {
614
+ let s = a.value;
615
+ if (!s) return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
616
+ if (s.__typename === "ReferenceValue") {
617
+ let n = s, r = typeof n.inputIndex == "number" ? `p_${Y(n.nodeFunctionId ?? "undefined")}_${n.parameterIndex}[${n.inputIndex}]` : n.nodeFunctionId ? `node_${Y(n.nodeFunctionId)}` : `flow_${Y(e?.id ?? "undefined")}`;
618
+ return n.referencePath?.forEach((e) => {
619
+ r += `?.${e.path}`;
620
+ }), `/* @pos ${t} ${o} */ (${r})${i ? "!" : ""}`;
621
+ }
622
+ if (s.__typename === "LiteralValue") return `/* @pos ${t} ${o} */ ${s?.value !== null && s?.value !== void 0 ? g(s?.value) : void 0}`;
623
+ if (s.__typename === "SubFlowValue") {
624
+ let e = s;
625
+ return `/* @pos ${t} ${o} */ (...${`p_${Y(t)}_${o}`}) => {\n${c(e.startingNodeId || e.functionDefinition?.id, n + " ")}${n}}`;
626
+ }
627
+ return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
628
+ }), d = `node_${Y(l.id)}`, f = `fn_${l?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
629
+ u.includes("undefined");
630
+ let p = `${n}`;
631
+ return l.functionDefinition.identifier === "std::control::return" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `return ${d};\n`) : l.functionDefinition.identifier === "std::control::if" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
632
+ ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
633
+ }`) : l.functionDefinition.identifier === "std::control::if_else" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
634
+ ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
635
+ } else {
636
+ ${c(l.parameters?.nodes?.[2]?.value?.startingNodeId || (l.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, n + " ")}
637
+ }`) : p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, l.nextNodeId && (p += c(l.nextNodeId, n)), p;
638
+ }, l = J(n), u = `declare function flow${e?.signature ?? "(): void"}`, d = t?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join("\n"), f = new Set(a.map((e) => e?.nextNodeId).filter((e) => !!e)), p = /* @__PURE__ */ new Set();
639
+ return a.forEach((e) => e?.parameters?.nodes?.forEach((e) => {
640
+ e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && p.add(e.value.startingNodeId || e.value.functionDefinition?.id);
641
+ })), `
642
+ ${l}\n
643
+ ${u}\n
644
+ ${d}\n
645
+ (() =>
646
+ ${e ? `const flow_${Y(e.id ?? "")} = /* @pos null null */ flow(${e.settings?.nodes?.map((e, t) => `/* @pos null ${t} */ ${e?.value !== null && e?.value !== void 0 ? g(e?.value) : void 0}`).join(", ") ?? ""});` : ""}
647
+ ${a.filter((e) => e?.id && !f.has(e.id) && !p.has(e.id)).map((e) => c(e.id)).join("\n")}
648
+ )();
649
+ `;
650
+ }
651
+ //#endregion
652
+ //#region src/extraction/getTypeFromValue.ts
653
+ var _e = (t, n) => {
654
+ let r = g(t?.value);
655
+ if (!r) return "any";
656
+ let i = `
657
+ ${J(n, "unknown")}
658
+ const tempValue = ${r ?? "any"};
659
+ `, a = "index.ts", o = q(a, i), s = o.getSourceFile(a), c = o.languageService.getProgram().getTypeChecker(), l = "any", u = (t) => {
660
+ if (e.isVariableDeclaration(t) && t.name.getText() === "tempValue") {
661
+ let n = c.getTypeAtLocation(t), r = (n) => {
662
+ if (n.isUnion()) {
663
+ let e = n.types.map(r);
664
+ return Array.from(new Set(e)).sort().join(" | ");
665
+ }
666
+ if (c.isArrayType(n)) {
667
+ let e = n.typeArguments || [], t = e.length > 0 ? r(e[0]) : "any";
668
+ return e[0]?.isUnion() ? `(${t})[]` : `${t}[]`;
669
+ }
670
+ if (n.getFlags() & e.TypeFlags.Object || n.isClassOrInterface()) {
671
+ let e = c.getPropertiesOfType(n);
672
+ if (e.length > 0) return `{ ${e.map((e) => {
673
+ let n = c.getTypeOfSymbolAtLocation(e, t);
674
+ return `${e.getName()}: ${r(n)}`;
675
+ }).join(", ")} }`;
676
+ }
677
+ let i = c.getBaseTypeOfLiteralType(n);
678
+ return c.typeToString(i, t);
679
+ };
680
+ l = r(n);
681
+ }
682
+ e.forEachChild(t, u);
683
+ };
684
+ return u(s), l;
685
+ }, ve = (t, n) => {
686
+ let r = `
687
+ ${J(n)}
688
+ type Target = ${t};
689
+ `, i = "index.ts", a = q(i, r), o = a.getSourceFile(i), s = a.languageService.getProgram().getTypeChecker(), c = o.statements.find((t) => e.isTypeAliasDeclaration(t) && t.name.text === "Target");
690
+ if (!c) return {
691
+ __typename: "LiteralValue",
692
+ value: null
693
+ };
694
+ let l = s.getTypeAtLocation(c.type), u = (t, n, r = /* @__PURE__ */ new Set()) => {
695
+ let i = new Set(r);
696
+ if (i.has(t)) return null;
697
+ let a = t.getFlags();
698
+ if (t.isUnion()) {
699
+ if (n.type, e.isTypeAliasDeclaration(n) && n.type && e.isUnionTypeNode(n.type)) return u(s.getTypeFromTypeNode(n.type.types[0]), n, i);
700
+ let r = t.types.filter((t) => {
701
+ let n = t.getFlags();
702
+ return !(n & e.TypeFlags.Undefined) && !(n & e.TypeFlags.Null);
703
+ });
704
+ return u(r.length > 0 ? r[0] : t.types[0], n, i);
705
+ }
706
+ if (a & e.TypeFlags.StringLiteral) return t.value;
707
+ if (a & e.TypeFlags.String) return "";
708
+ if (a & e.TypeFlags.NumberLiteral) return t.value;
709
+ if (a & e.TypeFlags.Number) return 0;
710
+ if (a & e.TypeFlags.BooleanLiteral) return t.intrinsicName === "true";
711
+ if (a & e.TypeFlags.Boolean) return !1;
712
+ if (s.isArrayType(t)) {
713
+ i.add(t);
714
+ let e = u(t.typeArguments?.[0] || s.getAnyType(), n, i);
715
+ return e === null ? [] : [e];
716
+ }
717
+ if (t.isClassOrInterface() || a & e.TypeFlags.Object || t.getProperties().length > 0) {
718
+ i.add(t);
719
+ let e = {};
720
+ return t.getProperties().forEach((t) => {
721
+ let r = s.getTypeOfSymbolAtLocation(t, n), a = t.valueDeclaration;
722
+ r && (e[t.getName()] = u(r, a || n, i));
723
+ }), e;
724
+ }
725
+ return null;
726
+ };
727
+ return {
728
+ __typename: "LiteralValue",
729
+ value: u(l, c)
730
+ };
731
+ }, ye = 2345, be = 2339, Z = (e, t, n) => {
732
+ if (e.getStart() > t || e.getEnd() < n) return;
733
+ let r = e;
734
+ return e.forEachChild((e) => {
735
+ let i = Z(e, t, n);
736
+ i && (r = i);
737
+ }), r;
738
+ }, xe = (t, n, r) => {
739
+ if (t.start === void 0 || t.length === void 0) return !1;
740
+ let i = Z(n, t.start, t.start + t.length);
741
+ if (!i) return !1;
742
+ if (t.code === ye && e.isExpression(i)) {
743
+ let t = r.getTypeAtLocation(i);
744
+ if (!t.isUnion()) return !1;
745
+ let n = r.getContextualType(i);
746
+ return n ? t.types.some((t) => (t.flags & (e.TypeFlags.Null | e.TypeFlags.Undefined)) === 0 && r.isTypeAssignableTo(t, n)) : !1;
747
+ }
748
+ if (t.code === be && e.isPropertyAccessExpression(i.parent)) {
749
+ let e = r.getNonNullableType(r.getTypeAtLocation(i.parent.expression));
750
+ if (!e.isUnion()) return !1;
751
+ let t = i.getText();
752
+ return e.types.some((e) => e.getProperty(t) !== void 0);
753
+ }
754
+ return !1;
755
+ }, Se = (e, n, r) => {
756
+ if (!e?.startingNodeId) return {
757
+ isValid: !1,
758
+ returnType: "void",
759
+ diagnostics: [{
760
+ nodeId: null,
761
+ parameterIndex: null,
762
+ code: 0,
763
+ message: "You need to provide a starting node to be able to execute this flow.",
764
+ severity: "error"
765
+ }]
766
+ };
767
+ if (!e.nodes?.nodes?.find((t) => t?.id == e.startingNodeId)) return {
768
+ isValid: !1,
769
+ returnType: "void",
770
+ diagnostics: [{
771
+ nodeId: null,
772
+ parameterIndex: null,
773
+ code: 0,
774
+ message: "The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.",
775
+ severity: "error"
776
+ }]
777
+ };
778
+ let i = new Set(n?.map((e) => e.identifier)), a = (e.nodes?.nodes ?? []).filter((e) => e?.functionDefinition && !i.has(e.functionDefinition.identifier)).map((e) => ({
779
+ nodeId: e.id,
780
+ parameterIndex: null,
781
+ code: 0,
782
+ message: `The function definition "${e.functionDefinition.identifier}" is not reachable.`,
783
+ severity: "error"
784
+ }));
785
+ if (a.length > 0) return {
786
+ isValid: !1,
787
+ returnType: "void",
788
+ diagnostics: a
789
+ };
790
+ let o = X(e, n, r, !1, !1), s = "index.ts", c = q(s, o), l = c.getSourceFile(s), u = c.languageService.getProgram(), d = u.getTypeChecker(), f = u.getSemanticDiagnostics(l).map((e) => {
791
+ let n = t(e.messageText, "\n"), r, i = null;
792
+ if (e.start !== void 0) {
793
+ let t = l.getFullText(), n = Math.max(0, e.start - 300), a = Math.min(t.length, e.start), o = t.substring(n, a), s = /\/\* @pos ([^ ]+) (\d+|null) \*\//g, c, u = null, d = -1;
794
+ for (; (c = s.exec(o)) !== null;) {
795
+ let t = n + c.index + c[0].length;
796
+ t <= e.start && t > d && (d = t, u = c);
797
+ }
798
+ u && (r = u[1] === "null" ? null : u[1], i = parseInt(u[2], 10));
799
+ }
800
+ let a = xe(e, l, d) ? "warning" : "error";
801
+ return {
802
+ message: n,
803
+ code: e.code,
804
+ severity: a,
805
+ nodeId: r,
806
+ parameterIndex: typeof i == "number" && Number.isSafeInteger(i) ? i : null
807
+ };
808
+ }).filter((e) => e !== null);
809
+ return {
810
+ isValid: !f.some((e) => e?.severity === "error"),
811
+ returnType: "void",
812
+ diagnostics: f
813
+ };
814
+ }, Ce = (t, n, r) => {
815
+ let i = g(n?.value), a = `
816
+ ${J(r)}
817
+ const testValue: ${t} = ${i};
818
+ `, o = "index.ts", s = q(o, a).languageService.getSemanticDiagnostics(o).map((t) => {
819
+ let n = e.flattenDiagnosticMessageText(t.messageText, "\n"), r = 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");
820
+ return {
821
+ message: n,
822
+ code: t.code,
823
+ severity: r ? "warning" : "error"
824
+ };
825
+ });
826
+ return {
827
+ isValid: !s.some((e) => e.severity === "error"),
828
+ returnType: "void",
829
+ diagnostics: s
830
+ };
831
+ }, we = (t, n, r, i) => {
832
+ let a = X(t, r, n), o = "index.ts", s = q(o, a), c = s.getSourceFile(o), l = s.languageService.getProgram().getTypeChecker(), u = t.nodes?.nodes?.find((e) => e?.id === i), d = i ? `fn_${u?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", f = i ? `node_${Y(i)}` : `flow_${Y(t.id)}`, p = Ee(c), m = De(c).get(f), h = p.get(d), g = Q(l, m), _ = Oe(l, h, m), v = g?.map((t, n) => (t.flags & e.TypeFlags.Undefined) === 0 ? t : _?.[n] ?? t), y = (u?.parameters?.nodes ?? []).map((e) => e?.value != null), b = Ae(l, m, v, _, ke(h, g, y), i ? p : /* @__PURE__ */ new Map(), i ? r : [], y), x = Te(l, m, h);
823
833
  return {
824
834
  nodeId: i,
825
- parameters: x,
826
- return: w ? K(l, m, w, Array.from(p.values()), r, !1) : { input: "generic" }
835
+ parameters: b,
836
+ return: x ? I(l, m, x, Array.from(p.values()), r, !1) : { input: "generic" }
827
837
  };
828
- }, Q = (t, n, r) => {
838
+ }, Te = (t, n, r) => {
829
839
  if (n?.initializer && e.isCallExpression(n.initializer)) {
830
840
  let e = t.getResolvedSignature(n.initializer);
831
841
  if (e) return t.getReturnTypeOfSignature(e);
@@ -834,21 +844,21 @@ var xe = (t, n, r, i) => {
834
844
  let e = t.getSignatureFromDeclaration(r);
835
845
  if (e) return t.getReturnTypeOfSignature(e);
836
846
  }
837
- }, Se = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), Ce = (t) => {
847
+ }, Ee = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), De = (t) => {
838
848
  let n = [];
839
849
  return t.statements.forEach((t) => {
840
850
  t.forEachChild(function t(r) {
841
851
  e.isVariableDeclaration(r) && (r.parent.flags & e.NodeFlags.Const) !== 0 && n.push([r.name.getText(), r]), r.forEachChild(t);
842
852
  });
843
853
  }), new Map(n);
844
- }, we = (t, n) => {
854
+ }, Q = (t, n) => {
845
855
  if (!(!n?.initializer || !e.isCallExpression(n.initializer))) return t.getResolvedSignature(n.initializer)?.parameters.map((e) => t.getTypeOfSymbolAtLocation(e, n.initializer));
846
- }, Te = (e, t, n) => {
856
+ }, Oe = (e, t, n) => {
847
857
  if (!(!t || !n?.initializer)) return t.parameters.map((t) => {
848
858
  let r = e.getSymbolAtLocation(t.name);
849
859
  return e.getTypeOfSymbolAtLocation(r, n.initializer);
850
860
  });
851
- }, Ee = (t, n, r = []) => {
861
+ }, ke = (t, n, r = []) => {
852
862
  let i = t.typeParameters?.map((e) => e.name.getText()) || [], a = {};
853
863
  t.parameters.forEach((t, n) => {
854
864
  if (!t.type) return;
@@ -878,13 +888,13 @@ var xe = (t, n, r, i) => {
878
888
  let a = (i.flags & e.TypeFlags.Null) !== 0, o = (i.flags & e.TypeFlags.Undefined) !== 0;
879
889
  return a || o;
880
890
  }) : o;
881
- }, De = (e, t, n, r, i, a, o, s) => n ? n.map((n, c) => {
882
- let l = r?.[c], u = l ? Oe(e, l, t) : void 0, d = K(e, t, n, Array.from(a.values()), o, !0, u);
891
+ }, Ae = (e, t, n, r, i, a, o, s) => n ? n.map((n, c) => {
892
+ let l = r?.[c], u = l ? je(e, l, t) : void 0, d = I(e, t, n, Array.from(a.values()), o, !0, u);
883
893
  return {
884
- schema: q(l ? K(e, t, l, Array.from(a.values()), o, !1) : void 0, d, s[c] ?? !1),
894
+ schema: L(l ? I(e, t, l, Array.from(a.values()), o, !1) : void 0, d, s[c] ?? !1),
885
895
  blockedBy: i.filter((e) => e.parameterIndex === c).map((e) => e.dependsOnIndex)
886
896
  };
887
- }) : [], Oe = (t, n, r) => {
897
+ }) : [], je = (t, n, r) => {
888
898
  if ((n.flags & e.TypeFlags.TypeParameter) !== 0) {
889
899
  let r = n.symbol?.declarations?.[0];
890
900
  return r && e.isTypeParameterDeclaration(r) && r.constraint ? t.getTypeFromTypeNode(r.constraint) : t.getAnyType();
@@ -899,13 +909,13 @@ var xe = (t, n, r, i) => {
899
909
  return t.getAnyType();
900
910
  }
901
911
  return n;
902
- }, $ = (t, n, r) => r.has(t) ? !1 : (r.add(t), !!((t.flags & e.TypeFlags.TypeParameter) !== 0 || (t.flags & e.TypeFlags.Object) !== 0 && (n.getTypeArguments(t).some((e) => $(e, n, r)) || t.aliasTypeArguments?.some((e) => $(e, n, r))))), ke = (t, n = []) => {
903
- let r = "index.ts", i = y(r, `${x(n)}\ntype MyType = ${t}`).languageService.getProgram(), a = i?.getSourceFile(r), o = i?.getTypeChecker();
912
+ }, $ = (t, n, r) => r.has(t) ? !1 : (r.add(t), !!((t.flags & e.TypeFlags.TypeParameter) !== 0 || (t.flags & e.TypeFlags.Object) !== 0 && (n.getTypeArguments(t).some((e) => $(e, n, r)) || t.aliasTypeArguments?.some((e) => $(e, n, r))))), Me = (t, n = []) => {
913
+ let r = "index.ts", i = q(r, `${J(n)}\ntype MyType = ${t}`).languageService.getProgram(), a = i?.getSourceFile(r), o = i?.getTypeChecker();
904
914
  if (!a || !o) return;
905
915
  let s = a.statements.filter((t) => e.isTypeAliasDeclaration(t) || e.isInterfaceDeclaration(t) || e.isClassDeclaration(t)).pop();
906
916
  if (!s) return;
907
917
  let c = o.getTypeAtLocation(s);
908
- if (c) return K(o, void 0, c, [], [], !1);
918
+ if (c) return I(o, void 0, c, [], [], !1);
909
919
  };
910
920
  //#endregion
911
- export { O as getFlowValidation, xe as getSignatureSchema, w as getTypeFromValue, ke as getTypeSchema, ee as getValueFromType, k as getValueValidation };
921
+ export { Se as getFlowValidation, we as getSignatureSchema, _e as getTypeFromValue, Me as getTypeSchema, ve as getValueFromType, Ce as getValueValidation };
@@ -1,5 +1,27 @@
1
1
  import { default as ts, FunctionDeclaration } from 'typescript';
2
2
  import { FunctionDefinition, LiteralValue, NodeFunction, ReferenceValue, SubFlowValue } from '@code0-tech/sagittarius-graphql-types';
3
+ /**
4
+ * Maps a data type identifier to a dedicated input kind.
5
+ *
6
+ * These are semantic data types whose underlying (structural) type does not by
7
+ * itself convey the custom input they need — e.g. DATE is a number underneath
8
+ * but should render a date picker. The mapping is keyed on the identifier alone:
9
+ * the resulting schema carries only the input kind (plus the usual type and
10
+ * suggestions), nothing derived from the structure.
11
+ *
12
+ * Adding a new mapping is a one-line change here. The rest of the pipeline reads
13
+ * from this registry: the declaration layer brands each identifier so its alias
14
+ * name survives type resolution (see {@link getSharedTypeDeclarations}), the
15
+ * schema layer surfaces the mapped input, and the value/inference layers treat
16
+ * it as its underlying type.
17
+ */
18
+ export declare const CUSTOM_INPUT_IDENTIFIERS: {
19
+ readonly DATE: "date";
20
+ };
21
+ /** A data type identifier that maps to a custom input. */
22
+ export type CustomInputIdentifier = keyof typeof CUSTOM_INPUT_IDENTIFIERS;
23
+ /** Returns true if the given identifier maps to a custom input. */
24
+ export declare const isCustomInputIdentifier: (identifier: string | null | undefined) => identifier is CustomInputIdentifier;
3
25
  /**
4
26
  * Base interface for all input types.
5
27
  * Provides common properties for suggestions and input metadata.
@@ -37,6 +59,14 @@ export interface SubFlowInput extends Input {
37
59
  export interface PrimitiveInput extends Input {
38
60
  input?: "boolean" | "number" | "text" | "select";
39
61
  }
62
+ /**
63
+ * Represents a date input type.
64
+ * Emitted for the DATE data type so the UI can render a dedicated date picker
65
+ * instead of the plain number input its underlying type would otherwise produce.
66
+ */
67
+ export interface DateInput extends Input {
68
+ input?: "date";
69
+ }
40
70
  /**
41
71
  * Represents a data object input type with structured properties.
42
72
  * Includes property definitions and required field tracking.
@@ -72,7 +102,7 @@ export interface TypeInput extends Input {
72
102
  * Union type representing all possible schema input types.
73
103
  * Discriminated union based on the 'input' field.
74
104
  */
75
- export type Schema = PrimitiveInput | DataInput | ListInput | TypeInput | SubFlowInput | GenericInput;
105
+ export type Schema = PrimitiveInput | DateInput | DataInput | ListInput | TypeInput | SubFlowInput | GenericInput;
76
106
  /**
77
107
  * Generates a schema definition for a given TypeScript type.
78
108
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code0-tech/triangulum",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/code0-tech/triangulum#readme",
6
6
  "bugs": {
@@ -23,7 +23,7 @@
23
23
  "build": "vite build"
24
24
  },
25
25
  "devDependencies": {
26
- "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2705887128-b8e126d1674035ed0f869775b533d7093e8aedbd",
26
+ "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2722865546-50e0e86411a3ab53d9fdd8be7ec7af5c3ab43f8a",
27
27
  "@types/node": "^25.6.0",
28
28
  "@typescript/vfs": "^1.6.4",
29
29
  "typescript": "^6.0.3",
@@ -33,7 +33,7 @@
33
33
  "lossless-json": "^4.3.0"
34
34
  },
35
35
  "peerDependencies": {
36
- "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2705887128-b8e126d1674035ed0f869775b533d7093e8aedbd",
36
+ "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2722865546-50e0e86411a3ab53d9fdd8be7ec7af5c3ab43f8a",
37
37
  "@typescript/vfs": "^1.6.4",
38
38
  "typescript": "^5.9.3 || ^6.0.2",
39
39
  "lossless-json": "^4.3.0"