@code0-tech/triangulum 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-9-y-1aUm.cjs");let t=require("typescript");t=e.d(t,1);var n=(n,r)=>{let i=e.u(n?.value);if(!i)return`any`;let a=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-DawLGwwh.cjs");let t=require("typescript");t=e.p(t,1);var n=(n,r)=>{let i=e.f(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=2339,o=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=o(e,t,n);i&&(r=i)}),r},s=(e,n,r)=>{if(e.start===void 0||e.length===void 0)return!1;let s=o(n,e.start,e.start+e.length);if(!s)return!1;if(e.code===i&&t.default.isExpression(s)){let e=r.getTypeAtLocation(s);if(!e.isUnion())return!1;let n=r.getContextualType(s);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===a&&t.default.isPropertyAccessExpression(s.parent)){let e=r.getNonNullableType(r.getTypeAtLocation(s.parent.expression));if(!e.isUnion())return!1;let t=s.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},c=(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 c=e.n(n,r,i,!1,!1),l=`index.ts`,u=e.t(l,c),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=s(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}},l=(n,r,i)=>{let a=e.u(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(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.f(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}},u=(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(),v=n.nodes?.nodes?.find(e=>e?.id===a),y=a?`fn_${v?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,b=a?`node_${e.i(a)}`:`flow_${e.i(n.id)}`,x=f(l),S=p(l).get(b),C=x.get(y),w=m(u,S),T=h(u,C,S),E=w?.map((e,n)=>(e.flags&t.default.TypeFlags.Undefined)===0?e:T?.[n]??e),D=(v?.parameters?.nodes??[]).map(e=>e?.value!=null),O=_(u,S,E,T,g(C,w,D),a?x:new Map,a?i:[],D),k=d(u,S,C);return{nodeId:a,parameters:O,return:k?e.o(u,S,k,Array.from(x.values()),i,!1):{input:`generic`}}},d=(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)}},f=e=>new Map(e.statements.filter(t.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),p=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)},m=(e,n)=>{if(!(!n?.initializer||!t.default.isCallExpression(n.initializer)))return e.getResolvedSignature(n.initializer)?.parameters.map(t=>e.getTypeOfSymbolAtLocation(t,n.initializer))},h=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},g=(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},_=(t,n,r,i,a,o,s,c)=>r?r.map((r,l)=>{let u=i?.[l],d=u?v(t,u,n):void 0,f=e.o(t,n,r,Array.from(o.values()),s,!0,d),p=u?e.o(t,n,u,Array.from(o.values()),s,!1):void 0;return{schema:e.l(p,f,c[l]??!1),blockedBy:a.filter(e=>e.parameterIndex===l).map(e=>e.dependsOnIndex)}}):[],v=(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&&y(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},y=(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=>y(e,n,r))||e.aliasTypeArguments?.some(e=>y(e,n,r))))),b=(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.o(c,void 0,u,[],[],!1)};exports.CUSTOM_INPUT_IDENTIFIERS=e.a,exports.getFlowValidation=c,exports.getSchema=e.o,exports.getSignatureSchema=u,exports.getTypeFromValue=n,exports.getTypeSchema=b,exports.getValueFromType=r,exports.getValueValidation=l,exports.isCustomInputIdentifier=e.s,exports.isSubFlow=e.c,exports.mergeSchemas=e.l;
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.s(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.s(n,r,n.getAnyType(),Array.from(s.values()),c,!0).suggestions;return i.map((i,d)=>{let f=a?.[d],p=f?T(n,f,r):void 0,m=Array.from(s.values()),h=f?e.s(n,r,f,m,c,!1):void 0,g=(i.flags&t.default.TypeFlags.Object)!==0&&!n.isArrayType(i)&&!n.isTupleType(i),_=y(r,d);if(_&&(t.default.isArrayLiteralExpression(_)||t.default.isObjectLiteralExpression(_)&&g)){let a=e.s(n,r,i,m,c,!0,p).suggestions;return{schema:t.default.isArrayLiteralExpression(_)?x(n,r,f,_,m,c,a,u):C(n,r,f,_,m,c,a,u),blockedBy:o.filter(e=>e.parameterIndex===d).map(e=>e.dependsOnIndex)}}let v=e.d(e.s(n,r,i,m,c,!0,p));return{schema:e.u(h,v,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,n,r,i,a,o,s,c)=>{let l=r?e.s(t,n,r,a,o,!1):void 0,u=l!=null&&l.input?.startsWith(`list`)===!0,d=r&&t.isArrayType(r)?t.getTypeArguments(r)[0]:void 0,f=i.elements.map(e=>S(t,n,d,e,a,o,c));return{input:u?l.input:`list`,type:(u?l.type:void 0)??t.typeToString(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(i))),items:f,...s?.length?{suggestions:s}:{}}},S=(n,r,i,a,o,s,c)=>{if(t.default.isArrayLiteralExpression(a))return x(n,r,i,a,o,s,void 0,c);if(t.default.isObjectLiteralExpression(a))return C(n,r,i,a,o,s,void 0,c);let l=i?e.s(n,r,i,o,s,!0):void 0,u=!l||l.input===`generic`,d=n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a));return u?e.o(e.s(n,r,d,o,s,!0),c):b.has(l.input)?{...l,type:n.typeToString(d)}:l},C=(n,r,i,a,o,s,c,l)=>{let u=i?e.s(n,r,i,o,s,!1):void 0,d=u?.input===`data`,f={},p=[];for(let e of a.properties){if(!t.default.isPropertyAssignment(e))continue;let a=t.default.isStringLiteralLike(e.name)||t.default.isNumericLiteral(e.name)?e.name.text:e.name.getText();f[a]=S(n,r,d?w(n,i,a):void 0,e.initializer,o,s,l),p.push(a)}return{input:`data`,type:(d?u.type:void 0)??n.typeToString(n.getBaseTypeOfLiteralType(n.getTypeAtLocation(a))),properties:f,required:p,...c?.length?{suggestions:c}:{}}},w=(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},T=(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&&E(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},E=(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=>E(e,n,r))||e.aliasTypeArguments?.some(e=>E(e,n,r))))),D=(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.s(c,void 0,u,[],[],!1)};exports.CUSTOM_INPUT_IDENTIFIERS=e.a,exports.genericNodeSchema=e.o,exports.getFlowValidation=l,exports.getSchema=e.s,exports.getSignatureSchema=d,exports.getTypeFromValue=n,exports.getTypeSchema=D,exports.getValueFromType=r,exports.getValueValidation=u,exports.isCustomInputIdentifier=e.c,exports.isSubFlow=e.l,exports.mergeSchemas=e.u,exports.normalizeNodeSchema=e.d;
package/dist/index.js CHANGED
@@ -1,112 +1,112 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "./utils-DHs93w48.js";
2
- import u, { flattenDiagnosticMessageText as d } from "typescript";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "./utils-BZOsWQq3.js";
2
+ import f, { flattenDiagnosticMessageText as p } from "typescript";
3
3
  //#region src/extraction/getTypeFromValue.ts
4
- var f = (e, t) => {
5
- let n = l(e?.value);
4
+ var m = (e, t) => {
5
+ let n = r(e?.value);
6
6
  if (!n) return "any";
7
- let r = `
8
- ${o(t, "unknown")}
7
+ let i = `
8
+ ${c(t, "unknown")}
9
9
  const tempValue = ${n ?? "any"};
10
- `, i = "index.ts", a = c(i, r), s = a.getSourceFile(i), d = a.languageService.getProgram().getTypeChecker(), f = "any", p = (e) => {
11
- if (u.isVariableDeclaration(e) && e.name.getText() === "tempValue") {
12
- let t = d.getTypeAtLocation(e), n = (t) => {
10
+ `, a = "index.ts", o = u(a, i), s = o.getSourceFile(a), l = o.languageService.getProgram().getTypeChecker(), d = "any", p = (e) => {
11
+ if (f.isVariableDeclaration(e) && e.name.getText() === "tempValue") {
12
+ let t = l.getTypeAtLocation(e), n = (t) => {
13
13
  if (t.isUnion()) {
14
14
  let e = t.types.map(n);
15
15
  return Array.from(new Set(e)).sort().join(" | ");
16
16
  }
17
- if (d.isArrayType(t)) {
17
+ if (l.isArrayType(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() & u.TypeFlags.Object || t.isClassOrInterface()) {
22
- let r = d.getPropertiesOfType(t);
21
+ if (t.getFlags() & f.TypeFlags.Object || t.isClassOrInterface()) {
22
+ let r = l.getPropertiesOfType(t);
23
23
  if (r.length > 0) return `{ ${r.map((t) => {
24
- let r = d.getTypeOfSymbolAtLocation(t, e);
24
+ let r = l.getTypeOfSymbolAtLocation(t, e);
25
25
  return `${t.getName()}: ${n(r)}`;
26
26
  }).join(", ")} }`;
27
27
  }
28
- let r = d.getBaseTypeOfLiteralType(t);
29
- return d.typeToString(r, e);
28
+ let r = l.getBaseTypeOfLiteralType(t);
29
+ return l.typeToString(r, e);
30
30
  };
31
- f = n(t);
31
+ d = n(t);
32
32
  }
33
- u.forEachChild(e, p);
33
+ f.forEachChild(e, p);
34
34
  };
35
- return p(s), f;
36
- }, p = (e, t) => {
35
+ return p(s), d;
36
+ }, h = (e, t) => {
37
37
  let n = `
38
- ${o(t)}
38
+ ${c(t)}
39
39
  type Target = ${e};
40
- `, r = "index.ts", i = c(r, n), a = i.getSourceFile(r), s = i.languageService.getProgram().getTypeChecker(), l = a.statements.find((e) => u.isTypeAliasDeclaration(e) && e.name.text === "Target");
41
- if (!l) return {
40
+ `, r = "index.ts", i = u(r, n), a = i.getSourceFile(r), o = i.languageService.getProgram().getTypeChecker(), s = a.statements.find((e) => f.isTypeAliasDeclaration(e) && e.name.text === "Target");
41
+ if (!s) return {
42
42
  __typename: "LiteralValue",
43
43
  value: null
44
44
  };
45
- let d = s.getTypeAtLocation(l.type), f = (e, t, n = /* @__PURE__ */ new Set()) => {
45
+ let l = o.getTypeAtLocation(s.type), d = (e, t, n = /* @__PURE__ */ new Set()) => {
46
46
  let r = new Set(n);
47
47
  if (r.has(e)) return null;
48
48
  let i = e.getFlags();
49
49
  if (e.isUnion()) {
50
- if (t.type, u.isTypeAliasDeclaration(t) && t.type && u.isUnionTypeNode(t.type)) {
51
- let e = s.getTypeFromTypeNode(t.type.types[0]);
52
- return f(e, t, r);
50
+ if (t.type, f.isTypeAliasDeclaration(t) && t.type && f.isUnionTypeNode(t.type)) {
51
+ let e = o.getTypeFromTypeNode(t.type.types[0]);
52
+ return d(e, t, r);
53
53
  }
54
54
  let n = e.types.filter((e) => {
55
55
  let t = e.getFlags();
56
- return !(t & u.TypeFlags.Undefined) && !(t & u.TypeFlags.Null);
56
+ return !(t & f.TypeFlags.Undefined) && !(t & f.TypeFlags.Null);
57
57
  }), i = n.length > 0 ? n[0] : e.types[0];
58
- return f(i, t, r);
58
+ return d(i, t, r);
59
59
  }
60
- if (i & u.TypeFlags.StringLiteral) return e.value;
61
- if (i & u.TypeFlags.String) return "";
62
- if (i & u.TypeFlags.NumberLiteral) return e.value;
63
- if (i & u.TypeFlags.Number) return 0;
64
- if (i & u.TypeFlags.BooleanLiteral) return e.intrinsicName === "true";
65
- if (i & u.TypeFlags.Boolean) return !1;
66
- if (s.isArrayType(e)) {
60
+ if (i & f.TypeFlags.StringLiteral) return e.value;
61
+ if (i & f.TypeFlags.String) return "";
62
+ if (i & f.TypeFlags.NumberLiteral) return e.value;
63
+ if (i & f.TypeFlags.Number) return 0;
64
+ if (i & f.TypeFlags.BooleanLiteral) return e.intrinsicName === "true";
65
+ if (i & f.TypeFlags.Boolean) return !1;
66
+ if (o.isArrayType(e)) {
67
67
  r.add(e);
68
- let n = e.typeArguments?.[0] || s.getAnyType(), i = f(n, t, r);
68
+ let n = e.typeArguments?.[0] || o.getAnyType(), i = d(n, t, r);
69
69
  return i === null ? [] : [i];
70
70
  }
71
- if (e.isClassOrInterface() || i & u.TypeFlags.Object || e.getProperties().length > 0) {
71
+ if (e.isClassOrInterface() || i & f.TypeFlags.Object || e.getProperties().length > 0) {
72
72
  r.add(e);
73
73
  let n = {};
74
74
  return e.getProperties().forEach((e) => {
75
- let i = s.getTypeOfSymbolAtLocation(e, t), a = e.valueDeclaration;
76
- i && (n[e.getName()] = f(i, a || t, r));
75
+ let i = o.getTypeOfSymbolAtLocation(e, t), a = e.valueDeclaration;
76
+ i && (n[e.getName()] = d(i, a || t, r));
77
77
  }), n;
78
78
  }
79
79
  return null;
80
80
  };
81
81
  return {
82
82
  __typename: "LiteralValue",
83
- value: f(d, l)
83
+ value: d(l, s)
84
84
  };
85
- }, m = 2345, h = 2339, g = (e, t, n) => {
85
+ }, g = 2345, _ = 2322, v = 2339, y = (e, t, n) => {
86
86
  if (e.getStart() > t || e.getEnd() < n) return;
87
87
  let r = e;
88
88
  return e.forEachChild((e) => {
89
- let i = g(e, t, n);
89
+ let i = y(e, t, n);
90
90
  i && (r = i);
91
91
  }), r;
92
- }, _ = (e, t, n) => {
92
+ }, b = (e, t, n) => {
93
93
  if (e.start === void 0 || e.length === void 0) return !1;
94
- let r = g(t, e.start, e.start + e.length);
94
+ let r = y(t, e.start, e.start + e.length);
95
95
  if (!r) return !1;
96
- if (e.code === m && u.isExpression(r)) {
96
+ if ((e.code === g || e.code === _) && f.isExpression(r)) {
97
97
  let e = n.getTypeAtLocation(r);
98
98
  if (!e.isUnion()) return !1;
99
99
  let t = n.getContextualType(r);
100
- return t ? e.types.some((e) => (e.flags & (u.TypeFlags.Null | u.TypeFlags.Undefined)) === 0 && n.isTypeAssignableTo(e, t)) : !1;
100
+ return t ? e.types.some((e) => (e.flags & (f.TypeFlags.Null | f.TypeFlags.Undefined)) === 0 && n.isTypeAssignableTo(e, t)) : !1;
101
101
  }
102
- if (e.code === h && u.isPropertyAccessExpression(r.parent)) {
102
+ if (e.code === v && f.isPropertyAccessExpression(r.parent)) {
103
103
  let e = n.getNonNullableType(n.getTypeAtLocation(r.parent.expression));
104
104
  if (!e.isUnion()) return !1;
105
105
  let t = r.getText();
106
106
  return e.types.some((e) => e.getProperty(t) !== void 0);
107
107
  }
108
108
  return !1;
109
- }, v = (e, t, n) => {
109
+ }, x = (e, t, n) => {
110
110
  if (!e?.startingNodeId) return {
111
111
  isValid: !1,
112
112
  returnType: "void",
@@ -129,29 +129,29 @@ var f = (e, t) => {
129
129
  severity: "error"
130
130
  }]
131
131
  };
132
- let r = new Set(t?.map((e) => e.identifier)), a = (e.nodes?.nodes ?? []).filter((e) => e?.functionDefinition && !r.has(e.functionDefinition.identifier)).map((e) => ({
132
+ let r = new Set(t?.map((e) => e.identifier)), i = (e.nodes?.nodes ?? []).filter((e) => e?.functionDefinition && !r.has(e.functionDefinition.identifier)).map((e) => ({
133
133
  nodeId: e.id,
134
134
  parameterIndex: null,
135
135
  code: 0,
136
136
  message: `The function definition "${e.functionDefinition.identifier}" is not reachable.`,
137
137
  severity: "error"
138
138
  }));
139
- if (a.length > 0) return {
139
+ if (i.length > 0) return {
140
140
  isValid: !1,
141
141
  returnType: "void",
142
- diagnostics: a
142
+ diagnostics: i
143
143
  };
144
- let o = i(e, t, n, !1, !1), s = "index.ts", l = c(s, o), u = l.getSourceFile(s), f = l.languageService.getProgram(), p = f.getTypeChecker(), m = f.getSemanticDiagnostics(u).map((e) => {
145
- let t = d(e.messageText, "\n"), n, r = null;
144
+ let a = o(e, t, n, !1, !1), s = "index.ts", c = u(s, a), l = c.getSourceFile(s), d = c.languageService.getProgram(), f = d.getTypeChecker(), m = d.getSemanticDiagnostics(l).map((e) => {
145
+ let t = p(e.messageText, "\n"), n, r = null;
146
146
  if (e.start !== void 0) {
147
- let t = u.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, l = null, d = -1;
147
+ 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;
148
148
  for (; (c = s.exec(o)) !== null;) {
149
149
  let t = i + c.index + c[0].length;
150
- t <= e.start && t > d && (d = t, l = c);
150
+ t <= e.start && t > d && (d = t, u = c);
151
151
  }
152
- l && (n = l[1] === "null" ? null : l[1], r = parseInt(l[2], 10));
152
+ u && (n = u[1] === "null" ? null : u[1], r = parseInt(u[2], 10));
153
153
  }
154
- let i = _(e, u, p) ? "warning" : "error";
154
+ let i = b(e, l, f) ? "warning" : "error";
155
155
  return {
156
156
  message: t,
157
157
  code: e.code,
@@ -165,12 +165,12 @@ var f = (e, t) => {
165
165
  returnType: "void",
166
166
  diagnostics: m
167
167
  };
168
- }, y = (e, t, n) => {
169
- let r = l(t?.value), i = `
170
- ${o(n)}
171
- const testValue: ${e} = ${r};
172
- `, a = "index.ts", s = c(a, i).languageService.getSemanticDiagnostics(a).map((e) => {
173
- let t = u.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");
168
+ }, S = (e, t, n) => {
169
+ let i = r(t?.value), a = `
170
+ ${c(n)}
171
+ const testValue: ${e} = ${i};
172
+ `, o = "index.ts", s = u(o, a).languageService.getSemanticDiagnostics(o).map((e) => {
173
+ let t = f.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
174
  return {
175
175
  message: t,
176
176
  code: e.code,
@@ -182,15 +182,15 @@ var f = (e, t) => {
182
182
  returnType: "void",
183
183
  diagnostics: s
184
184
  };
185
- }, b = (e, t, r, o) => {
186
- let s = i(e, r, t), l = "index.ts", d = c(l, s), f = d.getSourceFile(l), p = d.languageService.getProgram().getTypeChecker(), m = e.nodes?.nodes?.find((e) => e?.id === o), h = o ? `fn_${m?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", g = o ? `node_${n(o)}` : `flow_${n(e.id)}`, _ = S(f), v = C(f).get(g), y = _.get(h), b = w(p, v), O = T(p, y, v), k = b?.map((e, t) => (e.flags & u.TypeFlags.Undefined) === 0 ? e : O?.[t] ?? e), A = (m?.parameters?.nodes ?? []).map((e) => e?.value != null), j = D(p, v, k, O, E(y, b, A), o ? _ : /* @__PURE__ */ new Map(), o ? r : [], A), M = x(p, v, y);
185
+ }, C = (e, t, n, r) => {
186
+ let a = o(e, n, t), s = "index.ts", c = u(s, a), d = c.getSourceFile(s), p = c.languageService.getProgram().getTypeChecker(), m = e.nodes?.nodes?.find((e) => e?.id === r), h = r ? `fn_${m?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", g = r ? `node_${i(r)}` : `flow_${i(e.id)}`, _ = T(d), v = E(d).get(g), y = _.get(h), b = D(p, v), x = O(p, y, v), S = b?.map((e, t) => (e.flags & f.TypeFlags.Undefined) === 0 ? e : x?.[t] ?? e), C = (m?.parameters?.nodes ?? []).map((e) => e?.value != null), j = A(p, v, S, x, k(y, b, C), r ? _ : /* @__PURE__ */ new Map(), r ? n : [], C), M = w(p, v, y);
187
187
  return {
188
- nodeId: o,
188
+ nodeId: r,
189
189
  parameters: j,
190
- return: M ? a(p, v, M, Array.from(_.values()), r, !1) : { input: "generic" }
190
+ return: M ? l(p, v, M, Array.from(_.values()), n, !1) : { input: "generic" }
191
191
  };
192
- }, x = (e, t, n) => {
193
- if (t?.initializer && u.isCallExpression(t.initializer)) {
192
+ }, w = (e, t, n) => {
193
+ if (t?.initializer && f.isCallExpression(t.initializer)) {
194
194
  let n = e.getResolvedSignature(t.initializer);
195
195
  if (n) return e.getReturnTypeOfSignature(n);
196
196
  }
@@ -198,31 +198,31 @@ var f = (e, t) => {
198
198
  let t = e.getSignatureFromDeclaration(n);
199
199
  if (t) return e.getReturnTypeOfSignature(t);
200
200
  }
201
- }, S = (e) => new Map(e.statements.filter(u.isFunctionDeclaration).map((e) => [e.name.getText(), e])), C = (e) => {
201
+ }, T = (e) => new Map(e.statements.filter(f.isFunctionDeclaration).map((e) => [e.name.getText(), e])), E = (e) => {
202
202
  let t = [];
203
203
  return e.statements.forEach((e) => {
204
204
  e.forEachChild(function e(n) {
205
- u.isVariableDeclaration(n) && (n.parent.flags & u.NodeFlags.Const) !== 0 && t.push([n.name.getText(), n]), n.forEachChild(e);
205
+ f.isVariableDeclaration(n) && (n.parent.flags & f.NodeFlags.Const) !== 0 && t.push([n.name.getText(), n]), n.forEachChild(e);
206
206
  });
207
207
  }), new Map(t);
208
- }, w = (e, t) => {
209
- if (!(!t?.initializer || !u.isCallExpression(t.initializer))) return e.getResolvedSignature(t.initializer)?.parameters.map((n) => e.getTypeOfSymbolAtLocation(n, t.initializer));
210
- }, T = (e, t, n) => {
208
+ }, D = (e, t) => {
209
+ if (!(!t?.initializer || !f.isCallExpression(t.initializer))) return e.getResolvedSignature(t.initializer)?.parameters.map((n) => e.getTypeOfSymbolAtLocation(n, t.initializer));
210
+ }, O = (e, t, n) => {
211
211
  if (!(!t || !n?.initializer)) return t.parameters.map((t) => {
212
212
  let r = e.getSymbolAtLocation(t.name);
213
213
  return e.getTypeOfSymbolAtLocation(r, n.initializer);
214
214
  });
215
- }, E = (e, t, n = []) => {
215
+ }, k = (e, t, n = []) => {
216
216
  let r = e.typeParameters?.map((e) => e.name.getText()) || [], i = {};
217
217
  e.parameters.forEach((e, t) => {
218
218
  if (!e.type) return;
219
219
  let n = /* @__PURE__ */ new Set();
220
220
  e.type.forEachChild(function t(i) {
221
- if (u.isTypeReferenceNode(i) && u.isIdentifier(i.typeName)) {
221
+ if (f.isTypeReferenceNode(i) && f.isIdentifier(i.typeName)) {
222
222
  let e = i.typeName.text;
223
223
  r.includes(e) && n.add(e);
224
224
  }
225
- if (u.isTypeReferenceNode(e.type) && u.isIdentifier(e.type.typeName)) {
225
+ if (f.isTypeReferenceNode(e.type) && f.isIdentifier(e.type.typeName)) {
226
226
  let t = e.type.typeName.text;
227
227
  r.includes(t) && n.add(t);
228
228
  }
@@ -239,37 +239,91 @@ var f = (e, t) => {
239
239
  if (n[e.dependsOnIndex]) return !1;
240
240
  let r = t[e.parameterIndex];
241
241
  if (!r) return !0;
242
- let i = (r.flags & u.TypeFlags.Null) !== 0, a = (r.flags & u.TypeFlags.Undefined) !== 0;
242
+ let i = (r.flags & f.TypeFlags.Null) !== 0, a = (r.flags & f.TypeFlags.Undefined) !== 0;
243
243
  return i || a;
244
244
  }) : a;
245
- }, D = (e, t, n, i, o, s, c, l) => n ? n.map((n, u) => {
246
- let d = i?.[u], f = d ? O(e, d, t) : void 0, p = a(e, t, n, Array.from(s.values()), c, !0, f), m = d ? a(e, t, d, Array.from(s.values()), c, !1) : void 0;
245
+ }, A = (e, t, r, i, a, o, s, c) => {
246
+ if (!r) return [];
247
+ let u = l(e, t, e.getAnyType(), Array.from(o.values()), s, !0).suggestions;
248
+ return r.map((r, p) => {
249
+ let m = i?.[p], h = m ? L(e, m, t) : void 0, g = Array.from(o.values()), _ = m ? l(e, t, m, g, s, !1) : void 0, v = (r.flags & f.TypeFlags.Object) !== 0 && !e.isArrayType(r) && !e.isTupleType(r), y = j(t, p);
250
+ if (y && (f.isArrayLiteralExpression(y) || f.isObjectLiteralExpression(y) && v)) {
251
+ let n = l(e, t, r, g, s, !0, h).suggestions;
252
+ return {
253
+ schema: f.isArrayLiteralExpression(y) ? N(e, t, m, y, g, s, n, u) : F(e, t, m, y, g, s, n, u),
254
+ blockedBy: a.filter((e) => e.parameterIndex === p).map((e) => e.dependsOnIndex)
255
+ };
256
+ }
257
+ let b = n(l(e, t, r, g, s, !0, h));
258
+ return {
259
+ schema: d(_, b, c[p] ?? !1, u),
260
+ blockedBy: a.filter((e) => e.parameterIndex === p).map((e) => e.dependsOnIndex)
261
+ };
262
+ });
263
+ }, j = (e, t) => {
264
+ if (!(!e.initializer || !f.isCallExpression(e.initializer))) return e.initializer.arguments[t];
265
+ }, M = /* @__PURE__ */ new Set([
266
+ "select",
267
+ "boolean",
268
+ "number",
269
+ "text"
270
+ ]), N = (e, t, n, r, i, a, o, s) => {
271
+ let c = n ? l(e, t, n, i, a, !1) : void 0, u = c != null && c.input?.startsWith("list") === !0, d = n && e.isArrayType(n) ? e.getTypeArguments(n)[0] : void 0, f = r.elements.map((n) => P(e, t, d, n, i, a, s));
272
+ return {
273
+ input: u ? c.input : "list",
274
+ type: (u ? c.type : void 0) ?? e.typeToString(e.getBaseTypeOfLiteralType(e.getTypeAtLocation(r))),
275
+ items: f,
276
+ ...o?.length ? { suggestions: o } : {}
277
+ };
278
+ }, P = (e, t, n, r, i, a, o) => {
279
+ if (f.isArrayLiteralExpression(r)) return N(e, t, n, r, i, a, void 0, o);
280
+ if (f.isObjectLiteralExpression(r)) return F(e, t, n, r, i, a, void 0, o);
281
+ let c = n ? l(e, t, n, i, a, !0) : void 0, u = !c || c.input === "generic", d = e.getBaseTypeOfLiteralType(e.getTypeAtLocation(r));
282
+ return u ? s(l(e, t, d, i, a, !0), o) : M.has(c.input) ? {
283
+ ...c,
284
+ type: e.typeToString(d)
285
+ } : c;
286
+ }, F = (e, t, n, r, i, a, o, s) => {
287
+ let c = n ? l(e, t, n, i, a, !1) : void 0, u = c?.input === "data", d = {}, p = [];
288
+ for (let o of r.properties) {
289
+ if (!f.isPropertyAssignment(o)) continue;
290
+ let r = f.isStringLiteralLike(o.name) || f.isNumericLiteral(o.name) ? o.name.text : o.name.getText();
291
+ d[r] = P(e, t, u ? I(e, n, r) : void 0, o.initializer, i, a, s), p.push(r);
292
+ }
247
293
  return {
248
- schema: r(m, p, l[u] ?? !1),
249
- blockedBy: o.filter((e) => e.parameterIndex === u).map((e) => e.dependsOnIndex)
294
+ input: "data",
295
+ type: (u ? c.type : void 0) ?? e.typeToString(e.getBaseTypeOfLiteralType(e.getTypeAtLocation(r))),
296
+ properties: d,
297
+ required: p,
298
+ ...o?.length ? { suggestions: o } : {}
250
299
  };
251
- }) : [], O = (e, t, n) => {
252
- if ((t.flags & u.TypeFlags.TypeParameter) !== 0) {
300
+ }, I = (e, t, n) => {
301
+ let r = e.getPropertyOfType(t, n);
302
+ if (!r) return;
303
+ let i = r.valueDeclaration ?? r.declarations?.[0];
304
+ return i ? e.getTypeOfSymbolAtLocation(r, i) : void 0;
305
+ }, L = (e, t, n) => {
306
+ if ((t.flags & f.TypeFlags.TypeParameter) !== 0) {
253
307
  let n = t.symbol?.declarations?.[0];
254
- return n && u.isTypeParameterDeclaration(n) && n.constraint ? e.getTypeFromTypeNode(n.constraint) : e.getAnyType();
308
+ return n && f.isTypeParameterDeclaration(n) && n.constraint ? e.getTypeFromTypeNode(n.constraint) : e.getAnyType();
255
309
  }
256
- if ((t.flags & u.TypeFlags.Conditional) !== 0) return e.getBaseConstraintOfType(t) ?? e.getAnyType();
257
- if ((t.flags & u.TypeFlags.Object) !== 0 && k(t, e, /* @__PURE__ */ new Set())) {
310
+ if ((t.flags & f.TypeFlags.Conditional) !== 0) return e.getBaseConstraintOfType(t) ?? e.getAnyType();
311
+ if ((t.flags & f.TypeFlags.Object) !== 0 && R(t, e, /* @__PURE__ */ new Set())) {
258
312
  let r = t.aliasSymbol?.getName();
259
313
  if (r) {
260
- let t = e.getSymbolsInScope(n, u.SymbolFlags.Variable).find((e) => e.getName() === `__widen_${r}`);
314
+ let t = e.getSymbolsInScope(n, f.SymbolFlags.Variable).find((e) => e.getName() === `__widen_${r}`);
261
315
  if (t) return e.getTypeOfSymbolAtLocation(t, n);
262
316
  }
263
317
  return e.getAnyType();
264
318
  }
265
319
  return t;
266
- }, k = (e, t, n) => !n.has(e) && (n.add(e), !!((e.flags & u.TypeFlags.TypeParameter) !== 0 || (e.flags & u.TypeFlags.Object) !== 0 && (t.getTypeArguments(e).some((e) => k(e, t, n)) || e.aliasTypeArguments?.some((e) => k(e, t, n))))), A = (e, t = []) => {
267
- let n = "index.ts", r = `${o(t)}\ntype MyType = ${e}`, i = c(n, r).languageService.getProgram(), s = i?.getSourceFile(n), l = i?.getTypeChecker();
268
- if (!s || !l) return;
269
- let d = s.statements.filter((e) => u.isTypeAliasDeclaration(e) || u.isInterfaceDeclaration(e) || u.isClassDeclaration(e)).pop();
270
- if (!d) return;
271
- let f = l.getTypeAtLocation(d);
272
- if (f) return a(l, void 0, f, [], [], !1);
320
+ }, R = (e, t, n) => !n.has(e) && (n.add(e), !!((e.flags & f.TypeFlags.TypeParameter) !== 0 || (e.flags & f.TypeFlags.Object) !== 0 && (t.getTypeArguments(e).some((e) => R(e, t, n)) || e.aliasTypeArguments?.some((e) => R(e, t, n))))), z = (e, t = []) => {
321
+ let n = "index.ts", r = `${c(t)}\ntype MyType = ${e}`, i = u(n, r).languageService.getProgram(), a = i?.getSourceFile(n), o = i?.getTypeChecker();
322
+ if (!a || !o) return;
323
+ let s = a.statements.filter((e) => f.isTypeAliasDeclaration(e) || f.isInterfaceDeclaration(e) || f.isClassDeclaration(e)).pop();
324
+ if (!s) return;
325
+ let d = o.getTypeAtLocation(s);
326
+ if (d) return l(o, void 0, d, [], [], !1);
273
327
  };
274
328
  //#endregion
275
- export { e as CUSTOM_INPUT_IDENTIFIERS, v as getFlowValidation, a as getSchema, b as getSignatureSchema, f as getTypeFromValue, A as getTypeSchema, p as getValueFromType, y as getValueValidation, s as isCustomInputIdentifier, t as isSubFlow, r as mergeSchemas };
329
+ export { e as CUSTOM_INPUT_IDENTIFIERS, s as genericNodeSchema, x as getFlowValidation, l as getSchema, C as getSignatureSchema, m as getTypeFromValue, z as getTypeSchema, h as getValueFromType, S as getValueValidation, t as isCustomInputIdentifier, a as isSubFlow, d as mergeSchemas, n as normalizeNodeSchema };
package/dist/server.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-9-y-1aUm.cjs");let t=require("typescript");t=e.d(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-DawLGwwh.cjs");let t=require("typescript");t=e.p(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-DHs93w48.js";
1
+ import { i as e, n as t, r as n, t as r } from "./utils-BZOsWQq3.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
@@ -219,7 +219,41 @@ export type Schema = PrimitiveInput | DateInput | ColorInput | FileInput | ListF
219
219
  * @returns A Schema object describing how to handle the parameter type
220
220
  */
221
221
  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;
222
- export declare const mergeSchemas: (functionSchema: Schema | undefined, nodeSchema: Schema, valueProvided?: boolean) => Schema;
222
+ /**
223
+ * Normalizes a node-side schema so it only contributes concrete resolved types
224
+ * to {@link mergeSchemas}, recursing through `items` and `properties`. It:
225
+ *
226
+ * - Rewrites every specialized list-* input back to the plain `list` kind. The
227
+ * specialized variants are a declared-type (function-side) concern, so a
228
+ * concrete value must never surface one; the resolved element types (via
229
+ * `items`) are kept, and the `list-file` `mimetype` is dropped because a plain
230
+ * list has no such field.
231
+ * - Drops an empty `suggestions` array. Node schemas are built with suggestions
232
+ * enabled and therefore always carry the key — even when empty — whereas the
233
+ * rest of the pipeline omits it entirely when there are none.
234
+ *
235
+ * The function-side schema still drives the final input kind in
236
+ * {@link mergeSchemas}.
237
+ */
238
+ export declare const normalizeNodeSchema: (schema: Schema) => Schema;
239
+ /**
240
+ * Treats a node-side schema as sitting in a fully generic ("accepts anything")
241
+ * slot: the declared type constrains nothing here, so the value keeps its shape
242
+ * while a select narrowed from a single literal is demoted to its free-form
243
+ * primitive. Recurses through `items` and `properties` so the whole subtree is
244
+ * treated uniformly.
245
+ *
246
+ * Suggestions: nested positions were built value-scoped (the recursion inside
247
+ * {@link getSchema} drops the suggestion scope), so they are replaced with the
248
+ * constant `any` set. The `overrideRoot` flag controls this for the top node
249
+ * only: at a nested position it is `true` (the node's own suggestions are the
250
+ * value-narrowed subset and must be replaced); at a parameter root it is `false`
251
+ * (the node's suggestions were already scoped by `suggestionType`/the
252
+ * type-parameter constraint — e.g. `keyof T` — so they are kept). Descendants are
253
+ * always overridden regardless.
254
+ */
255
+ export declare const genericNodeSchema: (schema: Schema, anySuggestions?: Input["suggestions"], overrideRoot?: boolean) => Schema;
256
+ export declare const mergeSchemas: (functionSchema: Schema | undefined, nodeSchema: Schema, valueProvided?: boolean, anySuggestions?: Input["suggestions"], topLevel?: boolean) => Schema;
223
257
  /**
224
258
  * Checks if a type is a callable type (has call signatures).
225
259
  *
@@ -278,28 +278,28 @@ var _ = (t) => {
278
278
  value: !1,
279
279
  __typename: "LiteralValue"
280
280
  }] : [];
281
- }, y = (e, t, n, r) => r.flatMap((r) => {
281
+ }, ee = (e, t, n, r) => r.flatMap((r) => {
282
282
  let i = r.getName();
283
- if (!b(i)) return [];
283
+ if (!y(i)) return [];
284
284
  let a = r.getDeclarations()?.[0];
285
285
  if (!a || a.getEnd() >= t.getEnd()) return [];
286
286
  let o = e.getTypeOfSymbolAtLocation(r, t);
287
- return i.startsWith("node_") ? x(i, o, e, n) : i.startsWith("p_") ? ee(i, o, e, n) : i.startsWith("flow_") ? te(o, e, n) : [];
288
- }), b = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), x = (t, n, r, i) => {
287
+ return i.startsWith("node_") ? b(i, o, e, n) : i.startsWith("p_") ? x(i, o, e, n) : i.startsWith("flow_") ? te(o, e, n) : [];
288
+ }), y = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), b = (t, n, r, i) => {
289
289
  if ((n.flags & e.TypeFlags.Void) !== 0) return [];
290
290
  let a = S(t.replace("node_", ""));
291
- return D(n, r, i).flatMap(({ path: e }) => {
291
+ return O(n, r, i).flatMap(({ path: e }) => {
292
292
  let t = {
293
293
  __typename: "ReferenceValue",
294
294
  nodeFunctionId: a
295
295
  };
296
296
  return e.length > 0 && (t.referencePath = e), t;
297
297
  });
298
- }, ee = (e, t, n, r) => {
298
+ }, x = (e, t, n, r) => {
299
299
  let { nodeFunctionId: i, paramIndexFromName: a } = C(e);
300
300
  if (!n.isTupleType(t)) return [];
301
301
  let o = t;
302
- return n.getTypeArguments(o).flatMap((e, t) => D(e, n, r).flatMap(({ path: e }) => {
302
+ return n.getTypeArguments(o).flatMap((e, t) => O(e, n, r).flatMap(({ path: e }) => {
303
303
  let n = {
304
304
  __typename: "ReferenceValue",
305
305
  nodeFunctionId: i,
@@ -309,7 +309,7 @@ var _ = (t) => {
309
309
  };
310
310
  return e.length > 0 && (n.referencePath = e), n;
311
311
  }));
312
- }, te = (e, t, n) => D(e, t, n).flatMap(({ path: e }) => {
312
+ }, te = (e, t, n) => O(e, t, n).flatMap(({ path: e }) => {
313
313
  let t = {
314
314
  __typename: "ReferenceValue",
315
315
  nodeFunctionId: null
@@ -325,7 +325,7 @@ var _ = (t) => {
325
325
  let r = n.get(e);
326
326
  if (r !== void 0) return r;
327
327
  let i = /* @__PURE__ */ new Set(), a = (n) => {
328
- if (i.has(n) || !O(n)) return !1;
328
+ if (i.has(n) || !k(n)) return !1;
329
329
  i.add(n);
330
330
  for (let r of n.getProperties()) {
331
331
  if (!r.valueDeclaration) continue;
@@ -335,32 +335,31 @@ var _ = (t) => {
335
335
  return !1;
336
336
  }, o = a(e);
337
337
  return n.set(e, o), o;
338
- }, E = (t, n, r) => t.isUnion() ? t.types.some((e) => E(n.getNonNullableType(e), n, r)) : (t.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(t, r), ne = (e, t) => e.isUnion() ? e.types.map((e) => t.getNonNullableType(e)).filter(O) : O(e) ? [e] : [], D = (e, t, n, r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map()) => {
338
+ }, E = (t, n, r) => t.isUnion() ? t.types.some((e) => E(n.getNonNullableType(e), n, r)) : (t.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(t, r), D = (e, t) => e.isUnion() ? e.types.map((e) => t.getNonNullableType(e)).filter(k) : k(e) ? [e] : [], O = (e, t, n, r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map()) => {
339
339
  let o = [], s = t.getNonNullableType(e);
340
340
  return E(s, t, n) && o.push({
341
341
  path: r,
342
342
  type: e
343
- }), ne(s, t).forEach((e) => {
343
+ }), D(s, t).forEach((e) => {
344
344
  if (i.has(e) || r.length >= w && T(e, t, a)) return;
345
345
  let s = e.getProperties();
346
346
  s && s.length > 0 && (i.add(e), s.forEach((e) => {
347
347
  let s = t.getTypeOfSymbolAtLocation(e, e.valueDeclaration), c = e.getName(), l = [...r, { path: c }];
348
- o.push(...D(s, t, n, l, i, a));
348
+ o.push(...O(s, t, n, l, i, a));
349
349
  }), i.delete(e));
350
350
  }), o;
351
- }, O = (t) => {
351
+ }, k = (t) => {
352
352
  let n = e.TypeFlags.String | e.TypeFlags.Number | e.TypeFlags.Boolean | e.TypeFlags.Undefined | e.TypeFlags.Null | e.TypeFlags.BigInt | e.TypeFlags.ESSymbol;
353
353
  return (t.flags & n) === 0;
354
- }, re = (e, t, n, r) => J(r) ? [] : t.flatMap((t) => {
355
- let i = ie(e, t, n, r);
354
+ }, ne = (e, t, n, r) => Y(r) ? [] : t.flatMap((t) => {
355
+ let i = re(e, t, n, r);
356
356
  return i ? [i] : [];
357
- }), ie = (t, n, r, i) => {
358
- if (n.parameters.length > 0) return null;
359
- let a = t.getSignatureFromDeclaration(n), o = ae(t, t.getReturnTypeOfSignature(a)), s = t.getNonNullableType(o);
357
+ }), re = (t, n, r, i) => {
358
+ let a = t.getSignatureFromDeclaration(n), o = ie(t, t.getReturnTypeOfSignature(a)), s = t.getNonNullableType(o);
360
359
  if ((s.flags & e.TypeFlags.Never) !== 0 || !t.isTypeAssignableTo(s, i)) return null;
361
- let c = oe(n.name?.getText());
362
- return se(r.find((e) => e.identifier === c));
363
- }, ae = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, oe = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", se = (e) => {
360
+ let c = ae(n.name?.getText());
361
+ return oe(r.find((e) => e.identifier === c));
362
+ }, ie = (e, t) => t.isTypeParameter() ? e.getBaseConstraintOfType(t) || e.getAnyType() : t, ae = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", oe = (e) => {
364
363
  let t = (e?.parameterDefinitions?.nodes?.length ?? 0) > 0, n = {
365
364
  __typename: "NodeFunction",
366
365
  id: "gid://sagittarius/NodeFunction/1",
@@ -373,11 +372,11 @@ var _ = (t) => {
373
372
  displayIcon: e?.displayIcon
374
373
  }
375
374
  };
376
- return t && (n.parameters = ce(e?.parameterDefinitions?.nodes || [])), n;
377
- }, ce = (e) => ({
375
+ return t && (n.parameters = se(e?.parameterDefinitions?.nodes || [])), n;
376
+ }, se = (e) => ({
378
377
  __typename: "NodeParameterConnection",
379
- nodes: e.map((e) => le(e))
380
- }), le = (e) => ({
378
+ nodes: e.map((e) => ce(e))
379
+ }), ce = (e) => ({
381
380
  __typename: "NodeParameter",
382
381
  parameterDefinition: {
383
382
  __typename: "ParameterDefinition",
@@ -388,15 +387,15 @@ var _ = (t) => {
388
387
  __typename: "LiteralValue",
389
388
  value: e.defaultValue.value
390
389
  } : null
391
- }), ue = (e, t, n, r) => J(r) ? t.flatMap((t) => {
392
- let i = de(e, t, n, r);
390
+ }), le = (e, t, n, r) => Y(r) ? t.flatMap((t) => {
391
+ let i = ue(e, t, n, r);
393
392
  return i ? [i] : [];
394
- }) : [], de = (e, t, n, r) => {
393
+ }) : [], ue = (e, t, n, r) => {
395
394
  let i = e.getTypeAtLocation(t);
396
395
  if (!e.isTypeAssignableTo(i, r)) return null;
397
- let a = k(t.name?.getText()), o = n.find((e) => e.identifier === a);
398
- return o ? A(o) : null;
399
- }, k = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", A = (e) => ({
396
+ let a = de(t.name?.getText()), o = n.find((e) => e.identifier === a);
397
+ return o ? fe(o) : null;
398
+ }, de = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", fe = (e) => ({
400
399
  __typename: "SubFlowValue",
401
400
  functionDefinition: e,
402
401
  signature: e.signature,
@@ -407,29 +406,29 @@ var _ = (t) => {
407
406
  hidden: e?.hidden ?? !1,
408
407
  optional: e?.optional ?? !1
409
408
  }))
410
- }), j = { DATE: "date" }, M = (e) => e != null && e in j, N = 7, P = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
409
+ }), A = { DATE: "date" }, j = (e) => e != null && e in A, M = 7, N = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
411
410
  if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
412
411
  let u = r.symbol?.declarations?.[0];
413
- if (u && e.isTypeParameterDeclaration(u) && u.constraint) return P(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
412
+ if (u && e.isTypeParameterDeclaration(u) && u.constraint) return N(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
414
413
  }
415
- let u = t.typeToString(M(r.aliasSymbol?.getName()) && r.isIntersection() ? r.types.find((t) => (t.flags & e.TypeFlags.Object) === 0) ?? r : {
414
+ let u = t.typeToString(j(r.aliasSymbol?.getName()) && r.isIntersection() ? r.types.find((t) => (t.flags & e.TypeFlags.Object) === 0) ?? r : {
416
415
  ...r,
417
416
  aliasSymbol: void 0
418
417
  }), d = s ?? r, f = o ? { suggestions: [
419
418
  ...v(d, t),
420
- ...n ? y(t, n, d, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
421
- ...re(t, i, a, d),
422
- ...ue(t, i, a, d)
419
+ ...n ? ee(t, n, d, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
420
+ ...ne(t, i, a, d),
421
+ ...le(t, i, a, d)
423
422
  ] } : {};
424
423
  if (r.isUnion()) {
425
- let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
426
- if (o.length === 1) return {
427
- ...P(t, n, o[0], i, a, !1, void 0, c, l),
424
+ let s = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
425
+ if (s.length === 1) return {
426
+ ...N(t, n, s[0], i, a, o, void 0, c, l),
428
427
  type: u,
429
428
  ...f
430
429
  };
431
430
  }
432
- let p = V(r);
431
+ let p = me(r);
433
432
  if (p) return {
434
433
  input: p,
435
434
  type: u,
@@ -441,7 +440,7 @@ var _ = (t) => {
441
440
  mimetype: U(t, r),
442
441
  ...f
443
442
  };
444
- if (fe(t, r)) return {
443
+ if (he(t, r)) return {
445
444
  input: "color",
446
445
  type: u,
447
446
  ...f
@@ -466,12 +465,12 @@ var _ = (t) => {
466
465
  type: u,
467
466
  ...f
468
467
  };
469
- if (J(r)) return {
468
+ if (Y(r)) return {
470
469
  input: "sub-flow",
471
470
  type: u,
472
471
  ...f
473
472
  };
474
- if (ge(t, r)) {
473
+ if (J(t, r)) {
475
474
  let e = t.getTypeArguments(r);
476
475
  if (e.length === 1 && H(t, e[0])) return {
477
476
  input: "list-file",
@@ -479,7 +478,7 @@ var _ = (t) => {
479
478
  mimetype: U(t, e[0]),
480
479
  ...f
481
480
  };
482
- let s = e.flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => P(t, n, e, i, a, o, void 0, c, l)));
481
+ let s = e.flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => N(t, n, e, i, a, o, void 0, c, l)));
483
482
  if (e.length === 1 && q(e[0])) return {
484
483
  input: "list-select",
485
484
  type: u,
@@ -506,7 +505,7 @@ var _ = (t) => {
506
505
  items: s,
507
506
  ...f
508
507
  };
509
- if (J(t)) return {
508
+ if (Y(t)) return {
510
509
  input: "list-sub-flow",
511
510
  type: u,
512
511
  items: s,
@@ -521,7 +520,7 @@ var _ = (t) => {
521
520
  };
522
521
  }
523
522
  if ((r.flags & e.TypeFlags.Object) !== 0) {
524
- if (c.has(r) || c.size >= N && T(r, t, l)) return {
523
+ if (c.has(r) || c.size >= M && T(r, t, l)) return {
525
524
  input: "data",
526
525
  type: u,
527
526
  ...f
@@ -531,7 +530,7 @@ var _ = (t) => {
531
530
  for (let u of t.getPropertiesOfType(r)) {
532
531
  let r = u.valueDeclaration ?? u.declarations?.[0];
533
532
  if (!r) continue;
534
- let f = t.getTypeOfSymbolAtLocation(u, r), p = (u.flags & e.SymbolFlags.Optional) !== 0 || f.isUnion() && f.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), m = (f.isUnion() ? f.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [f]).map((e) => P(t, n, e, i, a, o, void 0, c, l));
533
+ let f = t.getTypeOfSymbolAtLocation(u, r), p = (u.flags & e.SymbolFlags.Optional) !== 0 || f.isUnion() && f.types.some((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) !== 0), m = (f.isUnion() ? f.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0) : [f]).map((e) => N(t, n, e, i, a, o, void 0, c, l));
535
534
  s[u.name] = m.length === 1 ? m[0] : m, p || d.push(u.name);
536
535
  }
537
536
  return c.delete(r), {
@@ -547,41 +546,98 @@ var _ = (t) => {
547
546
  type: u,
548
547
  ...f
549
548
  };
550
- }, F = /* @__PURE__ */ new Set([
549
+ }, P = /* @__PURE__ */ new Set([
551
550
  "list",
552
551
  "list-select",
553
552
  "list-boolean",
554
553
  "list-number",
555
554
  "list-text",
556
555
  "list-sub-flow"
557
- ]), I = (e, t, n = !1) => {
558
- if (!e || e.input === "generic") return z(B(t), n);
559
- let r = R(e.suggestions, t.suggestions);
560
- if (e.input === "data") {
561
- let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(i)]);
562
- for (let e of o) {
563
- let t = n[e], r = i[e];
564
- a[e] = L(t, r);
556
+ ]), F = /* @__PURE__ */ new Set([
557
+ "list-select",
558
+ "list-boolean",
559
+ "list-number",
560
+ "list-text",
561
+ "list-sub-flow",
562
+ "list-file"
563
+ ]), I = (e) => {
564
+ let t = e, n = e.items;
565
+ n && (t = {
566
+ ...t,
567
+ items: n.map(I)
568
+ });
569
+ let r = e.properties;
570
+ if (r) {
571
+ let e = {};
572
+ for (let [t, n] of Object.entries(r)) e[t] = Array.isArray(n) ? n.map(I) : I(n);
573
+ t = {
574
+ ...t,
575
+ properties: e
576
+ };
577
+ }
578
+ if (F.has(t.input)) {
579
+ let { mimetype: e, ...n } = t;
580
+ t = {
581
+ ...n,
582
+ input: "list"
583
+ };
584
+ }
585
+ if (t.suggestions && t.suggestions.length === 0) {
586
+ let { suggestions: e, ...n } = t;
587
+ t = n;
588
+ }
589
+ return t;
590
+ }, L = (e, t = void 0, n = !0) => {
591
+ let r = pe(e), i = r.items;
592
+ i && (r = {
593
+ ...r,
594
+ items: i.map((e) => L(e, t))
595
+ });
596
+ let a = r.properties;
597
+ if (a) {
598
+ let e = {};
599
+ for (let [n, r] of Object.entries(a)) e[n] = Array.isArray(r) ? r.map((e) => L(e, t)) : L(r, t);
600
+ r = {
601
+ ...r,
602
+ properties: e
603
+ };
604
+ }
605
+ if (n) {
606
+ if (t && t.length > 0) r = {
607
+ ...r,
608
+ suggestions: t
609
+ };
610
+ else if (r.suggestions) {
611
+ let { suggestions: e, ...t } = r;
612
+ r = t;
565
613
  }
614
+ }
615
+ return r;
616
+ }, R = (e, t, n = !1, r = void 0, i = !0) => {
617
+ if (!e || e.input === "generic") return V(L(t, r, !i), n);
618
+ let a = B(e.suggestions, t.suggestions);
619
+ if (e.input === "data") {
620
+ let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, o = {}, s = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(i)]);
621
+ for (let e of s) o[e] = z(n[e], i[e], r);
566
622
  return {
567
623
  ...e,
568
- properties: a,
569
- ...r ? { suggestions: r } : {}
624
+ properties: o,
625
+ ...a ? { suggestions: a } : {}
570
626
  };
571
627
  }
572
- if (F.has(e.input)) {
573
- let n = e.items ?? [], i = t.input === e.input ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) => I(e, i[t])) : n;
628
+ if (P.has(e.input)) {
629
+ let n = e.items ?? [], i = P.has(t.input) ? t.items ?? [] : [], o = n.length > 0 && n.every((e) => e.input === "generic") && i.length > 0 ? i.map((e) => L(e, r)) : n.length === i.length && n.length > 0 ? n.map((e, t) => R(e, i[t], !1, r, !1)) : n;
574
630
  return {
575
631
  ...e,
576
- items: a,
577
- ...r ? { suggestions: r } : {}
632
+ items: o,
633
+ ...a ? { suggestions: a } : {}
578
634
  };
579
635
  }
580
636
  return {
581
637
  ...e,
582
- ...r ? { suggestions: r } : {}
638
+ ...a ? { suggestions: a } : {}
583
639
  };
584
- }, L = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? I(e, t) : e ?? t, R = (e, t) => {
640
+ }, z = (e, t, n = void 0) => e && !Array.isArray(e) && t && !Array.isArray(t) ? R(e, t, !1, n, !1) : e === void 0 && t !== void 0 ? Array.isArray(t) ? t.map((e) => L(e, n)) : L(t, n) : e ?? t, B = (e, t) => {
585
641
  let n = [...e ?? [], ...t ?? []];
586
642
  if (n.length === 0) return;
587
643
  let r = /* @__PURE__ */ new Set(), i = [];
@@ -590,13 +646,13 @@ var _ = (t) => {
590
646
  r.has(t) || (r.add(t), i.push(e));
591
647
  }
592
648
  return i;
593
- }, z = (e, t) => !t || e.input !== "generic" ? e : {
649
+ }, V = (e, t) => !t || e.input !== "generic" ? e : {
594
650
  input: "data",
595
651
  ...e.type ? { type: e.type } : {},
596
652
  properties: {},
597
653
  required: [],
598
654
  ...e.suggestions ? { suggestions: e.suggestions } : {}
599
- }, B = (e) => {
655
+ }, pe = (e) => {
600
656
  if (e.input !== "select") return e;
601
657
  let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
602
658
  for (let e of t) {
@@ -613,9 +669,9 @@ var _ = (t) => {
613
669
  ...t.length > 0 ? { suggestions: t } : {}
614
670
  };
615
671
  };
616
- function V(e) {
672
+ function me(e) {
617
673
  let t = e.aliasSymbol?.getName();
618
- return M(t) ? j[t] : void 0;
674
+ return j(t) ? A[t] : void 0;
619
675
  }
620
676
  function H(t, n) {
621
677
  if (n.aliasSymbol?.getName() !== "FILE" || (n.flags & e.TypeFlags.Object) === 0) return !1;
@@ -628,7 +684,7 @@ function H(t, n) {
628
684
  let s = t.getTypeOfSymbolAtLocation(a, o);
629
685
  return s.isStringLiteral() && s.value === "base64";
630
686
  }
631
- function fe(t, n) {
687
+ function he(t, n) {
632
688
  if (n.aliasSymbol?.getName() !== "COLOR" || (n.flags & e.TypeFlags.Object) === 0) return !1;
633
689
  let r = new Map(t.getPropertiesOfType(n).map((e) => [e.name, e]));
634
690
  return [
@@ -664,40 +720,40 @@ function G(t) {
664
720
  function K(t) {
665
721
  return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
666
722
  }
667
- function pe(e) {
723
+ function ge(e) {
668
724
  return K(e) || G(e) || W(e);
669
725
  }
670
- function me(t) {
726
+ function _e(t) {
671
727
  return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
672
728
  }
673
729
  function q(e) {
674
- return W(e) ? !1 : he(e) || me(e);
730
+ return W(e) ? !1 : ve(e) || _e(e);
675
731
  }
676
- function he(t) {
732
+ function ve(t) {
677
733
  if (!t.isUnion()) return !1;
678
734
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
679
- return n.length > 0 && n.every(pe);
735
+ return n.length > 0 && n.every(ge);
680
736
  }
681
- function ge(e, t) {
737
+ function J(e, t) {
682
738
  return e.isArrayType(t) || e.isTupleType(t);
683
739
  }
684
- function J(e) {
740
+ function Y(e) {
685
741
  return e.getCallSignatures().length > 0;
686
742
  }
687
743
  //#endregion
688
744
  //#region src/utils.ts
689
- var _e = "\n interface Array<T> { \n [n: number]: T; \n length: number; \n }\n interface String { readonly length: number; }\n interface Number { }\n interface Boolean { }\n interface Object { }\n interface Function { }\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n interface IArguments { }\n interface RegExp { }\n \n declare namespace Utils {\n type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n }\n\n import ReturnType = Utils.ReturnType;\n";
690
- function Y(t, n) {
745
+ var ye = "\n interface Array<T> { \n [n: number]: T; \n length: number; \n }\n interface String { readonly length: number; }\n interface Number { }\n interface Boolean { }\n interface Object { }\n interface Function { }\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n interface IArguments { }\n interface RegExp { }\n \n declare namespace Utils {\n type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n }\n\n import ReturnType = Utils.ReturnType;\n";
746
+ function be(t, n) {
691
747
  let r = /* @__PURE__ */ new Map();
692
- return r.set(t, n), r.set("lib.codezero.d.ts", _e), a(u(r), [t, "lib.codezero.d.ts"], e, ve);
748
+ return r.set(t, n), r.set("lib.codezero.d.ts", ye), a(u(r), [t, "lib.codezero.d.ts"], e, xe);
693
749
  }
694
- var ve = {
750
+ var xe = {
695
751
  target: e.ScriptTarget.Latest,
696
752
  lib: ["lib.codezero.d.ts"],
697
753
  noEmit: !0,
698
754
  strictNullChecks: !0
699
755
  };
700
- function ye(e) {
756
+ function Se(e) {
701
757
  let t = [], n = 0, r = null, i = "";
702
758
  for (let a of e) {
703
759
  if (r) a === r && (r = null);
@@ -713,13 +769,13 @@ function ye(e) {
713
769
  return t.push(i), t.map((e) => (e.trim().split(/\s+/).find((e) => e !== "const" && e !== "in" && e !== "out") ?? "").match(/^[A-Za-z_$][A-Za-z0-9_$]*/)?.[0] ?? "").filter((e) => e.length > 0);
714
770
  }
715
771
  function X(e, t = "any", n = !0) {
716
- let r = Array.from(new Set(e?.flatMap((e) => e.genericKeys || []).flatMap(ye))).map((e) => `type ${e} = ${t};`).join("\n"), i = e?.map((e) => {
717
- let t = (e.genericKeys?.length ?? 0) > 0 ? `<${e.genericKeys?.join(",")}>` : "", n = M(e.identifier) ? `${e.type} & {}` : e.type;
772
+ let r = Array.from(new Set(e?.flatMap((e) => e.genericKeys || []).flatMap(Se))).map((e) => `type ${e} = ${t};`).join("\n"), i = e?.map((e) => {
773
+ let t = (e.genericKeys?.length ?? 0) > 0 ? `<${e.genericKeys?.join(",")}>` : "", n = j(e.identifier) ? `${e.type} & {}` : e.type;
718
774
  return `type ${e.identifier}${t} = ${n};`;
719
775
  }).join("\n"), a = e?.filter((e) => (e.genericKeys?.length ?? 0) > 0).map((e) => `declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(() => "any").join(", ")}>;`).join("\n") ?? "";
720
776
  return `${n ? r : ""}\n${i}\n${a}`;
721
777
  }
722
- var Z = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_"), Q = (e) => e.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${"), be = (e, t) => {
778
+ var Z = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_"), Q = (e) => e.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${"), Ce = (e, t) => {
723
779
  let n = e.match(/^\$\{([^}]+)\}$/);
724
780
  if (n && t.has(n[1])) return t.get(n[1]);
725
781
  let r = /\$\{([^}]+)\}/g, i = !1;
@@ -734,8 +790,8 @@ var Z = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_"), Q = (e) => e.replace(/\\/g, "\\
734
790
  a += Q(e.slice(o, s)), a += t.has(i) ? "${" + t.get(i) + "}" : Q(r), o = s + r.length;
735
791
  }
736
792
  return a += Q(e.slice(o)), "`" + a + "`";
737
- }, $ = (e, t) => typeof e == "string" ? be(e, t) : Array.isArray(e) ? `[${e.map((e) => $(e, t)).join(", ")}]` : typeof e == "object" && e ? `{${Object.entries(e).map(([e, n]) => `${h(e)}: ${$(n, t)}`).join(", ")}}` : h(e) ?? "undefined";
738
- function xe(e, t, n, r = !1, i = !0) {
793
+ }, $ = (e, t) => typeof e == "string" ? Ce(e, t) : Array.isArray(e) ? `[${e.map((e) => $(e, t)).join(", ")}]` : typeof e == "object" && e ? `{${Object.entries(e).map(([e, n]) => `${h(e)}: ${$(n, t)}`).join(", ")}}` : h(e) ?? "undefined";
794
+ function we(e, t, n, r = !1, i = !0) {
739
795
  let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t) => {
740
796
  let n = typeof t.inputIndex == "number" ? `p_${Z(t.nodeFunctionId ?? "undefined")}_${t.parameterIndex}[${t.inputIndex}]` : t.nodeFunctionId ? `node_${Z(t.nodeFunctionId)}` : `flow_${Z(e?.id ?? "undefined")}`;
741
797
  return t.referencePath?.forEach((e) => {
@@ -789,4 +845,4 @@ function xe(e, t, n, r = !1, i = !0) {
789
845
  `;
790
846
  }
791
847
  //#endregion
792
- export { j as a, J as c, Z as i, I as l, xe as n, P as o, X as r, M as s, Y as t, h as u };
848
+ export { A as a, j as c, I as d, h as f, Z as i, Y as l, we as n, L as o, X as r, N as s, be as t, R as u };
@@ -3,7 +3,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
3
3
  `:`[`;for(let n=0;n<e.length;n++){let s=typeof t==`function`?t.call(e,String(n),e[n]):e[n];i&&(o+=r),o+=s!==void 0&&typeof s!=`function`?a(s,r):`null`,n<e.length-1&&(o+=i?`,
4
4
  `:`,`)}return o+=i?`\n${n}]`:`]`,o}function s(e,r){if(typeof e.toJSON==`function`)return y(e.toJSON(),t,n,void 0);let o=Array.isArray(t)?t.map(String):Object.keys(e);if(o.length===0)return`{}`;let s=i?r+i:void 0,l=!0,u=i?`{
5
5
  `:`{`;for(let n of o){let r=typeof t==`function`?t.call(e,n,e[n]):e[n];if(c(n,r)){l?l=!1:u+=i?`,
6
- `:`,`;let e=JSON.stringify(n);u+=i?`${s+e}: `:`${e}:`,u+=a(r,s)}}return u+=i?`\n${r}}`:`}`,u}function c(e,t){return t!==void 0&&typeof t!=`function`&&typeof t!=`symbol`}}function ie(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var b=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(b);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[]},x=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return b(t.type)}return e.isUnion()?e.types.flatMap(e=>x(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`}]:[]},S=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!C(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?w(i,o,e,n):i.startsWith(`p_`)?ae(i,o,e,n):i.startsWith(`flow_`)?oe(o,e,n):[]}),C=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),w=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=T(e.replace(`node_`,``));return O(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},ae=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=se(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>O(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}))},oe=(e,t,n)=>O(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),T=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),se=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:T(r),paramIndexFromName:i}},ce=7,E=(e,t,n)=>{let r=n.get(e);if(r!==void 0)return r;let i=new Set,a=n=>{if(i.has(n)||!k(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},D=(e,t,n)=>e.isUnion()?e.types.some(e=>D(t.getNonNullableType(e),t,n)):(e.flags&c.default.TypeFlags.Never)===0&&t.isTypeAssignableTo(e,n),le=(e,t)=>e.isUnion()?e.types.map(e=>t.getNonNullableType(e)).filter(k):k(e)?[e]:[],O=(e,t,n,r=[],i=new Set,a=new Map)=>{let o=[],s=t.getNonNullableType(e);return D(s,t,n)&&o.push({path:r,type:e}),le(s,t).forEach(e=>{if(i.has(e)||r.length>=ce&&E(e,t,a))return;let s=e.getProperties();s&&s.length>0&&(i.add(e),s.forEach(e=>{let s=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),c=e.getName(),l=[...r,{path:c}];o.push(...O(s,t,n,l,i,a))}),i.delete(e))}),o},k=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},ue=(e,t,n,r)=>J(r)?[]:t.flatMap(t=>{let i=de(e,t,n,r);return i?[i]:[]}),de=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=fe(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=pe(t.name?.getText());return A(n.find(e=>e.identifier===s))},fe=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,pe=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,A=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=j(e?.parameterDefinitions?.nodes||[])),n},j=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>M(e))}),M=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),N=(e,t,n,r)=>J(r)?t.flatMap(t=>{let i=P(e,t,n,r);return i?[i]:[]}):[],P=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=F(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?I(o):null},F=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,I=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}))}),L={DATE:`date`},R=e=>e!=null&&e in L,z=7,B=(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 B(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(R(n.aliasSymbol?.getName())&&n.isIntersection()?n.types.find(e=>(e.flags&c.default.TypeFlags.Object)===0)??n:{...n,aliasSymbol:void 0}),d=o??n,f=a?{suggestions:[...x(d,e),...t?S(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...ue(e,r,i,d),...N(e,r,i,d)]}:{};if(n.isUnion()){let a=n.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);if(a.length===1)return{...B(e,t,a[0],r,i,!1,void 0,s,l),type:u,...f}}let p=ye(n);if(p)return{input:p,type:u,...f};if(H(e,n))return{input:`file`,type:u,mimetype:U(e,n),...f};if(be(e,n))return{input:`color`,type:u,...f};if(W(n))return{input:`boolean`,type:u,...f};if(q(n))return{input:`select`,type:u,...f};if(G(n))return{input:`number`,type:u,...f};if(K(n))return{input:`text`,type:u,...f};if(J(n))return{input:`sub-flow`,type:u,...f};if(we(e,n)){let o=e.getTypeArguments(n);if(o.length===1&&H(e,o[0]))return{input:`list-file`,type:u,mimetype:U(e,o[0]),...f};let c=o.flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>B(e,t,n,r,i,a,void 0,s,l)));if(o.length===1&&q(o[0]))return{input:`list-select`,type:u,items:c,...f};if(o.length===1){let e=o[0];if(W(e))return{input:`list-boolean`,type:u,items:c,...f};if(G(e))return{input:`list-number`,type:u,items:c,...f};if(K(e))return{input:`list-text`,type:u,items:c,...f};if(J(e))return{input:`list-sub-flow`,type:u,items:c,...f}}return{input:`list`,type:u,items:c,...f}}if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=z&&E(n,e,l))return{input:`data`,type:u,...f};s.add(n);let o={},d=[];for(let u of e.getPropertiesOfType(n)){let n=u.valueDeclaration??u.declarations?.[0];if(!n)continue;let f=e.getTypeOfSymbolAtLocation(u,n),p=(u.flags&c.default.SymbolFlags.Optional)!==0||f.isUnion()&&f.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),m=(f.isUnion()?f.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[f]).map(n=>B(e,t,n,r,i,a,void 0,s,l));o[u.name]=m.length===1?m[0]:m,p||d.push(u.name)}return s.delete(n),{input:`data`,type:u,properties:o,required:d,...f}}return{input:`generic`,type:u,...f}},me=new Set([`list`,`list-select`,`list-boolean`,`list-number`,`list-text`,`list-sub-flow`]),V=(e,t,n=!1)=>{if(!e||e.input===`generic`)return _e(ve(t),n);let r=ge(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]=he(t,r)}return{...e,properties:a,...r?{suggestions:r}:{}}}if(me.has(e.input)){let n=e.items??[],i=t.input===e.input?t.items??[]:[],a=n.length===i.length&&n.length>0?n.map((e,t)=>V(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},he=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?V(e,t):e??t,ge=(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},_e=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},ve=e=>{if(e.input!==`select`)return e;let t=e.suggestions??[],n=new Set;for(let e of t){let t=typeof e.value;(t===`string`||t===`number`||t===`boolean`)&&n.add(t)}return{input:n.size===1?{string:`text`,number:`number`,boolean:`boolean`}[[...n][0]]:`text`,...e.type?{type:e.type}:{},...t.length>0?{suggestions:t}:{}}};function ye(e){let t=e.aliasSymbol?.getName();return R(t)?L[t]:void 0}function H(e,t){if(t.aliasSymbol?.getName()!==`FILE`||(t.flags&c.default.TypeFlags.Object)===0)return!1;let n=e.getPropertiesOfType(t);if(n.length!==4)return!1;let r=new Map(n.map(e=>[e.name,e])),i=r.get(`valueType`);if(!r.has(`contentType`)||!r.has(`fileName`)||!r.has(`value`)||!i)return!1;let a=i.valueDeclaration??i.declarations?.[0];if(!a)return!1;let o=e.getTypeOfSymbolAtLocation(i,a);return o.isStringLiteral()&&o.value===`base64`}function be(e,t){if(t.aliasSymbol?.getName()!==`COLOR`||(t.flags&c.default.TypeFlags.Object)===0)return!1;let n=new Map(e.getPropertiesOfType(t).map(e=>[e.name,e]));return[`hue`,`saturation`,`lightness`].every(t=>{let r=n.get(t);if(!r)return!1;let i=r.valueDeclaration??r.declarations?.[0];return i?G(e.getTypeOfSymbolAtLocation(r,i)):!1})}function U(e,t){let n=/^(\*|[a-zA-Z0-9][a-zA-Z0-9!#$&^_.+-]*)\/(\*|[a-zA-Z0-9][a-zA-Z0-9!#$&^_.+-]*)$/,r=e.getPropertiesOfType(t).find(e=>e.name===`contentType`);if(!r)return`*/*`;let i=r.valueDeclaration??r.declarations?.[0];if(!i)return`*/*`;let a=e.getTypeOfSymbolAtLocation(r,i);return a.isStringLiteral()&&n.test(a.value)?a.value:`*/*`}function W(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 G(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function K(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function xe(e){return K(e)||G(e)||W(e)}function Se(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function q(e){return W(e)?!1:Ce(e)||Se(e)}function Ce(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(xe)}function we(e,t){return e.isArrayType(t)||e.isTupleType(t)}function J(e){return e.getCallSignatures().length>0}var Te=`
6
+ `:`,`;let e=JSON.stringify(n);u+=i?`${s+e}: `:`${e}:`,u+=a(r,s)}}return u+=i?`\n${r}}`:`}`,u}function c(e,t){return t!==void 0&&typeof t!=`function`&&typeof t!=`symbol`}}function ie(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var b=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(b);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[]},x=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return b(t.type)}return e.isUnion()?e.types.flatMap(e=>x(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`}]:[]},S=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!C(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?w(i,o,e,n):i.startsWith(`p_`)?ae(i,o,e,n):i.startsWith(`flow_`)?oe(o,e,n):[]}),C=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),w=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=T(e.replace(`node_`,``));return O(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},ae=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=se(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>O(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}))},oe=(e,t,n)=>O(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),T=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),se=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:T(r),paramIndexFromName:i}},ce=7,E=(e,t,n)=>{let r=n.get(e);if(r!==void 0)return r;let i=new Set,a=n=>{if(i.has(n)||!k(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},D=(e,t,n)=>e.isUnion()?e.types.some(e=>D(t.getNonNullableType(e),t,n)):(e.flags&c.default.TypeFlags.Never)===0&&t.isTypeAssignableTo(e,n),le=(e,t)=>e.isUnion()?e.types.map(e=>t.getNonNullableType(e)).filter(k):k(e)?[e]:[],O=(e,t,n,r=[],i=new Set,a=new Map)=>{let o=[],s=t.getNonNullableType(e);return D(s,t,n)&&o.push({path:r,type:e}),le(s,t).forEach(e=>{if(i.has(e)||r.length>=ce&&E(e,t,a))return;let s=e.getProperties();s&&s.length>0&&(i.add(e),s.forEach(e=>{let s=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),c=e.getName(),l=[...r,{path:c}];o.push(...O(s,t,n,l,i,a))}),i.delete(e))}),o},k=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},ue=(e,t,n,r)=>J(r)?[]:t.flatMap(t=>{let i=de(e,t,n,r);return i?[i]:[]}),de=(e,t,n,r)=>{let i=e.getSignatureFromDeclaration(t),a=fe(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=pe(t.name?.getText());return me(n.find(e=>e.identifier===s))},fe=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,pe=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,me=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=he(e?.parameterDefinitions?.nodes||[])),n},he=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>ge(e))}),ge=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),A=(e,t,n,r)=>J(r)?t.flatMap(t=>{let i=j(e,t,n,r);return i?[i]:[]}):[],j=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=M(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?N(o):null},M=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,N=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}))}),P={DATE:`date`},F=e=>e!=null&&e in P,I=7,L=(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 L(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(F(n.aliasSymbol?.getName())&&n.isIntersection()?n.types.find(e=>(e.flags&c.default.TypeFlags.Object)===0)??n:{...n,aliasSymbol:void 0}),d=o??n,f=a?{suggestions:[...x(d,e),...t?S(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...ue(e,r,i,d),...A(e,r,i,d)]}:{};if(n.isUnion()){let o=n.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);if(o.length===1)return{...L(e,t,o[0],r,i,a,void 0,s,l),type:u,...f}}let p=Se(n);if(p)return{input:p,type:u,...f};if(H(e,n))return{input:`file`,type:u,mimetype:U(e,n),...f};if(Ce(e,n))return{input:`color`,type:u,...f};if(W(n))return{input:`boolean`,type:u,...f};if(q(n))return{input:`select`,type:u,...f};if(G(n))return{input:`number`,type:u,...f};if(K(n))return{input:`text`,type:u,...f};if(J(n))return{input:`sub-flow`,type:u,...f};if(De(e,n)){let o=e.getTypeArguments(n);if(o.length===1&&H(e,o[0]))return{input:`list-file`,type:u,mimetype:U(e,o[0]),...f};let c=o.flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>L(e,t,n,r,i,a,void 0,s,l)));if(o.length===1&&q(o[0]))return{input:`list-select`,type:u,items:c,...f};if(o.length===1){let e=o[0];if(W(e))return{input:`list-boolean`,type:u,items:c,...f};if(G(e))return{input:`list-number`,type:u,items:c,...f};if(K(e))return{input:`list-text`,type:u,items:c,...f};if(J(e))return{input:`list-sub-flow`,type:u,items:c,...f}}return{input:`list`,type:u,items:c,...f}}if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=I&&E(n,e,l))return{input:`data`,type:u,...f};s.add(n);let o={},d=[];for(let u of e.getPropertiesOfType(n)){let n=u.valueDeclaration??u.declarations?.[0];if(!n)continue;let f=e.getTypeOfSymbolAtLocation(u,n),p=(u.flags&c.default.SymbolFlags.Optional)!==0||f.isUnion()&&f.types.some(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))!==0),m=(f.isUnion()?f.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0):[f]).map(n=>L(e,t,n,r,i,a,void 0,s,l));o[u.name]=m.length===1?m[0]:m,p||d.push(u.name)}return s.delete(n),{input:`data`,type:u,properties:o,required:d,...f}}return{input:`generic`,type:u,...f}},R=new Set([`list`,`list-select`,`list-boolean`,`list-number`,`list-text`,`list-sub-flow`]),_e=new Set([`list-select`,`list-boolean`,`list-number`,`list-text`,`list-sub-flow`,`list-file`]),z=e=>{let t=e,n=e.items;n&&(t={...t,items:n.map(z)});let r=e.properties;if(r){let e={};for(let[t,n]of Object.entries(r))e[t]=Array.isArray(n)?n.map(z):z(n);t={...t,properties:e}}if(_e.has(t.input)){let{mimetype:e,...n}=t;t={...n,input:`list`}}if(t.suggestions&&t.suggestions.length===0){let{suggestions:e,...n}=t;t=n}return t},B=(e,t=void 0,n=!0)=>{let r=xe(e),i=r.items;i&&(r={...r,items:i.map(e=>B(e,t))});let a=r.properties;if(a){let e={};for(let[n,r]of Object.entries(a))e[n]=Array.isArray(r)?r.map(e=>B(e,t)):B(r,t);r={...r,properties:e}}if(n){if(t&&t.length>0)r={...r,suggestions:t};else if(r.suggestions){let{suggestions:e,...t}=r;r=t}}return r},V=(e,t,n=!1,r=void 0,i=!0)=>{if(!e||e.input===`generic`)return be(B(t,r,!i),n);let a=ye(e.suggestions,t.suggestions);if(e.input===`data`){let n=e.properties??{},i=t.input===`data`?t.properties??{}:{},o={},s=new Set([...Object.keys(n),...Object.keys(i)]);for(let e of s)o[e]=ve(n[e],i[e],r);return{...e,properties:o,...a?{suggestions:a}:{}}}if(R.has(e.input)){let n=e.items??[],i=R.has(t.input)?t.items??[]:[],o=n.length>0&&n.every(e=>e.input===`generic`)&&i.length>0?i.map(e=>B(e,r)):n.length===i.length&&n.length>0?n.map((e,t)=>V(e,i[t],!1,r,!1)):n;return{...e,items:o,...a?{suggestions:a}:{}}}return{...e,...a?{suggestions:a}:{}}},ve=(e,t,n=void 0)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?V(e,t,!1,n,!1):e===void 0&&t!==void 0?Array.isArray(t)?t.map(e=>B(e,n)):B(t,n):e??t,ye=(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},be=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},xe=e=>{if(e.input!==`select`)return e;let t=e.suggestions??[],n=new Set;for(let e of t){let t=typeof e.value;(t===`string`||t===`number`||t===`boolean`)&&n.add(t)}return{input:n.size===1?{string:`text`,number:`number`,boolean:`boolean`}[[...n][0]]:`text`,...e.type?{type:e.type}:{},...t.length>0?{suggestions:t}:{}}};function Se(e){let t=e.aliasSymbol?.getName();return F(t)?P[t]:void 0}function H(e,t){if(t.aliasSymbol?.getName()!==`FILE`||(t.flags&c.default.TypeFlags.Object)===0)return!1;let n=e.getPropertiesOfType(t);if(n.length!==4)return!1;let r=new Map(n.map(e=>[e.name,e])),i=r.get(`valueType`);if(!r.has(`contentType`)||!r.has(`fileName`)||!r.has(`value`)||!i)return!1;let a=i.valueDeclaration??i.declarations?.[0];if(!a)return!1;let o=e.getTypeOfSymbolAtLocation(i,a);return o.isStringLiteral()&&o.value===`base64`}function Ce(e,t){if(t.aliasSymbol?.getName()!==`COLOR`||(t.flags&c.default.TypeFlags.Object)===0)return!1;let n=new Map(e.getPropertiesOfType(t).map(e=>[e.name,e]));return[`hue`,`saturation`,`lightness`].every(t=>{let r=n.get(t);if(!r)return!1;let i=r.valueDeclaration??r.declarations?.[0];return i?G(e.getTypeOfSymbolAtLocation(r,i)):!1})}function U(e,t){let n=/^(\*|[a-zA-Z0-9][a-zA-Z0-9!#$&^_.+-]*)\/(\*|[a-zA-Z0-9][a-zA-Z0-9!#$&^_.+-]*)$/,r=e.getPropertiesOfType(t).find(e=>e.name===`contentType`);if(!r)return`*/*`;let i=r.valueDeclaration??r.declarations?.[0];if(!i)return`*/*`;let a=e.getTypeOfSymbolAtLocation(r,i);return a.isStringLiteral()&&n.test(a.value)?a.value:`*/*`}function W(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 G(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function K(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function we(e){return K(e)||G(e)||W(e)}function Te(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function q(e){return W(e)?!1:Ee(e)||Te(e)}function Ee(e){if(!e.isUnion())return!1;let t=e.types.filter(e=>(e.flags&(c.default.TypeFlags.Undefined|c.default.TypeFlags.Null))===0);return t.length>0&&t.every(we)}function De(e,t){return e.isArrayType(t)||e.isTupleType(t)}function J(e){return e.getCallSignatures().length>0}var Y=`
7
7
  interface Array<T> {
8
8
  [n: number]: T;
9
9
  length: number;
@@ -23,10 +23,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
23
23
  }
24
24
 
25
25
  import ReturnType = Utils.ReturnType;
26
- `;function Ee(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,Te),p(ee(n),[e,`lib.codezero.d.ts`],c.default,De)}var De={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function Y(e){let t=[],n=0,r=null,i=``;for(let a of e){if(r)a===r&&(r=null);else if(a===`'`||a===`"`||a==="`")r=a;else if(a===`<`||a===`{`||a===`(`||a===`[`)n++;else if(a===`>`||a===`}`||a===`)`||a===`]`)n--;else if(a===`,`&&n===0){t.push(i),i=``;continue}i+=a}return t.push(i),t.map(e=>(e.trim().split(/\s+/).find(e=>e!==`const`&&e!==`in`&&e!==`out`)??``).match(/^[A-Za-z_$][A-Za-z0-9_$]*/)?.[0]??``).filter(e=>e.length>0)}function X(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]).flatMap(Y))).map(e=>`type ${e} = ${t};`).join(`
27
- `),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=R(e.identifier)?`${e.type} & {}`:e.type;return`type ${e.identifier}${t} = ${n};`}).join(`
26
+ `;function Oe(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,Y),p(ee(n),[e,`lib.codezero.d.ts`],c.default,ke)}var ke={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function Ae(e){let t=[],n=0,r=null,i=``;for(let a of e){if(r)a===r&&(r=null);else if(a===`'`||a===`"`||a==="`")r=a;else if(a===`<`||a===`{`||a===`(`||a===`[`)n++;else if(a===`>`||a===`}`||a===`)`||a===`]`)n--;else if(a===`,`&&n===0){t.push(i),i=``;continue}i+=a}return t.push(i),t.map(e=>(e.trim().split(/\s+/).find(e=>e!==`const`&&e!==`in`&&e!==`out`)??``).match(/^[A-Za-z_$][A-Za-z0-9_$]*/)?.[0]??``).filter(e=>e.length>0)}function X(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]).flatMap(Ae))).map(e=>`type ${e} = ${t};`).join(`
27
+ `),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=F(e.identifier)?`${e.type} & {}`:e.type;return`type ${e.identifier}${t} = ${n};`}).join(`
28
28
  `),a=e?.filter(e=>(e.genericKeys?.length??0)>0).map(e=>`declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(()=>`any`).join(`, `)}>;`).join(`
29
- `)??``;return`${n?r:``}\n${i}\n${a}`}var Z=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`),Q=e=>e.replace(/\\/g,`\\\\`).replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),Oe=(e,t)=>{let n=e.match(/^\$\{([^}]+)\}$/);if(n&&t.has(n[1]))return t.get(n[1]);let r=/\$\{([^}]+)\}/g,i=!1;for(let n of e.matchAll(r))if(t.has(n[1])){i=!0;break}if(!i)return y(e)??`""`;let a=``,o=0;for(let n of e.matchAll(r)){let[r,i]=n,s=n.index;a+=Q(e.slice(o,s)),a+=t.has(i)?"${"+t.get(i)+`}`:Q(r),o=s+r.length}return a+=Q(e.slice(o)),"`"+a+"`"},$=(e,t)=>typeof e==`string`?Oe(e,t):Array.isArray(e)?`[${e.map(e=>$(e,t)).join(`, `)}]`:typeof e==`object`&&e?`{${Object.entries(e).map(([e,n])=>`${y(e)}: ${$(n,t)}`).join(`, `)}}`:y(e)??`undefined`;function ke(e,t,n,r=!1,i=!0){let a=e?.nodes?.nodes||[],o=new Map(t?.map(e=>[e.identifier,e])),s=new Set,c=t=>{let n=typeof t.inputIndex==`number`?`p_${Z(t.nodeFunctionId??`undefined`)}_${t.parameterIndex}[${t.inputIndex}]`:t.nodeFunctionId?`node_${Z(t.nodeFunctionId)}`:`flow_${Z(e?.id??`undefined`)}`;return t.referencePath?.forEach(e=>{n+=`?.${e.path}`}),`(${n})${i?`!`:``}`},l=(e,t,n,r)=>!e.startingNodeId&&e.functionDefinition?.identifier?`fn_${e.functionDefinition.identifier.replace(/::/g,`_`)}`:`(...${`p_${Z(t)}_${n}`}) => {\n${d(e.startingNodeId||e.functionDefinition?.id,r+` `)}${r}}`,u=(e,t,n)=>{if(e==null)return;let r=new Map;for(let e of t??[]){if(!e?.signature)continue;let t=e.value;if(t?.__typename===`ReferenceValue`)r.set(e.signature,c(t));else if(t?.__typename===`LiteralValue`){let i=u(t.value,t.references,n);i!==void 0&&r.set(e.signature,i)}else t?.__typename===`SubFlowValue`&&r.set(e.signature,l(t,n.id,n.index,n.indent))}return r.size===0?y(e):$(e,r)},d=(e,t=``)=>{let n=a.find(t=>t?.id===e);if(!n||!n.functionDefinition)return``;if(e?.includes(`NodeFunction`)&&s.add(e),!o.get(n.functionDefinition.identifier))return`${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;let i=(n.parameters?.nodes||[]).map((n,i)=>{let a=n.value;return a?a.__typename===`ReferenceValue`?`/* @pos ${e} ${i} */ ${c(a)}`:a.__typename===`LiteralValue`?`/* @pos ${e} ${i} */ ${u(a.value,a.references,{id:e,index:i,indent:t})}`:a.__typename===`SubFlowValue`?`/* @pos ${e} ${i} */ ${l(a,e,i,t)}`:r?`/* @pos ${e} ${i} */ {}`:`/* @pos ${e} ${i} */ undefined`:r?`/* @pos ${e} ${i} */ {}`:`/* @pos ${e} ${i} */ undefined`}),f=`node_${Z(n.id)}`,p=`fn_${n?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;i.includes(`undefined`);let m=`${t}`;return n.functionDefinition.identifier===`std::control::return`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`return ${f};\n`):n.functionDefinition.identifier===`std::control::if`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`if(${i[0]}) {
29
+ `)??``;return`${n?r:``}\n${i}\n${a}`}var Z=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`),Q=e=>e.replace(/\\/g,`\\\\`).replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),je=(e,t)=>{let n=e.match(/^\$\{([^}]+)\}$/);if(n&&t.has(n[1]))return t.get(n[1]);let r=/\$\{([^}]+)\}/g,i=!1;for(let n of e.matchAll(r))if(t.has(n[1])){i=!0;break}if(!i)return y(e)??`""`;let a=``,o=0;for(let n of e.matchAll(r)){let[r,i]=n,s=n.index;a+=Q(e.slice(o,s)),a+=t.has(i)?"${"+t.get(i)+`}`:Q(r),o=s+r.length}return a+=Q(e.slice(o)),"`"+a+"`"},$=(e,t)=>typeof e==`string`?je(e,t):Array.isArray(e)?`[${e.map(e=>$(e,t)).join(`, `)}]`:typeof e==`object`&&e?`{${Object.entries(e).map(([e,n])=>`${y(e)}: ${$(n,t)}`).join(`, `)}}`:y(e)??`undefined`;function Me(e,t,n,r=!1,i=!0){let a=e?.nodes?.nodes||[],o=new Map(t?.map(e=>[e.identifier,e])),s=new Set,c=t=>{let n=typeof t.inputIndex==`number`?`p_${Z(t.nodeFunctionId??`undefined`)}_${t.parameterIndex}[${t.inputIndex}]`:t.nodeFunctionId?`node_${Z(t.nodeFunctionId)}`:`flow_${Z(e?.id??`undefined`)}`;return t.referencePath?.forEach(e=>{n+=`?.${e.path}`}),`(${n})${i?`!`:``}`},l=(e,t,n,r)=>!e.startingNodeId&&e.functionDefinition?.identifier?`fn_${e.functionDefinition.identifier.replace(/::/g,`_`)}`:`(...${`p_${Z(t)}_${n}`}) => {\n${d(e.startingNodeId||e.functionDefinition?.id,r+` `)}${r}}`,u=(e,t,n)=>{if(e==null)return;let r=new Map;for(let e of t??[]){if(!e?.signature)continue;let t=e.value;if(t?.__typename===`ReferenceValue`)r.set(e.signature,c(t));else if(t?.__typename===`LiteralValue`){let i=u(t.value,t.references,n);i!==void 0&&r.set(e.signature,i)}else t?.__typename===`SubFlowValue`&&r.set(e.signature,l(t,n.id,n.index,n.indent))}return r.size===0?y(e):$(e,r)},d=(e,t=``)=>{let n=a.find(t=>t?.id===e);if(!n||!n.functionDefinition)return``;if(e?.includes(`NodeFunction`)&&s.add(e),!o.get(n.functionDefinition.identifier))return`${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;let i=(n.parameters?.nodes||[]).map((n,i)=>{let a=n.value;return a?a.__typename===`ReferenceValue`?`/* @pos ${e} ${i} */ ${c(a)}`:a.__typename===`LiteralValue`?`/* @pos ${e} ${i} */ ${u(a.value,a.references,{id:e,index:i,indent:t})}`:a.__typename===`SubFlowValue`?`/* @pos ${e} ${i} */ ${l(a,e,i,t)}`:r?`/* @pos ${e} ${i} */ {}`:`/* @pos ${e} ${i} */ undefined`:r?`/* @pos ${e} ${i} */ {}`:`/* @pos ${e} ${i} */ undefined`}),f=`node_${Z(n.id)}`,p=`fn_${n?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;i.includes(`undefined`);let m=`${t}`;return n.functionDefinition.identifier===`std::control::return`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`return ${f};\n`):n.functionDefinition.identifier===`std::control::if`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`if(${i[0]}) {
30
30
  ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
31
31
  }`):n.functionDefinition.identifier===`std::control::if_else`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`if(${i[0]}) {
32
32
  ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
@@ -42,4 +42,4 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
42
42
  ${a.filter(e=>e?.id&&!h.has(e.id)&&!g.has(e.id)).map(e=>d(e.id)).join(`
43
43
  `)}
44
44
  )();
45
- `}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return y}});
45
+ `}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return V}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code0-tech/triangulum",
3
- "version": "0.33.0",
3
+ "version": "0.34.0",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/code0-tech/triangulum#readme",
6
6
  "bugs": {