@code0-tech/triangulum 0.14.0 → 0.14.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.
|
@@ -4,7 +4,8 @@ import { Schema } from '../util/schema.util';
|
|
|
4
4
|
* Represents the schema information for a node parameter.
|
|
5
5
|
* Includes the parameter's schema definition and any parameter dependencies that block it.
|
|
6
6
|
*/
|
|
7
|
-
interface NodeSchema {
|
|
7
|
+
export interface NodeSchema {
|
|
8
|
+
nodeId: NodeFunction["id"];
|
|
8
9
|
/** The schema definition for this node parameter */
|
|
9
10
|
schema: Schema;
|
|
10
11
|
/** Array of parameter indices that must be resolved before this parameter */
|
|
@@ -31,4 +32,3 @@ interface NodeSchema {
|
|
|
31
32
|
* });
|
|
32
33
|
*/
|
|
33
34
|
export declare const getSignatureSchema: (flow: Flow, dataTypes: DataType[], functions: FunctionDefinition[], nodeId?: NodeFunction["id"]) => NodeSchema[];
|
|
34
|
-
export {};
|
package/dist/triangulum.cjs.js
CHANGED
|
@@ -52,4 +52,4 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
52
52
|
${D(n)}
|
|
53
53
|
const testValue: ${e} = ${r};
|
|
54
54
|
`,a=`index.ts`,o=T(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
|
|
55
|
-
`),n=t.includes(`not assignable to parameter of type`)&&(t.includes(`'{}'`)||t.includes(`undefined`))||t.includes(`not assignable to type 'undefined'`)||t.includes(`not assignable to type 'void'`)||t.includes(`may be a mistake because neither type sufficiently overlaps`);return{message:t,code:e.code,severity:n?`warning`:`error`}});return{isValid:!o.some(e=>e.severity===`error`),returnType:`void`,diagnostics:o}},M=e=>e.isUnion()?e.types.flatMap(M):e.isStringLiteral()?[{value:e.value,__typename:`LiteralValue`}]:e.isNumberLiteral()?[{value:e.value.toString()}]:e.intrinsicName===`true`?[{value:`true`,__typename:`LiteralValue`}]:e.intrinsicName===`false`?[{value:`false`,__typename:`LiteralValue`}]:[],N=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!P(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?F(i,o,e,n):i.startsWith(`p_`)?I(i,o,e,n):i.startsWith(`flow_`)?L(o,e,n):[]}),P=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),F=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=R(e.replace(`node_`,``));return B(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},I=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=z(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>B(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}))},L=(e,t,n)=>B(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),R=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),z=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:R(r),paramIndexFromName:i}},B=(e,t,n,r=[])=>{let i=[];if(t.isTypeAssignableTo(e,n)&&i.push({path:r,type:e}),V(e)){let a=e.getProperties();a&&a.length>0&&a.forEach(e=>{let a=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),o=e.getName(),s=[...r,{path:o}];i.push(...B(a,t,n,s))})}return i},V=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},H=(e,t,n,r)=>Q(r)?[]:t.flatMap(t=>{let i=U(e,t,n,r);return i?[i]:[]}),U=(e,t,n,r)=>{let i=e.getSignatureFromDeclaration(t),a=W(e,e.getReturnTypeOfSignature(i));if(!e.isTypeAssignableTo(a,r))return null;let o=G(t.name?.getText());return re(n.find(e=>e.identifier===o))},W=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,G=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,re=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}};return t&&(n.parameters=K(e?.parameterDefinitions?.nodes||[])),n},K=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>q(e))}),q=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),J=(e,t,n,r,i)=>{let a=M(n),o=N(e,t,n,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)),s=H(e,r,i,n),l={suggestions:[...a,...o,...s]};if(
|
|
55
|
+
`),n=t.includes(`not assignable to parameter of type`)&&(t.includes(`'{}'`)||t.includes(`undefined`))||t.includes(`not assignable to type 'undefined'`)||t.includes(`not assignable to type 'void'`)||t.includes(`may be a mistake because neither type sufficiently overlaps`);return{message:t,code:e.code,severity:n?`warning`:`error`}});return{isValid:!o.some(e=>e.severity===`error`),returnType:`void`,diagnostics:o}},M=e=>e.isUnion()?e.types.flatMap(M):e.isStringLiteral()?[{value:e.value,__typename:`LiteralValue`}]:e.isNumberLiteral()?[{value:e.value.toString()}]:e.intrinsicName===`true`?[{value:`true`,__typename:`LiteralValue`}]:e.intrinsicName===`false`?[{value:`false`,__typename:`LiteralValue`}]:[],N=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!P(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?F(i,o,e,n):i.startsWith(`p_`)?I(i,o,e,n):i.startsWith(`flow_`)?L(o,e,n):[]}),P=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),F=(e,t,n,r)=>{if((t.flags&c.default.TypeFlags.Void)!==0)return[];let i=R(e.replace(`node_`,``));return B(t,n,r).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:i};return e.length>0&&(t.referencePath=e),t})},I=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=z(e);if(!n.isTupleType(t))return[];let o=t;return n.getTypeArguments(o).flatMap((e,t)=>B(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}))},L=(e,t,n)=>B(e,t,n).flatMap(({path:e})=>{let t={__typename:`ReferenceValue`,nodeFunctionId:null};return e.length>0&&(t.referencePath=e),t}),R=e=>e.replace(/___/g,`://`).replace(/__/g,`/`).replace(/_/g,`/`),z=e=>{let t=e.replace(`p_`,``),n=t.lastIndexOf(`_`),r=t.substring(0,n),i=parseInt(t.substring(n+1),10);return{nodeFunctionId:R(r),paramIndexFromName:i}},B=(e,t,n,r=[])=>{let i=[];if(t.isTypeAssignableTo(e,n)&&i.push({path:r,type:e}),V(e)){let a=e.getProperties();a&&a.length>0&&a.forEach(e=>{let a=t.getTypeOfSymbolAtLocation(e,e.valueDeclaration),o=e.getName(),s=[...r,{path:o}];i.push(...B(a,t,n,s))})}return i},V=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},H=(e,t,n,r)=>Q(r)?[]:t.flatMap(t=>{let i=U(e,t,n,r);return i?[i]:[]}),U=(e,t,n,r)=>{let i=e.getSignatureFromDeclaration(t),a=W(e,e.getReturnTypeOfSignature(i));if(!e.isTypeAssignableTo(a,r))return null;let o=G(t.name?.getText());return re(n.find(e=>e.identifier===o))},W=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,G=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,re=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}};return t&&(n.parameters=K(e?.parameterDefinitions?.nodes||[])),n},K=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>q(e))}),q=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),J=(e,t,n,r,i)=>{let a=M(n),o=N(e,t,n,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)),s=H(e,r,i,n),l={suggestions:[...a,...o,...s]};if(Y(n))return{input:`boolean`,...l};if(X(n))return{input:`number`,...l};if(Z(n))return{input:`text`,...l};if(ae(n))return{input:`select`,...l};if(Q(n))return{input:`sub-flow`,...l};if(oe(e,n)){let a=e.getTypeArguments(n)[0],o=(a.isUnion()?a.types:[a]).map(n=>J(e,t,n,r,i));return{input:`list`,items:o.length===1?o[0]:o,...l}}if((n.flags&c.default.TypeFlags.Object)!==0){let a={},o=[];for(let s of e.getPropertiesOfType(n)){let n=s.valueDeclaration??s.declarations?.[0];if(!n)continue;let l=e.getTypeOfSymbolAtLocation(s,n),u=(s.flags&c.default.SymbolFlags.Optional)!==0||l.isUnion()&&l.types.some(e=>(e.flags&c.default.TypeFlags.Undefined)!==0),d=(l.isUnion()?l.types.filter(e=>(e.flags&c.default.TypeFlags.Undefined)===0):[l]).map(n=>J(e,t,n,r,i));a[s.name]=d.length===1?d[0]:d,u||o.push(s.name)}return{input:`data`,properties:a,required:o,...l}}return{input:`generic`}};function Y(e){return(e.flags&c.default.TypeFlags.Boolean)!==0||(e.flags&c.default.TypeFlags.BooleanLiteral)!==0}function X(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function Z(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function ie(e){return Z(e)||X(e)||Y(e)}function ae(e){return e.isUnion()?e.types.every(ie):!1}function oe(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Q(e){return e.getCallSignatures().length>0}var $=(e,t,n,r)=>{let i=k(e,n,t),a=`index.ts`,o=T(a,i),s=o.getSourceFile(a),c=o.languageService.getProgram().getTypeChecker(),l=e.nodes?.nodes?.find(e=>e?.id===r),u=r?`fn_${l?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,d=r?`node_${O(r)}`:`flow_${O(e.id)}`,f=se(s),p=ce(s).get(d),m=f.get(u),h=le(c,p);return pe(r,c,p,de(c,ue(c,m,p),h),fe(m),r?f:new Map,r?n:[])},se=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),ce=e=>{let t=[];return e.statements.forEach(e=>{e.forEachChild(function e(n){c.default.isVariableDeclaration(n)&&(n.parent.flags&c.default.NodeFlags.Const)!==0&&t.push([n.name.getText(),n]),n.forEachChild(e)})}),new Map(t)},le=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},ue=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},de=(e,t,n)=>{if(t)return t.map((t,r)=>{let i=n?.[r];if(!i)return t;let a=t.getSymbol(),o=i.getSymbol();if(a&&o&&a===o)return i;if(t.isTypeParameter()){let n=e.getBaseConstraintOfType(t);if(!n||e.isTypeAssignableTo(i,n))return i}return e.isTypeAssignableTo(i,t)?i:t})},fe=e=>{let t=e.typeParameters?.map(e=>e.name.getText())||[],n={};return e.parameters.forEach((e,r)=>{let i=e.type?.getText()||``;t.forEach(e=>{i.includes(e)&&(n[e]||(n[e]=[]),n[e].push(r))})}),Object.values(n).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat()},pe=(e,t,n,r,i,a,o)=>r?r.map((r,s)=>({nodeId:e,schema:J(t,n,r,Array.from(a.values()),o),blockedBy:i.filter(e=>e.parameterIndex===s).map(e=>e.dependsOnIndex)})):[];exports.getFlowValidation=A,exports.getSignatureSchema=$,exports.getTypeFromValue=te,exports.getValueFromType=ne,exports.getValueValidation=j;
|
package/dist/triangulum.es.js
CHANGED
|
@@ -556,10 +556,6 @@ var w = (t, n) => {
|
|
|
556
556
|
...s,
|
|
557
557
|
...c
|
|
558
558
|
] };
|
|
559
|
-
if (X(r)) return {
|
|
560
|
-
input: "select",
|
|
561
|
-
...l
|
|
562
|
-
};
|
|
563
559
|
if (K(r)) return {
|
|
564
560
|
input: "boolean",
|
|
565
561
|
...l
|
|
@@ -572,6 +568,10 @@ var w = (t, n) => {
|
|
|
572
568
|
input: "text",
|
|
573
569
|
...l
|
|
574
570
|
};
|
|
571
|
+
if (X(r)) return {
|
|
572
|
+
input: "select",
|
|
573
|
+
...l
|
|
574
|
+
};
|
|
575
575
|
if (Q(r)) return {
|
|
576
576
|
input: "sub-flow",
|
|
577
577
|
...l
|
|
@@ -626,7 +626,7 @@ function Q(e) {
|
|
|
626
626
|
//#region src/schema/getSignatureSchema.ts
|
|
627
627
|
var $ = (e, t, n, r) => {
|
|
628
628
|
let i = C(e, n, t), a = "index.ts", o = y(a, i), s = o.getSourceFile(a), c = o.languageService.getProgram().getTypeChecker(), l = e.nodes?.nodes?.find((e) => e?.id === r), u = r ? `fn_${l?.functionDefinition?.identifier?.replace(/::/g, "_")}` : "flow", d = r ? `node_${S(r)}` : `flow_${S(e.id)}`, f = ee(s), p = te(s).get(d), m = f.get(u), h = ne(c, p);
|
|
629
|
-
return oe(c, p, ie(c, re(c, m, p), h), ae(m), r ? f : /* @__PURE__ */ new Map(), r ? n : []);
|
|
629
|
+
return oe(r, c, p, ie(c, re(c, m, p), h), ae(m), r ? f : /* @__PURE__ */ new Map(), r ? n : []);
|
|
630
630
|
}, ee = (t) => new Map(t.statements.filter(e.isFunctionDeclaration).map((e) => [e.name.getText(), e])), te = (t) => {
|
|
631
631
|
let n = [];
|
|
632
632
|
return t.statements.forEach((t) => {
|
|
@@ -664,9 +664,10 @@ var $ = (e, t, n, r) => {
|
|
|
664
664
|
parameterIndex: t,
|
|
665
665
|
dependsOnIndex: e
|
|
666
666
|
}))).flat();
|
|
667
|
-
}, oe = (e, t, n, r, i, a) =>
|
|
668
|
-
|
|
669
|
-
|
|
667
|
+
}, oe = (e, t, n, r, i, a, o) => r ? r.map((r, s) => ({
|
|
668
|
+
nodeId: e,
|
|
669
|
+
schema: G(t, n, r, Array.from(a.values()), o),
|
|
670
|
+
blockedBy: i.filter((e) => e.parameterIndex === s).map((e) => e.dependsOnIndex)
|
|
670
671
|
})) : [];
|
|
671
672
|
//#endregion
|
|
672
673
|
export { E as getFlowValidation, $ as getSignatureSchema, w as getTypeFromValue, T as getValueFromType, D as getValueValidation };
|
|
@@ -14,14 +14,14 @@ interface Input {
|
|
|
14
14
|
* Represents a generic input type with no specific structure.
|
|
15
15
|
* Used as a fallback when the type cannot be determined.
|
|
16
16
|
*/
|
|
17
|
-
interface GenericInput {
|
|
17
|
+
interface GenericInput extends Input {
|
|
18
18
|
input?: "generic";
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Represents a sub-flow input type (callable/function type).
|
|
22
22
|
* Used for types that have call signatures.
|
|
23
23
|
*/
|
|
24
|
-
interface SubFlowInput {
|
|
24
|
+
interface SubFlowInput extends Input {
|
|
25
25
|
input?: "sub-flow";
|
|
26
26
|
}
|
|
27
27
|
/**
|