@code0-tech/triangulum 0.37.2 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-euztPiZI.cjs");let t=require("typescript");t=e.y(t,1);var n=(n,r)=>{let i=e.v(n?.value);if(!i)return`any`;let a=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BftsgxoV.cjs");let t=require("typescript");t=e.b(t,1);var n=(n,r)=>{let i=e.y(n?.value);if(!i)return`any`;let a=`
2
2
  ${e.r(r,`unknown`)}
3
3
  const tempValue = ${i??`any`};
4
4
  `,o=`index.ts`,s=e.t(o,a),c=s.getSourceFile(o),l=s.languageService.getProgram().getTypeChecker(),u=`any`,d=e=>{if(t.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let n=l.getTypeAtLocation(e),r=n=>{if(n.isUnion()){let e=n.types.map(r);return Array.from(new Set(e)).sort().join(` | `)}if(l.isArrayType(n)){let e=n.typeArguments||[],t=e.length>0?r(e[0]):`any`;return e[0]?.isUnion()?`(${t})[]`:`${t}[]`}if(n.getFlags()&t.default.TypeFlags.Object||n.isClassOrInterface()){let t=l.getPropertiesOfType(n);if(t.length>0)return`{ ${t.map(t=>{let n=l.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${r(n)}`}).join(`, `)} }`}let i=l.getBaseTypeOfLiteralType(n);return l.typeToString(i,e)};u=r(n)}t.default.forEachChild(e,d)};return d(c),u},r=(n,r)=>{let i=`
5
5
  ${e.r(r)}
6
6
  type Target = ${n};
7
- `,a=`index.ts`,o=e.t(a,i),s=o.getSourceFile(a),c=o.languageService.getProgram().getTypeChecker(),l=s.statements.find(e=>t.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!l)return{__typename:`LiteralValue`,value:null};let u=c.getTypeAtLocation(l.type),d=(e,n,r=new Set)=>{let i=new Set(r);if(i.has(e))return null;let a=e.getFlags();if(e.isUnion()){if(n.type,t.default.isTypeAliasDeclaration(n)&&n.type&&t.default.isUnionTypeNode(n.type)){let e=c.getTypeFromTypeNode(n.type.types[0]);return d(e,n,i)}let r=e.types.filter(e=>{let n=e.getFlags();return!(n&t.default.TypeFlags.Undefined)&&!(n&t.default.TypeFlags.Null)}),a=r.length>0?r[0]:e.types[0];return d(a,n,i)}if(a&t.default.TypeFlags.StringLiteral)return e.value;if(a&t.default.TypeFlags.String)return``;if(a&t.default.TypeFlags.NumberLiteral)return e.value;if(a&t.default.TypeFlags.Number)return 0;if(a&t.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(a&t.default.TypeFlags.Boolean)return!1;if(c.isArrayType(e)){i.add(e);let t=e.typeArguments?.[0]||c.getAnyType(),r=d(t,n,i);return r===null?[]:[r]}if(e.isClassOrInterface()||a&t.default.TypeFlags.Object||e.getProperties().length>0){i.add(e);let t={};return e.getProperties().forEach(e=>{let r=c.getTypeOfSymbolAtLocation(e,n),a=e.valueDeclaration;r&&(t[e.getName()]=d(r,a||n,i))}),t}return null};return{__typename:`LiteralValue`,value:d(u,l)}},i=2345,a=2322,o=2339,s=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=s(e,t,n);i&&(r=i)}),r},c=(e,n,r)=>{if(e.start===void 0||e.length===void 0)return!1;let c=s(n,e.start,e.start+e.length);if(!c)return!1;if((e.code===i||e.code===a)&&t.default.isExpression(c)){let e=r.getTypeAtLocation(c);if(!e.isUnion())return!1;let n=r.getContextualType(c);return n?e.types.some(e=>(e.flags&(t.default.TypeFlags.Null|t.default.TypeFlags.Undefined))===0&&r.isTypeAssignableTo(e,n)):!1}if(e.code===o&&t.default.isPropertyAccessExpression(c.parent)){let e=r.getNonNullableType(r.getTypeAtLocation(c.parent.expression));if(!e.isUnion())return!1;let t=c.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},l=(n,r,i)=>{if(!n?.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(!n.nodes?.nodes?.find(e=>e?.id==n.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 a=new Set(r?.map(e=>e.identifier)),o=(n.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!a.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(o.length>0)return{isValid:!1,returnType:`void`,diagnostics:o};let s=e.n(n,r,i,!1,!1),l=`index.ts`,u=e.t(l,s),d=u.getSourceFile(l),f=u.languageService.getProgram(),p=f.getTypeChecker(),m=f.getSemanticDiagnostics(d).map(e=>{let n=(0,t.flattenDiagnosticMessageText)(e.messageText,`
8
- `),r,i=null;if(e.start!==void 0){let t=d.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,l=null,u=-1;for(;(c=s.exec(o))!==null;){let t=n+c.index+c[0].length;t<=e.start&&t>u&&(u=t,l=c)}l&&(r=l[1]===`null`?null:l[1],i=parseInt(l[2],10))}let a=c(e,d,p)?`warning`:`error`;return{message:n,code:e.code,severity:a,nodeId:r,parameterIndex:typeof i==`number`&&Number.isSafeInteger(i)?i:null}}).filter(e=>e!==null);return{isValid:!m.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:m}},u=(n,r,i)=>{let a=e.v(r?.value),o=`
7
+ `,a=`index.ts`,o=e.t(a,i),s=o.getSourceFile(a),c=o.languageService.getProgram().getTypeChecker(),l=s.statements.find(e=>t.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!l)return{__typename:`LiteralValue`,value:null};let u=c.getTypeAtLocation(l.type),d=(e,n,r=new Set)=>{let i=new Set(r);if(i.has(e))return null;let a=e.getFlags();if(e.isUnion()){if(n.type,t.default.isTypeAliasDeclaration(n)&&n.type&&t.default.isUnionTypeNode(n.type)){let e=c.getTypeFromTypeNode(n.type.types[0]);return d(e,n,i)}let r=e.types.filter(e=>{let n=e.getFlags();return!(n&t.default.TypeFlags.Undefined)&&!(n&t.default.TypeFlags.Null)}),a=r.length>0?r[0]:e.types[0];return d(a,n,i)}if(e.isIntersection()){let r=e.types.find(e=>e.getFlags()&(t.default.TypeFlags.StringLike|t.default.TypeFlags.NumberLike|t.default.TypeFlags.BooleanLike));if(r)return i.add(e),d(r,n,i)}if(a&t.default.TypeFlags.StringLiteral)return e.value;if(a&t.default.TypeFlags.String)return``;if(a&t.default.TypeFlags.NumberLiteral)return e.value;if(a&t.default.TypeFlags.Number)return 0;if(a&t.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(a&t.default.TypeFlags.Boolean)return!1;if(c.isArrayType(e)){i.add(e);let t=e.typeArguments?.[0]||c.getAnyType(),r=d(t,n,i);return r===null?[]:[r]}if(e.isClassOrInterface()||a&t.default.TypeFlags.Object||e.getProperties().length>0){i.add(e);let t={};return e.getProperties().forEach(e=>{let r=c.getTypeOfSymbolAtLocation(e,n),a=e.valueDeclaration;r&&(t[e.getName()]=d(r,a||n,i))}),t}return null};return{__typename:`LiteralValue`,value:d(u,l)}},i=2345,a=2322,o=2339,s=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=s(e,t,n);i&&(r=i)}),r},c=(e,n,r)=>{if(e.start===void 0||e.length===void 0)return!1;let c=s(n,e.start,e.start+e.length);if(!c)return!1;if((e.code===i||e.code===a)&&t.default.isExpression(c)){let e=r.getTypeAtLocation(c);if(!e.isUnion())return!1;let n=r.getContextualType(c);return n?e.types.some(e=>(e.flags&(t.default.TypeFlags.Null|t.default.TypeFlags.Undefined))===0&&r.isTypeAssignableTo(e,n)):!1}if(e.code===o&&t.default.isPropertyAccessExpression(c.parent)){let e=r.getNonNullableType(r.getTypeAtLocation(c.parent.expression));if(!e.isUnion())return!1;let t=c.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},l=(n,r,i)=>{if(!n?.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(!n.nodes?.nodes?.find(e=>e?.id==n.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 a=new Set(r?.map(e=>e.identifier)),o=(n.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!a.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(o.length>0)return{isValid:!1,returnType:`void`,diagnostics:o};let s=e.n(n,r,i,!1,!1),l=`index.ts`,u=e.t(l,s),d=u.getSourceFile(l),f=u.languageService.getProgram(),p=f.getTypeChecker(),m=f.getSemanticDiagnostics(d).map(e=>{let n=(0,t.flattenDiagnosticMessageText)(e.messageText,`
8
+ `),r,i=null;if(e.start!==void 0){let t=d.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,l=null,u=-1;for(;(c=s.exec(o))!==null;){let t=n+c.index+c[0].length;t<=e.start&&t>u&&(u=t,l=c)}l&&(r=l[1]===`null`?null:l[1],i=parseInt(l[2],10))}let a=c(e,d,p)?`warning`:`error`;return{message:n,code:e.code,severity:a,nodeId:r,parameterIndex:typeof i==`number`&&Number.isSafeInteger(i)?i:null}}).filter(e=>e!==null);return{isValid:!m.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:m}},u=(n,r,i)=>{let a=e.y(r?.value),o=`
9
9
  ${e.r(i)}
10
10
  const testValue: ${n} = ${a};
11
11
  `,s=`index.ts`,c=e.t(s,o).languageService.getSemanticDiagnostics(s).map(e=>{let n=t.default.flattenDiagnosticMessageText(e.messageText,`
12
- `),r=n.includes(`not assignable to parameter of type`)&&(n.includes(`'{}'`)||n.includes(`undefined`))||n.includes(`not assignable to type 'undefined'`)||n.includes(`not assignable to type 'void'`)||n.includes(`may be a mistake because neither type sufficiently overlaps`);return{message:n,code:e.code,severity:r?`warning`:`error`}});return{isValid:!c.some(e=>e.severity===`error`),returnType:`void`,diagnostics:c}},d=(n,r,i,a)=>{let o=e.n(n,i,r),s=`index.ts`,c=e.t(s,o),l=c.getSourceFile(s),u=c.languageService.getProgram().getTypeChecker(),d=n.nodes?.nodes?.find(e=>e?.id===a),y=a?`fn_${d?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,b=a?`node_${e.i(a)}`:`flow_${e.i(n.id)}`,x=p(l),S=m(l).get(b),C=x.get(y),w=h(u,S),T=g(u,C,S),E=w?.map((e,n)=>(e.flags&t.default.TypeFlags.Undefined)===0?e:T?.[n]??e),D=(d?.parameters?.nodes??[]).map(e=>e?.value!=null),O=v(u,S,E,T,_(C,w,D),a?x:new Map,a?i:[],D),k=f(u,S,C);return{nodeId:a,parameters:O,return:k?e.l(u,S,k,Array.from(x.values()),i,!1):{input:`generic`}}},f=(e,n,r)=>{if(n?.initializer&&t.default.isCallExpression(n.initializer)){let t=e.getResolvedSignature(n.initializer);if(t)return e.getReturnTypeOfSignature(t)}if(r){let t=e.getSignatureFromDeclaration(r);if(t)return e.getReturnTypeOfSignature(t)}},p=e=>new Map(e.statements.filter(t.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),m=e=>{let n=[];return e.statements.forEach(e=>{e.forEachChild(function e(r){t.default.isVariableDeclaration(r)&&(r.parent.flags&t.default.NodeFlags.Const)!==0&&n.push([r.name.getText(),r]),r.forEachChild(e)})}),new Map(n)},h=(e,n)=>{if(n?.initializer&&t.default.isCallExpression(n.initializer))return e.getResolvedSignature(n.initializer)?.parameters.map(t=>e.getTypeOfSymbolAtLocation(t,n.initializer))},g=(e,t,n)=>{if(t&&n?.initializer)return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},_=(e,n,r=[])=>{let i=e.typeParameters?.map(e=>e.name.getText())||[],a={};e.parameters.forEach((e,n)=>{if(!e.type)return;let r=new Set;e.type.forEachChild(function n(a){if(t.default.isTypeReferenceNode(a)&&t.default.isIdentifier(a.typeName)){let e=a.typeName.text;i.includes(e)&&r.add(e)}if(t.default.isTypeReferenceNode(e.type)&&t.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;i.includes(t)&&r.add(t)}a.forEachChild(n)}),r.forEach(e=>{a[e]||(a[e]=[]),a[e].push(n)})});let o=Object.values(a).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return n?o.filter(e=>{if(r[e.dependsOnIndex])return!1;let i=n[e.parameterIndex];if(!i)return!0;let a=(i.flags&t.default.TypeFlags.Null)!==0,o=(i.flags&t.default.TypeFlags.Undefined)!==0;return a||o}):o},v=(n,r,i,a,o,s,c,l)=>{if(!i)return[];let u=e.l(n,r,n.getAnyType(),Array.from(s.values()),c,!0).suggestions;return i.map((i,d)=>{let f=a?.[d],p=f?M(n,f,r):void 0,m=Array.from(s.values()),h=f?e.l(n,r,f,m,c,!0):void 0,g=C(n,e.h(i)),_=y(r,d),v=_?T(n,f,_):void 0,b=v??f;if(_&&(t.default.isArrayLiteralExpression(_)||t.default.isObjectLiteralExpression(_)&&(g||v!=null&&C(n,v)))){let a=e.l(n,r,i,m,c,!0,p).suggestions;return{schema:t.default.isArrayLiteralExpression(_)?E(n,r,b,_,m,c,a,u):k(n,r,b,_,m,c,a,u),blockedBy:o.filter(e=>e.parameterIndex===d).map(e=>e.dependsOnIndex)}}let x=e.g(e.l(n,r,i,m,c,!0,p));return{schema:e.m(h,x,l[d]??!1,u),blockedBy:o.filter(e=>e.parameterIndex===d).map(e=>e.dependsOnIndex)}})},y=(e,n)=>{if(e.initializer&&t.default.isCallExpression(e.initializer))return e.initializer.arguments[n]},b=new Set([`select`,`boolean`,`number`,`text`]),x=t.default.TypeFlags.Null|t.default.TypeFlags.Undefined|t.default.TypeFlags.Void|t.default.TypeFlags.Never,S=e=>(e.flags&x)!==0,C=(e,n)=>(n.flags&t.default.TypeFlags.Object)!==0&&!e.isArrayType(n)&&!e.isTupleType(n),w=e=>e.properties.filter(t.default.isPropertyAssignment).map(e=>A(e)),T=(n,r,i)=>{if(!r)return;let a=e.h(r);if(!a.isUnion()||e.f(a))return;let o=a.types.filter(e=>(e.flags&(t.default.TypeFlags.Undefined|t.default.TypeFlags.Null))===0);if(o.length<2)return;let s=n.getTypeAtLocation(i);if((s.flags&(t.default.TypeFlags.Any|t.default.TypeFlags.Unknown))===0){let e=o.find(e=>n.isTypeAssignableTo(s,e));if(e)return e}if(t.default.isObjectLiteralExpression(i)){let e=w(i),t,r=0;for(let i of o){let a=e.filter(e=>n.getPropertyOfType(i,e)!=null).length;a>r&&(t=i,r=a)}return t}if(t.default.isArrayLiteralExpression(i))return o.find(e=>n.isArrayType(e)||n.isTupleType(e))},E=(t,n,r,i,a,o,s,c)=>{let l=r?e.l(t,n,r,a,o,!0):void 0,u=l!=null&&l.input?.startsWith(`list`)===!0,d=r?e.h(r):void 0,f=d&&t.isArrayType(d)?t.getTypeArguments(d)[0]:void 0,p=i.elements.map(e=>O(t,n,f,e,a,o,c));return e._({input:u?l.input:`list`,type:(u?l.type:void 0)??t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i))),items:p,declaredItems:e.o(u?l.items:void 0,c)},s??D(l,c))},D=(e,t)=>!e||e.input===`generic`?t:e.suggestions,O=(n,r,i,a,o,s,c)=>{let l=T(n,i,a)??i;if(t.default.isArrayLiteralExpression(a))return E(n,r,l,a,o,s,void 0,c);if(t.default.isObjectLiteralExpression(a))return k(n,r,l,a,o,s,void 0,c);let u=l?e.l(n,r,l,o,s,!0):void 0,d=!u||u.input===`generic`,f=n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a));return d?e.c(e.l(n,r,f,o,s,!0),c):b.has(u.input)?e._({...u,...S(f)?{}:{type:n.typeToString(f)}},u.suggestions):e.s(u,c)},k=(n,r,i,a,o,s,c,l)=>{let u=i?e.l(n,r,i,o,s,!0):void 0,d=u?.input===`data`;if(u&&!d&&u.input!==`generic`)return e._({...u,type:n.typeToString(n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a)))},c??u.suggestions);let f=d?u.properties??{}:{},p={};for(let[t,n]of Object.entries(f))p[t]=Array.isArray(n)?n.map(t=>e.s(t,l)):e.s(n,l);let m=[];for(let c of a.properties){if(!t.default.isPropertyAssignment(c))continue;let a=A(c);p[a]=O(n,r,d?j(n,e.h(i),a):void 0,c.initializer,o,s,l),m.push(a)}let h=d?u.required??[]:m;return e._({input:`data`,type:(d?u.type:void 0)??n.typeToString(n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a))),properties:p,required:h},c??D(u,l))},A=e=>t.default.isStringLiteralLike(e.name)||t.default.isNumericLiteral(e.name)?e.name.text:e.name.getText(),j=(e,t,n)=>{let r=e.getPropertyOfType(t,n);if(!r)return;let i=r.valueDeclaration??r.declarations?.[0];return i?e.getTypeOfSymbolAtLocation(r,i):void 0},M=(e,n,r)=>{if((n.flags&t.default.TypeFlags.TypeParameter)!==0){let r=n.symbol?.declarations?.[0];return r&&t.default.isTypeParameterDeclaration(r)&&r.constraint?e.getTypeFromTypeNode(r.constraint):e.getAnyType()}if((n.flags&t.default.TypeFlags.Conditional)!==0)return e.getBaseConstraintOfType(n)??e.getAnyType();if((n.flags&t.default.TypeFlags.Object)!==0&&N(n,e,new Set)){let i=n.aliasSymbol?.getName();if(i){let n=e.getSymbolsInScope(r,t.default.SymbolFlags.Variable).find(e=>e.getName()===`__widen_${i}`);if(n)return e.getTypeOfSymbolAtLocation(n,r)}return e.getAnyType()}return n},N=(e,n,r)=>!r.has(e)&&(r.add(e),!!((e.flags&t.default.TypeFlags.TypeParameter)!==0||(e.flags&t.default.TypeFlags.Object)!==0&&(n.getTypeArguments(e).some(e=>N(e,n,r))||e.aliasTypeArguments?.some(e=>N(e,n,r))))),P=(n,r=[])=>{let i=`index.ts`,a=`${e.r(r)}\ntype MyType = ${n}`,o=e.t(i,a).languageService.getProgram(),s=o?.getSourceFile(i),c=o?.getTypeChecker();if(!s||!c)return;let l=s.statements.filter(e=>t.default.isTypeAliasDeclaration(e)||t.default.isInterfaceDeclaration(e)||t.default.isClassDeclaration(e)).pop();if(!l)return;let u=c.getTypeAtLocation(l);if(u)return e.l(c,void 0,u,[],[],!1)};exports.CUSTOM_INPUT_IDENTIFIERS=e.a,exports.declaredItemsOf=e.o,exports.declaredSchema=e.s,exports.genericNodeSchema=e.c,exports.getFlowValidation=l,exports.getSchema=e.l,exports.getSignatureSchema=d,exports.getTypeFromValue=n,exports.getTypeSchema=P,exports.getValueFromType=r,exports.getValueValidation=u,exports.isCustomInputIdentifier=e.u,exports.isCustomInputKind=e.d,exports.isOptionsUnion=e.f,exports.isSubFlow=e.p,exports.mergeSchemas=e.m,exports.nonNullishType=e.h,exports.normalizeNodeSchema=e.g,exports.withSuggestions=e._;
12
+ `),r=n.includes(`not assignable to parameter of type`)&&(n.includes(`'{}'`)||n.includes(`undefined`))||n.includes(`not assignable to type 'undefined'`)||n.includes(`not assignable to type 'void'`)||n.includes(`may be a mistake because neither type sufficiently overlaps`);return{message:n,code:e.code,severity:r?`warning`:`error`}});return{isValid:!c.some(e=>e.severity===`error`),returnType:`void`,diagnostics:c}},d=(n,r,i,a)=>{let o=e.n(n,i,r),s=`index.ts`,c=e.t(s,o),l=c.getSourceFile(s),u=c.languageService.getProgram().getTypeChecker(),d=n.nodes?.nodes?.find(e=>e?.id===a),y=a?`fn_${d?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,b=a?`node_${e.i(a)}`:`flow_${e.i(n.id)}`,x=p(l),S=m(l).get(b),C=x.get(y),w=h(u,S),T=g(u,C,S),E=w?.map((e,n)=>(e.flags&t.default.TypeFlags.Undefined)===0?e:T?.[n]??e),D=(d?.parameters?.nodes??[]).map(e=>e?.value!=null),O=v(u,S,E,T,_(C,w,D),a?x:new Map,a?i:[],D),k=f(u,S,C);return{nodeId:a,parameters:O,return:k?e.l(u,S,k,Array.from(x.values()),i,!1):{input:`generic`}}},f=(e,n,r)=>{if(n?.initializer&&t.default.isCallExpression(n.initializer)){let t=e.getResolvedSignature(n.initializer);if(t)return e.getReturnTypeOfSignature(t)}if(r){let t=e.getSignatureFromDeclaration(r);if(t)return e.getReturnTypeOfSignature(t)}},p=e=>new Map(e.statements.filter(t.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),m=e=>{let n=[];return e.statements.forEach(e=>{e.forEachChild(function e(r){t.default.isVariableDeclaration(r)&&(r.parent.flags&t.default.NodeFlags.Const)!==0&&n.push([r.name.getText(),r]),r.forEachChild(e)})}),new Map(n)},h=(e,n)=>{if(n?.initializer&&t.default.isCallExpression(n.initializer))return e.getResolvedSignature(n.initializer)?.parameters.map(t=>e.getTypeOfSymbolAtLocation(t,n.initializer))},g=(e,t,n)=>{if(t&&n?.initializer)return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},_=(e,n,r=[])=>{let i=e.typeParameters?.map(e=>e.name.getText())||[],a={};e.parameters.forEach((e,n)=>{if(!e.type)return;let r=new Set;e.type.forEachChild(function n(a){if(t.default.isTypeReferenceNode(a)&&t.default.isIdentifier(a.typeName)){let e=a.typeName.text;i.includes(e)&&r.add(e)}if(t.default.isTypeReferenceNode(e.type)&&t.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;i.includes(t)&&r.add(t)}a.forEachChild(n)}),r.forEach(e=>{a[e]||(a[e]=[]),a[e].push(n)})});let o=Object.values(a).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return n?o.filter(e=>{if(r[e.dependsOnIndex])return!1;let i=n[e.parameterIndex];if(!i)return!0;let a=(i.flags&t.default.TypeFlags.Null)!==0,o=(i.flags&t.default.TypeFlags.Undefined)!==0;return a||o}):o},v=(n,r,i,a,o,s,c,l)=>{if(!i)return[];let u=e.v(e.l(n,r,n.getAnyType(),Array.from(s.values()),c,!0));return i.map((i,d)=>{let f=a?.[d],p=f?M(n,f,r):void 0,m=Array.from(s.values()),h=f?e.l(n,r,f,m,c,!0):void 0,g=C(n,e.h(i)),_=y(r,d),v=_?T(n,f,_):void 0,b=v??f;if(_&&(t.default.isArrayLiteralExpression(_)||t.default.isObjectLiteralExpression(_)&&(g||v!=null&&C(n,v)))){let a=e.v(e.l(n,r,i,m,c,!0,p));return{schema:t.default.isArrayLiteralExpression(_)?E(n,r,b,_,m,c,a,u):k(n,r,b,_,m,c,a,u),blockedBy:o.filter(e=>e.parameterIndex===d).map(e=>e.dependsOnIndex)}}let x=e.g(e.l(n,r,i,m,c,!0,p));return{schema:e.m(h,x,l[d]??!1,u),blockedBy:o.filter(e=>e.parameterIndex===d).map(e=>e.dependsOnIndex)}})},y=(e,n)=>{if(e.initializer&&t.default.isCallExpression(e.initializer))return e.initializer.arguments[n]},b=new Set([`select`,`boolean`,`number`,`text`]),x=t.default.TypeFlags.Null|t.default.TypeFlags.Undefined|t.default.TypeFlags.Void|t.default.TypeFlags.Never,S=e=>(e.flags&x)!==0,C=(e,n)=>(n.flags&t.default.TypeFlags.Object)!==0&&!e.isArrayType(n)&&!e.isTupleType(n),w=e=>e.properties.filter(t.default.isPropertyAssignment).map(e=>A(e)),T=(n,r,i)=>{if(!r)return;let a=e.h(r);if(!a.isUnion()||e.f(a))return;let o=a.types.filter(e=>(e.flags&(t.default.TypeFlags.Undefined|t.default.TypeFlags.Null))===0);if(o.length<2)return;let s=n.getTypeAtLocation(i);if((s.flags&(t.default.TypeFlags.Any|t.default.TypeFlags.Unknown))===0){let e=o.find(e=>n.isTypeAssignableTo(s,e));if(e)return e}if(t.default.isObjectLiteralExpression(i)){let e=w(i),t,r=0;for(let i of o){let a=e.filter(e=>n.getPropertyOfType(i,e)!=null).length;a>r&&(t=i,r=a)}return t}if(t.default.isArrayLiteralExpression(i))return o.find(e=>n.isArrayType(e)||n.isTupleType(e))},E=(t,n,r,i,a,o,s,c)=>{let l=r?e.l(t,n,r,a,o,!0):void 0,u=l!=null&&l.input?.startsWith(`list`)===!0,d=r?e.h(r):void 0,f=d&&t.isArrayType(d)?t.getTypeArguments(d)[0]:void 0,p=i.elements.map(e=>O(t,n,f,e,a,o,c));return e._({input:u?l.input:`list`,type:(u?l.type:void 0)??t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i))),items:p,declaredItems:e.o(u?l.items:void 0,c)},s??D(l,c))},D=(t,n)=>!t||t.input===`generic`?n:e.v(t),O=(n,r,i,a,o,s,c)=>{let l=T(n,i,a)??i;if(t.default.isArrayLiteralExpression(a))return E(n,r,l,a,o,s,void 0,c);if(t.default.isObjectLiteralExpression(a))return k(n,r,l,a,o,s,void 0,c);let u=l?e.l(n,r,l,o,s,!0):void 0,d=!u||u.input===`generic`,f=n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a));return d?e.c(e.l(n,r,f,o,s,!0),c):b.has(u.input)?e._({...u,...S(f)?{}:{type:n.typeToString(f)}},e.v(u)):e.s(u,c)},k=(n,r,i,a,o,s,c,l)=>{let u=i?e.l(n,r,i,o,s,!0):void 0,d=u?.input===`data`;if(u&&!d&&u.input!==`generic`)return e._({...u,type:n.typeToString(n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a)))},c??e.v(u));let f=d?u.properties??{}:{},p={};for(let[t,n]of Object.entries(f))p[t]=Array.isArray(n)?n.map(t=>e.s(t,l)):e.s(n,l);let m=[];for(let c of a.properties){if(!t.default.isPropertyAssignment(c))continue;let a=A(c);p[a]=O(n,r,d?j(n,e.h(i),a):void 0,c.initializer,o,s,l),m.push(a)}let h=d?u.required??[]:m;return e._({input:`data`,type:(d?u.type:void 0)??n.typeToString(n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a))),properties:p,required:h},c??D(u,l))},A=e=>t.default.isStringLiteralLike(e.name)||t.default.isNumericLiteral(e.name)?e.name.text:e.name.getText(),j=(e,t,n)=>{let r=e.getPropertyOfType(t,n);if(!r)return;let i=r.valueDeclaration??r.declarations?.[0];return i?e.getTypeOfSymbolAtLocation(r,i):void 0},M=(e,n,r)=>{if((n.flags&t.default.TypeFlags.TypeParameter)!==0){let r=n.symbol?.declarations?.[0];return r&&t.default.isTypeParameterDeclaration(r)&&r.constraint?e.getTypeFromTypeNode(r.constraint):e.getAnyType()}if((n.flags&t.default.TypeFlags.Conditional)!==0)return e.getBaseConstraintOfType(n)??e.getAnyType();if((n.flags&t.default.TypeFlags.Object)!==0&&N(n,e,new Set)){let i=n.aliasSymbol?.getName();if(i){let n=e.getSymbolsInScope(r,t.default.SymbolFlags.Variable).find(e=>e.getName()===`__widen_${i}`);if(n)return e.getTypeOfSymbolAtLocation(n,r)}return e.getAnyType()}return n},N=(e,n,r)=>!r.has(e)&&(r.add(e),!!((e.flags&t.default.TypeFlags.TypeParameter)!==0||(e.flags&t.default.TypeFlags.Object)!==0&&(n.getTypeArguments(e).some(e=>N(e,n,r))||e.aliasTypeArguments?.some(e=>N(e,n,r))))),P=(n,r=[])=>{let i=`index.ts`,a=`${e.r(r)}\ntype MyType = ${n}`,o=e.t(i,a).languageService.getProgram(),s=o?.getSourceFile(i),c=o?.getTypeChecker();if(!s||!c)return;let l=s.statements.filter(e=>t.default.isTypeAliasDeclaration(e)||t.default.isInterfaceDeclaration(e)||t.default.isClassDeclaration(e)).pop();if(!l)return;let u=c.getTypeAtLocation(l);if(u)return e.l(c,void 0,u,[],[],!1)};exports.CUSTOM_INPUT_IDENTIFIERS=e.a,exports.declaredItemsOf=e.o,exports.declaredSchema=e.s,exports.genericNodeSchema=e.c,exports.getFlowValidation=l,exports.getSchema=e.l,exports.getSignatureSchema=d,exports.getTypeFromValue=n,exports.getTypeSchema=P,exports.getValueFromType=r,exports.getValueValidation=u,exports.isCustomInputIdentifier=e.u,exports.isCustomInputKind=e.d,exports.isOptionsUnion=e.f,exports.isSubFlow=e.p,exports.mergeSchemas=e.m,exports.nonNullishType=e.h,exports.normalizeNodeSchema=e.g,exports.withSuggestions=e._;
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _ } from "./utils-DSmUMJiO.js";
2
- import v, { flattenDiagnosticMessageText as y } from "typescript";
1
+ import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _, y as v } from "./utils-A--QqsC6.js";
2
+ import y, { flattenDiagnosticMessageText as b } from "typescript";
3
3
  //#region src/extraction/getTypeFromValue.ts
4
- var b = (e, t) => {
5
- let n = _(e?.value);
4
+ var x = (e, t) => {
5
+ let n = v(e?.value);
6
6
  if (!n) return "any";
7
7
  let r = `
8
8
  ${p(t, "unknown")}
9
9
  const tempValue = ${n ?? "any"};
10
10
  `, i = "index.ts", a = h(i, r), o = a.getSourceFile(i), s = a.languageService.getProgram().getTypeChecker(), c = "any", l = (e) => {
11
- if (v.isVariableDeclaration(e) && e.name.getText() === "tempValue") {
11
+ if (y.isVariableDeclaration(e) && e.name.getText() === "tempValue") {
12
12
  let t = s.getTypeAtLocation(e), n = (t) => {
13
13
  if (t.isUnion()) {
14
14
  let e = t.types.map(n);
@@ -18,7 +18,7 @@ var b = (e, t) => {
18
18
  let e = t.typeArguments || [], r = e.length > 0 ? n(e[0]) : "any";
19
19
  return e[0]?.isUnion() ? `(${r})[]` : `${r}[]`;
20
20
  }
21
- if (t.getFlags() & v.TypeFlags.Object || t.isClassOrInterface()) {
21
+ if (t.getFlags() & y.TypeFlags.Object || t.isClassOrInterface()) {
22
22
  let r = s.getPropertiesOfType(t);
23
23
  if (r.length > 0) return `{ ${r.map((t) => {
24
24
  let r = s.getTypeOfSymbolAtLocation(t, e);
@@ -30,14 +30,14 @@ var b = (e, t) => {
30
30
  };
31
31
  c = n(t);
32
32
  }
33
- v.forEachChild(e, l);
33
+ y.forEachChild(e, l);
34
34
  };
35
35
  return l(o), c;
36
- }, x = (e, t) => {
36
+ }, S = (e, t) => {
37
37
  let n = `
38
38
  ${p(t)}
39
39
  type Target = ${e};
40
- `, r = "index.ts", i = h(r, n), a = i.getSourceFile(r), o = i.languageService.getProgram().getTypeChecker(), s = a.statements.find((e) => v.isTypeAliasDeclaration(e) && e.name.text === "Target");
40
+ `, r = "index.ts", i = h(r, n), a = i.getSourceFile(r), o = i.languageService.getProgram().getTypeChecker(), s = a.statements.find((e) => y.isTypeAliasDeclaration(e) && e.name.text === "Target");
41
41
  if (!s) return {
42
42
  __typename: "LiteralValue",
43
43
  value: null
@@ -47,28 +47,32 @@ var b = (e, t) => {
47
47
  if (r.has(e)) return null;
48
48
  let i = e.getFlags();
49
49
  if (e.isUnion()) {
50
- if (t.type, v.isTypeAliasDeclaration(t) && t.type && v.isUnionTypeNode(t.type)) {
50
+ if (t.type, y.isTypeAliasDeclaration(t) && t.type && y.isUnionTypeNode(t.type)) {
51
51
  let e = o.getTypeFromTypeNode(t.type.types[0]);
52
52
  return l(e, t, r);
53
53
  }
54
54
  let n = e.types.filter((e) => {
55
55
  let t = e.getFlags();
56
- return !(t & v.TypeFlags.Undefined) && !(t & v.TypeFlags.Null);
56
+ return !(t & y.TypeFlags.Undefined) && !(t & y.TypeFlags.Null);
57
57
  }), i = n.length > 0 ? n[0] : e.types[0];
58
58
  return l(i, t, r);
59
59
  }
60
- if (i & v.TypeFlags.StringLiteral) return e.value;
61
- if (i & v.TypeFlags.String) return "";
62
- if (i & v.TypeFlags.NumberLiteral) return e.value;
63
- if (i & v.TypeFlags.Number) return 0;
64
- if (i & v.TypeFlags.BooleanLiteral) return e.intrinsicName === "true";
65
- if (i & v.TypeFlags.Boolean) return !1;
60
+ if (e.isIntersection()) {
61
+ let n = e.types.find((e) => e.getFlags() & (y.TypeFlags.StringLike | y.TypeFlags.NumberLike | y.TypeFlags.BooleanLike));
62
+ if (n) return r.add(e), l(n, t, r);
63
+ }
64
+ if (i & y.TypeFlags.StringLiteral) return e.value;
65
+ if (i & y.TypeFlags.String) return "";
66
+ if (i & y.TypeFlags.NumberLiteral) return e.value;
67
+ if (i & y.TypeFlags.Number) return 0;
68
+ if (i & y.TypeFlags.BooleanLiteral) return e.intrinsicName === "true";
69
+ if (i & y.TypeFlags.Boolean) return !1;
66
70
  if (o.isArrayType(e)) {
67
71
  r.add(e);
68
72
  let n = e.typeArguments?.[0] || o.getAnyType(), i = l(n, t, r);
69
73
  return i === null ? [] : [i];
70
74
  }
71
- if (e.isClassOrInterface() || i & v.TypeFlags.Object || e.getProperties().length > 0) {
75
+ if (e.isClassOrInterface() || i & y.TypeFlags.Object || e.getProperties().length > 0) {
72
76
  r.add(e);
73
77
  let n = {};
74
78
  return e.getProperties().forEach((e) => {
@@ -82,31 +86,31 @@ var b = (e, t) => {
82
86
  __typename: "LiteralValue",
83
87
  value: l(c, s)
84
88
  };
85
- }, S = 2345, C = 2322, w = 2339, T = (e, t, n) => {
89
+ }, C = 2345, w = 2322, T = 2339, E = (e, t, n) => {
86
90
  if (e.getStart() > t || e.getEnd() < n) return;
87
91
  let r = e;
88
92
  return e.forEachChild((e) => {
89
- let i = T(e, t, n);
93
+ let i = E(e, t, n);
90
94
  i && (r = i);
91
95
  }), r;
92
- }, E = (e, t, n) => {
96
+ }, D = (e, t, n) => {
93
97
  if (e.start === void 0 || e.length === void 0) return !1;
94
- let r = T(t, e.start, e.start + e.length);
98
+ let r = E(t, e.start, e.start + e.length);
95
99
  if (!r) return !1;
96
- if ((e.code === S || e.code === C) && v.isExpression(r)) {
100
+ if ((e.code === C || e.code === w) && y.isExpression(r)) {
97
101
  let e = n.getTypeAtLocation(r);
98
102
  if (!e.isUnion()) return !1;
99
103
  let t = n.getContextualType(r);
100
- return t ? e.types.some((e) => (e.flags & (v.TypeFlags.Null | v.TypeFlags.Undefined)) === 0 && n.isTypeAssignableTo(e, t)) : !1;
104
+ return t ? e.types.some((e) => (e.flags & (y.TypeFlags.Null | y.TypeFlags.Undefined)) === 0 && n.isTypeAssignableTo(e, t)) : !1;
101
105
  }
102
- if (e.code === w && v.isPropertyAccessExpression(r.parent)) {
106
+ if (e.code === T && y.isPropertyAccessExpression(r.parent)) {
103
107
  let e = n.getNonNullableType(n.getTypeAtLocation(r.parent.expression));
104
108
  if (!e.isUnion()) return !1;
105
109
  let t = r.getText();
106
110
  return e.types.some((e) => e.getProperty(t) !== void 0);
107
111
  }
108
112
  return !1;
109
- }, D = (e, t, n) => {
113
+ }, O = (e, t, n) => {
110
114
  if (!e?.startingNodeId) return {
111
115
  isValid: !1,
112
116
  returnType: "void",
@@ -142,7 +146,7 @@ var b = (e, t) => {
142
146
  diagnostics: i
143
147
  };
144
148
  let a = u(e, t, n, !1, !1), o = "index.ts", s = h(o, a), c = s.getSourceFile(o), l = s.languageService.getProgram(), d = l.getTypeChecker(), f = l.getSemanticDiagnostics(c).map((e) => {
145
- let t = y(e.messageText, "\n"), n, r = null;
149
+ let t = b(e.messageText, "\n"), n, r = null;
146
150
  if (e.start !== void 0) {
147
151
  let t = c.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, l, u = null, d = -1;
148
152
  for (; (l = s.exec(o)) !== null;) {
@@ -151,7 +155,7 @@ var b = (e, t) => {
151
155
  }
152
156
  u && (n = u[1] === "null" ? null : u[1], r = parseInt(u[2], 10));
153
157
  }
154
- let i = E(e, c, d) ? "warning" : "error";
158
+ let i = D(e, c, d) ? "warning" : "error";
155
159
  return {
156
160
  message: t,
157
161
  code: e.code,
@@ -165,12 +169,12 @@ var b = (e, t) => {
165
169
  returnType: "void",
166
170
  diagnostics: f
167
171
  };
168
- }, O = (e, t, n) => {
169
- let r = _(t?.value), i = `
172
+ }, k = (e, t, n) => {
173
+ let r = v(t?.value), i = `
170
174
  ${p(n)}
171
175
  const testValue: ${e} = ${r};
172
176
  `, a = "index.ts", o = h(a, i).languageService.getSemanticDiagnostics(a).map((e) => {
173
- let t = v.flattenDiagnosticMessageText(e.messageText, "\n"), 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");
177
+ let t = y.flattenDiagnosticMessageText(e.messageText, "\n"), 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");
174
178
  return {
175
179
  message: t,
176
180
  code: e.code,
@@ -182,15 +186,15 @@ var b = (e, t) => {
182
186
  returnType: "void",
183
187
  diagnostics: o
184
188
  };
185
- }, k = (e, t, n, r) => {
186
- let i = u(e, n, t), a = "index.ts", o = h(a, i), l = o.getSourceFile(a), d = o.languageService.getProgram().getTypeChecker(), f = e.nodes?.nodes?.find((e) => e?.id === r), p = r ? `fn_${f?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", m = r ? `node_${s(r)}` : `flow_${s(e.id)}`, g = j(l), _ = M(l).get(m), y = g.get(p), b = N(d, _), x = P(d, y, _), S = b?.map((e, t) => (e.flags & v.TypeFlags.Undefined) === 0 ? e : x?.[t] ?? e), C = (f?.parameters?.nodes ?? []).map((e) => e?.value != null), w = I(d, _, S, x, F(y, b, C), r ? g : /* @__PURE__ */ new Map(), r ? n : [], C), T = A(d, _, y);
189
+ }, A = (e, t, n, r) => {
190
+ let i = u(e, n, t), a = "index.ts", o = h(a, i), l = o.getSourceFile(a), d = o.languageService.getProgram().getTypeChecker(), f = e.nodes?.nodes?.find((e) => e?.id === r), p = r ? `fn_${f?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", m = r ? `node_${s(r)}` : `flow_${s(e.id)}`, g = M(l), _ = N(l).get(m), v = g.get(p), b = P(d, _), x = F(d, v, _), S = b?.map((e, t) => (e.flags & y.TypeFlags.Undefined) === 0 ? e : x?.[t] ?? e), C = (f?.parameters?.nodes ?? []).map((e) => e?.value != null), w = L(d, _, S, x, I(v, b, C), r ? g : /* @__PURE__ */ new Map(), r ? n : [], C), T = j(d, _, v);
187
191
  return {
188
192
  nodeId: r,
189
193
  parameters: w,
190
194
  return: T ? c(d, _, T, Array.from(g.values()), n, !1) : { input: "generic" }
191
195
  };
192
- }, A = (e, t, n) => {
193
- if (t?.initializer && v.isCallExpression(t.initializer)) {
196
+ }, j = (e, t, n) => {
197
+ if (t?.initializer && y.isCallExpression(t.initializer)) {
194
198
  let n = e.getResolvedSignature(t.initializer);
195
199
  if (n) return e.getReturnTypeOfSignature(n);
196
200
  }
@@ -198,31 +202,31 @@ var b = (e, t) => {
198
202
  let t = e.getSignatureFromDeclaration(n);
199
203
  if (t) return e.getReturnTypeOfSignature(t);
200
204
  }
201
- }, j = (e) => new Map(e.statements.filter(v.isFunctionDeclaration).map((e) => [e.name.getText(), e])), M = (e) => {
205
+ }, M = (e) => new Map(e.statements.filter(y.isFunctionDeclaration).map((e) => [e.name.getText(), e])), N = (e) => {
202
206
  let t = [];
203
207
  return e.statements.forEach((e) => {
204
208
  e.forEachChild(function e(n) {
205
- v.isVariableDeclaration(n) && (n.parent.flags & v.NodeFlags.Const) !== 0 && t.push([n.name.getText(), n]), n.forEachChild(e);
209
+ y.isVariableDeclaration(n) && (n.parent.flags & y.NodeFlags.Const) !== 0 && t.push([n.name.getText(), n]), n.forEachChild(e);
206
210
  });
207
211
  }), new Map(t);
208
- }, N = (e, t) => {
209
- if (t?.initializer && v.isCallExpression(t.initializer)) return e.getResolvedSignature(t.initializer)?.parameters.map((n) => e.getTypeOfSymbolAtLocation(n, t.initializer));
210
- }, P = (e, t, n) => {
212
+ }, P = (e, t) => {
213
+ if (t?.initializer && y.isCallExpression(t.initializer)) return e.getResolvedSignature(t.initializer)?.parameters.map((n) => e.getTypeOfSymbolAtLocation(n, t.initializer));
214
+ }, F = (e, t, n) => {
211
215
  if (t && n?.initializer) return t.parameters.map((t) => {
212
216
  let r = e.getSymbolAtLocation(t.name);
213
217
  return e.getTypeOfSymbolAtLocation(r, n.initializer);
214
218
  });
215
- }, F = (e, t, n = []) => {
219
+ }, I = (e, t, n = []) => {
216
220
  let r = e.typeParameters?.map((e) => e.name.getText()) || [], i = {};
217
221
  e.parameters.forEach((e, t) => {
218
222
  if (!e.type) return;
219
223
  let n = /* @__PURE__ */ new Set();
220
224
  e.type.forEachChild(function t(i) {
221
- if (v.isTypeReferenceNode(i) && v.isIdentifier(i.typeName)) {
225
+ if (y.isTypeReferenceNode(i) && y.isIdentifier(i.typeName)) {
222
226
  let e = i.typeName.text;
223
227
  r.includes(e) && n.add(e);
224
228
  }
225
- if (v.isTypeReferenceNode(e.type) && v.isIdentifier(e.type.typeName)) {
229
+ if (y.isTypeReferenceNode(e.type) && y.isIdentifier(e.type.typeName)) {
226
230
  let t = e.type.typeName.text;
227
231
  r.includes(t) && n.add(t);
228
232
  }
@@ -239,119 +243,119 @@ var b = (e, t) => {
239
243
  if (n[e.dependsOnIndex]) return !1;
240
244
  let r = t[e.parameterIndex];
241
245
  if (!r) return !0;
242
- let i = (r.flags & v.TypeFlags.Null) !== 0, a = (r.flags & v.TypeFlags.Undefined) !== 0;
246
+ let i = (r.flags & y.TypeFlags.Null) !== 0, a = (r.flags & y.TypeFlags.Undefined) !== 0;
243
247
  return i || a;
244
248
  }) : a;
245
- }, I = (e, t, n, r, i, s, u, d) => {
249
+ }, L = (e, t, n, r, i, s, u, d) => {
246
250
  if (!n) return [];
247
- let f = c(e, t, e.getAnyType(), Array.from(s.values()), u, !0).suggestions;
251
+ let f = _(c(e, t, e.getAnyType(), Array.from(s.values()), u, !0));
248
252
  return n.map((n, p) => {
249
- let m = r?.[p], h = m ? X(e, m, t) : void 0, g = Array.from(s.values()), _ = m ? c(e, t, m, g, u, !0) : void 0, y = V(e, o(n)), b = L(t, p), x = b ? U(e, m, b) : void 0, S = x ?? m;
250
- if (b && (v.isArrayLiteralExpression(b) || v.isObjectLiteralExpression(b) && (y || x != null && V(e, x)))) {
251
- let r = c(e, t, n, g, u, !0, h).suggestions;
253
+ let m = r?.[p], h = m ? Z(e, m, t) : void 0, g = Array.from(s.values()), v = m ? c(e, t, m, g, u, !0) : void 0, b = H(e, o(n)), x = R(t, p), S = x ? W(e, m, x) : void 0, C = S ?? m;
254
+ if (x && (y.isArrayLiteralExpression(x) || y.isObjectLiteralExpression(x) && (b || S != null && H(e, S)))) {
255
+ let r = _(c(e, t, n, g, u, !0, h));
252
256
  return {
253
- schema: v.isArrayLiteralExpression(b) ? W(e, t, S, b, g, u, r, f) : q(e, t, S, b, g, u, r, f),
257
+ schema: y.isArrayLiteralExpression(x) ? G(e, t, C, x, g, u, r, f) : J(e, t, C, x, g, u, r, f),
254
258
  blockedBy: i.filter((e) => e.parameterIndex === p).map((e) => e.dependsOnIndex)
255
259
  };
256
260
  }
257
- let C = a(c(e, t, n, g, u, !0, h));
261
+ let w = a(c(e, t, n, g, u, !0, h));
258
262
  return {
259
- schema: l(_, C, d[p] ?? !1, f),
263
+ schema: l(v, w, d[p] ?? !1, f),
260
264
  blockedBy: i.filter((e) => e.parameterIndex === p).map((e) => e.dependsOnIndex)
261
265
  };
262
266
  });
263
- }, L = (e, t) => {
264
- if (e.initializer && v.isCallExpression(e.initializer)) return e.initializer.arguments[t];
265
- }, R = /* @__PURE__ */ new Set([
267
+ }, R = (e, t) => {
268
+ if (e.initializer && y.isCallExpression(e.initializer)) return e.initializer.arguments[t];
269
+ }, z = /* @__PURE__ */ new Set([
266
270
  "select",
267
271
  "boolean",
268
272
  "number",
269
273
  "text"
270
- ]), z = v.TypeFlags.Null | v.TypeFlags.Undefined | v.TypeFlags.Void | v.TypeFlags.Never, B = (e) => (e.flags & z) !== 0, V = (e, t) => (t.flags & v.TypeFlags.Object) !== 0 && !e.isArrayType(t) && !e.isTupleType(t), H = (e) => e.properties.filter(v.isPropertyAssignment).map((e) => J(e)), U = (e, t, n) => {
274
+ ]), B = y.TypeFlags.Null | y.TypeFlags.Undefined | y.TypeFlags.Void | y.TypeFlags.Never, V = (e) => (e.flags & B) !== 0, H = (e, t) => (t.flags & y.TypeFlags.Object) !== 0 && !e.isArrayType(t) && !e.isTupleType(t), U = (e) => e.properties.filter(y.isPropertyAssignment).map((e) => Y(e)), W = (e, t, n) => {
271
275
  if (!t) return;
272
276
  let r = o(t);
273
277
  if (!r.isUnion() || i(r)) return;
274
- let a = r.types.filter((e) => (e.flags & (v.TypeFlags.Undefined | v.TypeFlags.Null)) === 0);
278
+ let a = r.types.filter((e) => (e.flags & (y.TypeFlags.Undefined | y.TypeFlags.Null)) === 0);
275
279
  if (a.length < 2) return;
276
280
  let s = e.getTypeAtLocation(n);
277
- if ((s.flags & (v.TypeFlags.Any | v.TypeFlags.Unknown)) === 0) {
281
+ if ((s.flags & (y.TypeFlags.Any | y.TypeFlags.Unknown)) === 0) {
278
282
  let t = a.find((t) => e.isTypeAssignableTo(s, t));
279
283
  if (t) return t;
280
284
  }
281
- if (v.isObjectLiteralExpression(n)) {
282
- let t = H(n), r, i = 0;
285
+ if (y.isObjectLiteralExpression(n)) {
286
+ let t = U(n), r, i = 0;
283
287
  for (let n of a) {
284
288
  let a = t.filter((t) => e.getPropertyOfType(n, t) != null).length;
285
289
  a > i && (r = n, i = a);
286
290
  }
287
291
  return r;
288
292
  }
289
- if (v.isArrayLiteralExpression(n)) return a.find((t) => e.isArrayType(t) || e.isTupleType(t));
290
- }, W = (t, n, r, i, a, s, l, u) => {
291
- let f = r ? c(t, n, r, a, s, !0) : void 0, p = f != null && f.input?.startsWith("list") === !0, m = r ? o(r) : void 0, h = m && t.isArrayType(m) ? t.getTypeArguments(m)[0] : void 0, g = i.elements.map((e) => K(t, n, h, e, a, s, u));
293
+ if (y.isArrayLiteralExpression(n)) return a.find((t) => e.isArrayType(t) || e.isTupleType(t));
294
+ }, G = (t, n, r, i, a, s, l, u) => {
295
+ let f = r ? c(t, n, r, a, s, !0) : void 0, p = f != null && f.input?.startsWith("list") === !0, m = r ? o(r) : void 0, h = m && t.isArrayType(m) ? t.getTypeArguments(m)[0] : void 0, g = i.elements.map((e) => q(t, n, h, e, a, s, u));
292
296
  return e({
293
297
  input: p ? f.input : "list",
294
298
  type: (p ? f.type : void 0) ?? t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i))),
295
299
  items: g,
296
300
  declaredItems: d(p ? f.items : void 0, u)
297
- }, l ?? G(f, u));
298
- }, G = (e, t) => !e || e.input === "generic" ? t : e.suggestions, K = (t, r, i, a, o, s, l) => {
299
- let u = U(t, i, a) ?? i;
300
- if (v.isArrayLiteralExpression(a)) return W(t, r, u, a, o, s, void 0, l);
301
- if (v.isObjectLiteralExpression(a)) return q(t, r, u, a, o, s, void 0, l);
301
+ }, l ?? K(f, u));
302
+ }, K = (e, t) => !e || e.input === "generic" ? t : _(e), q = (t, r, i, a, o, s, l) => {
303
+ let u = W(t, i, a) ?? i;
304
+ if (y.isArrayLiteralExpression(a)) return G(t, r, u, a, o, s, void 0, l);
305
+ if (y.isObjectLiteralExpression(a)) return J(t, r, u, a, o, s, void 0, l);
302
306
  let d = u ? c(t, r, u, o, s, !0) : void 0, f = !d || d.input === "generic", p = t.getBaseTypeOfLiteralType(t.getTypeAtLocation(a));
303
- return f ? n(c(t, r, p, o, s, !0), l) : R.has(d.input) ? e({
307
+ return f ? n(c(t, r, p, o, s, !0), l) : z.has(d.input) ? e({
304
308
  ...d,
305
- ...B(p) ? {} : { type: t.typeToString(p) }
306
- }, d.suggestions) : m(d, l);
307
- }, q = (t, n, r, i, a, s, l, u) => {
309
+ ...V(p) ? {} : { type: t.typeToString(p) }
310
+ }, _(d)) : m(d, l);
311
+ }, J = (t, n, r, i, a, s, l, u) => {
308
312
  let d = r ? c(t, n, r, a, s, !0) : void 0, f = d?.input === "data";
309
313
  if (d && !f && d.input !== "generic") return e({
310
314
  ...d,
311
315
  type: t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i)))
312
- }, l ?? d.suggestions);
316
+ }, l ?? _(d));
313
317
  let p = f ? d.properties ?? {} : {}, h = {};
314
318
  for (let [e, t] of Object.entries(p)) h[e] = Array.isArray(t) ? t.map((e) => m(e, u)) : m(t, u);
315
319
  let g = [];
316
320
  for (let e of i.properties) {
317
- if (!v.isPropertyAssignment(e)) continue;
318
- let i = J(e);
319
- h[i] = K(t, n, f ? Y(t, o(r), i) : void 0, e.initializer, a, s, u), g.push(i);
321
+ if (!y.isPropertyAssignment(e)) continue;
322
+ let i = Y(e);
323
+ h[i] = q(t, n, f ? X(t, o(r), i) : void 0, e.initializer, a, s, u), g.push(i);
320
324
  }
321
- let _ = f ? d.required ?? [] : g;
325
+ let v = f ? d.required ?? [] : g;
322
326
  return e({
323
327
  input: "data",
324
328
  type: (f ? d.type : void 0) ?? t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i))),
325
329
  properties: h,
326
- required: _
327
- }, l ?? G(d, u));
328
- }, J = (e) => v.isStringLiteralLike(e.name) || v.isNumericLiteral(e.name) ? e.name.text : e.name.getText(), Y = (e, t, n) => {
330
+ required: v
331
+ }, l ?? K(d, u));
332
+ }, Y = (e) => y.isStringLiteralLike(e.name) || y.isNumericLiteral(e.name) ? e.name.text : e.name.getText(), X = (e, t, n) => {
329
333
  let r = e.getPropertyOfType(t, n);
330
334
  if (!r) return;
331
335
  let i = r.valueDeclaration ?? r.declarations?.[0];
332
336
  return i ? e.getTypeOfSymbolAtLocation(r, i) : void 0;
333
- }, X = (e, t, n) => {
334
- if ((t.flags & v.TypeFlags.TypeParameter) !== 0) {
337
+ }, Z = (e, t, n) => {
338
+ if ((t.flags & y.TypeFlags.TypeParameter) !== 0) {
335
339
  let n = t.symbol?.declarations?.[0];
336
- return n && v.isTypeParameterDeclaration(n) && n.constraint ? e.getTypeFromTypeNode(n.constraint) : e.getAnyType();
340
+ return n && y.isTypeParameterDeclaration(n) && n.constraint ? e.getTypeFromTypeNode(n.constraint) : e.getAnyType();
337
341
  }
338
- if ((t.flags & v.TypeFlags.Conditional) !== 0) return e.getBaseConstraintOfType(t) ?? e.getAnyType();
339
- if ((t.flags & v.TypeFlags.Object) !== 0 && Z(t, e, /* @__PURE__ */ new Set())) {
342
+ if ((t.flags & y.TypeFlags.Conditional) !== 0) return e.getBaseConstraintOfType(t) ?? e.getAnyType();
343
+ if ((t.flags & y.TypeFlags.Object) !== 0 && Q(t, e, /* @__PURE__ */ new Set())) {
340
344
  let r = t.aliasSymbol?.getName();
341
345
  if (r) {
342
- let t = e.getSymbolsInScope(n, v.SymbolFlags.Variable).find((e) => e.getName() === `__widen_${r}`);
346
+ let t = e.getSymbolsInScope(n, y.SymbolFlags.Variable).find((e) => e.getName() === `__widen_${r}`);
343
347
  if (t) return e.getTypeOfSymbolAtLocation(t, n);
344
348
  }
345
349
  return e.getAnyType();
346
350
  }
347
351
  return t;
348
- }, Z = (e, t, n) => !n.has(e) && (n.add(e), !!((e.flags & v.TypeFlags.TypeParameter) !== 0 || (e.flags & v.TypeFlags.Object) !== 0 && (t.getTypeArguments(e).some((e) => Z(e, t, n)) || e.aliasTypeArguments?.some((e) => Z(e, t, n))))), Q = (e, t = []) => {
352
+ }, Q = (e, t, n) => !n.has(e) && (n.add(e), !!((e.flags & y.TypeFlags.TypeParameter) !== 0 || (e.flags & y.TypeFlags.Object) !== 0 && (t.getTypeArguments(e).some((e) => Q(e, t, n)) || e.aliasTypeArguments?.some((e) => Q(e, t, n))))), $ = (e, t = []) => {
349
353
  let n = "index.ts", r = `${p(t)}\ntype MyType = ${e}`, i = h(n, r).languageService.getProgram(), a = i?.getSourceFile(n), o = i?.getTypeChecker();
350
354
  if (!a || !o) return;
351
- let s = a.statements.filter((e) => v.isTypeAliasDeclaration(e) || v.isInterfaceDeclaration(e) || v.isClassDeclaration(e)).pop();
355
+ let s = a.statements.filter((e) => y.isTypeAliasDeclaration(e) || y.isInterfaceDeclaration(e) || y.isClassDeclaration(e)).pop();
352
356
  if (!s) return;
353
357
  let l = o.getTypeAtLocation(s);
354
358
  if (l) return c(o, void 0, l, [], [], !1);
355
359
  };
356
360
  //#endregion
357
- export { t as CUSTOM_INPUT_IDENTIFIERS, d as declaredItemsOf, m as declaredSchema, n as genericNodeSchema, D as getFlowValidation, c as getSchema, k as getSignatureSchema, b as getTypeFromValue, Q as getTypeSchema, x as getValueFromType, O as getValueValidation, g as isCustomInputIdentifier, r as isCustomInputKind, i as isOptionsUnion, f as isSubFlow, l as mergeSchemas, o as nonNullishType, a as normalizeNodeSchema, e as withSuggestions };
361
+ export { t as CUSTOM_INPUT_IDENTIFIERS, d as declaredItemsOf, m as declaredSchema, n as genericNodeSchema, O as getFlowValidation, c as getSchema, A as getSignatureSchema, x as getTypeFromValue, $ as getTypeSchema, S as getValueFromType, k as getValueValidation, g as isCustomInputIdentifier, r as isCustomInputKind, i as isOptionsUnion, f as isSubFlow, l as mergeSchemas, o as nonNullishType, a as normalizeNodeSchema, e as withSuggestions };
package/dist/server.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-euztPiZI.cjs");let t=require("typescript");t=e.y(t,1);let n=require("ts-json-schema-generator");var r={...n.DEFAULT_CONFIG,expose:`none`,topRef:!1,jsDoc:`none`,skipTypeCheck:!0},i=(e,t)=>{let n=Object.keys(e);if(n.length===0)return{};let r=o(a(e,t)),i={};for(let e of n)try{i[e]=s(r.createSchema(e))}catch{i[e]={}}return i},a=(t,n)=>{let r=Object.entries(t).map(([e,t])=>`export type ${e} = ${t};`).join(`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BftsgxoV.cjs");let t=require("typescript");t=e.b(t,1);let n=require("ts-json-schema-generator");var r={...n.DEFAULT_CONFIG,expose:`none`,topRef:!1,jsDoc:`none`,skipTypeCheck:!0},i=(e,t)=>{let n=Object.keys(e);if(n.length===0)return{};let r=o(a(e,t)),i={};for(let e of n)try{i[e]=s(r.createSchema(e))}catch{i[e]={}}return i},a=(t,n)=>{let r=Object.entries(t).map(([e,t])=>`export type ${e} = ${t};`).join(`
2
2
  `);return`${e.r(n)}\n${r}`},o=t=>{let i=e.t(`index.ts`,t).languageService.getProgram();return new n.SchemaGenerator(i,(0,n.createParser)(i,r),(0,n.createFormatter)(r),r)},s=e=>{let{$schema:t,definitions:n,...r}=e,i=n&&Object.keys(n).length>0?{...r,definitions:n}:r;return JSON.parse(JSON.stringify(i))},c=(t,n,r)=>{if(!t)return;let a=`index.ts`,o=e.n(t,n,r),s=e.t(a,o),c=s.getSourceFile(a),d=s.languageService.getProgram().getTypeChecker(),m=i({...f(d,c),...p(d,c,t)},r),h=(t.nodes?.nodes??[]).map(e=>e&&b(e,m));return{...t,inputSchema:m[l]??v(),outputSchema:m[u]??y(),nodes:{...t.nodes,nodes:h}}},l=`Flow_input`,u=`Flow_output`,d=(t,n,r)=>`Node_${e.i(t)}_${n}_${r}`,f=(e,n)=>{let r=n.statements.filter(t.default.isFunctionDeclaration).find(e=>e.name?.getText()===`flow`);if(!r)return{};let i=e.getSignatureFromDeclaration(r);if(!i)return{};let{input:a,output:o}=_(e,i,r);return{[l]:a,[u]:o}},p=(e,t,n)=>{let r=w(t),i={};for(let t of n.nodes?.nodes??[]){if(!t?.id)continue;let n=t.parameters?.nodes;if(!n?.some(x))continue;let a=C(r,t);a&&n.forEach((n,r)=>{if(!x(n))return;let o=a.arguments[r],s=o?e.getTypeAtLocation(o).getCallSignatures()[0]:void 0;if(!s)return;let{input:c,output:l}=m(e,s,o);i[d(t.id,r,`input`)]=c,i[d(t.id,r,`output`)]=l})}return i},m=(e,n,r)=>({input:`{ ${h(e,n,r).join(`; `)} }`,output:(n=>e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation))(e.getReturnTypeOfSignature(n))}),h=(e,n,r)=>{let i=n=>e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation),a=n.getParameters();if(a.length===1){let t=g(e,e.getTypeOfSymbolAtLocation(a[0],a[0].valueDeclaration??r),r);if(t)return t}return a.map(t=>{let n=e.getTypeOfSymbolAtLocation(t,t.valueDeclaration??r),a=S(t)?`?`:``;return`${t.getName()}${a}: ${i(n)}`})},g=(e,n,r)=>{let i=n,a=i.target;if(a&&(a.objectFlags&t.default.ObjectFlags.Tuple)!==0)return e.getTypeArguments(i).map((n,i)=>{let o=a.labeledElementDeclarations?.[i];return`${o?.name&&t.default.isIdentifier(o.name)?o.name.text:`arg${i}`}${(a.elementFlags[i]&t.default.ElementFlags.Optional)===0?``:`?`}: ${e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation)}`})},_=(e,n,r)=>{let i=n=>e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation);return{input:`{ ${n.parameters.map(t=>{let n=e.getTypeOfSymbolAtLocation(t,t.valueDeclaration??r),a=S(t)?`?`:``;return`${t.getName()}${a}: ${i(n)}`}).join(`; `)} }`,output:i(e.getReturnTypeOfSignature(n))}},v=()=>({type:`object`}),y=()=>({}),b=(e,t)=>{let n=e.parameters?.nodes;if(!n?.some(x))return e;let r=n.map((n,r)=>{if(!x(n))return n;let i={...n.value,inputSchema:t[d(e.id,r,`input`)]??v(),outputSchema:t[d(e.id,r,`output`)]??y()};return{...n,value:i}});return{...e,parameters:{...e.parameters,nodes:r}}},x=e=>e?.value?.__typename===`SubFlowValue`,S=e=>{let n=e.valueDeclaration;return!!n&&t.default.isParameter(n)&&(!!n.questionToken||!!n.initializer||!!n.dotDotDotToken)},C=(n,r)=>{let i=n.get(`node_${e.i(r.id)}`)?.initializer;return i&&t.default.isCallExpression(i)?i:void 0},w=e=>{let n=new Map;return e.statements.forEach(e=>{e.forEachChild(function e(r){t.default.isVariableDeclaration(r)&&(r.parent.flags&t.default.NodeFlags.Const)!==0&&n.set(r.name.getText(),r),r.forEachChild(e)})}),n};exports.getFlowSchemas=c;
package/dist/server.js CHANGED
@@ -1,4 +1,4 @@
1
- import { i as e, n as t, r as n, t as r } from "./utils-DSmUMJiO.js";
1
+ import { i as e, n as t, r as n, t as r } from "./utils-A--QqsC6.js";
2
2
  import i from "typescript";
3
3
  import { DEFAULT_CONFIG as a, SchemaGenerator as o, createFormatter as s, createParser as c } from "ts-json-schema-generator";
4
4
  //#region src/util/jsonSchema.util.ts
@@ -1,5 +1,6 @@
1
1
  import { default as ts } from 'typescript';
2
- import { FunctionDefinition, NodeFunction } from '@code0-tech/sagittarius-graphql-types';
2
+ import { FunctionDefinition } from '@code0-tech/sagittarius-graphql-types';
3
+ import { SuggestionCandidate } from './suggestion.util';
3
4
  /**
4
5
  * Filters and transforms function declarations into a collection of compatible node functions.
5
6
  *
@@ -24,11 +25,12 @@ import { FunctionDefinition, NodeFunction } from '@code0-tech/sagittarius-graphq
24
25
  * @param {ts.Type} paramType - The target parameter type used to filter compatible
25
26
  * functions. Only functions with return types assignable to this type are included
26
27
  *
27
- * @returns {NodeFunction[]} Array of node functions that are compatible with the
28
- * specified parameter type, or an empty array if no compatible
29
- * functions are found
28
+ * @returns {SuggestionCandidate[]} Array of node-function candidates compatible with
29
+ * the specified parameter type, each carrying how certainly its return
30
+ * type produces that type, or an empty array if no compatible functions
31
+ * are found
30
32
  *
31
33
  * @example
32
34
  * const compatibleNodes = getNodes(checker, funcDecls, funcDefs, stringType);
33
35
  */
34
- export declare const getNodes: (checker: ts.TypeChecker, functionDeclarations: ts.FunctionDeclaration[], functions: FunctionDefinition[], paramType: ts.Type) => NodeFunction[];
36
+ export declare const getNodes: (checker: ts.TypeChecker, functionDeclarations: ts.FunctionDeclaration[], functions: FunctionDefinition[], paramType: ts.Type) => SuggestionCandidate[];
@@ -1,5 +1,5 @@
1
1
  import { default as ts } from 'typescript';
2
- import { ReferenceValue } from '@code0-tech/sagittarius-graphql-types';
2
+ import { SuggestionCandidate } from './suggestion.util';
3
3
  /**
4
4
  * Extracts reference values from a collection of TypeScript symbols.
5
5
  *
@@ -11,13 +11,15 @@ import { ReferenceValue } from '@code0-tech/sagittarius-graphql-types';
11
11
  * @param node - The VariableDeclaration context in which symbols are analyzed
12
12
  * @param paramType - The expected parameter type for property matching during extraction
13
13
  * @param symbols - The array of symbols to process and analyze
14
- * @returns An array of ReferenceValue objects representing extracted references with their paths
14
+ * @returns An array of reference candidates representing extracted references with
15
+ * their paths, each carrying how certainly the type at that path produces
16
+ * the expected type
15
17
  *
16
18
  * @example
17
19
  * // Extracts all references from symbols prefixed with node_, p_, or flow_
18
20
  * const references = getReferences(checker, variableDecl, expectedType, [symbol1, symbol2]);
19
21
  */
20
- export declare const getReferences: (checker: ts.TypeChecker, node: ts.VariableDeclaration, paramType: ts.Type, symbols: ts.Symbol[]) => ReferenceValue[];
22
+ export declare const getReferences: (checker: ts.TypeChecker, node: ts.VariableDeclaration, paramType: ts.Type, symbols: ts.Symbol[]) => SuggestionCandidate[];
21
23
  /**
22
24
  * Determines whether an object type participates in a reference cycle, i.e. can
23
25
  * reach itself again through its (non-nullable) property types. Results are