@code0-tech/triangulum 0.25.3 → 0.25.5

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.
@@ -6,10 +6,14 @@ import { Schema } from '../util/schema.util';
6
6
  */
7
7
  export interface NodeSchema {
8
8
  nodeId: NodeFunction["id"];
9
- /** The schema definition for this node parameter */
9
+ /**
10
+ * The schema definition for this node parameter. Produced by merging the
11
+ * function-declared parameter schema with the node's concrete value schema:
12
+ * the function schema drives the structural shape, the node schema contributes
13
+ * additional suggestions, and a generic function parameter falls back to the
14
+ * node's concrete shape (never as a select).
15
+ */
10
16
  schema: Schema;
11
- /** The schema definition for the function parameter */
12
- functionSchema: Schema;
13
17
  /** Array of parameter indices that must be resolved before this parameter */
14
18
  blockedBy?: number[];
15
19
  }
@@ -1,9 +1,9 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("typescript");c=s(c,1);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}var u=!1;try{u=typeof localStorage<`u`}catch{}var d=typeof process<`u`,f=u&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||d&&process.env.DEBUG?console.log:function(e){return``};function p(e,t,n,r,i){r===void 0&&(r={});var a=l({},g(n),r),o=ee(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,u=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=y(e,r,n);throw Error(n.formatDiagnostics(f,p.compilerHost))}return{name:`vfs`,sys:e,languageService:d,getSourceFile:function(e){return d.getProgram()?.getSourceFile(e)},createFile:function(e,t){c(n.createSourceFile(e,t,a.target,!1))},updateFile:function(e,t,r){var i=d.getProgram().getSourceFile(e);if(!i)throw Error(`Did not find a source file for `+e);var a=i.text,o=r??n.createTextSpan(0,a.length),s=a.slice(0,o.start)+t+a.slice(o.start+o.length);c(n.updateSourceFile(i,s,{span:o,newLength:t.length}))},deleteFile:function(e){var t=d.getProgram().getSourceFile(e);t&&u(t)}}}function m(e){throw Error(`Method '`+e+`' is not implemented.`)}function h(e,t){return function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=t.apply(void 0,r),o=typeof a==`string`?a.slice(0,80)+`...`:a;return f.apply(void 0,[`> `+e].concat(r)),f(`< `+o),a}}var g=function(e){return l({},e.getDefaultCompilerOptions(),{jsx:e.JsxEmit.React,strict:!0,esModuleInterop:!0,module:e.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},e.versionMajorMinor&&Number(e.versionMajorMinor.split(`.`)[0])>=6?{ignoreDeprecations:`6.0`}:{moduleResolution:e.ModuleResolutionKind.NodeJs})},_=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function v(e){return{args:[],createDirectory:function(){return m(`createDirectory`)},directoryExists:h(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return m(`exit`)},fileExists:h(`fileExists`,function(t){return e.has(t)||e.has(_(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return m(`getExecutingFilePath`)},readDirectory:h(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:h(`readFile`,function(t){return e.get(t)??e.get(_(t))}),resolvePath:function(e){return e},newLine:`
2
- `,useCaseSensitiveFileNames:!0,write:function(){return m(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function y(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:l({},e,{getCanonicalFileName:function(e){return e},getDefaultLibFileName:function(){return`/`+n.getDefaultLibFileName(t)},getNewLine:function(){return e.newLine},getSourceFile:function(a,o){return r.get(a)||i(n.createSourceFile(a,e.readFile(a),o??t.target??g(n).target,!1))},useCaseSensitiveFileNames:function(){return e.useCaseSensitiveFileNames}}),updateFile:function(t){var n=r.has(t.fileName);return e.writeFile(t.fileName,t.text),r.set(t.fileName,t),n},deleteFile:function(t){var n=r.has(t.fileName);return r.delete(t.fileName),e.deleteFile(t.fileName),n}}}function ee(e,t,n,r,i){var a=[].concat(t),o=y(e,n,r),s=o.compilerHost,c=o.updateFile,u=o.deleteFile,d=new Map,f=0;return{languageServiceHost:l({},s,{getProjectVersion:function(){return f.toString()},getCompilationSettings:function(){return n},getCustomTransformers:function(){return i},getScriptFileNames:function(){return a.slice()},getScriptSnapshot:function(t){var n=e.readFile(t);if(n&&typeof n==`string`)return r.ScriptSnapshot.fromString(n)},getScriptVersion:function(e){return d.get(e)||`0`},writeFile:e.writeFile}),updateFile:function(e){f++,d.set(e.fileName,f.toString()),a.includes(e.fileName)||a.push(e.fileName),c(e)},deleteFile:function(e){f++,d.set(e.fileName,f.toString());var t=a.indexOf(e.fileName);t!==-1&&a.splice(t,1),u(e)}}}function b(e){return x.test(e)}var x=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function S(e,t,n,r){let i=te(n);return a(typeof t==`function`?t.call({"":e},``,e):e,``);function a(e,t){if(Array.isArray(r)){let t=r.find(t=>t.test(e));if(t){let n=t.stringify(e);if(typeof n!=`string`||!b(n))throw Error(`Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${n})`);return n}}if(typeof e==`boolean`||typeof e==`number`||typeof e==`string`||e===null||e instanceof Date||e instanceof Boolean||e instanceof Number||e instanceof String)return JSON.stringify(e);if(e?.isLosslessNumber||typeof e==`bigint`)return e.toString();if(Array.isArray(e))return o(e,t);if(e&&typeof e==`object`)return s(e,t)}function o(e,n){if(e.length===0)return`[]`;let r=i?n+i:void 0,o=i?`[
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("typescript");c=s(c,1);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}var u=!1;try{u=typeof localStorage<`u`}catch{}var d=typeof process<`u`,f=u&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||d&&process.env.DEBUG?console.log:function(e){return``};function p(e,t,n,r,i){r===void 0&&(r={});var a=l({},g(n),r),o=b(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,u=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=y(e,r,n);throw Error(n.formatDiagnostics(f,p.compilerHost))}return{name:`vfs`,sys:e,languageService:d,getSourceFile:function(e){return d.getProgram()?.getSourceFile(e)},createFile:function(e,t){c(n.createSourceFile(e,t,a.target,!1))},updateFile:function(e,t,r){var i=d.getProgram().getSourceFile(e);if(!i)throw Error(`Did not find a source file for `+e);var a=i.text,o=r??n.createTextSpan(0,a.length),s=a.slice(0,o.start)+t+a.slice(o.start+o.length);c(n.updateSourceFile(i,s,{span:o,newLength:t.length}))},deleteFile:function(e){var t=d.getProgram().getSourceFile(e);t&&u(t)}}}function m(e){throw Error(`Method '`+e+`' is not implemented.`)}function h(e,t){return function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=t.apply(void 0,r),o=typeof a==`string`?a.slice(0,80)+`...`:a;return f.apply(void 0,[`> `+e].concat(r)),f(`< `+o),a}}var g=function(e){return l({},e.getDefaultCompilerOptions(),{jsx:e.JsxEmit.React,strict:!0,esModuleInterop:!0,module:e.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},e.versionMajorMinor&&Number(e.versionMajorMinor.split(`.`)[0])>=6?{ignoreDeprecations:`6.0`}:{moduleResolution:e.ModuleResolutionKind.NodeJs})},_=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function v(e){return{args:[],createDirectory:function(){return m(`createDirectory`)},directoryExists:h(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return m(`exit`)},fileExists:h(`fileExists`,function(t){return e.has(t)||e.has(_(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return m(`getExecutingFilePath`)},readDirectory:h(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:h(`readFile`,function(t){return e.get(t)??e.get(_(t))}),resolvePath:function(e){return e},newLine:`
2
+ `,useCaseSensitiveFileNames:!0,write:function(){return m(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function y(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:l({},e,{getCanonicalFileName:function(e){return e},getDefaultLibFileName:function(){return`/`+n.getDefaultLibFileName(t)},getNewLine:function(){return e.newLine},getSourceFile:function(a,o){return r.get(a)||i(n.createSourceFile(a,e.readFile(a),o??t.target??g(n).target,!1))},useCaseSensitiveFileNames:function(){return e.useCaseSensitiveFileNames}}),updateFile:function(t){var n=r.has(t.fileName);return e.writeFile(t.fileName,t.text),r.set(t.fileName,t),n},deleteFile:function(t){var n=r.has(t.fileName);return r.delete(t.fileName),e.deleteFile(t.fileName),n}}}function b(e,t,n,r,i){var a=[].concat(t),o=y(e,n,r),s=o.compilerHost,c=o.updateFile,u=o.deleteFile,d=new Map,f=0;return{languageServiceHost:l({},s,{getProjectVersion:function(){return f.toString()},getCompilationSettings:function(){return n},getCustomTransformers:function(){return i},getScriptFileNames:function(){return a.slice()},getScriptSnapshot:function(t){var n=e.readFile(t);if(n&&typeof n==`string`)return r.ScriptSnapshot.fromString(n)},getScriptVersion:function(e){return d.get(e)||`0`},writeFile:e.writeFile}),updateFile:function(e){f++,d.set(e.fileName,f.toString()),a.includes(e.fileName)||a.push(e.fileName),c(e)},deleteFile:function(e){f++,d.set(e.fileName,f.toString());var t=a.indexOf(e.fileName);t!==-1&&a.splice(t,1),u(e)}}}function x(e){return ee.test(e)}var ee=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function S(e,t,n,r){let i=C(n);return a(typeof t==`function`?t.call({"":e},``,e):e,``);function a(e,t){if(Array.isArray(r)){let t=r.find(t=>t.test(e));if(t){let n=t.stringify(e);if(typeof n!=`string`||!x(n))throw Error(`Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${n})`);return n}}if(typeof e==`boolean`||typeof e==`number`||typeof e==`string`||e===null||e instanceof Date||e instanceof Boolean||e instanceof Number||e instanceof String)return JSON.stringify(e);if(e?.isLosslessNumber||typeof e==`bigint`)return e.toString();if(Array.isArray(e))return o(e,t);if(e&&typeof e==`object`)return s(e,t)}function o(e,n){if(e.length===0)return`[]`;let r=i?n+i:void 0,o=i?`[
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 S(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 te(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var C=`
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 C(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var te=`
7
7
  interface Array<T> {
8
8
  [n: number]: T;
9
9
  length: number;
@@ -23,33 +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`,C),p(v(n),[e,`lib.codezero.d.ts`],c.default,T)}var T={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function E(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]))).map(e=>`type ${e} = ${t};`).join(`
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
27
  `),i=e?.map(e=>`type ${e.identifier}${(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``} = ${e.type};`).join(`
28
- `);return`${n?r:``}\n${i}`}var D=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`);function O(e,t,n,r=!1){let i=e?.nodes?.nodes||[],a=new Map(t?.map(e=>[e.identifier,e])),o=new Set,s=(t,n=``)=>{let c=i.find(e=>e?.id===t);if(!c||!c.functionDefinition)return``;if(t?.includes(`NodeFunction`)&&o.add(t),!a.get(c.functionDefinition.identifier))return`${n}// Error: Function ${c.functionDefinition.identifier} not found\n`;let l=(c.parameters?.nodes||[]).map((i,a)=>{let o=i.value;if(!o)return r?`/* @pos ${t} ${a} */ {}`:`/* @pos ${t} ${a} */ undefined`;if(o.__typename===`ReferenceValue`){let n=o,r=typeof n.inputIndex==`number`?`p_${D(n.nodeFunctionId??`undefined`)}_${n.parameterIndex}[${n.inputIndex}]`:n.nodeFunctionId?`node_${D(n.nodeFunctionId)}`:`flow_${D(e?.id??`undefined`)}`;return n.referencePath?.forEach(e=>{r+=`?.${e.path}`}),`/* @pos ${t} ${a} */ ${r}`}if(o.__typename===`LiteralValue`)return`/* @pos ${t} ${a} */ ${o?.value!==null&&o?.value!==void 0?S(o?.value):void 0}`;if(o.__typename===`SubFlowValue`){let e=o;return`/* @pos ${t} ${a} */ (...${`p_${D(t)}_${a}`}) => {\n${s(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${a} */ {}`:`/* @pos ${t} ${a} */ undefined`}),u=`node_${D(c.id)}`,d=`fn_${c?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;l.includes(`undefined`);let f=`${n}`;return c.functionDefinition.identifier===`std::control::return`?(f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,f+=`return ${u};\n`):c.functionDefinition.identifier===`std::control::if`?(f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,f+=`if(${l[0]}) {
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){let i=e?.nodes?.nodes||[],a=new Map(t?.map(e=>[e.identifier,e])),o=new Set,s=(t,n=``)=>{let c=i.find(e=>e?.id===t);if(!c||!c.functionDefinition)return``;if(t?.includes(`NodeFunction`)&&o.add(t),!a.get(c.functionDefinition.identifier))return`${n}// Error: Function ${c.functionDefinition.identifier} not found\n`;let l=(c.parameters?.nodes||[]).map((i,a)=>{let o=i.value;if(!o)return r?`/* @pos ${t} ${a} */ {}`:`/* @pos ${t} ${a} */ undefined`;if(o.__typename===`ReferenceValue`){let n=o,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} ${a} */ ${r}`}if(o.__typename===`LiteralValue`)return`/* @pos ${t} ${a} */ ${o?.value!==null&&o?.value!==void 0?S(o?.value):void 0}`;if(o.__typename===`SubFlowValue`){let e=o;return`/* @pos ${t} ${a} */ (...${`p_${E(t)}_${a}`}) => {\n${s(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${a} */ {}`:`/* @pos ${t} ${a} */ undefined`}),u=`node_${E(c.id)}`,d=`fn_${c?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;l.includes(`undefined`);let f=`${n}`;return c.functionDefinition.identifier===`std::control::return`?(f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,f+=`return ${u};\n`):c.functionDefinition.identifier===`std::control::if`?(f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,f+=`if(${l[0]}) {
29
30
  ${s(c.parameters?.nodes?.[1]?.value?.startingNodeId||(c.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
30
31
  }`):c.functionDefinition.identifier===`std::control::if_else`?(f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,f+=`if(${l[0]}) {
31
32
  ${s(c.parameters?.nodes?.[1]?.value?.startingNodeId||(c.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
32
33
  } else {
33
34
  ${s(c.parameters?.nodes?.[2]?.value?.startingNodeId||(c.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier,n+` `)}
34
- }`):f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,c.nextNodeId&&(f+=s(c.nextNodeId,n)),f},c=E(n),l=`declare function flow${e?.signature??`(): void`}`,u=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
35
+ }`):f+=`const ${u} = /* @pos ${t} null */ ${d}(${l.join(`, `)}) ;\n`,c.nextNodeId&&(f+=s(c.nextNodeId,n)),f},c=T(n),l=`declare function flow${e?.signature??`(): void`}`,u=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
35
36
  `),d=new Set(i.map(e=>e?.nextNodeId).filter(e=>!!e)),f=new Set;return i.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`SubFlowValue`&&(e.value.startingNodeId||e.value.functionDefinition?.id)&&f.add(e.value.startingNodeId||e.value.functionDefinition?.id)})),`
36
37
  ${c}\n
37
38
  ${l}\n
38
39
  ${u}\n
39
40
  (() =>
40
- ${e?`const flow_${D(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?S(e?.value):void 0}`).join(`, `)??``});`:``}
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?S(e?.value):void 0}`).join(`, `)??``});`:``}
41
42
  ${i.filter(e=>e?.id&&!d.has(e.id)&&!f.has(e.id)).map(e=>s(e.id)).join(`
42
43
  `)}
43
44
  )();
44
- `}var ne=(e,t)=>{let n=S(e?.value);if(!n)return`any`;let r=`
45
- ${E(t,`unknown`)}
45
+ `}var re=(e,t)=>{let n=S(e?.value);if(!n)return`any`;let r=`
46
+ ${T(t,`unknown`)}
46
47
  const tempValue = ${n??`any`};
47
- `,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},re=(e,t)=>{let n=`
48
- ${E(t)}
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},ie=(e,t)=>{let n=`
49
+ ${T(t)}
49
50
  type Target = ${e};
50
- `,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)}},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=O(e,t,n),o=`index.ts`,s=w(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram().getSemanticDiagnostics(l).map(e=>{let t=(0,c.flattenDiagnosticMessageText)(e.messageText,`
51
- `),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))}return{message:t,code:e.code,severity:`error`,nodeId:n,parameterIndex:typeof r==`number`&&Number.isSafeInteger(r)?r:null}}).filter(e=>e!==null);return{isValid:!u.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:u}},ae=(e,t,n)=>{let r=S(t?.value),i=`
52
- ${E(n)}
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)}},ae=(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),o=`index.ts`,s=w(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram().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))}return{message:t,code:e.code,severity:`error`,nodeId:n,parameterIndex:typeof r==`number`&&Number.isSafeInteger(r)?r:null}}).filter(e=>e!==null);return{isValid:!u.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:u}},oe=(e,t,n)=>{let r=S(t?.value),i=`
53
+ ${T(n)}
53
54
  const testValue: ${e} = ${r};
54
55
  `,a=`index.ts`,o=w(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
55
- `),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}},k=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(k);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[]},A=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return k(t.type)}return e.isUnion()?e.types.flatMap(e=>A(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`}]:[]},j=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!M(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?N(i,o,e,n):i.startsWith(`p_`)?P(i,o,e,n):i.startsWith(`flow_`)?F(o,e,n):[]}),M=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),N=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=I(e.replace(`node_`,``));return R(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},P=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=L(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>R(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}))},F=(e,t,n)=>R(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),I=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),L=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:I(r),paramIndexFromName:i}},R=(e,t,n,r=[])=>{let i=[];if(t.isTypeAssignableTo(e,n)&&i.push({path:r,type:e}),z(e)){let a=e.getProperties();a&&a.length>0&&a.forEach(e=>{let a=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),o=e.getName(),s=[...r,{path:o}];i.push(...R(a,t,n,s))})}return i},z=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},B=(e,t,n,r)=>Q(r)?[]:t.flatMap(t=>{let i=V(e,t,n,r);return i?[i]:[]}),V=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=H(e,e.getReturnTypeOfSignature(i));if(!e.isTypeAssignableTo(a,r))return null;let o=U(t.name?.getText());return W(n.find(e=>e.identifier===o))},H=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,U=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,W=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=oe(e?.parameterDefinitions?.nodes||[])),n},oe=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>G(e))}),G=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),K=(e,t,n,r)=>Q(r)?t.flatMap(t=>{let i=q(e,t,n,r);return i?[i]:[]}):[],q=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=se(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?ce(o):null},se=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,ce=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}))}),J=(e,t,n,r,i,a=!0)=>{if((n.flags&c.default.TypeFlags.TypeParameter)!==0){let o=n.symbol?.declarations?.[0];if(o&&c.default.isTypeParameterDeclaration(o)&&o.constraint)return J(e,t,e.getTypeFromTypeNode(o.constraint),r,i,a)}let o=a?{suggestions:[...A(n,e),...t?j(e,t,n,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...B(e,r,i,n),...K(e,r,i,n)]}:{};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{...J(e,t,a[0],r,i,!1),...o}}if(Y(n))return{input:`boolean`,...o};if(de(n)||ue(n))return{input:`select`,...o};if(X(n))return{input:`number`,...o};if(Z(n))return{input:`text`,...o};if(Q(n))return{input:`sub-flow`,...o};if(fe(e,n))return{input:`list`,items:e.getTypeArguments(n).flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>J(e,t,n,r,i,a))),...o};if((n.flags&c.default.TypeFlags.Object)!==0){let s={},l=[];for(let o of e.getPropertiesOfType(n)){let n=o.valueDeclaration??o.declarations?.[0];if(!n)continue;let u=e.getTypeOfSymbolAtLocation(o,n),d=(o.flags&c.default.SymbolFlags.Optional)!==0||u.isUnion()&&u.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),f=(u.isUnion()?u.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[u]).map(n=>J(e,t,n,r,i,a));s[o.name]=f.length===1?f[0]:f,d||l.push(o.name)}return{input:`data`,properties:s,required:l,...o}}return{input:`generic`}};function Y(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 X(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function Z(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function le(e){return Z(e)||X(e)||Y(e)}function ue(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function de(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(le)}function fe(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Q(e){return e.getCallSignatures().length>0}var pe=(e,t,n,r)=>{let i=O(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_${D(r)}`:`flow_${D(e.id)}`,p=$(s),m=me(s).get(f),h=p.get(d),g=he(l,m),_=ge(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e);return ve(r,l,m,v,_,_e(h,g),r?p:new Map,r?n:[])},$=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),me=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)},he=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},ge=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},_e=(e,t)=>{let n=e.typeParameters?.map(e=>e.name.getText())||[],r={};e.parameters.forEach((e,t)=>{if(!e.type)return;let i=new Set;e.type.forEachChild(function t(r){if(c.default.isTypeReferenceNode(r)&&c.default.isIdentifier(r.typeName)){let e=r.typeName.text;n.includes(e)&&i.add(e)}if(c.default.isTypeReferenceNode(e.type)&&c.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;n.includes(t)&&i.add(t)}r.forEachChild(t)}),i.forEach(e=>{r[e]||(r[e]=[]),r[e].push(t)})});let i=Object.values(r).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return t?i.filter(e=>{let n=t[e.parameterIndex];if(!n)return!0;let r=(n.flags&c.default.TypeFlags.Null)!==0,i=(n.flags&c.default.TypeFlags.Undefined)!==0;return r||i}):i},ve=(e,t,n,r,i,a,o,s)=>r?r.map((r,c)=>({nodeId:e,schema:J(t,n,r,Array.from(o.values()),s),functionSchema:J(t,n,i?.[c],Array.from(o.values()),s,!1),blockedBy:a.filter(e=>e.parameterIndex===c).map(e=>e.dependsOnIndex)})):[],ye=(e,t=[])=>{let n=`index.ts`,r=w(n,`${E(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 J(a,void 0,s,[],[],!1)};exports.getFlowValidation=ie,exports.getSignatureSchema=pe,exports.getTypeFromValue=ne,exports.getTypeSchema=ye,exports.getValueFromType=re,exports.getValueValidation=ae;
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}},O=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(O);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[]},k=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return O(t.type)}return e.isUnion()?e.types.flatMap(e=>k(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`}]:[]},se=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!ce(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?A(i,o,e,n):i.startsWith(`p_`)?j(i,o,e,n):i.startsWith(`flow_`)?M(o,e,n):[]}),ce=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),A=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=N(e.replace(`node_`,``));return F(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},j=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=P(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>F(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}))},M=(e,t,n)=>F(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),N=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),P=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:N(r),paramIndexFromName:i}},F=(e,t,n,r=[])=>{let i=[];if(t.isTypeAssignableTo(e,n)&&i.push({path:r,type:e}),I(e)){let a=e.getProperties();a&&a.length>0&&a.forEach(e=>{let a=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),o=e.getName(),s=[...r,{path:o}];i.push(...F(a,t,n,s))})}return i},I=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},L=(e,t,n,r)=>Z(r)?[]:t.flatMap(t=>{let i=R(e,t,n,r);return i?[i]:[]}),R=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=z(e,e.getReturnTypeOfSignature(i));if(!e.isTypeAssignableTo(a,r))return null;let o=B(t.name?.getText());return V(n.find(e=>e.identifier===o))},z=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,B=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,V=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=H(e?.parameterDefinitions?.nodes||[])),n},H=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>U(e))}),U=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),W=(e,t,n,r)=>Z(r)?t.flatMap(t=>{let i=G(e,t,n,r);return i?[i]:[]}):[],G=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=le(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?ue(o):null},le=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,ue=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}))}),K=(e,t,n,r,i,a=!0,o)=>{if((n.flags&c.default.TypeFlags.TypeParameter)!==0){let s=n.symbol?.declarations?.[0];if(s&&c.default.isTypeParameterDeclaration(s)&&s.constraint)return K(e,t,e.getTypeFromTypeNode(s.constraint),r,i,a,o)}let s=o??n,l=a?{suggestions:[...k(s,e),...t?se(e,t,s,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...L(e,r,i,s),...W(e,r,i,s)]}:{};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),...l}}if(J(n))return{input:`boolean`,...l};if(_e(n)||ge(n))return{input:`select`,...l};if(Y(n))return{input:`number`,...l};if(X(n))return{input:`text`,...l};if(Z(n))return{input:`sub-flow`,...l};if(ve(e,n))return{input:`list`,items:e.getTypeArguments(n).flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>K(e,t,n,r,i,a))),...l};if((n.flags&c.default.TypeFlags.Object)!==0){let o={},s=[];for(let l of e.getPropertiesOfType(n)){let n=l.valueDeclaration??l.declarations?.[0];if(!n)continue;let u=e.getTypeOfSymbolAtLocation(l,n),d=(l.flags&c.default.SymbolFlags.Optional)!==0||u.isUnion()&&u.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),f=(u.isUnion()?u.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[u]).map(n=>K(e,t,n,r,i,a));o[l.name]=f.length===1?f[0]:f,d||s.push(l.name)}return{input:`data`,properties:o,required:s,...l}}return{input:`generic`,...l}},q=(e,t,n=!1)=>{if(!e||e.input===`generic`)return pe(me(t),n);let r=fe(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]=de(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}:{}}},de=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?q(e,t):e??t,fe=(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},pe=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},me=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`,...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 he(e){return X(e)||Y(e)||J(e)}function ge(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function _e(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(he)}function ve(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Z(e){return e.getCallSignatures().length>0}var ye=(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=be(s),m=xe(s).get(f),h=p.get(d),g=Se(l,m),_=Ce(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=we(h,g),b=(u?.parameters?.nodes??[]).map(e=>e?.value!=null);return Q(r,l,m,v,_,y,r?p:new Map,r?n:[],b)},be=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),xe=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)},Se=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},Ce=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},we=(e,t)=>{let n=e.typeParameters?.map(e=>e.name.getText())||[],r={};e.parameters.forEach((e,t)=>{if(!e.type)return;let i=new Set;e.type.forEachChild(function t(r){if(c.default.isTypeReferenceNode(r)&&c.default.isIdentifier(r.typeName)){let e=r.typeName.text;n.includes(e)&&i.add(e)}if(c.default.isTypeReferenceNode(e.type)&&c.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;n.includes(t)&&i.add(t)}r.forEachChild(t)}),i.forEach(e=>{r[e]||(r[e]=[]),r[e].push(t)})});let i=Object.values(r).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return t?i.filter(e=>{let n=t[e.parameterIndex];if(!n)return!0;let r=(n.flags&c.default.TypeFlags.Null)!==0,i=(n.flags&c.default.TypeFlags.Undefined)!==0;return r||i}):i},Q=(e,t,n,r,i,a,o,s,c)=>r?r.map((r,l)=>{let u=i?.[l],d=u?Te(t,u,n):void 0,f=K(t,n,r,Array.from(o.values()),s,!0,d);return{nodeId:e,schema:q(u?K(t,n,u,Array.from(o.values()),s,!1):void 0,f,c[l]??!1),blockedBy:a.filter(e=>e.parameterIndex===l).map(e=>e.dependsOnIndex)}}):[],Te=(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.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))))),Ee=(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=ae,exports.getSignatureSchema=ye,exports.getTypeFromValue=re,exports.getTypeSchema=Ee,exports.getValueFromType=ie,exports.getValueValidation=oe;
@@ -256,8 +256,8 @@ var b = {
256
256
  strictNullChecks: !0
257
257
  };
258
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");
260
- return `${n ? r : ""}\n${i}`;
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
261
  }
262
262
  var S = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_");
263
263
  function C(e, t, n, r = !1) {
@@ -386,7 +386,7 @@ var w = (t, n) => {
386
386
  __typename: "LiteralValue",
387
387
  value: u(l, c)
388
388
  };
389
- }, E = (e, n, r) => {
389
+ }, ee = (e, n, r) => {
390
390
  if (!e?.startingNodeId) return {
391
391
  isValid: !1,
392
392
  returnType: "void",
@@ -444,7 +444,7 @@ var w = (t, n) => {
444
444
  returnType: "void",
445
445
  diagnostics: u
446
446
  };
447
- }, D = (t, n, r) => {
447
+ }, E = (t, n, r) => {
448
448
  let i = g(n?.value), a = `
449
449
  ${x(r)}
450
450
  const testValue: ${t} = ${i};
@@ -461,8 +461,8 @@ var w = (t, n) => {
461
461
  returnType: "void",
462
462
  diagnostics: s
463
463
  };
464
- }, O = (t) => {
465
- if (e.isUnionTypeNode(t)) return t.types.flatMap(O);
464
+ }, D = (t) => {
465
+ if (e.isUnionTypeNode(t)) return t.types.flatMap(D);
466
466
  if (e.isLiteralTypeNode(t)) {
467
467
  let n = t.literal;
468
468
  if (e.isStringLiteral(n)) return [{
@@ -480,12 +480,12 @@ var w = (t, n) => {
480
480
  }];
481
481
  }
482
482
  return [];
483
- }, k = (t, n) => {
483
+ }, O = (t, n) => {
484
484
  if (n && t.aliasSymbol) {
485
485
  let n = t.aliasSymbol.declarations?.[0];
486
- if (n && e.isTypeAliasDeclaration(n)) return O(n.type);
486
+ if (n && e.isTypeAliasDeclaration(n)) return D(n.type);
487
487
  }
488
- return t.isUnion() ? t.types.flatMap((e) => k(e, n)) : t.isStringLiteral() ? [{
488
+ return t.isUnion() ? t.types.flatMap((e) => O(e, n)) : t.isStringLiteral() ? [{
489
489
  value: t.value,
490
490
  __typename: "LiteralValue"
491
491
  }] : t.isNumberLiteral() ? [{ value: t.value.toString() }] : t.intrinsicName === "true" ? [{
@@ -495,28 +495,28 @@ var w = (t, n) => {
495
495
  value: !1,
496
496
  __typename: "LiteralValue"
497
497
  }] : [];
498
- }, A = (e, t, n, r) => r.flatMap((r) => {
498
+ }, te = (e, t, n, r) => r.flatMap((r) => {
499
499
  let i = r.getName();
500
- if (!ee(i)) return [];
500
+ if (!ne(i)) return [];
501
501
  let a = r.getDeclarations()?.[0];
502
502
  if (!a || a.getEnd() >= t.getEnd()) return [];
503
503
  let o = e.getTypeOfSymbolAtLocation(r, t);
504
- return i.startsWith("node_") ? te(i, o, e, n) : i.startsWith("p_") ? j(i, o, e, n) : i.startsWith("flow_") ? M(o, e, n) : [];
505
- }), ee = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), te = (t, n, r, i) => {
504
+ return i.startsWith("node_") ? re(i, o, e, n) : i.startsWith("p_") ? ie(i, o, e, n) : i.startsWith("flow_") ? ae(o, e, n) : [];
505
+ }), ne = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), re = (t, n, r, i) => {
506
506
  if ((n.flags & e.TypeFlags.Void) !== 0) return [];
507
- let a = N(t.replace("node_", ""));
508
- return F(n, r, i).flatMap(({ path: e }) => {
507
+ let a = k(t.replace("node_", ""));
508
+ return j(n, r, i).flatMap(({ path: e }) => {
509
509
  let t = {
510
510
  __typename: "ReferenceValue",
511
511
  nodeFunctionId: a
512
512
  };
513
513
  return e.length > 0 && (t.referencePath = e), t;
514
514
  });
515
- }, j = (e, t, n, r) => {
516
- let { nodeFunctionId: i, paramIndexFromName: a } = P(e);
515
+ }, ie = (e, t, n, r) => {
516
+ let { nodeFunctionId: i, paramIndexFromName: a } = A(e);
517
517
  if (!n.isTupleType(t)) return [];
518
518
  let o = t;
519
- return n.getTypeArguments(o).flatMap((e, t) => F(e, n, r).flatMap(({ path: e }) => {
519
+ return n.getTypeArguments(o).flatMap((e, t) => j(e, n, r).flatMap(({ path: e }) => {
520
520
  let n = {
521
521
  __typename: "ReferenceValue",
522
522
  nodeFunctionId: i,
@@ -526,44 +526,44 @@ var w = (t, n) => {
526
526
  };
527
527
  return e.length > 0 && (n.referencePath = e), n;
528
528
  }));
529
- }, M = (e, t, n) => F(e, t, n).flatMap(({ path: e }) => {
529
+ }, ae = (e, t, n) => j(e, t, n).flatMap(({ path: e }) => {
530
530
  let t = {
531
531
  __typename: "ReferenceValue",
532
532
  nodeFunctionId: null
533
533
  };
534
534
  return e.length > 0 && (t.referencePath = e), t;
535
- }), N = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), P = (e) => {
535
+ }), k = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), A = (e) => {
536
536
  let t = e.replace("p_", ""), n = t.lastIndexOf("_"), r = t.substring(0, n), i = parseInt(t.substring(n + 1), 10);
537
537
  return {
538
- nodeFunctionId: N(r),
538
+ nodeFunctionId: k(r),
539
539
  paramIndexFromName: i
540
540
  };
541
- }, F = (e, t, n, r = []) => {
541
+ }, j = (e, t, n, r = []) => {
542
542
  let i = [];
543
543
  if (t.isTypeAssignableTo(e, n) && i.push({
544
544
  path: r,
545
545
  type: e
546
- }), I(e)) {
546
+ }), M(e)) {
547
547
  let a = e.getProperties();
548
548
  a && a.length > 0 && a.forEach((e) => {
549
549
  let a = t.getTypeOfSymbolAtLocation(e, e.valueDeclaration), o = e.getName(), s = [...r, { path: o }];
550
- i.push(...F(a, t, n, s));
550
+ i.push(...j(a, t, n, s));
551
551
  });
552
552
  }
553
553
  return i;
554
- }, I = (t) => {
554
+ }, M = (t) => {
555
555
  let n = e.TypeFlags.String | e.TypeFlags.Number | e.TypeFlags.Boolean | e.TypeFlags.Undefined | e.TypeFlags.Null | e.TypeFlags.BigInt | e.TypeFlags.ESSymbol;
556
556
  return (t.flags & n) === 0;
557
- }, L = (e, t, n, r) => Q(r) ? [] : t.flatMap((t) => {
558
- let i = R(e, t, n, r);
557
+ }, N = (e, t, n, r) => Z(r) ? [] : t.flatMap((t) => {
558
+ let i = P(e, t, n, r);
559
559
  return i ? [i] : [];
560
- }), R = (e, t, n, r) => {
560
+ }), P = (e, t, n, r) => {
561
561
  if (t.parameters.length > 0) return null;
562
- let i = e.getSignatureFromDeclaration(t), a = z(e, e.getReturnTypeOfSignature(i));
562
+ let i = e.getSignatureFromDeclaration(t), a = F(e, e.getReturnTypeOfSignature(i));
563
563
  if (!e.isTypeAssignableTo(a, r)) return null;
564
- let o = B(t.name?.getText());
565
- return V(n.find((e) => e.identifier === o));
566
- }, z = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, B = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", V = (e) => {
564
+ let o = I(t.name?.getText());
565
+ return L(n.find((e) => e.identifier === o));
566
+ }, F = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, I = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", L = (e) => {
567
567
  let t = (e?.parameterDefinitions?.nodes?.length ?? 0) > 0, n = {
568
568
  __typename: "NodeFunction",
569
569
  id: "gid://sagittarius/NodeFunction/1",
@@ -576,11 +576,11 @@ var w = (t, n) => {
576
576
  displayIcon: e?.displayIcon
577
577
  }
578
578
  };
579
- return t && (n.parameters = H(e?.parameterDefinitions?.nodes || [])), n;
580
- }, H = (e) => ({
579
+ return t && (n.parameters = R(e?.parameterDefinitions?.nodes || [])), n;
580
+ }, R = (e) => ({
581
581
  __typename: "NodeParameterConnection",
582
- nodes: e.map((e) => U(e))
583
- }), U = (e) => ({
582
+ nodes: e.map((e) => z(e))
583
+ }), z = (e) => ({
584
584
  __typename: "NodeParameter",
585
585
  parameterDefinition: {
586
586
  __typename: "ParameterDefinition",
@@ -591,15 +591,15 @@ var w = (t, n) => {
591
591
  __typename: "LiteralValue",
592
592
  value: e.defaultValue.value
593
593
  } : null
594
- }), W = (e, t, n, r) => Q(r) ? t.flatMap((t) => {
595
- let i = G(e, t, n, r);
594
+ }), B = (e, t, n, r) => Z(r) ? t.flatMap((t) => {
595
+ let i = V(e, t, n, r);
596
596
  return i ? [i] : [];
597
- }) : [], G = (e, t, n, r) => {
597
+ }) : [], V = (e, t, n, r) => {
598
598
  let i = e.getTypeAtLocation(t);
599
599
  if (!e.isTypeAssignableTo(i, r)) return null;
600
- let a = K(t.name?.getText()), o = n.find((e) => e.identifier === a);
601
- return o ? ne(o) : null;
602
- }, K = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", ne = (e) => ({
600
+ let a = H(t.name?.getText()), o = n.find((e) => e.identifier === a);
601
+ return o ? U(o) : null;
602
+ }, H = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", U = (e) => ({
603
603
  __typename: "SubFlowValue",
604
604
  functionDefinition: e,
605
605
  signature: e.signature,
@@ -610,65 +610,124 @@ var w = (t, n) => {
610
610
  hidden: e?.hidden ?? !1,
611
611
  optional: e?.optional ?? !1
612
612
  }))
613
- }), q = (t, n, r, i, a, o = !0) => {
613
+ }), W = (t, n, r, i, a, o = !0, s) => {
614
614
  if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
615
- let s = r.symbol?.declarations?.[0];
616
- if (s && e.isTypeParameterDeclaration(s) && s.constraint) return q(t, n, t.getTypeFromTypeNode(s.constraint), i, a, o);
615
+ let c = r.symbol?.declarations?.[0];
616
+ if (c && e.isTypeParameterDeclaration(c) && c.constraint) return W(t, n, t.getTypeFromTypeNode(c.constraint), i, a, o, s);
617
617
  }
618
- let s = o ? { suggestions: [
619
- ...k(r, t),
620
- ...n ? A(t, n, r, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
621
- ...L(t, i, a, r),
622
- ...W(t, i, a, r)
618
+ let c = s ?? r, l = o ? { suggestions: [
619
+ ...O(c, t),
620
+ ...n ? te(t, n, c, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
621
+ ...N(t, i, a, c),
622
+ ...B(t, i, a, c)
623
623
  ] } : {};
624
624
  if (r.isUnion()) {
625
625
  let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
626
626
  if (o.length === 1) return {
627
- ...q(t, n, o[0], i, a, !1),
628
- ...s
627
+ ...W(t, n, o[0], i, a, !1),
628
+ ...l
629
629
  };
630
630
  }
631
631
  if (J(r)) return {
632
632
  input: "boolean",
633
- ...s
633
+ ...l
634
634
  };
635
- if (ie(r) || re(r)) return {
635
+ if (ue(r) || le(r)) return {
636
636
  input: "select",
637
- ...s
637
+ ...l
638
638
  };
639
639
  if (Y(r)) return {
640
640
  input: "number",
641
- ...s
641
+ ...l
642
642
  };
643
643
  if (X(r)) return {
644
644
  input: "text",
645
- ...s
645
+ ...l
646
646
  };
647
- if (Q(r)) return {
647
+ if (Z(r)) return {
648
648
  input: "sub-flow",
649
- ...s
649
+ ...l
650
650
  };
651
- if (ae(t, r)) return {
651
+ if (de(t, r)) return {
652
652
  input: "list",
653
- items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => q(t, n, e, i, a, o))),
654
- ...s
653
+ items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => W(t, n, e, i, a, o))),
654
+ ...l
655
655
  };
656
656
  if ((r.flags & e.TypeFlags.Object) !== 0) {
657
- let c = {}, l = [];
658
- for (let s of t.getPropertiesOfType(r)) {
659
- let r = s.valueDeclaration ?? s.declarations?.[0];
657
+ let s = {}, c = [];
658
+ for (let l of t.getPropertiesOfType(r)) {
659
+ let r = l.valueDeclaration ?? l.declarations?.[0];
660
660
  if (!r) continue;
661
- let u = t.getTypeOfSymbolAtLocation(s, r), d = (s.flags & e.SymbolFlags.Optional) !== 0 || u.isUnion() && u.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), f = (u.isUnion() ? u.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [u]).map((e) => q(t, n, e, i, a, o));
662
- c[s.name] = f.length === 1 ? f[0] : f, d || l.push(s.name);
661
+ let u = t.getTypeOfSymbolAtLocation(l, r), d = (l.flags & e.SymbolFlags.Optional) !== 0 || u.isUnion() && u.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), f = (u.isUnion() ? u.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [u]).map((e) => W(t, n, e, i, a, o));
662
+ s[l.name] = f.length === 1 ? f[0] : f, d || c.push(l.name);
663
663
  }
664
664
  return {
665
665
  input: "data",
666
- properties: c,
667
- required: l,
668
- ...s
666
+ properties: s,
667
+ required: c,
668
+ ...l
669
669
  };
670
670
  }
671
- return { input: "generic" };
671
+ return {
672
+ input: "generic",
673
+ ...l
674
+ };
675
+ }, G = (e, t, n = !1) => {
676
+ if (!e || e.input === "generic") return q(se(t), n);
677
+ let r = K(e.suggestions, t.suggestions);
678
+ if (e.input === "data") {
679
+ let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = new Set([...Object.keys(n), ...Object.keys(i)]);
680
+ for (let e of o) {
681
+ let t = n[e], r = i[e];
682
+ a[e] = oe(t, r);
683
+ }
684
+ return {
685
+ ...e,
686
+ properties: a,
687
+ ...r ? { suggestions: r } : {}
688
+ };
689
+ }
690
+ if (e.input === "list") {
691
+ let n = e.items ?? [], i = t.input === "list" ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) => G(e, i[t])) : n;
692
+ return {
693
+ ...e,
694
+ items: a,
695
+ ...r ? { suggestions: r } : {}
696
+ };
697
+ }
698
+ return {
699
+ ...e,
700
+ ...r ? { suggestions: r } : {}
701
+ };
702
+ }, oe = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? G(e, t) : e ?? t, K = (e, t) => {
703
+ let n = [...e ?? [], ...t ?? []];
704
+ if (n.length === 0) return;
705
+ let r = /* @__PURE__ */ new Set(), i = [];
706
+ for (let e of n) {
707
+ let t = JSON.stringify(e);
708
+ r.has(t) || (r.add(t), i.push(e));
709
+ }
710
+ return i;
711
+ }, q = (e, t) => !t || e.input !== "generic" ? e : {
712
+ input: "data",
713
+ properties: {},
714
+ required: [],
715
+ ...e.suggestions ? { suggestions: e.suggestions } : {}
716
+ }, se = (e) => {
717
+ if (e.input !== "select") return e;
718
+ let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
719
+ for (let e of t) {
720
+ let t = typeof e.value;
721
+ (t === "string" || t === "number" || t === "boolean") && n.add(t);
722
+ }
723
+ return {
724
+ input: n.size === 1 ? {
725
+ string: "text",
726
+ number: "number",
727
+ boolean: "boolean"
728
+ }[[...n][0]] : "text",
729
+ ...t.length > 0 ? { suggestions: t } : {}
730
+ };
672
731
  };
673
732
  function J(t) {
674
733
  if ((t.flags & e.TypeFlags.Boolean) !== 0 || (t.flags & e.TypeFlags.BooleanLiteral) !== 0) return !0;
@@ -684,43 +743,43 @@ function Y(t) {
684
743
  function X(t) {
685
744
  return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
686
745
  }
687
- function Z(e) {
746
+ function ce(e) {
688
747
  return X(e) || Y(e) || J(e);
689
748
  }
690
- function re(t) {
749
+ function le(t) {
691
750
  return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
692
751
  }
693
- function ie(t) {
752
+ function ue(t) {
694
753
  if (!t.isUnion()) return !1;
695
754
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
696
- return n.length > 0 && n.every(Z);
755
+ return n.length > 0 && n.every(ce);
697
756
  }
698
- function ae(e, t) {
757
+ function de(e, t) {
699
758
  return e.isArrayType(t) || e.isTupleType(t);
700
759
  }
701
- function Q(e) {
760
+ function Z(e) {
702
761
  return e.getCallSignatures().length > 0;
703
762
  }
704
763
  //#endregion
705
764
  //#region src/schema/getSignatureSchema.ts
706
- var oe = (t, n, r, i) => {
707
- 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 = $(c), m = se(c).get(f), h = p.get(d), g = ce(l, m), _ = le(l, h, m), v = g?.map((t, n) => (t.flags & e.TypeFlags.Undefined) === 0 ? t : _?.[n] ?? t);
708
- return de(i, l, m, v, _, ue(h, g), i ? p : /* @__PURE__ */ new Map(), i ? r : []);
709
- }, $ = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), se = (t) => {
765
+ var fe = (t, n, r, i) => {
766
+ 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 = pe(c), m = me(c).get(f), h = p.get(d), g = he(l, m), _ = ge(l, h, m), v = g?.map((t, n) => (t.flags & e.TypeFlags.Undefined) === 0 ? t : _?.[n] ?? t), b = _e(h, g), x = (u?.parameters?.nodes ?? []).map((e) => e?.value != null);
767
+ return Q(i, l, m, v, _, b, i ? p : /* @__PURE__ */ new Map(), i ? r : [], x);
768
+ }, pe = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), me = (t) => {
710
769
  let n = [];
711
770
  return t.statements.forEach((t) => {
712
771
  t.forEachChild(function t(r) {
713
772
  e.isVariableDeclaration(r) && (r.parent.flags & e.NodeFlags.Const) !== 0 && n.push([r.name.getText(), r]), r.forEachChild(t);
714
773
  });
715
774
  }), new Map(n);
716
- }, ce = (t, n) => {
775
+ }, he = (t, n) => {
717
776
  if (!(!n?.initializer || !e.isCallExpression(n.initializer))) return t.getResolvedSignature(n.initializer)?.parameters.map((e) => t.getTypeOfSymbolAtLocation(e, n.initializer));
718
- }, le = (e, t, n) => {
777
+ }, ge = (e, t, n) => {
719
778
  if (!(!t || !n?.initializer)) return t.parameters.map((t) => {
720
779
  let r = e.getSymbolAtLocation(t.name);
721
780
  return e.getTypeOfSymbolAtLocation(r, n.initializer);
722
781
  });
723
- }, ue = (t, n) => {
782
+ }, _e = (t, n) => {
724
783
  let r = t.typeParameters?.map((e) => e.name.getText()) || [], i = {};
725
784
  t.parameters.forEach((t, n) => {
726
785
  if (!t.type) return;
@@ -749,18 +808,34 @@ var oe = (t, n, r, i) => {
749
808
  let i = (r.flags & e.TypeFlags.Null) !== 0, a = (r.flags & e.TypeFlags.Undefined) !== 0;
750
809
  return i || a;
751
810
  }) : a;
752
- }, de = (e, t, n, r, i, a, o, s) => r ? r.map((r, c) => ({
753
- nodeId: e,
754
- schema: q(t, n, r, Array.from(o.values()), s),
755
- functionSchema: q(t, n, i?.[c], Array.from(o.values()), s, !1),
756
- blockedBy: a.filter((e) => e.parameterIndex === c).map((e) => e.dependsOnIndex)
757
- })) : [], fe = (t, n = []) => {
811
+ }, Q = (e, t, n, r, i, a, o, s, c) => r ? r.map((r, l) => {
812
+ let u = i?.[l], d = u ? ve(t, u, n) : void 0, f = W(t, n, r, Array.from(o.values()), s, !0, d);
813
+ return {
814
+ nodeId: e,
815
+ schema: G(u ? W(t, n, u, Array.from(o.values()), s, !1) : void 0, f, c[l] ?? !1),
816
+ blockedBy: a.filter((e) => e.parameterIndex === l).map((e) => e.dependsOnIndex)
817
+ };
818
+ }) : [], ve = (t, n, r) => {
819
+ if ((n.flags & e.TypeFlags.TypeParameter) !== 0) {
820
+ let r = n.symbol?.declarations?.[0];
821
+ return r && e.isTypeParameterDeclaration(r) && r.constraint ? t.getTypeFromTypeNode(r.constraint) : t.getAnyType();
822
+ }
823
+ if ((n.flags & e.TypeFlags.Object) !== 0 && $(n, t, /* @__PURE__ */ new Set())) {
824
+ let i = n.aliasSymbol?.getName();
825
+ if (i) {
826
+ let n = t.getSymbolsInScope(r, e.SymbolFlags.Variable).find((e) => e.getName() === `__widen_${i}`);
827
+ if (n) return t.getTypeOfSymbolAtLocation(n, r);
828
+ }
829
+ return t.getAnyType();
830
+ }
831
+ return n;
832
+ }, $ = (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))))), ye = (t, n = []) => {
758
833
  let r = "index.ts", i = y(r, `${x(n)}\ntype MyType = ${t}`).languageService.getProgram(), a = i?.getSourceFile(r), o = i?.getTypeChecker();
759
834
  if (!a || !o) return;
760
835
  let s = a.statements.filter((t) => e.isTypeAliasDeclaration(t) || e.isInterfaceDeclaration(t) || e.isClassDeclaration(t)).pop();
761
836
  if (!s) return;
762
837
  let c = o.getTypeAtLocation(s);
763
- if (c) return q(o, void 0, c, [], [], !1);
838
+ if (c) return W(o, void 0, c, [], [], !1);
764
839
  };
765
840
  //#endregion
766
- export { E as getFlowValidation, oe as getSignatureSchema, w as getTypeFromValue, fe as getTypeSchema, T as getValueFromType, D as getValueValidation };
841
+ export { ee as getFlowValidation, fe as getSignatureSchema, w as getTypeFromValue, ye as getTypeSchema, T as getValueFromType, E as getValueValidation };
@@ -91,7 +91,30 @@ export type Schema = PrimitiveInput | DataInput | ListInput | TypeInput | SubFlo
91
91
  * @param suggestions
92
92
  * @returns A Schema object describing how to handle the parameter type
93
93
  */
94
- export declare const getSchema: (checker: ts.TypeChecker, node: ts.VariableDeclaration | undefined, parameterType: ts.Type, functionDeclarations: FunctionDeclaration[], functions: FunctionDefinition[], suggestions?: boolean) => Schema;
94
+ export declare const getSchema: (checker: ts.TypeChecker, node: ts.VariableDeclaration | undefined, parameterType: ts.Type, functionDeclarations: FunctionDeclaration[], functions: FunctionDefinition[], suggestions?: boolean, suggestionType?: ts.Type) => Schema;
95
+ /**
96
+ * Merges a function-declared parameter schema with the schema derived from the
97
+ * concrete node value. The function schema is treated as the source of truth for
98
+ * the structural shape (input kind, properties, items); the node schema only
99
+ * contributes additional suggestions and, when the function schema is generic,
100
+ * a fallback shape.
101
+ *
102
+ * Rules:
103
+ * - If the function schema is generic, follow the node schema — but never as a
104
+ * select. A single literal value (e.g. "Test") narrowing a generic T must not
105
+ * collapse the input into a select with one option; it should remain free-form
106
+ * text/number/boolean matching the literal kind.
107
+ * - Otherwise use the function schema's input kind and merge suggestions from both.
108
+ * Recurse into `properties` (for data) and `items` (for list) so nested generics
109
+ * inside concrete containers are handled the same way.
110
+ *
111
+ * Suggestions are concatenated and de-duplicated by structural equality.
112
+ *
113
+ * @param functionSchema - The schema derived from the declared function parameter type
114
+ * @param nodeSchema - The schema derived from the node's concrete (narrowed) parameter type
115
+ * @returns A single merged schema
116
+ */
117
+ export declare const mergeSchemas: (functionSchema: Schema | undefined, nodeSchema: Schema, valueProvided?: boolean) => Schema;
95
118
  /**
96
119
  * Checks if a type is a callable type (has call signatures).
97
120
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code0-tech/triangulum",
3
- "version": "0.25.3",
3
+ "version": "0.25.5",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/code0-tech/triangulum#readme",
6
6
  "bugs": {