@code0-tech/triangulum 0.26.1 → 0.26.2
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
CHANGED
|
@@ -42,15 +42,15 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
42
42
|
${i.filter(e=>e?.id&&!d.has(e.id)&&!f.has(e.id)).map(e=>s(e.id)).join(`
|
|
43
43
|
`)}
|
|
44
44
|
)();
|
|
45
|
-
`}var
|
|
45
|
+
`}var k=(e,t)=>{let n=S(e?.value);if(!n)return`any`;let r=`
|
|
46
46
|
${E(t,`unknown`)}
|
|
47
47
|
const tempValue = ${n??`any`};
|
|
48
|
-
`,i=`index.ts`,a=T(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getTypeChecker(),l=`any`,u=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let t=s.getTypeAtLocation(e),n=s.getSymbolsInScope(e,c.default.SymbolFlags.TypeAlias),r=t=>{if(t.isUnion()){let e=t.types.map(r);return Array.from(new Set(e)).sort().join(` | `)}if(s.isArrayType(t)){let e=t.typeArguments||[],n=e.length>0?r(e[0]):`any`;return e[0]?.isUnion()?`(${n})[]`:`${n}[]`}if(t.getFlags()&c.default.TypeFlags.Object||t.isClassOrInterface()){let n=s.getPropertiesOfType(t);if(n.length>0)return`{ ${n.map(t=>{let n=s.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${r(n)}`}).join(`, `)} }`}let i=n.filter(e=>s.isTypeAssignableTo(t,s.getDeclaredTypeOfSymbol(e)));return i.length>0?i.sort((e,t)=>{let n=s.getDeclaredTypeOfSymbol(e),r=s.getDeclaredTypeOfSymbol(t),i=s.isTypeAssignableTo(n,r),a=s.isTypeAssignableTo(r,n);return i&&!a?-1:a&&!i?1:e.getName().length-t.getName().length||e.getName().localeCompare(t.getName())})[0].getName():s.typeToString(t,e)};l=r(t)}c.default.forEachChild(e,u)};return u(o),l},
|
|
48
|
+
`,i=`index.ts`,a=T(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getTypeChecker(),l=`any`,u=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let t=s.getTypeAtLocation(e),n=s.getSymbolsInScope(e,c.default.SymbolFlags.TypeAlias),r=t=>{if(t.isUnion()){let e=t.types.map(r);return Array.from(new Set(e)).sort().join(` | `)}if(s.isArrayType(t)){let e=t.typeArguments||[],n=e.length>0?r(e[0]):`any`;return e[0]?.isUnion()?`(${n})[]`:`${n}[]`}if(t.getFlags()&c.default.TypeFlags.Object||t.isClassOrInterface()){let n=s.getPropertiesOfType(t);if(n.length>0)return`{ ${n.map(t=>{let n=s.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${r(n)}`}).join(`, `)} }`}let i=n.filter(e=>s.isTypeAssignableTo(t,s.getDeclaredTypeOfSymbol(e)));return i.length>0?i.sort((e,t)=>{let n=s.getDeclaredTypeOfSymbol(e),r=s.getDeclaredTypeOfSymbol(t),i=s.isTypeAssignableTo(n,r),a=s.isTypeAssignableTo(r,n);return i&&!a?-1:a&&!i?1:e.getName().length-t.getName().length||e.getName().localeCompare(t.getName())})[0].getName():s.typeToString(t,e)};l=r(t)}c.default.forEachChild(e,u)};return u(o),l},ne=(e,t)=>{let n=`
|
|
49
49
|
${E(t)}
|
|
50
50
|
type Target = ${e};
|
|
51
|
-
`,r=`index.ts`,i=T(r,n),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=a.statements.find(e=>c.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!s)return{__typename:`LiteralValue`,value:null};let l=o.getTypeAtLocation(s.type),u=(e,t,n=new Set)=>{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)}},
|
|
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}},
|
|
51
|
+
`,r=`index.ts`,i=T(r,n),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=a.statements.find(e=>c.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!s)return{__typename:`LiteralValue`,value:null};let l=o.getTypeAtLocation(s.type),u=(e,t,n=new Set)=>{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)}},re=(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=T(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}},ie=(e,t,n)=>{let r=S(t?.value),i=`
|
|
53
53
|
${E(n)}
|
|
54
54
|
const testValue: ${e} = ${r};
|
|
55
55
|
`,a=`index.ts`,o=T(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}},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`}]:[]},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_`)?j(i,o,e,n):i.startsWith(`flow_`)?M(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=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})},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)=>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}))},M=(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}))}),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:[...A(s,e),...t?oe(e,t,s,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...z(e,r,i,s),...le(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(ye(n)||ve(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(be(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 he(ge(t),n);let r=me(e.suggestions,t.suggestions);if(e.input===`data`){let n=e.properties??{},i=t.input===`data`?t.properties??{}:{},a={},o=new Set([...Object.keys(n),...Object.keys(i)]);for(let e of o){let t=n[e],r=i[e];a[e]=pe(t,r)}return{...e,properties:a,...r?{suggestions:r}:{}}}if(e.input===`list`){let n=e.items??[],i=t.input===`list`?t.items??[]:[],a=n.length===i.length&&n.length>0?n.map((e,t)=>q(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},pe=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?q(e,t):e??t,me=(e,t)=>{let n=[...e??[],...t??[]];if(n.length===0)return;let r=new Set,i=[];for(let e of n){let t=JSON.stringify(e);r.has(t)||(r.add(t),i.push(e))}return i},he=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},ge=e=>{if(e.input!==`select`)return e;let t=e.suggestions??[],n=new Set;for(let e of t){let t=typeof e.value;(t===`string`||t===`number`||t===`boolean`)&&n.add(t)}return{input:n.size===1?{string:`text`,number:`number`,boolean:`boolean`}[[...n][0]]:`text`,...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 _e(e){return X(e)||Y(e)||J(e)}function ve(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function ye(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(_e)}function be(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Z(e){return e.getCallSignatures().length>0}var xe=(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=Q(s),m=Se(s).get(f),h=p.get(d),g=Ce(l,m),_=we(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=Te(h,g),b=(u?.parameters?.nodes??[]).map(e=>e?.value!=null);return Ee(r,l,m,v,_,y,r?p:new Map,r?n:[],b)},Q=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),Se=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)},Ce=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},we=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},Te=(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},Ee=(e,t,n,r,i,a,o,s,c)=>r?r.map((r,l)=>{let u=i?.[l],d=u?De(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)}}):[],De=(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))))),Oe=(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=ie,exports.getSignatureSchema=xe,exports.getTypeFromValue=ne,exports.getTypeSchema=Oe,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}},A=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(A);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[]},j=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return A(t.type)}return e.isUnion()?e.types.flatMap(e=>j(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`}]:[]},ae=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!oe(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?se(i,o,e,n):i.startsWith(`p_`)?ce(i,o,e,n):i.startsWith(`flow_`)?M(o,e,n):[]}),oe=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),se=(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})},ce=(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}))},M=(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=o??n,d=a?{suggestions:[...j(u,e),...t?ae(e,t,u,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...z(e,r,i,u),...le(e,r,i,u)]}:{};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),...d}}if(J(n))return{input:`boolean`,...d};if(be(n)||ye(n))return{input:`select`,...d};if(Y(n))return{input:`number`,...d};if(X(n))return{input:`text`,...d};if(Z(n))return{input:`sub-flow`,...d};if(xe(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,void 0,s,l))),...d};if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=pe&&I(n,e,l))return{input:`data`,...d};s.add(n);let o={},u=[];for(let d of e.getPropertiesOfType(n)){let n=d.valueDeclaration??d.declarations?.[0];if(!n)continue;let f=e.getTypeOfSymbolAtLocation(d,n),p=(d.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[d.name]=m.length===1?m[0]:m,p||u.push(d.name)}return s.delete(n),{input:`data`,properties:o,required:u,...d}}return{input:`generic`,...d}},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`,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`,...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=Se(s),m=Ce(s).get(f),h=p.get(d),g=we(l,m),_=Te(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=Ee(h,g),b=(u?.parameters?.nodes??[]).map(e=>e?.value!=null);return De(r,l,m,v,_,y,r?p:new Map,r?n:[],b)},Se=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),Ce=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)},we=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},Te=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},Ee=(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},De=(e,t,n,r,i,a,o,s,c)=>r?r.map((r,l)=>{let u=i?.[l],d=u?Oe(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)}}):[],Oe=(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))))),ke=(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=re,exports.getSignatureSchema=Q,exports.getTypeFromValue=k,exports.getTypeSchema=ke,exports.getValueFromType=ne,exports.getValueValidation=ie;
|
package/dist/triangulum.es.js
CHANGED
|
@@ -495,16 +495,16 @@ var w = (t, n) => {
|
|
|
495
495
|
value: !1,
|
|
496
496
|
__typename: "LiteralValue"
|
|
497
497
|
}] : [];
|
|
498
|
-
},
|
|
498
|
+
}, k = (e, t, n, r) => r.flatMap((r) => {
|
|
499
499
|
let i = r.getName();
|
|
500
|
-
if (!
|
|
500
|
+
if (!te(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_") ?
|
|
505
|
-
}),
|
|
504
|
+
return i.startsWith("node_") ? ne(i, o, e, n) : i.startsWith("p_") ? re(i, o, e, n) : i.startsWith("flow_") ? ie(o, e, n) : [];
|
|
505
|
+
}), te = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), ne = (t, n, r, i) => {
|
|
506
506
|
if ((n.flags & e.TypeFlags.Void) !== 0) return [];
|
|
507
|
-
let a =
|
|
507
|
+
let a = A(t.replace("node_", ""));
|
|
508
508
|
return M(n, r, i).flatMap(({ path: e }) => {
|
|
509
509
|
let t = {
|
|
510
510
|
__typename: "ReferenceValue",
|
|
@@ -512,8 +512,8 @@ var w = (t, n) => {
|
|
|
512
512
|
};
|
|
513
513
|
return e.length > 0 && (t.referencePath = e), t;
|
|
514
514
|
});
|
|
515
|
-
},
|
|
516
|
-
let { nodeFunctionId: i, paramIndexFromName: a } =
|
|
515
|
+
}, re = (e, t, n, r) => {
|
|
516
|
+
let { nodeFunctionId: i, paramIndexFromName: a } = ae(e);
|
|
517
517
|
if (!n.isTupleType(t)) return [];
|
|
518
518
|
let o = t;
|
|
519
519
|
return n.getTypeArguments(o).flatMap((e, t) => M(e, n, r).flatMap(({ path: e }) => {
|
|
@@ -526,19 +526,19 @@ var w = (t, n) => {
|
|
|
526
526
|
};
|
|
527
527
|
return e.length > 0 && (n.referencePath = e), n;
|
|
528
528
|
}));
|
|
529
|
-
},
|
|
529
|
+
}, ie = (e, t, n) => M(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
|
-
}),
|
|
535
|
+
}), A = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), ae = (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:
|
|
538
|
+
nodeFunctionId: A(r),
|
|
539
539
|
paramIndexFromName: i
|
|
540
540
|
};
|
|
541
|
-
},
|
|
541
|
+
}, oe = 7, j = (e, t, n) => {
|
|
542
542
|
let r = n.get(e);
|
|
543
543
|
if (r !== void 0) return r;
|
|
544
544
|
let i = /* @__PURE__ */ new Set(), a = (n) => {
|
|
@@ -557,7 +557,7 @@ var w = (t, n) => {
|
|
|
557
557
|
if ((c.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(c, r) && s.push({
|
|
558
558
|
path: i,
|
|
559
559
|
type: t
|
|
560
|
-
}), N(c) && !a.has(c) && (i.length <
|
|
560
|
+
}), N(c) && !a.has(c) && (i.length < oe || !j(c, n, o))) {
|
|
561
561
|
let e = c.getProperties();
|
|
562
562
|
e && e.length > 0 && (a.add(c), e.forEach((e) => {
|
|
563
563
|
let t = n.getTypeOfSymbolAtLocation(e, e.valueDeclaration), c = e.getName(), l = [...i, { path: c }];
|
|
@@ -624,76 +624,81 @@ var w = (t, n) => {
|
|
|
624
624
|
hidden: e?.hidden ?? !1,
|
|
625
625
|
optional: e?.optional ?? !1
|
|
626
626
|
}))
|
|
627
|
-
}), G = (t, n, r, i, a, o = !0, s) => {
|
|
627
|
+
}), G = 7, K = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
|
|
628
628
|
if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
|
|
629
|
-
let
|
|
630
|
-
if (
|
|
629
|
+
let u = r.symbol?.declarations?.[0];
|
|
630
|
+
if (u && e.isTypeParameterDeclaration(u) && u.constraint) return K(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
|
|
631
631
|
}
|
|
632
|
-
let
|
|
633
|
-
...O(
|
|
634
|
-
...n ?
|
|
635
|
-
...P(t, i, a,
|
|
636
|
-
...V(t, i, a,
|
|
632
|
+
let u = s ?? r, d = o ? { suggestions: [
|
|
633
|
+
...O(u, t),
|
|
634
|
+
...n ? k(t, n, u, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
|
|
635
|
+
...P(t, i, a, u),
|
|
636
|
+
...V(t, i, a, u)
|
|
637
637
|
] } : {};
|
|
638
638
|
if (r.isUnion()) {
|
|
639
639
|
let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
|
|
640
640
|
if (o.length === 1) return {
|
|
641
|
-
...
|
|
642
|
-
...
|
|
641
|
+
...K(t, n, o[0], i, a, !1, void 0, c, l),
|
|
642
|
+
...d
|
|
643
643
|
};
|
|
644
644
|
}
|
|
645
645
|
if (J(r)) return {
|
|
646
646
|
input: "boolean",
|
|
647
|
-
...
|
|
647
|
+
...d
|
|
648
648
|
};
|
|
649
|
-
if (
|
|
649
|
+
if (pe(r) || fe(r)) return {
|
|
650
650
|
input: "select",
|
|
651
|
-
...
|
|
651
|
+
...d
|
|
652
652
|
};
|
|
653
653
|
if (Y(r)) return {
|
|
654
654
|
input: "number",
|
|
655
|
-
...
|
|
655
|
+
...d
|
|
656
656
|
};
|
|
657
657
|
if (X(r)) return {
|
|
658
658
|
input: "text",
|
|
659
|
-
...
|
|
659
|
+
...d
|
|
660
660
|
};
|
|
661
661
|
if (Z(r)) return {
|
|
662
662
|
input: "sub-flow",
|
|
663
|
-
...
|
|
663
|
+
...d
|
|
664
664
|
};
|
|
665
|
-
if (
|
|
665
|
+
if (me(t, r)) return {
|
|
666
666
|
input: "list",
|
|
667
|
-
items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) =>
|
|
668
|
-
...
|
|
667
|
+
items: t.getTypeArguments(r).flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => K(t, n, e, i, a, o, void 0, c, l))),
|
|
668
|
+
...d
|
|
669
669
|
};
|
|
670
670
|
if ((r.flags & e.TypeFlags.Object) !== 0) {
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
671
|
+
if (c.has(r) || c.size >= G && j(r, t, l)) return {
|
|
672
|
+
input: "data",
|
|
673
|
+
...d
|
|
674
|
+
};
|
|
675
|
+
c.add(r);
|
|
676
|
+
let s = {}, u = [];
|
|
677
|
+
for (let d of t.getPropertiesOfType(r)) {
|
|
678
|
+
let r = d.valueDeclaration ?? d.declarations?.[0];
|
|
674
679
|
if (!r) continue;
|
|
675
|
-
let
|
|
676
|
-
s[
|
|
680
|
+
let f = t.getTypeOfSymbolAtLocation(d, r), p = (d.flags & e.SymbolFlags.Optional) !== 0 || f.isUnion() && f.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), m = (f.isUnion() ? f.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [f]).map((e) => K(t, n, e, i, a, o, void 0, c, l));
|
|
681
|
+
s[d.name] = m.length === 1 ? m[0] : m, p || u.push(d.name);
|
|
677
682
|
}
|
|
678
|
-
return {
|
|
683
|
+
return c.delete(r), {
|
|
679
684
|
input: "data",
|
|
680
685
|
properties: s,
|
|
681
|
-
required:
|
|
682
|
-
...
|
|
686
|
+
required: u,
|
|
687
|
+
...d
|
|
683
688
|
};
|
|
684
689
|
}
|
|
685
690
|
return {
|
|
686
691
|
input: "generic",
|
|
687
|
-
...
|
|
692
|
+
...d
|
|
688
693
|
};
|
|
689
|
-
},
|
|
690
|
-
if (!e || e.input === "generic") return
|
|
691
|
-
let r =
|
|
694
|
+
}, q = (e, t, n = !1) => {
|
|
695
|
+
if (!e || e.input === "generic") return le(ue(t), n);
|
|
696
|
+
let r = ce(e.suggestions, t.suggestions);
|
|
692
697
|
if (e.input === "data") {
|
|
693
698
|
let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = new Set([...Object.keys(n), ...Object.keys(i)]);
|
|
694
699
|
for (let e of o) {
|
|
695
700
|
let t = n[e], r = i[e];
|
|
696
|
-
a[e] =
|
|
701
|
+
a[e] = se(t, r);
|
|
697
702
|
}
|
|
698
703
|
return {
|
|
699
704
|
...e,
|
|
@@ -702,7 +707,7 @@ var w = (t, n) => {
|
|
|
702
707
|
};
|
|
703
708
|
}
|
|
704
709
|
if (e.input === "list") {
|
|
705
|
-
let n = e.items ?? [], i = t.input === "list" ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) =>
|
|
710
|
+
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;
|
|
706
711
|
return {
|
|
707
712
|
...e,
|
|
708
713
|
items: a,
|
|
@@ -713,7 +718,7 @@ var w = (t, n) => {
|
|
|
713
718
|
...e,
|
|
714
719
|
...r ? { suggestions: r } : {}
|
|
715
720
|
};
|
|
716
|
-
},
|
|
721
|
+
}, se = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? q(e, t) : e ?? t, ce = (e, t) => {
|
|
717
722
|
let n = [...e ?? [], ...t ?? []];
|
|
718
723
|
if (n.length === 0) return;
|
|
719
724
|
let r = /* @__PURE__ */ new Set(), i = [];
|
|
@@ -722,12 +727,12 @@ var w = (t, n) => {
|
|
|
722
727
|
r.has(t) || (r.add(t), i.push(e));
|
|
723
728
|
}
|
|
724
729
|
return i;
|
|
725
|
-
},
|
|
730
|
+
}, le = (e, t) => !t || e.input !== "generic" ? e : {
|
|
726
731
|
input: "data",
|
|
727
732
|
properties: {},
|
|
728
733
|
required: [],
|
|
729
734
|
...e.suggestions ? { suggestions: e.suggestions } : {}
|
|
730
|
-
},
|
|
735
|
+
}, ue = (e) => {
|
|
731
736
|
if (e.input !== "select") return e;
|
|
732
737
|
let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
|
|
733
738
|
for (let e of t) {
|
|
@@ -757,18 +762,18 @@ function Y(t) {
|
|
|
757
762
|
function X(t) {
|
|
758
763
|
return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
|
|
759
764
|
}
|
|
760
|
-
function
|
|
765
|
+
function de(e) {
|
|
761
766
|
return X(e) || Y(e) || J(e);
|
|
762
767
|
}
|
|
763
|
-
function
|
|
768
|
+
function fe(t) {
|
|
764
769
|
return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
|
|
765
770
|
}
|
|
766
|
-
function
|
|
771
|
+
function pe(t) {
|
|
767
772
|
if (!t.isUnion()) return !1;
|
|
768
773
|
let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
|
|
769
|
-
return n.length > 0 && n.every(
|
|
774
|
+
return n.length > 0 && n.every(de);
|
|
770
775
|
}
|
|
771
|
-
function
|
|
776
|
+
function me(e, t) {
|
|
772
777
|
return e.isArrayType(t) || e.isTupleType(t);
|
|
773
778
|
}
|
|
774
779
|
function Z(e) {
|
|
@@ -776,24 +781,24 @@ function Z(e) {
|
|
|
776
781
|
}
|
|
777
782
|
//#endregion
|
|
778
783
|
//#region src/schema/getSignatureSchema.ts
|
|
779
|
-
var
|
|
780
|
-
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 =
|
|
781
|
-
return
|
|
782
|
-
},
|
|
784
|
+
var Q = (t, n, r, i) => {
|
|
785
|
+
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 = he(c), m = ge(c).get(f), h = p.get(d), g = _e(l, m), _ = ve(l, h, m), v = g?.map((t, n) => (t.flags & e.TypeFlags.Undefined) === 0 ? t : _?.[n] ?? t), b = ye(h, g), x = (u?.parameters?.nodes ?? []).map((e) => e?.value != null);
|
|
786
|
+
return be(i, l, m, v, _, b, i ? p : /* @__PURE__ */ new Map(), i ? r : [], x);
|
|
787
|
+
}, he = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), ge = (t) => {
|
|
783
788
|
let n = [];
|
|
784
789
|
return t.statements.forEach((t) => {
|
|
785
790
|
t.forEachChild(function t(r) {
|
|
786
791
|
e.isVariableDeclaration(r) && (r.parent.flags & e.NodeFlags.Const) !== 0 && n.push([r.name.getText(), r]), r.forEachChild(t);
|
|
787
792
|
});
|
|
788
793
|
}), new Map(n);
|
|
789
|
-
},
|
|
794
|
+
}, _e = (t, n) => {
|
|
790
795
|
if (!(!n?.initializer || !e.isCallExpression(n.initializer))) return t.getResolvedSignature(n.initializer)?.parameters.map((e) => t.getTypeOfSymbolAtLocation(e, n.initializer));
|
|
791
|
-
},
|
|
796
|
+
}, ve = (e, t, n) => {
|
|
792
797
|
if (!(!t || !n?.initializer)) return t.parameters.map((t) => {
|
|
793
798
|
let r = e.getSymbolAtLocation(t.name);
|
|
794
799
|
return e.getTypeOfSymbolAtLocation(r, n.initializer);
|
|
795
800
|
});
|
|
796
|
-
},
|
|
801
|
+
}, ye = (t, n) => {
|
|
797
802
|
let r = t.typeParameters?.map((e) => e.name.getText()) || [], i = {};
|
|
798
803
|
t.parameters.forEach((t, n) => {
|
|
799
804
|
if (!t.type) return;
|
|
@@ -822,14 +827,14 @@ var me = (t, n, r, i) => {
|
|
|
822
827
|
let i = (r.flags & e.TypeFlags.Null) !== 0, a = (r.flags & e.TypeFlags.Undefined) !== 0;
|
|
823
828
|
return i || a;
|
|
824
829
|
}) : a;
|
|
825
|
-
},
|
|
826
|
-
let u = i?.[l], d = u ?
|
|
830
|
+
}, be = (e, t, n, r, i, a, o, s, c) => r ? r.map((r, l) => {
|
|
831
|
+
let u = i?.[l], d = u ? xe(t, u, n) : void 0, f = K(t, n, r, Array.from(o.values()), s, !0, d);
|
|
827
832
|
return {
|
|
828
833
|
nodeId: e,
|
|
829
|
-
schema:
|
|
834
|
+
schema: q(u ? K(t, n, u, Array.from(o.values()), s, !1) : void 0, f, c[l] ?? !1),
|
|
830
835
|
blockedBy: a.filter((e) => e.parameterIndex === l).map((e) => e.dependsOnIndex)
|
|
831
836
|
};
|
|
832
|
-
}) : [],
|
|
837
|
+
}) : [], xe = (t, n, r) => {
|
|
833
838
|
if ((n.flags & e.TypeFlags.TypeParameter) !== 0) {
|
|
834
839
|
let r = n.symbol?.declarations?.[0];
|
|
835
840
|
return r && e.isTypeParameterDeclaration(r) && r.constraint ? t.getTypeFromTypeNode(r.constraint) : t.getAnyType();
|
|
@@ -844,13 +849,13 @@ var me = (t, n, r, i) => {
|
|
|
844
849
|
return t.getAnyType();
|
|
845
850
|
}
|
|
846
851
|
return n;
|
|
847
|
-
}, $ = (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))))),
|
|
852
|
+
}, $ = (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))))), Se = (t, n = []) => {
|
|
848
853
|
let r = "index.ts", i = y(r, `${x(n)}\ntype MyType = ${t}`).languageService.getProgram(), a = i?.getSourceFile(r), o = i?.getTypeChecker();
|
|
849
854
|
if (!a || !o) return;
|
|
850
855
|
let s = a.statements.filter((t) => e.isTypeAliasDeclaration(t) || e.isInterfaceDeclaration(t) || e.isClassDeclaration(t)).pop();
|
|
851
856
|
if (!s) return;
|
|
852
857
|
let c = o.getTypeAtLocation(s);
|
|
853
|
-
if (c) return
|
|
858
|
+
if (c) return K(o, void 0, c, [], [], !1);
|
|
854
859
|
};
|
|
855
860
|
//#endregion
|
|
856
|
-
export { ee as getFlowValidation,
|
|
861
|
+
export { ee as getFlowValidation, Q as getSignatureSchema, w as getTypeFromValue, Se as getTypeSchema, T as getValueFromType, E as getValueValidation };
|
|
@@ -18,3 +18,11 @@ import { ReferenceValue } from '@code0-tech/sagittarius-graphql-types';
|
|
|
18
18
|
* const references = getReferences(checker, variableDecl, expectedType, [symbol1, symbol2]);
|
|
19
19
|
*/
|
|
20
20
|
export declare const getReferences: (checker: ts.TypeChecker, node: ts.VariableDeclaration, paramType: ts.Type, symbols: ts.Symbol[]) => ReferenceValue[];
|
|
21
|
+
/**
|
|
22
|
+
* Determines whether an object type participates in a reference cycle, i.e. can
|
|
23
|
+
* reach itself again through its (non-nullable) property types. Results are
|
|
24
|
+
* memoized in the given cache since the same named types repeat throughout a
|
|
25
|
+
* traversal. The DFS itself is guarded by its own seen set, so it terminates on
|
|
26
|
+
* cycles that do not lead back to the start type.
|
|
27
|
+
*/
|
|
28
|
+
export declare const isRecursiveType: (type: ts.Type, checker: ts.TypeChecker, cache: Map<ts.Type, boolean>) => boolean;
|
|
@@ -91,7 +91,7 @@ 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, suggestionType?: ts.Type) => 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, visited?: Set<ts.Type>, recursionCache?: Map<ts.Type, boolean>) => Schema;
|
|
95
95
|
/**
|
|
96
96
|
* Merges a function-declared parameter schema with the schema derived from the
|
|
97
97
|
* concrete node value. The function schema is treated as the source of truth for
|