@code0-tech/triangulum 0.27.1 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/triangulum.cjs.js +21 -21
- package/dist/triangulum.es.js +142 -117
- package/dist/utils.d.ts +1 -1
- package/package.json +3 -3
package/dist/triangulum.cjs.js
CHANGED
|
@@ -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
|
|
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=`
|
|
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
|
|
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
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
|
|
30
|
-
${
|
|
31
|
-
}`):
|
|
32
|
-
${
|
|
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]}) {
|
|
30
|
+
${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
|
|
31
|
+
}`):l.functionDefinition.identifier===`std::control::if_else`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
|
|
32
|
+
${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
|
|
33
33
|
} else {
|
|
34
|
-
${
|
|
35
|
-
}`):
|
|
36
|
-
`),
|
|
37
|
-
${c}\n
|
|
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(`
|
|
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)})),`
|
|
38
37
|
${l}\n
|
|
39
38
|
${u}\n
|
|
39
|
+
${d}\n
|
|
40
40
|
(() =>
|
|
41
|
-
${e?`const flow_${
|
|
42
|
-
${
|
|
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(`, `)??``});`:``}
|
|
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
|
|
46
|
-
${
|
|
45
|
+
`}var O=(e,t)=>{let n=C(e?.value);if(!n)return`any`;let r=`
|
|
46
|
+
${T(t,`unknown`)}
|
|
47
47
|
const tempValue = ${n??`any`};
|
|
48
|
-
`,i=`index.ts`,a=
|
|
49
|
-
${
|
|
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)}
|
|
50
50
|
type Target = ${e};
|
|
51
|
-
`,r=`index.ts`,i=
|
|
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
|
|
53
|
-
${
|
|
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)}
|
|
54
54
|
const testValue: ${e} = ${r};
|
|
55
|
-
`,a=`index.ts`,o=
|
|
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}},j=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(j);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[]},M=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return j(t.type)}return e.isUnion()?e.types.flatMap(e=>M(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`}]:[]},ie=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!ae(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?oe(i,o,e,n):i.startsWith(`p_`)?se(i,o,e,n):i.startsWith(`flow_`)?ce(o,e,n):[]}),ae=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),oe=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=N(e.replace(`node_`,``));return L(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},se=(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)=>L(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}))},ce=(e,t,n)=>L(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=7,I=(e,t,n)=>{let r=n.get(e);if(r!==void 0)return r;let i=new Set,a=n=>{if(i.has(n)||!R(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},L=(e,t,n,r=[],i=new Set,a=new Map)=>{let o=[],s=t.getNonNullableType(e);if((s.flags&c.default.TypeFlags.Never)===0&&t.isTypeAssignableTo(s,n)&&o.push({path:r,type:e}),R(s)&&!i.has(s)&&(r.length<F||!I(s,t,a))){let e=s.getProperties();e&&e.length>0&&(i.add(s),e.forEach(e=>{let s=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),c=e.getName(),l=[...r,{path:c}];o.push(...L(s,t,n,l,i,a))}),i.delete(s))}return o},R=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},z=(e,t,n,r)=>Z(r)?[]:t.flatMap(t=>{let i=B(e,t,n,r);return i?[i]:[]}),B=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=V(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=H(t.name?.getText());return U(n.find(e=>e.identifier===s))},V=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,H=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,U=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=W(e?.parameterDefinitions?.nodes||[])),n},W=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}),le=(e,t,n,r)=>Z(r)?t.flatMap(t=>{let i=ue(e,t,n,r);return i?[i]:[]}):[],ue=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=de(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?fe(o):null},de=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,fe=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}))}),pe=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:[...M(d,e),...t?ie(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...z(e,r,i,d),...le(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(be(n)||ye(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(xe(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>=pe&&I(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 ge(_e(t),n);let r=he(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]=me(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}:{}}},me=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?q(e,t):e??t,he=(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},ge=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},_e=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 ve(e){return X(e)||Y(e)||J(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 Z(e){return e.getCallSignatures().length>0}var Q=(e,t,n,r)=>{let i=O(e,n,t),a=`index.ts`,o=T(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=Ce(s),m=we(s).get(f),h=p.get(d),g=Te(l,m),_=Ee(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=Oe(l,m,v,_,De(h,g,y),r?p:new Map,r?n:[],y),x=Se(l,m,h);return{nodeId:r,parameters:b,return:x?K(l,m,x,Array.from(p.values()),n,!1):{input:`generic`}}},Se=(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)}},Ce=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),we=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)},Te=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},Ee=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},De=(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},Oe=(e,t,n,r,i,a,o,s)=>n?n.map((n,c)=>{let l=r?.[c],u=l?ke(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)}}):[],ke=(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))))),Ae=(e,t=[])=>{let n=`index.ts`,r=T(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 K(a,void 0,s,[],[],!1)};exports.getFlowValidation=ne,exports.getSignatureSchema=Q,exports.getTypeFromValue=k,exports.getTypeSchema=Ae,exports.getValueFromType=A,exports.getValueValidation=re;
|
|
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;
|
package/dist/triangulum.es.js
CHANGED
|
@@ -260,46 +260,46 @@ function x(e, t = "any", n = !0) {
|
|
|
260
260
|
return `${n ? r : ""}\n${i}\n${a}`;
|
|
261
261
|
}
|
|
262
262
|
var S = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_");
|
|
263
|
-
function C(e, t, n, r = !1) {
|
|
264
|
-
let
|
|
265
|
-
let
|
|
266
|
-
if (!
|
|
267
|
-
if (t?.includes("NodeFunction") &&
|
|
268
|
-
let
|
|
269
|
-
let
|
|
270
|
-
if (!
|
|
271
|
-
if (
|
|
272
|
-
let n =
|
|
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
273
|
return n.referencePath?.forEach((e) => {
|
|
274
274
|
r += `?.${e.path}`;
|
|
275
|
-
}), `/* @pos ${t} ${
|
|
275
|
+
}), `/* @pos ${t} ${o} */ (${r})${i ? "!" : ""}`;
|
|
276
276
|
}
|
|
277
|
-
if (
|
|
278
|
-
if (
|
|
279
|
-
let e =
|
|
280
|
-
return `/* @pos ${t} ${
|
|
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
281
|
}
|
|
282
|
-
return r ? `/* @pos ${t} ${
|
|
283
|
-
}),
|
|
284
|
-
|
|
285
|
-
let
|
|
286
|
-
return
|
|
287
|
-
${
|
|
288
|
-
}`) :
|
|
289
|
-
${
|
|
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
290
|
} else {
|
|
291
|
-
${
|
|
292
|
-
}`) :
|
|
293
|
-
},
|
|
294
|
-
return
|
|
295
|
-
e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) &&
|
|
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
296
|
})), `
|
|
297
|
-
${c}\n
|
|
298
297
|
${l}\n
|
|
299
298
|
${u}\n
|
|
299
|
+
${d}\n
|
|
300
300
|
(() =>
|
|
301
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
|
-
${
|
|
302
|
+
${a.filter((e) => e?.id && !f.has(e.id) && !p.has(e.id)).map((e) => c(e.id)).join("\n")}
|
|
303
303
|
)();
|
|
304
304
|
`;
|
|
305
305
|
}
|
|
@@ -386,7 +386,31 @@ var w = (t, n) => {
|
|
|
386
386
|
__typename: "LiteralValue",
|
|
387
387
|
value: u(l, c)
|
|
388
388
|
};
|
|
389
|
-
}, te = (e,
|
|
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) => {
|
|
390
414
|
if (!e?.startingNodeId) return {
|
|
391
415
|
isValid: !1,
|
|
392
416
|
returnType: "void",
|
|
@@ -421,7 +445,7 @@ var w = (t, n) => {
|
|
|
421
445
|
returnType: "void",
|
|
422
446
|
diagnostics: a
|
|
423
447
|
};
|
|
424
|
-
let o = C(e, n, r), s = "index.ts", c = y(s, o), l = c.getSourceFile(s), u = c.languageService.getProgram().getSemanticDiagnostics(l).map((e) => {
|
|
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) => {
|
|
425
449
|
let n = t(e.messageText, "\n"), r, i = null;
|
|
426
450
|
if (e.start !== void 0) {
|
|
427
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;
|
|
@@ -431,20 +455,21 @@ var w = (t, n) => {
|
|
|
431
455
|
}
|
|
432
456
|
u && (r = u[1] === "null" ? null : u[1], i = parseInt(u[2], 10));
|
|
433
457
|
}
|
|
458
|
+
let a = D(e, l, d) ? "warning" : "error";
|
|
434
459
|
return {
|
|
435
460
|
message: n,
|
|
436
461
|
code: e.code,
|
|
437
|
-
severity:
|
|
462
|
+
severity: a,
|
|
438
463
|
nodeId: r,
|
|
439
464
|
parameterIndex: typeof i == "number" && Number.isSafeInteger(i) ? i : null
|
|
440
465
|
};
|
|
441
466
|
}).filter((e) => e !== null);
|
|
442
467
|
return {
|
|
443
|
-
isValid: !
|
|
468
|
+
isValid: !f.some((e) => e?.severity === "error"),
|
|
444
469
|
returnType: "void",
|
|
445
|
-
diagnostics:
|
|
470
|
+
diagnostics: f
|
|
446
471
|
};
|
|
447
|
-
},
|
|
472
|
+
}, k = (t, n, r) => {
|
|
448
473
|
let i = g(n?.value), a = `
|
|
449
474
|
${x(r)}
|
|
450
475
|
const testValue: ${t} = ${i};
|
|
@@ -461,8 +486,8 @@ var w = (t, n) => {
|
|
|
461
486
|
returnType: "void",
|
|
462
487
|
diagnostics: s
|
|
463
488
|
};
|
|
464
|
-
},
|
|
465
|
-
if (e.isUnionTypeNode(t)) return t.types.flatMap(
|
|
489
|
+
}, A = (t) => {
|
|
490
|
+
if (e.isUnionTypeNode(t)) return t.types.flatMap(A);
|
|
466
491
|
if (e.isLiteralTypeNode(t)) {
|
|
467
492
|
let n = t.literal;
|
|
468
493
|
if (e.isStringLiteral(n)) return [{
|
|
@@ -480,12 +505,12 @@ var w = (t, n) => {
|
|
|
480
505
|
}];
|
|
481
506
|
}
|
|
482
507
|
return [];
|
|
483
|
-
},
|
|
508
|
+
}, j = (t, n) => {
|
|
484
509
|
if (n && t.aliasSymbol) {
|
|
485
510
|
let n = t.aliasSymbol.declarations?.[0];
|
|
486
|
-
if (n && e.isTypeAliasDeclaration(n)) return
|
|
511
|
+
if (n && e.isTypeAliasDeclaration(n)) return A(n.type);
|
|
487
512
|
}
|
|
488
|
-
return t.isUnion() ? t.types.flatMap((e) =>
|
|
513
|
+
return t.isUnion() ? t.types.flatMap((e) => j(e, n)) : t.isStringLiteral() ? [{
|
|
489
514
|
value: t.value,
|
|
490
515
|
__typename: "LiteralValue"
|
|
491
516
|
}] : t.isNumberLiteral() ? [{ value: t.value.toString() }] : t.intrinsicName === "true" ? [{
|
|
@@ -495,28 +520,28 @@ var w = (t, n) => {
|
|
|
495
520
|
value: !1,
|
|
496
521
|
__typename: "LiteralValue"
|
|
497
522
|
}] : [];
|
|
498
|
-
},
|
|
523
|
+
}, ne = (e, t, n, r) => r.flatMap((r) => {
|
|
499
524
|
let i = r.getName();
|
|
500
|
-
if (!
|
|
525
|
+
if (!re(i)) return [];
|
|
501
526
|
let a = r.getDeclarations()?.[0];
|
|
502
527
|
if (!a || a.getEnd() >= t.getEnd()) return [];
|
|
503
528
|
let o = e.getTypeOfSymbolAtLocation(r, t);
|
|
504
|
-
return i.startsWith("node_") ?
|
|
505
|
-
}),
|
|
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) => {
|
|
506
531
|
if ((n.flags & e.TypeFlags.Void) !== 0) return [];
|
|
507
|
-
let a =
|
|
508
|
-
return
|
|
532
|
+
let a = M(t.replace("node_", ""));
|
|
533
|
+
return I(n, r, i).flatMap(({ path: e }) => {
|
|
509
534
|
let t = {
|
|
510
535
|
__typename: "ReferenceValue",
|
|
511
536
|
nodeFunctionId: a
|
|
512
537
|
};
|
|
513
538
|
return e.length > 0 && (t.referencePath = e), t;
|
|
514
539
|
});
|
|
515
|
-
},
|
|
516
|
-
let { nodeFunctionId: i, paramIndexFromName: a } =
|
|
540
|
+
}, ae = (e, t, n, r) => {
|
|
541
|
+
let { nodeFunctionId: i, paramIndexFromName: a } = se(e);
|
|
517
542
|
if (!n.isTupleType(t)) return [];
|
|
518
543
|
let o = t;
|
|
519
|
-
return n.getTypeArguments(o).flatMap((e, t) =>
|
|
544
|
+
return n.getTypeArguments(o).flatMap((e, t) => I(e, n, r).flatMap(({ path: e }) => {
|
|
520
545
|
let n = {
|
|
521
546
|
__typename: "ReferenceValue",
|
|
522
547
|
nodeFunctionId: i,
|
|
@@ -526,23 +551,23 @@ var w = (t, n) => {
|
|
|
526
551
|
};
|
|
527
552
|
return e.length > 0 && (n.referencePath = e), n;
|
|
528
553
|
}));
|
|
529
|
-
},
|
|
554
|
+
}, oe = (e, t, n) => I(e, t, n).flatMap(({ path: e }) => {
|
|
530
555
|
let t = {
|
|
531
556
|
__typename: "ReferenceValue",
|
|
532
557
|
nodeFunctionId: null
|
|
533
558
|
};
|
|
534
559
|
return e.length > 0 && (t.referencePath = e), t;
|
|
535
|
-
}),
|
|
560
|
+
}), M = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), se = (e) => {
|
|
536
561
|
let t = e.replace("p_", ""), n = t.lastIndexOf("_"), r = t.substring(0, n), i = parseInt(t.substring(n + 1), 10);
|
|
537
562
|
return {
|
|
538
|
-
nodeFunctionId:
|
|
563
|
+
nodeFunctionId: M(r),
|
|
539
564
|
paramIndexFromName: i
|
|
540
565
|
};
|
|
541
|
-
},
|
|
566
|
+
}, ce = 7, N = (e, t, n) => {
|
|
542
567
|
let r = n.get(e);
|
|
543
568
|
if (r !== void 0) return r;
|
|
544
569
|
let i = /* @__PURE__ */ new Set(), a = (n) => {
|
|
545
|
-
if (i.has(n) || !
|
|
570
|
+
if (i.has(n) || !L(n)) return !1;
|
|
546
571
|
i.add(n);
|
|
547
572
|
for (let r of n.getProperties()) {
|
|
548
573
|
if (!r.valueDeclaration) continue;
|
|
@@ -552,32 +577,32 @@ var w = (t, n) => {
|
|
|
552
577
|
return !1;
|
|
553
578
|
}, o = a(e);
|
|
554
579
|
return n.set(e, o), o;
|
|
555
|
-
},
|
|
556
|
-
let
|
|
557
|
-
|
|
558
|
-
path:
|
|
559
|
-
type:
|
|
560
|
-
}),
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
s.
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
},
|
|
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()) => {
|
|
581
|
+
let o = [], s = t.getNonNullableType(e);
|
|
582
|
+
return P(s, t, n) && o.push({
|
|
583
|
+
path: r,
|
|
584
|
+
type: e
|
|
585
|
+
}), F(s, t).forEach((e) => {
|
|
586
|
+
if (i.has(e) || r.length >= ce && N(e, t, a)) return;
|
|
587
|
+
let s = e.getProperties();
|
|
588
|
+
s && s.length > 0 && (i.add(e), s.forEach((e) => {
|
|
589
|
+
let s = t.getTypeOfSymbolAtLocation(e, e.valueDeclaration), c = e.getName(), l = [...r, { path: c }];
|
|
590
|
+
o.push(...I(s, t, n, l, i, a));
|
|
591
|
+
}), i.delete(e));
|
|
592
|
+
}), o;
|
|
593
|
+
}, L = (t) => {
|
|
569
594
|
let n = e.TypeFlags.String | e.TypeFlags.Number | e.TypeFlags.Boolean | e.TypeFlags.Undefined | e.TypeFlags.Null | e.TypeFlags.BigInt | e.TypeFlags.ESSymbol;
|
|
570
595
|
return (t.flags & n) === 0;
|
|
571
|
-
},
|
|
572
|
-
let i =
|
|
596
|
+
}, R = (e, t, n, r) => Z(r) ? [] : t.flatMap((t) => {
|
|
597
|
+
let i = z(e, t, n, r);
|
|
573
598
|
return i ? [i] : [];
|
|
574
|
-
}),
|
|
599
|
+
}), z = (t, n, r, i) => {
|
|
575
600
|
if (n.parameters.length > 0) return null;
|
|
576
|
-
let a = t.getSignatureFromDeclaration(n), o =
|
|
601
|
+
let a = t.getSignatureFromDeclaration(n), o = B(t, t.getReturnTypeOfSignature(a)), s = t.getNonNullableType(o);
|
|
577
602
|
if ((s.flags & e.TypeFlags.Never) !== 0 || !t.isTypeAssignableTo(s, i)) return null;
|
|
578
|
-
let c =
|
|
579
|
-
return
|
|
580
|
-
},
|
|
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) => {
|
|
581
606
|
let t = (e?.parameterDefinitions?.nodes?.length ?? 0) > 0, n = {
|
|
582
607
|
__typename: "NodeFunction",
|
|
583
608
|
id: "gid://sagittarius/NodeFunction/1",
|
|
@@ -590,11 +615,11 @@ var w = (t, n) => {
|
|
|
590
615
|
displayIcon: e?.displayIcon
|
|
591
616
|
}
|
|
592
617
|
};
|
|
593
|
-
return t && (n.parameters =
|
|
594
|
-
},
|
|
618
|
+
return t && (n.parameters = U(e?.parameterDefinitions?.nodes || [])), n;
|
|
619
|
+
}, U = (e) => ({
|
|
595
620
|
__typename: "NodeParameterConnection",
|
|
596
|
-
nodes: e.map((e) =>
|
|
597
|
-
}),
|
|
621
|
+
nodes: e.map((e) => W(e))
|
|
622
|
+
}), W = (e) => ({
|
|
598
623
|
__typename: "NodeParameter",
|
|
599
624
|
parameterDefinition: {
|
|
600
625
|
__typename: "ParameterDefinition",
|
|
@@ -605,15 +630,15 @@ var w = (t, n) => {
|
|
|
605
630
|
__typename: "LiteralValue",
|
|
606
631
|
value: e.defaultValue.value
|
|
607
632
|
} : null
|
|
608
|
-
}),
|
|
609
|
-
let i =
|
|
633
|
+
}), G = (e, t, n, r) => Z(r) ? t.flatMap((t) => {
|
|
634
|
+
let i = le(e, t, n, r);
|
|
610
635
|
return i ? [i] : [];
|
|
611
|
-
}) : [],
|
|
636
|
+
}) : [], le = (e, t, n, r) => {
|
|
612
637
|
let i = e.getTypeAtLocation(t);
|
|
613
638
|
if (!e.isTypeAssignableTo(i, r)) return null;
|
|
614
|
-
let a =
|
|
615
|
-
return o ?
|
|
616
|
-
},
|
|
639
|
+
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) => ({
|
|
617
642
|
__typename: "SubFlowValue",
|
|
618
643
|
functionDefinition: e,
|
|
619
644
|
signature: e.signature,
|
|
@@ -624,16 +649,16 @@ var w = (t, n) => {
|
|
|
624
649
|
hidden: e?.hidden ?? !1,
|
|
625
650
|
optional: e?.optional ?? !1
|
|
626
651
|
}))
|
|
627
|
-
}),
|
|
652
|
+
}), fe = 7, K = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
|
|
628
653
|
if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
|
|
629
654
|
let u = r.symbol?.declarations?.[0];
|
|
630
655
|
if (u && e.isTypeParameterDeclaration(u) && u.constraint) return K(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
|
|
631
656
|
}
|
|
632
657
|
let u = t.typeToString(r), d = s ?? r, f = o ? { suggestions: [
|
|
633
|
-
...
|
|
634
|
-
...n ?
|
|
635
|
-
...
|
|
636
|
-
...
|
|
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)
|
|
637
662
|
] } : {};
|
|
638
663
|
if (r.isUnion()) {
|
|
639
664
|
let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
|
|
@@ -648,7 +673,7 @@ var w = (t, n) => {
|
|
|
648
673
|
type: u,
|
|
649
674
|
...f
|
|
650
675
|
};
|
|
651
|
-
if (
|
|
676
|
+
if (ye(r) || ve(r)) return {
|
|
652
677
|
input: "select",
|
|
653
678
|
type: u,
|
|
654
679
|
...f
|
|
@@ -668,14 +693,14 @@ var w = (t, n) => {
|
|
|
668
693
|
type: u,
|
|
669
694
|
...f
|
|
670
695
|
};
|
|
671
|
-
if (
|
|
696
|
+
if (be(t, r)) return {
|
|
672
697
|
input: "list",
|
|
673
698
|
type: u,
|
|
674
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))),
|
|
675
700
|
...f
|
|
676
701
|
};
|
|
677
702
|
if ((r.flags & e.TypeFlags.Object) !== 0) {
|
|
678
|
-
if (c.has(r) || c.size >=
|
|
703
|
+
if (c.has(r) || c.size >= fe && N(r, t, l)) return {
|
|
679
704
|
input: "data",
|
|
680
705
|
type: u,
|
|
681
706
|
...f
|
|
@@ -702,13 +727,13 @@ var w = (t, n) => {
|
|
|
702
727
|
...f
|
|
703
728
|
};
|
|
704
729
|
}, q = (e, t, n = !1) => {
|
|
705
|
-
if (!e || e.input === "generic") return
|
|
706
|
-
let r =
|
|
730
|
+
if (!e || e.input === "generic") return he(ge(t), n);
|
|
731
|
+
let r = me(e.suggestions, t.suggestions);
|
|
707
732
|
if (e.input === "data") {
|
|
708
733
|
let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = new Set([...Object.keys(n), ...Object.keys(i)]);
|
|
709
734
|
for (let e of o) {
|
|
710
735
|
let t = n[e], r = i[e];
|
|
711
|
-
a[e] =
|
|
736
|
+
a[e] = pe(t, r);
|
|
712
737
|
}
|
|
713
738
|
return {
|
|
714
739
|
...e,
|
|
@@ -728,7 +753,7 @@ var w = (t, n) => {
|
|
|
728
753
|
...e,
|
|
729
754
|
...r ? { suggestions: r } : {}
|
|
730
755
|
};
|
|
731
|
-
},
|
|
756
|
+
}, pe = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? q(e, t) : e ?? t, me = (e, t) => {
|
|
732
757
|
let n = [...e ?? [], ...t ?? []];
|
|
733
758
|
if (n.length === 0) return;
|
|
734
759
|
let r = /* @__PURE__ */ new Set(), i = [];
|
|
@@ -737,13 +762,13 @@ var w = (t, n) => {
|
|
|
737
762
|
r.has(t) || (r.add(t), i.push(e));
|
|
738
763
|
}
|
|
739
764
|
return i;
|
|
740
|
-
},
|
|
765
|
+
}, he = (e, t) => !t || e.input !== "generic" ? e : {
|
|
741
766
|
input: "data",
|
|
742
767
|
...e.type ? { type: e.type } : {},
|
|
743
768
|
properties: {},
|
|
744
769
|
required: [],
|
|
745
770
|
...e.suggestions ? { suggestions: e.suggestions } : {}
|
|
746
|
-
},
|
|
771
|
+
}, ge = (e) => {
|
|
747
772
|
if (e.input !== "select") return e;
|
|
748
773
|
let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
|
|
749
774
|
for (let e of t) {
|
|
@@ -774,18 +799,18 @@ function Y(t) {
|
|
|
774
799
|
function X(t) {
|
|
775
800
|
return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
|
|
776
801
|
}
|
|
777
|
-
function
|
|
802
|
+
function _e(e) {
|
|
778
803
|
return X(e) || Y(e) || J(e);
|
|
779
804
|
}
|
|
780
|
-
function
|
|
805
|
+
function ve(t) {
|
|
781
806
|
return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
|
|
782
807
|
}
|
|
783
|
-
function
|
|
808
|
+
function ye(t) {
|
|
784
809
|
if (!t.isUnion()) return !1;
|
|
785
810
|
let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
|
|
786
|
-
return n.length > 0 && n.every(
|
|
811
|
+
return n.length > 0 && n.every(_e);
|
|
787
812
|
}
|
|
788
|
-
function
|
|
813
|
+
function be(e, t) {
|
|
789
814
|
return e.isArrayType(t) || e.isTupleType(t);
|
|
790
815
|
}
|
|
791
816
|
function Z(e) {
|
|
@@ -793,14 +818,14 @@ function Z(e) {
|
|
|
793
818
|
}
|
|
794
819
|
//#endregion
|
|
795
820
|
//#region src/schema/getSignatureSchema.ts
|
|
796
|
-
var
|
|
797
|
-
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 =
|
|
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);
|
|
798
823
|
return {
|
|
799
824
|
nodeId: i,
|
|
800
825
|
parameters: x,
|
|
801
826
|
return: w ? K(l, m, w, Array.from(p.values()), r, !1) : { input: "generic" }
|
|
802
827
|
};
|
|
803
|
-
},
|
|
828
|
+
}, Q = (t, n, r) => {
|
|
804
829
|
if (n?.initializer && e.isCallExpression(n.initializer)) {
|
|
805
830
|
let e = t.getResolvedSignature(n.initializer);
|
|
806
831
|
if (e) return t.getReturnTypeOfSignature(e);
|
|
@@ -809,21 +834,21 @@ var Q = (t, n, r, i) => {
|
|
|
809
834
|
let e = t.getSignatureFromDeclaration(r);
|
|
810
835
|
if (e) return t.getReturnTypeOfSignature(e);
|
|
811
836
|
}
|
|
812
|
-
},
|
|
837
|
+
}, Se = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), Ce = (t) => {
|
|
813
838
|
let n = [];
|
|
814
839
|
return t.statements.forEach((t) => {
|
|
815
840
|
t.forEachChild(function t(r) {
|
|
816
841
|
e.isVariableDeclaration(r) && (r.parent.flags & e.NodeFlags.Const) !== 0 && n.push([r.name.getText(), r]), r.forEachChild(t);
|
|
817
842
|
});
|
|
818
843
|
}), new Map(n);
|
|
819
|
-
},
|
|
844
|
+
}, we = (t, n) => {
|
|
820
845
|
if (!(!n?.initializer || !e.isCallExpression(n.initializer))) return t.getResolvedSignature(n.initializer)?.parameters.map((e) => t.getTypeOfSymbolAtLocation(e, n.initializer));
|
|
821
|
-
},
|
|
846
|
+
}, Te = (e, t, n) => {
|
|
822
847
|
if (!(!t || !n?.initializer)) return t.parameters.map((t) => {
|
|
823
848
|
let r = e.getSymbolAtLocation(t.name);
|
|
824
849
|
return e.getTypeOfSymbolAtLocation(r, n.initializer);
|
|
825
850
|
});
|
|
826
|
-
},
|
|
851
|
+
}, Ee = (t, n, r = []) => {
|
|
827
852
|
let i = t.typeParameters?.map((e) => e.name.getText()) || [], a = {};
|
|
828
853
|
t.parameters.forEach((t, n) => {
|
|
829
854
|
if (!t.type) return;
|
|
@@ -853,13 +878,13 @@ var Q = (t, n, r, i) => {
|
|
|
853
878
|
let a = (i.flags & e.TypeFlags.Null) !== 0, o = (i.flags & e.TypeFlags.Undefined) !== 0;
|
|
854
879
|
return a || o;
|
|
855
880
|
}) : o;
|
|
856
|
-
},
|
|
857
|
-
let l = r?.[c], u = l ?
|
|
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);
|
|
858
883
|
return {
|
|
859
884
|
schema: q(l ? K(e, t, l, Array.from(a.values()), o, !1) : void 0, d, s[c] ?? !1),
|
|
860
885
|
blockedBy: i.filter((e) => e.parameterIndex === c).map((e) => e.dependsOnIndex)
|
|
861
886
|
};
|
|
862
|
-
}) : [],
|
|
887
|
+
}) : [], Oe = (t, n, r) => {
|
|
863
888
|
if ((n.flags & e.TypeFlags.TypeParameter) !== 0) {
|
|
864
889
|
let r = n.symbol?.declarations?.[0];
|
|
865
890
|
return r && e.isTypeParameterDeclaration(r) && r.constraint ? t.getTypeFromTypeNode(r.constraint) : t.getAnyType();
|
|
@@ -874,7 +899,7 @@ var Q = (t, n, r, i) => {
|
|
|
874
899
|
return t.getAnyType();
|
|
875
900
|
}
|
|
876
901
|
return n;
|
|
877
|
-
}, $ = (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))))),
|
|
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 = []) => {
|
|
878
903
|
let r = "index.ts", i = y(r, `${x(n)}\ntype MyType = ${t}`).languageService.getProgram(), a = i?.getSourceFile(r), o = i?.getTypeChecker();
|
|
879
904
|
if (!a || !o) return;
|
|
880
905
|
let s = a.statements.filter((t) => e.isTypeAliasDeclaration(t) || e.isInterfaceDeclaration(t) || e.isClassDeclaration(t)).pop();
|
|
@@ -883,4 +908,4 @@ var Q = (t, n, r, i) => {
|
|
|
883
908
|
if (c) return K(o, void 0, c, [], [], !1);
|
|
884
909
|
};
|
|
885
910
|
//#endregion
|
|
886
|
-
export {
|
|
911
|
+
export { O as getFlowValidation, xe as getSignatureSchema, w as getTypeFromValue, ke as getTypeSchema, ee as getValueFromType, k as getValueValidation };
|
package/dist/utils.d.ts
CHANGED
|
@@ -38,4 +38,4 @@ export declare const sanitizeId: (id: string) => string;
|
|
|
38
38
|
/**
|
|
39
39
|
* Generates TypeScript source code for a flow, suitable for validation and type inference.
|
|
40
40
|
*/
|
|
41
|
-
export declare function generateFlowSourceCode(flow?: Flow, functions?: FunctionDefinition[], dataTypes?: DataType[], isForInference?: boolean): string;
|
|
41
|
+
export declare function generateFlowSourceCode(flow?: Flow, functions?: FunctionDefinition[], dataTypes?: DataType[], isForInference?: boolean, assertNonNullReferences?: boolean): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code0-tech/triangulum",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.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-
|
|
26
|
+
"@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2705887128-b8e126d1674035ed0f869775b533d7093e8aedbd",
|
|
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-
|
|
36
|
+
"@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2705887128-b8e126d1674035ed0f869775b533d7093e8aedbd",
|
|
37
37
|
"@typescript/vfs": "^1.6.4",
|
|
38
38
|
"typescript": "^5.9.3 || ^6.0.2",
|
|
39
39
|
"lossless-json": "^4.3.0"
|