@code0-tech/triangulum 0.38.1 → 0.38.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,7 +35,11 @@ export type SchematizedFlow = Flow & SignatureSchemas;
35
35
  *
36
36
  * The schemas are computed from the real signatures, resolved through the same
37
37
  * virtual TypeScript program that {@link generateFlowSourceCode} builds:
38
- * - For the flow, the schemas come from the flow's own `signature`.
38
+ * - For the flow, the schemas come from the flow's own `signature`, resolved at
39
+ * the generated `flow(<settings>)` call so the flow settings instantiate its
40
+ * type parameters — a generic link between input and output (as a REST flow's
41
+ * `<T extends TYPE>(input_schema: T, …): REST_ADAPTER_INPUT<T>`) therefore
42
+ * carries the shape the settings actually supply.
39
43
  * - For a sub-flow, the schemas come from the *value* generated at that argument
40
44
  * position — the lambda `(...p) => { …body… }` emitted by
41
45
  * {@link generateFlowSourceCode} — not from the callback parameter the
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BftsgxoV.cjs");let t=require("typescript");t=e.b(t,1);var n=(n,r)=>{let i=e.y(n?.value);if(!i)return`any`;let a=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-DdyNhGg7.cjs");let t=require("typescript");t=e.b(t,1);var n=(n,r)=>{let i=e.y(n?.value);if(!i)return`any`;let a=`
2
2
  ${e.r(r,`unknown`)}
3
3
  const tempValue = ${i??`any`};
4
4
  `,o=`index.ts`,s=e.t(o,a),c=s.getSourceFile(o),l=s.languageService.getProgram().getTypeChecker(),u=`any`,d=e=>{if(t.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let n=l.getTypeAtLocation(e),r=n=>{if(n.isUnion()){let e=n.types.map(r);return Array.from(new Set(e)).sort().join(` | `)}if(l.isArrayType(n)){let e=n.typeArguments||[],t=e.length>0?r(e[0]):`any`;return e[0]?.isUnion()?`(${t})[]`:`${t}[]`}if(n.getFlags()&t.default.TypeFlags.Object||n.isClassOrInterface()){let t=l.getPropertiesOfType(n);if(t.length>0)return`{ ${t.map(t=>{let n=l.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${r(n)}`}).join(`, `)} }`}let i=l.getBaseTypeOfLiteralType(n);return l.typeToString(i,e)};u=r(n)}t.default.forEachChild(e,d)};return d(c),u},r=(n,r)=>{let i=`
5
5
  ${e.r(r)}
6
6
  type Target = ${n};
7
- `,a=`index.ts`,o=e.t(a,i),s=o.getSourceFile(a),c=o.languageService.getProgram().getTypeChecker(),l=s.statements.find(e=>t.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!l)return{__typename:`LiteralValue`,value:null};let u=c.getTypeAtLocation(l.type),d=(e,n,r=new Set)=>{let i=new Set(r);if(i.has(e))return null;let a=e.getFlags();if(e.isUnion()){if(n.type,t.default.isTypeAliasDeclaration(n)&&n.type&&t.default.isUnionTypeNode(n.type)){let e=c.getTypeFromTypeNode(n.type.types[0]);return d(e,n,i)}let r=e.types.filter(e=>{let n=e.getFlags();return!(n&t.default.TypeFlags.Undefined)&&!(n&t.default.TypeFlags.Null)}),a=r.length>0?r[0]:e.types[0];return d(a,n,i)}if(e.isIntersection()){let r=e.types.find(e=>e.getFlags()&(t.default.TypeFlags.StringLike|t.default.TypeFlags.NumberLike|t.default.TypeFlags.BooleanLike));if(r)return i.add(e),d(r,n,i)}if(a&t.default.TypeFlags.StringLiteral)return e.value;if(a&t.default.TypeFlags.String)return``;if(a&t.default.TypeFlags.NumberLiteral)return e.value;if(a&t.default.TypeFlags.Number)return 0;if(a&t.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(a&t.default.TypeFlags.Boolean)return!1;if(c.isArrayType(e)){i.add(e);let t=e.typeArguments?.[0]||c.getAnyType(),r=d(t,n,i);return r===null?[]:[r]}if(e.isClassOrInterface()||a&t.default.TypeFlags.Object||e.getProperties().length>0){i.add(e);let t={};return e.getProperties().forEach(e=>{let r=c.getTypeOfSymbolAtLocation(e,n),a=e.valueDeclaration;r&&(t[e.getName()]=d(r,a||n,i))}),t}return null};return{__typename:`LiteralValue`,value:d(u,l)}},i=2345,a=2322,o=2339,s=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=s(e,t,n);i&&(r=i)}),r},c=(e,n,r)=>{if(e.start===void 0||e.length===void 0)return!1;let c=s(n,e.start,e.start+e.length);if(!c)return!1;if((e.code===i||e.code===a)&&t.default.isExpression(c)){let e=r.getTypeAtLocation(c);if(!e.isUnion())return!1;let n=r.getContextualType(c);return n?e.types.some(e=>(e.flags&(t.default.TypeFlags.Null|t.default.TypeFlags.Undefined))===0&&r.isTypeAssignableTo(e,n)):!1}if(e.code===o&&t.default.isPropertyAccessExpression(c.parent)){let e=r.getNonNullableType(r.getTypeAtLocation(c.parent.expression));if(!e.isUnion())return!1;let t=c.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},l=(n,r,i)=>{if(!n?.startingNodeId)return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`You need to provide a starting node to be able to execute this flow.`,severity:`error`}]};if(!n.nodes?.nodes?.find(e=>e?.id==n.startingNodeId))return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.`,severity:`error`}]};let a=new Set(r?.map(e=>e.identifier)),o=(n.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!a.has(e.functionDefinition.identifier)).map(e=>({nodeId:e.id,parameterIndex:null,code:0,message:`The function definition "${e.functionDefinition.identifier}" is not reachable.`,severity:`error`}));if(o.length>0)return{isValid:!1,returnType:`void`,diagnostics:o};let s=e.n(n,r,i,!1,!1),l=`index.ts`,u=e.t(l,s),d=u.getSourceFile(l),f=u.languageService.getProgram(),p=f.getTypeChecker(),m=f.getSemanticDiagnostics(d).map(e=>{let n=(0,t.flattenDiagnosticMessageText)(e.messageText,`
7
+ `,a=`index.ts`,o=e.t(a,i),s=o.getSourceFile(a),c=o.languageService.getProgram().getTypeChecker(),l=s.statements.find(e=>t.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!l)return{__typename:`LiteralValue`,value:null};let u=c.getTypeAtLocation(l.type),d=(e,n,r=new Set)=>{let i=new Set(r);if(i.has(e))return null;let a=e.getFlags();if(e.isUnion()){if(n.type,t.default.isTypeAliasDeclaration(n)&&n.type&&t.default.isUnionTypeNode(n.type)){let e=c.getTypeFromTypeNode(n.type.types[0]);return d(e,n,i)}let r=e.types.filter(e=>{let n=e.getFlags();return!(n&t.default.TypeFlags.Undefined)&&!(n&t.default.TypeFlags.Null)}),a=r.length>0?r[0]:e.types[0];return d(a,n,i)}if(e.isIntersection()){let r=e.types.find(e=>e.getFlags()&(t.default.TypeFlags.StringLike|t.default.TypeFlags.NumberLike|t.default.TypeFlags.BooleanLike));if(r)return i.add(e),d(r,n,i)}if(a&t.default.TypeFlags.StringLiteral)return e.value;if(a&t.default.TypeFlags.String)return``;if(a&t.default.TypeFlags.NumberLiteral)return e.value;if(a&t.default.TypeFlags.Number)return 0;if(a&t.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(a&t.default.TypeFlags.Boolean)return!1;if(c.isArrayType(e)){i.add(e);let t=e.typeArguments?.[0]||c.getAnyType(),r=d(t,n,i);return r===null?[]:[r]}if(e.isClassOrInterface()||a&t.default.TypeFlags.Object||e.getProperties().length>0){i.add(e);let t={};return e.getProperties().forEach(e=>{let r=c.getTypeOfSymbolAtLocation(e,n),a=e.valueDeclaration;r&&(t[e.getName()]=d(r,a||n,i))}),t}return null};return{__typename:`LiteralValue`,value:d(u,l)}},i=2345,a=2322,o=2339,s=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=s(e,t,n);i&&(r=i)}),r},c=(e,n,r)=>{if(e.start===void 0||e.length===void 0)return!1;let c=s(n,e.start,e.start+e.length);if(!c)return!1;if((e.code===i||e.code===a)&&t.default.isExpression(c)){let e=r.getTypeAtLocation(c);if(!e.isUnion())return!1;let n=r.getContextualType(c);return n?e.types.some(e=>(e.flags&(t.default.TypeFlags.Null|t.default.TypeFlags.Undefined))===0&&r.isTypeAssignableTo(e,n)):!1}if(e.code===o&&t.default.isPropertyAccessExpression(c.parent)){let e=r.getNonNullableType(r.getTypeAtLocation(c.parent.expression));if(!e.isUnion())return!1;let t=c.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},l=(n,r,i)=>{if(!n?.startingNodeId)return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`You need to provide a starting node to be able to execute this flow.`,severity:`error`}]};if(!n.nodes?.nodes?.find(e=>e?.id==n.startingNodeId))return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.`,severity:`error`}]};let a=new Set(r?.map(e=>e.identifier)),o=(n.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!a.has(e.functionDefinition.identifier)).map(e=>({nodeId:e.id,parameterIndex:null,code:0,message:`The function definition "${e.functionDefinition.identifier}" is not reachable.`,severity:`error`}));if(o.length>0)return{isValid:!1,returnType:`void`,diagnostics:o};let s=e.n(n,r,i,!1),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
8
  `),r,i=null;if(e.start!==void 0){let t=d.getFullText(),n=Math.max(0,e.start-300),a=Math.min(t.length,e.start),o=t.substring(n,a),s=/\/\* @pos ([^ ]+) (\d+|null) \*\//g,c,l=null,u=-1;for(;(c=s.exec(o))!==null;){let t=n+c.index+c[0].length;t<=e.start&&t>u&&(u=t,l=c)}l&&(r=l[1]===`null`?null:l[1],i=parseInt(l[2],10))}let a=c(e,d,p)?`warning`:`error`;return{message:n,code:e.code,severity:a,nodeId:r,parameterIndex:typeof i==`number`&&Number.isSafeInteger(i)?i:null}}).filter(e=>e!==null);return{isValid:!m.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:m}},u=(n,r,i)=>{let a=e.y(r?.value),o=`
9
9
  ${e.r(i)}
10
10
  const testValue: ${n} = ${a};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _, y as v } from "./utils-A--QqsC6.js";
1
+ import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _, y as v } from "./utils-DuhhcdtN.js";
2
2
  import y, { flattenDiagnosticMessageText as b } from "typescript";
3
3
  //#region src/extraction/getTypeFromValue.ts
4
4
  var x = (e, t) => {
@@ -145,7 +145,7 @@ var x = (e, t) => {
145
145
  returnType: "void",
146
146
  diagnostics: i
147
147
  };
148
- let a = u(e, t, n, !1, !1), o = "index.ts", s = h(o, a), c = s.getSourceFile(o), l = s.languageService.getProgram(), d = l.getTypeChecker(), f = l.getSemanticDiagnostics(c).map((e) => {
148
+ let a = u(e, t, n, !1), o = "index.ts", s = h(o, a), c = s.getSourceFile(o), l = s.languageService.getProgram(), d = l.getTypeChecker(), f = l.getSemanticDiagnostics(c).map((e) => {
149
149
  let t = b(e.messageText, "\n"), n, r = null;
150
150
  if (e.start !== void 0) {
151
151
  let t = c.getFullText(), i = Math.max(0, e.start - 300), a = Math.min(t.length, e.start), o = t.substring(i, a), s = /\/\* @pos ([^ ]+) (\d+|null) \*\//g, l, u = null, d = -1;
package/dist/server.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BftsgxoV.cjs");let t=require("typescript");t=e.b(t,1);let n=require("ts-json-schema-generator");var r={...n.DEFAULT_CONFIG,expose:`none`,topRef:!1,jsDoc:`none`,skipTypeCheck:!0},i=(e,t)=>{let n=Object.keys(e);if(n.length===0)return{};let r=o(a(e,t)),i={};for(let e of n)try{i[e]=s(r.createSchema(e))}catch{i[e]={}}return i},a=(t,n)=>{let r=Object.entries(t).map(([e,t])=>`export type ${e} = ${t};`).join(`
2
- `);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;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-DdyNhGg7.cjs");let t=require("typescript");t=e.b(t,1);let n=require("ts-json-schema-generator");var r={...n.DEFAULT_CONFIG,expose:`none`,topRef:!1,jsDoc:`none`,skipTypeCheck:!0},i=(e,t)=>{let n=Object.keys(e);if(n.length===0)return{};let r=o(a(e,t)),i={};for(let e of n)try{i[e]=s(r.createSchema(e))}catch{i[e]={}}return i},a=(t,n)=>{let r=Object.entries(t).map(([e,t])=>`export type ${e} = ${t};`).join(`
2
+ `);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(),p=i({...f(d,c),...m(d,c,t)},r),h=(t.nodes?.nodes??[]).map(e=>e&&x(e,p));return{...t,inputSchema:p[l]??y(),outputSchema:p[u]??b(),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=p(n),a=(i?e.getResolvedSignature(i):void 0)??e.getSignatureFromDeclaration(r);if(!a)return{};let{input:o,output:s}=v(e,a,i??r);return{[l]:o,[u]:s}},p=e=>{let n;return e.forEachChild(function e(r){if(!n){if(t.default.isCallExpression(r)&&t.default.isIdentifier(r.expression)&&r.expression.text===`flow`){n=r;return}r.forEachChild(e)}}),n},m=(e,t,n)=>{let r=T(t),i={};for(let t of n.nodes?.nodes??[]){if(!t?.id)continue;let n=t.parameters?.nodes;if(!n?.some(S))continue;let a=w(r,t);a&&n.forEach((n,r)=>{if(!S(n))return;let o=a.arguments[r],s=o?e.getTypeAtLocation(o).getCallSignatures()[0]:void 0;if(!s)return;let{input:c,output:l}=h(e,s,o);i[d(t.id,r,`input`)]=c,i[d(t.id,r,`output`)]=l})}return i},h=(e,n,r)=>({input:`{ ${g(e,n,r).join(`; `)} }`,output:(n=>e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation))(e.getReturnTypeOfSignature(n))}),g=(e,n,r)=>{let i=n=>e.typeToString(n,r,t.default.TypeFormatFlags.NoTruncation),a=n.getParameters();if(a.length===1){let t=_(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=C(t)?`?`:``;return`${t.getName()}${a}: ${i(n)}`})},_=(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)}`})},v=(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=C(t)?`?`:``;return`${t.getName()}${a}: ${i(n)}`}).join(`; `)} }`,output:i(e.getReturnTypeOfSignature(n))}},y=()=>({type:`object`}),b=()=>({}),x=(e,t)=>{let n=e.parameters?.nodes;if(!n?.some(S))return e;let r=n.map((n,r)=>{if(!S(n))return n;let i={...n.value,inputSchema:t[d(e.id,r,`input`)]??y(),outputSchema:t[d(e.id,r,`output`)]??b()};return{...n,value:i}});return{...e,parameters:{...e.parameters,nodes:r}}},S=e=>e?.value?.__typename===`SubFlowValue`,C=e=>{let n=e.valueDeclaration;return!!n&&t.default.isParameter(n)&&(!!n.questionToken||!!n.initializer||!!n.dotDotDotToken)},w=(n,r)=>{let i=n.get(`node_${e.i(r.id)}`)?.initializer;return i&&t.default.isCallExpression(i)?i:void 0},T=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-A--QqsC6.js";
1
+ import { i as e, n as t, r as n, t as r } from "./utils-DuhhcdtN.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
@@ -34,12 +34,12 @@ var l = {
34
34
  if (!e) return;
35
35
  let a = "index.ts", o = t(e, n, i), s = r(a, o), c = s.getSourceFile(a), l = s.languageService.getProgram().getTypeChecker(), d = u({
36
36
  ...v(l, c),
37
- ...y(l, c, e)
38
- }, i), f = (e.nodes?.nodes ?? []).map((e) => e && E(e, d));
37
+ ...b(l, c, e)
38
+ }, i), f = (e.nodes?.nodes ?? []).map((e) => e && D(e, d));
39
39
  return {
40
40
  ...e,
41
- inputSchema: d[h] ?? w(),
42
- outputSchema: d[g] ?? T(),
41
+ inputSchema: d[h] ?? T(),
42
+ outputSchema: d[g] ?? E(),
43
43
  nodes: {
44
44
  ...e.nodes,
45
45
  nodes: f
@@ -48,66 +48,77 @@ var l = {
48
48
  }, h = "Flow_input", g = "Flow_output", _ = (t, n, r) => `Node_${e(t)}_${n}_${r}`, v = (e, t) => {
49
49
  let n = t.statements.filter(i.isFunctionDeclaration).find((e) => e.name?.getText() === "flow");
50
50
  if (!n) return {};
51
- let r = e.getSignatureFromDeclaration(n);
52
- if (!r) return {};
53
- let { input: a, output: o } = C(e, r, n);
51
+ let r = y(t), a = (r ? e.getResolvedSignature(r) : void 0) ?? e.getSignatureFromDeclaration(n);
52
+ if (!a) return {};
53
+ let { input: o, output: s } = w(e, a, r ?? n);
54
54
  return {
55
- [h]: a,
56
- [g]: o
55
+ [h]: o,
56
+ [g]: s
57
57
  };
58
- }, y = (e, t, n) => {
59
- let r = A(t), i = {};
58
+ }, y = (e) => {
59
+ let t;
60
+ return e.forEachChild(function e(n) {
61
+ if (!t) {
62
+ if (i.isCallExpression(n) && i.isIdentifier(n.expression) && n.expression.text === "flow") {
63
+ t = n;
64
+ return;
65
+ }
66
+ n.forEachChild(e);
67
+ }
68
+ }), t;
69
+ }, b = (e, t, n) => {
70
+ let r = j(t), i = {};
60
71
  for (let t of n.nodes?.nodes ?? []) {
61
72
  if (!t?.id) continue;
62
73
  let n = t.parameters?.nodes;
63
- if (!n?.some(D)) continue;
64
- let a = k(r, t);
74
+ if (!n?.some(O)) continue;
75
+ let a = A(r, t);
65
76
  a && n.forEach((n, r) => {
66
- if (!D(n)) return;
77
+ if (!O(n)) return;
67
78
  let o = a.arguments[r], s = o ? e.getTypeAtLocation(o).getCallSignatures()[0] : void 0;
68
79
  if (!s) return;
69
- let { input: c, output: l } = b(e, s, o);
80
+ let { input: c, output: l } = x(e, s, o);
70
81
  i[_(t.id, r, "input")] = c, i[_(t.id, r, "output")] = l;
71
82
  });
72
83
  }
73
84
  return i;
74
- }, b = (e, t, n) => ({
75
- input: `{ ${x(e, t, n).join("; ")} }`,
85
+ }, x = (e, t, n) => ({
86
+ input: `{ ${S(e, t, n).join("; ")} }`,
76
87
  output: ((t) => e.typeToString(t, n, i.TypeFormatFlags.NoTruncation))(e.getReturnTypeOfSignature(t))
77
- }), x = (e, t, n) => {
88
+ }), S = (e, t, n) => {
78
89
  let r = (t) => e.typeToString(t, n, i.TypeFormatFlags.NoTruncation), a = t.getParameters();
79
90
  if (a.length === 1) {
80
- let t = S(e, e.getTypeOfSymbolAtLocation(a[0], a[0].valueDeclaration ?? n), n);
91
+ let t = C(e, e.getTypeOfSymbolAtLocation(a[0], a[0].valueDeclaration ?? n), n);
81
92
  if (t) return t;
82
93
  }
83
94
  return a.map((t) => {
84
- let i = e.getTypeOfSymbolAtLocation(t, t.valueDeclaration ?? n), a = O(t) ? "?" : "";
95
+ let i = e.getTypeOfSymbolAtLocation(t, t.valueDeclaration ?? n), a = k(t) ? "?" : "";
85
96
  return `${t.getName()}${a}: ${r(i)}`;
86
97
  });
87
- }, S = (e, t, n) => {
98
+ }, C = (e, t, n) => {
88
99
  let r = t, a = r.target;
89
100
  if (a && (a.objectFlags & i.ObjectFlags.Tuple) !== 0) return e.getTypeArguments(r).map((t, r) => {
90
101
  let o = a.labeledElementDeclarations?.[r];
91
102
  return `${o?.name && i.isIdentifier(o.name) ? o.name.text : `arg${r}`}${(a.elementFlags[r] & i.ElementFlags.Optional) === 0 ? "" : "?"}: ${e.typeToString(t, n, i.TypeFormatFlags.NoTruncation)}`;
92
103
  });
93
- }, C = (e, t, n) => {
104
+ }, w = (e, t, n) => {
94
105
  let r = (t) => e.typeToString(t, n, i.TypeFormatFlags.NoTruncation);
95
106
  return {
96
107
  input: `{ ${t.parameters.map((t) => {
97
- let i = e.getTypeOfSymbolAtLocation(t, t.valueDeclaration ?? n), a = O(t) ? "?" : "";
108
+ let i = e.getTypeOfSymbolAtLocation(t, t.valueDeclaration ?? n), a = k(t) ? "?" : "";
98
109
  return `${t.getName()}${a}: ${r(i)}`;
99
110
  }).join("; ")} }`,
100
111
  output: r(e.getReturnTypeOfSignature(t))
101
112
  };
102
- }, w = () => ({ type: "object" }), T = () => ({}), E = (e, t) => {
113
+ }, T = () => ({ type: "object" }), E = () => ({}), D = (e, t) => {
103
114
  let n = e.parameters?.nodes;
104
- if (!n?.some(D)) return e;
115
+ if (!n?.some(O)) return e;
105
116
  let r = n.map((n, r) => {
106
- if (!D(n)) return n;
117
+ if (!O(n)) return n;
107
118
  let i = {
108
119
  ...n.value,
109
- inputSchema: t[_(e.id, r, "input")] ?? w(),
110
- outputSchema: t[_(e.id, r, "output")] ?? T()
120
+ inputSchema: t[_(e.id, r, "input")] ?? T(),
121
+ outputSchema: t[_(e.id, r, "output")] ?? E()
111
122
  };
112
123
  return {
113
124
  ...n,
@@ -121,13 +132,13 @@ var l = {
121
132
  nodes: r
122
133
  }
123
134
  };
124
- }, D = (e) => e?.value?.__typename === "SubFlowValue", O = (e) => {
135
+ }, O = (e) => e?.value?.__typename === "SubFlowValue", k = (e) => {
125
136
  let t = e.valueDeclaration;
126
137
  return !!t && i.isParameter(t) && (!!t.questionToken || !!t.initializer || !!t.dotDotDotToken);
127
- }, k = (t, n) => {
138
+ }, A = (t, n) => {
128
139
  let r = t.get(`node_${e(n.id)}`)?.initializer;
129
140
  return r && i.isCallExpression(r) ? r : void 0;
130
- }, A = (e) => {
141
+ }, j = (e) => {
131
142
  let t = /* @__PURE__ */ new Map();
132
143
  return e.statements.forEach((e) => {
133
144
  e.forEachChild(function e(n) {
@@ -26,20 +26,20 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
26
26
  `;function qe(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,Ke),p(v(n),[e,`lib.codezero.d.ts`],c.default,Je)}var Je={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function Ye(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)}var Xe=new Set([`number`,`string`,`boolean`]);function Ze(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]).flatMap(Ye))).map(e=>`type ${e} = ${t};`).join(`
27
27
  `),i=e?.map(e=>{let t=N(e.identifier),n=(e.genericKeys?.length??0)>0?t?`<${e.genericKeys.map(e=>e.includes(`=`)?e:`${e} = any`).join(`, `)}>`:`<${e.genericKeys?.join(`,`)}>`:``,r=e.type?.trim()??``,i=t?Xe.has(r)?`${e.type} & {}`:`{}`:e.type;return`type ${e.identifier}${n} = ${i};`}).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 Qe=/^[A-Za-z0-9_$<>\[\]{}(),.:?|&+\-'"\s]+$/,$e=e=>{if(!Qe.test(e))return!1;let t={"<":`>`,"[":`]`,"{":`}`,"(":`)`},n=[],r=null;for(let i of e){if(r){i===r&&(r=null);continue}if(i===`'`||i===`"`)r=i;else if(t[i])n.push(t[i]);else if((i===`>`||i===`]`||i===`}`||i===`)`)&&n.pop()!==i)return!1}return r===null&&n.length===0},X=(e,t)=>{let n=t?.trim();return!n||!$e(n)?e:`(${e}) as unknown as ${n}`},Z=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`),Q=e=>e.replace(/\\/g,`\\\\`).replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),et=(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`?et(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 tt(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,o=r?`/* @pos ${e} ${i} */ ${X(`{}`,n.cast)}`:`/* @pos ${e} ${i} */ undefined`;if(!a)return o;if(a.__typename===`ReferenceValue`)return`/* @pos ${e} ${i} */ ${X(c(a),n.cast)}`;if(a.__typename===`LiteralValue`){let r=u(a.value,a.references,{id:e,index:i,indent:t});return r===void 0?`/* @pos ${e} ${i} */ undefined`:`/* @pos ${e} ${i} */ ${X(r,n.cast)}`}return a.__typename===`SubFlowValue`?`/* @pos ${e} ${i} */ ${l(a,e,i,t)}`:o}),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
- ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
31
- }`):n.functionDefinition.identifier===`std::control::if_else`?(m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,m+=`if(${i[0]}) {
32
- ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
29
+ `)??``;return`${n?r:``}\n${i}\n${a}`}var Qe=/^[A-Za-z0-9_$<>\[\]{}(),.:?|&+\-'"\s]+$/,$e=e=>{if(!Qe.test(e))return!1;let t={"<":`>`,"[":`]`,"{":`}`,"(":`)`},n=[],r=null;for(let i of e){if(r){i===r&&(r=null);continue}if(i===`'`||i===`"`)r=i;else if(t[i])n.push(t[i]);else if((i===`>`||i===`]`||i===`}`||i===`)`)&&n.pop()!==i)return!1}return r===null&&n.length===0},X=(e,t)=>{let n=t?.trim();return!n||!$e(n)?e:`(${e}) as unknown as ${n}`},Z=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`),Q=e=>e.replace(/\\/g,`\\\\`).replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),et=(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`?et(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 tt(e,t,n,r=!0){let i=e?.nodes?.nodes||[],a=new Map(t?.map(e=>[e.identifier,e])),o=new Set,s=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})${r?`!`:``}`},c=(e,t,n,r)=>!e.startingNodeId&&e.functionDefinition?.identifier?`fn_${e.functionDefinition.identifier.replace(/::/g,`_`)}`:`(...${`p_${Z(t)}_${n}`}) => {\n${u(e.startingNodeId||e.functionDefinition?.id,r+` `)}${r}}`,l=(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,s(t));else if(t?.__typename===`LiteralValue`){let i=l(t.value,t.references,n);i!==void 0&&r.set(e.signature,i)}else t?.__typename===`SubFlowValue`&&r.set(e.signature,c(t,n.id,n.index,n.indent))}return r.size===0?y(e):$(e,r)},u=(e,t=``)=>{let n=i.find(t=>t?.id===e);if(!n||!n.functionDefinition)return``;if(e?.includes(`NodeFunction`)&&o.add(e),!a.get(n.functionDefinition.identifier))return`${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;let r=(n.parameters?.nodes||[]).map((n,r)=>{let i=n.value,a=`/* @pos ${e} ${r} */ undefined`;if(!i)return a;if(i.__typename===`ReferenceValue`)return`/* @pos ${e} ${r} */ ${X(s(i),n.cast)}`;if(i.__typename===`LiteralValue`){let a=l(i.value,i.references,{id:e,index:r,indent:t});return a===void 0?`/* @pos ${e} ${r} */ undefined`:`/* @pos ${e} ${r} */ ${X(a,n.cast)}`}return i.__typename===`SubFlowValue`?`/* @pos ${e} ${r} */ ${c(i,e,r,t)}`:a}),d=`node_${Z(n.id)}`,f=`fn_${n?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;r.includes(`undefined`);let p=`${t}`;return n.functionDefinition.identifier===`std::control::return`?(p+=`const ${d} = /* @pos ${e} null */ ${f}(${r.join(`, `)}) ;\n`,p+=`return ${d};\n`):n.functionDefinition.identifier===`std::control::if`?(p+=`const ${d} = /* @pos ${e} null */ ${f}(${r.join(`, `)}) ;\n`,p+=`if(${r[0]}) {
30
+ ${u(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
31
+ }`):n.functionDefinition.identifier===`std::control::if_else`?(p+=`const ${d} = /* @pos ${e} null */ ${f}(${r.join(`, `)}) ;\n`,p+=`if(${r[0]}) {
32
+ ${u(n.parameters?.nodes?.[1]?.value?.startingNodeId||(n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,t+` `)}
33
33
  } else {
34
- ${d(n.parameters?.nodes?.[2]?.value?.startingNodeId||(n.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier,t+` `)}
35
- }`):m+=`const ${f} = /* @pos ${e} null */ ${p}(${i.join(`, `)}) ;\n`,n.nextNodeId&&(m+=d(n.nextNodeId,t)),m},f=Ze(n),p=`declare function flow${e?.signature??`(): void`}`,m=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
36
- `),h=new Set(a.map(e=>e?.nextNodeId).filter(e=>!!e)),g=new Set;return a.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`SubFlowValue`&&(e.value.startingNodeId||e.value.functionDefinition?.id)&&g.add(e.value.startingNodeId||e.value.functionDefinition?.id)})),`
34
+ ${u(n.parameters?.nodes?.[2]?.value?.startingNodeId||(n.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier,t+` `)}
35
+ }`):p+=`const ${d} = /* @pos ${e} null */ ${f}(${r.join(`, `)}) ;\n`,n.nextNodeId&&(p+=u(n.nextNodeId,t)),p},d=Ze(n),f=`declare function flow${e?.signature??`(): void`}`,p=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
36
+ `),m=new Set(i.map(e=>e?.nextNodeId).filter(e=>!!e)),h=new Set;return i.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`SubFlowValue`&&(e.value.startingNodeId||e.value.functionDefinition?.id)&&h.add(e.value.startingNodeId||e.value.functionDefinition?.id)})),`
37
+ ${d}\n
37
38
  ${f}\n
38
39
  ${p}\n
39
- ${m}\n
40
40
  (() =>
41
41
  ${e?`const flow_${Z(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>{let n=e?.value!==null&&e?.value!==void 0?y(e.value):void 0;return`/* @pos null ${t} */ ${n===void 0?`undefined`:X(n,e?.cast)}`}).join(`, `)??``});`:``}
42
- ${a.filter(e=>e?.id&&!h.has(e.id)&&!g.has(e.id)).map(e=>d(e.id)).join(`
42
+ ${i.filter(e=>e?.id&&!m.has(e.id)&&!h.has(e.id)).map(e=>u(e.id)).join(`
43
43
  `)}
44
44
  )();
45
45
  `}Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return y}});
@@ -925,65 +925,65 @@ var We = /^[A-Za-z0-9_$<>\[\]{}(),.:?|&+\-'"\s]+$/, Ge = (e) => {
925
925
  }
926
926
  return a += Q(e.slice(o)), "`" + a + "`";
927
927
  }, $ = (e, t) => typeof e == "string" ? Ke(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";
928
- function qe(e, t, n, r = !1, i = !0) {
929
- let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t) => {
928
+ function qe(e, t, n, r = !0) {
929
+ let i = e?.nodes?.nodes || [], a = new Map(t?.map((e) => [e.identifier, e])), o = /* @__PURE__ */ new Set(), s = (t) => {
930
930
  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")}`;
931
931
  return t.referencePath?.forEach((e) => {
932
932
  n += `?.${e.path}`;
933
- }), `(${n})${i ? "!" : ""}`;
934
- }, 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) => {
933
+ }), `(${n})${r ? "!" : ""}`;
934
+ }, c = (e, t, n, r) => !e.startingNodeId && e.functionDefinition?.identifier ? `fn_${e.functionDefinition.identifier.replace(/::/g, "_")}` : `(...${`p_${Z(t)}_${n}`}) => {\n${u(e.startingNodeId || e.functionDefinition?.id, r + " ")}${r}}`, l = (e, t, n) => {
935
935
  if (e == null) return;
936
936
  let r = /* @__PURE__ */ new Map();
937
937
  for (let e of t ?? []) {
938
938
  if (!e?.signature) continue;
939
939
  let t = e.value;
940
- if (t?.__typename === "ReferenceValue") r.set(e.signature, c(t));
940
+ if (t?.__typename === "ReferenceValue") r.set(e.signature, s(t));
941
941
  else if (t?.__typename === "LiteralValue") {
942
- let i = u(t.value, t.references, n);
942
+ let i = l(t.value, t.references, n);
943
943
  i !== void 0 && r.set(e.signature, i);
944
- } else t?.__typename === "SubFlowValue" && r.set(e.signature, l(t, n.id, n.index, n.indent));
944
+ } else t?.__typename === "SubFlowValue" && r.set(e.signature, c(t, n.id, n.index, n.indent));
945
945
  }
946
946
  return r.size === 0 ? h(e) : $(e, r);
947
- }, d = (e, t = "") => {
948
- let n = a.find((t) => t?.id === e);
947
+ }, u = (e, t = "") => {
948
+ let n = i.find((t) => t?.id === e);
949
949
  if (!n || !n.functionDefinition) return "";
950
- if (e?.includes("NodeFunction") && s.add(e), !o.get(n.functionDefinition.identifier)) return `${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;
951
- let i = (n.parameters?.nodes || []).map((n, i) => {
952
- let a = n.value, o = r ? `/* @pos ${e} ${i} */ ${X("{}", n.cast)}` : `/* @pos ${e} ${i} */ undefined`;
953
- if (!a) return o;
954
- if (a.__typename === "ReferenceValue") return `/* @pos ${e} ${i} */ ${X(c(a), n.cast)}`;
955
- if (a.__typename === "LiteralValue") {
956
- let r = u(a.value, a.references, {
950
+ if (e?.includes("NodeFunction") && o.add(e), !a.get(n.functionDefinition.identifier)) return `${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;
951
+ let r = (n.parameters?.nodes || []).map((n, r) => {
952
+ let i = n.value, a = `/* @pos ${e} ${r} */ undefined`;
953
+ if (!i) return a;
954
+ if (i.__typename === "ReferenceValue") return `/* @pos ${e} ${r} */ ${X(s(i), n.cast)}`;
955
+ if (i.__typename === "LiteralValue") {
956
+ let a = l(i.value, i.references, {
957
957
  id: e,
958
- index: i,
958
+ index: r,
959
959
  indent: t
960
960
  });
961
- return r === void 0 ? `/* @pos ${e} ${i} */ undefined` : `/* @pos ${e} ${i} */ ${X(r, n.cast)}`;
961
+ return a === void 0 ? `/* @pos ${e} ${r} */ undefined` : `/* @pos ${e} ${r} */ ${X(a, n.cast)}`;
962
962
  }
963
- return a.__typename === "SubFlowValue" ? `/* @pos ${e} ${i} */ ${l(a, e, i, t)}` : o;
964
- }), f = `node_${Z(n.id)}`, p = `fn_${n?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
965
- i.includes("undefined");
966
- let m = `${t}`;
967
- 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]}) {
968
- ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
969
- }`) : n.functionDefinition.identifier === "std::control::if_else" ? (m += `const ${f} = /* @pos ${e} null */ ${p}(${i.join(", ")}) ;\n`, m += `if(${i[0]}) {
970
- ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
963
+ return i.__typename === "SubFlowValue" ? `/* @pos ${e} ${r} */ ${c(i, e, r, t)}` : a;
964
+ }), d = `node_${Z(n.id)}`, f = `fn_${n?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
965
+ r.includes("undefined");
966
+ let p = `${t}`;
967
+ return n.functionDefinition.identifier === "std::control::return" ? (p += `const ${d} = /* @pos ${e} null */ ${f}(${r.join(", ")}) ;\n`, p += `return ${d};\n`) : n.functionDefinition.identifier === "std::control::if" ? (p += `const ${d} = /* @pos ${e} null */ ${f}(${r.join(", ")}) ;\n`, p += `if(${r[0]}) {
968
+ ${u(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
969
+ }`) : n.functionDefinition.identifier === "std::control::if_else" ? (p += `const ${d} = /* @pos ${e} null */ ${f}(${r.join(", ")}) ;\n`, p += `if(${r[0]}) {
970
+ ${u(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
971
971
  } else {
972
- ${d(n.parameters?.nodes?.[2]?.value?.startingNodeId || (n.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, t + " ")}
973
- }`) : m += `const ${f} = /* @pos ${e} null */ ${p}(${i.join(", ")}) ;\n`, n.nextNodeId && (m += d(n.nextNodeId, t)), m;
974
- }, f = Y(n), p = `declare function flow${e?.signature ?? "(): void"}`, m = t?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join("\n"), g = new Set(a.map((e) => e?.nextNodeId).filter((e) => !!e)), _ = /* @__PURE__ */ new Set();
975
- return a.forEach((e) => e?.parameters?.nodes?.forEach((e) => {
976
- e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && _.add(e.value.startingNodeId || e.value.functionDefinition?.id);
972
+ ${u(n.parameters?.nodes?.[2]?.value?.startingNodeId || (n.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, t + " ")}
973
+ }`) : p += `const ${d} = /* @pos ${e} null */ ${f}(${r.join(", ")}) ;\n`, n.nextNodeId && (p += u(n.nextNodeId, t)), p;
974
+ }, d = Y(n), f = `declare function flow${e?.signature ?? "(): void"}`, p = t?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join("\n"), m = new Set(i.map((e) => e?.nextNodeId).filter((e) => !!e)), g = /* @__PURE__ */ new Set();
975
+ return i.forEach((e) => e?.parameters?.nodes?.forEach((e) => {
976
+ e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && g.add(e.value.startingNodeId || e.value.functionDefinition?.id);
977
977
  })), `
978
+ ${d}\n
978
979
  ${f}\n
979
980
  ${p}\n
980
- ${m}\n
981
981
  (() =>
982
982
  ${e ? `const flow_${Z(e.id ?? "")} = /* @pos null null */ flow(${e.settings?.nodes?.map((e, t) => {
983
983
  let n = e?.value !== null && e?.value !== void 0 ? h(e.value) : void 0;
984
984
  return `/* @pos null ${t} */ ${n === void 0 ? "undefined" : X(n, e?.cast)}`;
985
985
  }).join(", ") ?? ""});` : ""}
986
- ${a.filter((e) => e?.id && !g.has(e.id) && !_.has(e.id)).map((e) => d(e.id)).join("\n")}
986
+ ${i.filter((e) => e?.id && !m.has(e.id) && !g.has(e.id)).map((e) => u(e.id)).join("\n")}
987
987
  )();
988
988
  `;
989
989
  }
package/dist/utils.d.ts CHANGED
@@ -38,4 +38,4 @@ export declare const sanitizeId: (id: string) => string;
38
38
  /**
39
39
  * Generates TypeScript source code for a flow, suitable for validation and type inference.
40
40
  */
41
- export declare function generateFlowSourceCode(flow?: Flow, functions?: FunctionDefinition[], dataTypes?: DataType[], isForInference?: boolean, assertNonNullReferences?: boolean): string;
41
+ export declare function generateFlowSourceCode(flow?: Flow, functions?: FunctionDefinition[], dataTypes?: DataType[], assertNonNullReferences?: boolean): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code0-tech/triangulum",
3
- "version": "0.38.1",
3
+ "version": "0.38.2",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/code0-tech/triangulum#readme",
6
6
  "bugs": {