@code0-tech/triangulum 0.31.1 → 0.33.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,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BBizp0Um.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-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=`
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=`
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
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-DwlsxHiu.js";
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
2
  import u, { flattenDiagnosticMessageText as d } from "typescript";
3
3
  //#region src/extraction/getTypeFromValue.ts
4
4
  var f = (e, t) => {
package/dist/server.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BBizp0Um.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-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(`
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-DwlsxHiu.js";
1
+ import { i as e, n as t, r as n, t as r } from "./utils-DHs93w48.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
@@ -67,6 +67,16 @@ export interface PrimitiveInput extends Input {
67
67
  export interface DateInput extends Input {
68
68
  input?: "date";
69
69
  }
70
+ /**
71
+ * Represents a color input type.
72
+ * Emitted for the COLOR data type so the UI can render a dedicated color picker
73
+ * instead of expanding the `{ hue, saturation, lightness, alpha? }` object its
74
+ * underlying type would otherwise produce. Like {@link DateInput}, it carries no
75
+ * additional properties.
76
+ */
77
+ export interface ColorInput extends Input {
78
+ input?: "color";
79
+ }
70
80
  /**
71
81
  * Represents a file input type.
72
82
  * Emitted for the FILE data type so the UI can render a dedicated file picker
@@ -96,6 +106,58 @@ export interface ListFileInput extends Input {
96
106
  /** See {@link FileInput.mimetype}. */
97
107
  mimetype?: string;
98
108
  }
109
+ /**
110
+ * Represents a list of select inputs.
111
+ * Emitted for any array/list whose element is a select type (a primitive
112
+ * literal union or a single string/number literal — e.g. `LIST<HTTP_METHOD>`,
113
+ * `('GET' | 'POST')[]`) so the UI can render a dedicated multi-select instead
114
+ * of the generic list input its underlying type would otherwise produce.
115
+ */
116
+ export interface ListSelectInput extends Omit<ListInput, 'input'> {
117
+ input?: "list-select";
118
+ }
119
+ /**
120
+ * Represents a list of boolean inputs.
121
+ * Emitted for any array/list of plain booleans (e.g. `LIST<BOOLEAN>`,
122
+ * `boolean[]`) so the UI can render a dedicated multi-boolean input instead of
123
+ * the generic list of individual boolean inputs its underlying type would
124
+ * otherwise produce. Carries the per-item schemas in `items`, like a generic
125
+ * {@link ListInput}.
126
+ */
127
+ export interface ListBooleanInput extends Omit<ListInput, 'input'> {
128
+ input?: "list-boolean";
129
+ }
130
+ /**
131
+ * Represents a list of number inputs.
132
+ * Emitted for any array/list of plain numbers (e.g. `LIST<NUMBER>`, `number[]`)
133
+ * so the UI can render a dedicated multi-number input instead of the generic
134
+ * list of individual number inputs its underlying type would otherwise produce.
135
+ * Carries the per-item schemas in `items`, like a generic {@link ListInput}.
136
+ */
137
+ export interface ListNumberInput extends Omit<ListInput, 'input'> {
138
+ input?: "list-number";
139
+ }
140
+ /**
141
+ * Represents a list of text inputs.
142
+ * Emitted for any array/list of plain strings (e.g. `LIST<TEXT>`, `string[]`)
143
+ * so the UI can render a dedicated multi-text input instead of the generic list
144
+ * of individual text inputs its underlying type would otherwise produce. Carries
145
+ * the per-item schemas in `items`, like a generic {@link ListInput}.
146
+ */
147
+ export interface ListTextInput extends Omit<ListInput, 'input'> {
148
+ input?: "list-text";
149
+ }
150
+ /**
151
+ * Represents a list of sub-flow inputs.
152
+ * Emitted for any array/list whose element is a callable/sub-flow type (e.g.
153
+ * `LIST<FLOW>`, `(() => void)[]`) so the UI can render a dedicated multi-sub-flow
154
+ * input instead of the generic list of individual sub-flow inputs its underlying
155
+ * type would otherwise produce. Carries the per-item schemas in `items`, like a
156
+ * generic {@link ListInput}.
157
+ */
158
+ export interface ListSubFlowInput extends Omit<ListInput, 'input'> {
159
+ input?: "list-sub-flow";
160
+ }
99
161
  /**
100
162
  * Represents a data object input type with structured properties.
101
163
  * Includes property definitions and required field tracking.
@@ -131,7 +193,7 @@ export interface TypeInput extends Input {
131
193
  * Union type representing all possible schema input types.
132
194
  * Discriminated union based on the 'input' field.
133
195
  */
134
- export type Schema = PrimitiveInput | DateInput | FileInput | ListFileInput | DataInput | ListInput | TypeInput | SubFlowInput | GenericInput;
196
+ export type Schema = PrimitiveInput | DateInput | ColorInput | FileInput | ListFileInput | ListSelectInput | ListBooleanInput | ListNumberInput | ListTextInput | ListSubFlowInput | DataInput | ListInput | TypeInput | SubFlowInput | GenericInput;
135
197
  /**
136
198
  * Generates a schema definition for a given TypeScript type.
137
199
  *
@@ -157,28 +219,6 @@ export type Schema = PrimitiveInput | DateInput | FileInput | ListFileInput | Da
157
219
  * @returns A Schema object describing how to handle the parameter type
158
220
  */
159
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;
160
- /**
161
- * Merges a function-declared parameter schema with the schema derived from the
162
- * concrete node value. The function schema is treated as the source of truth for
163
- * the structural shape (input kind, properties, items); the node schema only
164
- * contributes additional suggestions and, when the function schema is generic,
165
- * a fallback shape.
166
- *
167
- * Rules:
168
- * - If the function schema is generic, follow the node schema — but never as a
169
- * select. A single literal value (e.g. "Test") narrowing a generic T must not
170
- * collapse the input into a select with one option; it should remain free-form
171
- * text/number/boolean matching the literal kind.
172
- * - Otherwise use the function schema's input kind and merge suggestions from both.
173
- * Recurse into `properties` (for data) and `items` (for list) so nested generics
174
- * inside concrete containers are handled the same way.
175
- *
176
- * Suggestions are concatenated and de-duplicated by structural equality.
177
- *
178
- * @param functionSchema - The schema derived from the declared function parameter type
179
- * @param nodeSchema - The schema derived from the node's concrete (narrowed) parameter type
180
- * @returns A single merged schema
181
- */
182
222
  export declare const mergeSchemas: (functionSchema: Schema | undefined, nodeSchema: Schema, valueProvided?: boolean) => Schema;
183
223
  /**
184
224
  * Checks if a type is a callable type (has call signatures).
@@ -0,0 +1,45 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("typescript");c=s(c,1);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}var u=!1;try{u=typeof localStorage<`u`}catch{}var d=typeof process<`u`,f=u&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||d&&process.env.DEBUG?console.log:function(e){return``};function p(e,t,n,r,i){r===void 0&&(r={});var a=l({},g(n),r),o=te(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,u=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=v(e,r,n);throw Error(n.formatDiagnostics(f,p.compilerHost))}return{name:`vfs`,sys:e,languageService:d,getSourceFile:function(e){return d.getProgram()?.getSourceFile(e)},createFile:function(e,t){c(n.createSourceFile(e,t,a.target,!1))},updateFile:function(e,t,r){var i=d.getProgram().getSourceFile(e);if(!i)throw Error(`Did not find a source file for `+e);var a=i.text,o=r??n.createTextSpan(0,a.length),s=a.slice(0,o.start)+t+a.slice(o.start+o.length);c(n.updateSourceFile(i,s,{span:o,newLength:t.length}))},deleteFile:function(e){var t=d.getProgram().getSourceFile(e);t&&u(t)}}}function m(e){throw Error(`Method '`+e+`' is not implemented.`)}function h(e,t){return function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=t.apply(void 0,r),o=typeof a==`string`?a.slice(0,80)+`...`:a;return f.apply(void 0,[`> `+e].concat(r)),f(`< `+o),a}}var g=function(e){return l({},e.getDefaultCompilerOptions(),{jsx:e.JsxEmit.React,strict:!0,esModuleInterop:!0,module:e.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},e.versionMajorMinor&&Number(e.versionMajorMinor.split(`.`)[0])>=6?{ignoreDeprecations:`6.0`}:{moduleResolution:e.ModuleResolutionKind.NodeJs})},_=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function ee(e){return{args:[],createDirectory:function(){return m(`createDirectory`)},directoryExists:h(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return m(`exit`)},fileExists:h(`fileExists`,function(t){return e.has(t)||e.has(_(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return m(`getExecutingFilePath`)},readDirectory:h(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:h(`readFile`,function(t){return e.get(t)??e.get(_(t))}),resolvePath:function(e){return e},newLine:`
2
+ `,useCaseSensitiveFileNames:!0,write:function(){return m(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function v(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:l({},e,{getCanonicalFileName:function(e){return e},getDefaultLibFileName:function(){return`/`+n.getDefaultLibFileName(t)},getNewLine:function(){return e.newLine},getSourceFile:function(a,o){return r.get(a)||i(n.createSourceFile(a,e.readFile(a),o??t.target??g(n).target,!1))},useCaseSensitiveFileNames:function(){return e.useCaseSensitiveFileNames}}),updateFile:function(t){var n=r.has(t.fileName);return e.writeFile(t.fileName,t.text),r.set(t.fileName,t),n},deleteFile:function(t){var n=r.has(t.fileName);return r.delete(t.fileName),e.deleteFile(t.fileName),n}}}function te(e,t,n,r,i){var a=[].concat(t),o=v(e,n,r),s=o.compilerHost,c=o.updateFile,u=o.deleteFile,d=new Map,f=0;return{languageServiceHost:l({},s,{getProjectVersion:function(){return f.toString()},getCompilationSettings:function(){return n},getCustomTransformers:function(){return i},getScriptFileNames:function(){return a.slice()},getScriptSnapshot:function(t){var n=e.readFile(t);if(n&&typeof n==`string`)return r.ScriptSnapshot.fromString(n)},getScriptVersion:function(e){return d.get(e)||`0`},writeFile:e.writeFile}),updateFile:function(e){f++,d.set(e.fileName,f.toString()),a.includes(e.fileName)||a.push(e.fileName),c(e)},deleteFile:function(e){f++,d.set(e.fileName,f.toString());var t=a.indexOf(e.fileName);t!==-1&&a.splice(t,1),u(e)}}}function ne(e){return re.test(e)}var re=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function y(e,t,n,r){let i=ie(n);return a(typeof t==`function`?t.call({"":e},``,e):e,``);function a(e,t){if(Array.isArray(r)){let t=r.find(t=>t.test(e));if(t){let n=t.stringify(e);if(typeof n!=`string`||!ne(n))throw Error(`Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${n})`);return n}}if(typeof e==`boolean`||typeof e==`number`||typeof e==`string`||e===null||e instanceof Date||e instanceof Boolean||e instanceof Number||e instanceof String)return JSON.stringify(e);if(e?.isLosslessNumber||typeof e==`bigint`)return e.toString();if(Array.isArray(e))return o(e,t);if(e&&typeof e==`object`)return s(e,t)}function o(e,n){if(e.length===0)return`[]`;let r=i?n+i:void 0,o=i?`[
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
+ `:`,`)}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
+ `:`{`;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=`
7
+ interface Array<T> {
8
+ [n: number]: T;
9
+ length: number;
10
+ }
11
+ interface String { readonly length: number; }
12
+ interface Number { }
13
+ interface Boolean { }
14
+ interface Object { }
15
+ interface Function { }
16
+ interface CallableFunction extends Function {}
17
+ interface NewableFunction extends Function {}
18
+ interface IArguments { }
19
+ interface RegExp { }
20
+
21
+ declare namespace Utils {
22
+ type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
23
+ }
24
+
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(`
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]}) {
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+` `)}
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=X(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)})),`
37
+ ${f}\n
38
+ ${p}\n
39
+ ${m}\n
40
+ (() =>
41
+ ${e?`const flow_${Z(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?y(e?.value):void 0}`).join(`, `)??``});`:``}
42
+ ${a.filter(e=>e?.id&&!h.has(e.id)&&!g.has(e.id)).map(e=>d(e.id)).join(`
43
+ `)}
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}});
@@ -284,10 +284,10 @@ var _ = (t) => {
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_") ? ee(i, o, e, n) : i.startsWith("p_") ? te(i, o, e, n) : i.startsWith("flow_") ? ne(o, e, n) : [];
288
- }), b = (e) => e.startsWith("node_") || e.startsWith("p_") || e.startsWith("flow_"), ee = (t, n, r, i) => {
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) => {
289
289
  if ((n.flags & e.TypeFlags.Void) !== 0) return [];
290
- let a = x(t.replace("node_", ""));
290
+ let a = S(t.replace("node_", ""));
291
291
  return D(n, r, i).flatMap(({ path: e }) => {
292
292
  let t = {
293
293
  __typename: "ReferenceValue",
@@ -295,8 +295,8 @@ var _ = (t) => {
295
295
  };
296
296
  return e.length > 0 && (t.referencePath = e), t;
297
297
  });
298
- }, te = (e, t, n, r) => {
299
- let { nodeFunctionId: i, paramIndexFromName: a } = S(e);
298
+ }, ee = (e, t, n, r) => {
299
+ let { nodeFunctionId: i, paramIndexFromName: a } = C(e);
300
300
  if (!n.isTupleType(t)) return [];
301
301
  let o = t;
302
302
  return n.getTypeArguments(o).flatMap((e, t) => D(e, n, r).flatMap(({ path: e }) => {
@@ -309,19 +309,19 @@ var _ = (t) => {
309
309
  };
310
310
  return e.length > 0 && (n.referencePath = e), n;
311
311
  }));
312
- }, ne = (e, t, n) => D(e, t, n).flatMap(({ path: e }) => {
312
+ }, te = (e, t, n) => D(e, t, n).flatMap(({ path: e }) => {
313
313
  let t = {
314
314
  __typename: "ReferenceValue",
315
315
  nodeFunctionId: null
316
316
  };
317
317
  return e.length > 0 && (t.referencePath = e), t;
318
- }), x = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), S = (e) => {
318
+ }), S = (e) => e.replace(/___/g, "://").replace(/__/g, "/").replace(/_/g, "/"), C = (e) => {
319
319
  let t = e.replace("p_", ""), n = t.lastIndexOf("_"), r = t.substring(0, n), i = parseInt(t.substring(n + 1), 10);
320
320
  return {
321
- nodeFunctionId: x(r),
321
+ nodeFunctionId: S(r),
322
322
  paramIndexFromName: i
323
323
  };
324
- }, C = 7, w = (e, t, n) => {
324
+ }, w = 7, T = (e, t, n) => {
325
325
  let r = n.get(e);
326
326
  if (r !== void 0) return r;
327
327
  let i = /* @__PURE__ */ new Set(), a = (n) => {
@@ -335,13 +335,13 @@ var _ = (t) => {
335
335
  return !1;
336
336
  }, o = a(e);
337
337
  return n.set(e, o), o;
338
- }, T = (t, n, r) => t.isUnion() ? t.types.some((e) => T(n.getNonNullableType(e), n, r)) : (t.flags & e.TypeFlags.Never) === 0 && n.isTypeAssignableTo(t, r), E = (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), 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()) => {
339
339
  let o = [], s = t.getNonNullableType(e);
340
- return T(s, t, n) && o.push({
340
+ return E(s, t, n) && o.push({
341
341
  path: r,
342
342
  type: e
343
- }), E(s, t).forEach((e) => {
344
- if (i.has(e) || r.length >= C && w(e, t, a)) return;
343
+ }), ne(s, t).forEach((e) => {
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 }];
@@ -351,7 +351,7 @@ var _ = (t) => {
351
351
  }, O = (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) => X(r) ? [] : t.flatMap((t) => {
354
+ }, re = (e, t, n, r) => J(r) ? [] : t.flatMap((t) => {
355
355
  let i = ie(e, t, n, r);
356
356
  return i ? [i] : [];
357
357
  }), ie = (t, n, r, i) => {
@@ -373,11 +373,11 @@ var _ = (t) => {
373
373
  displayIcon: e?.displayIcon
374
374
  }
375
375
  };
376
- return t && (n.parameters = k(e?.parameterDefinitions?.nodes || [])), n;
377
- }, k = (e) => ({
376
+ return t && (n.parameters = ce(e?.parameterDefinitions?.nodes || [])), n;
377
+ }, ce = (e) => ({
378
378
  __typename: "NodeParameterConnection",
379
- nodes: e.map((e) => A(e))
380
- }), A = (e) => ({
379
+ nodes: e.map((e) => le(e))
380
+ }), le = (e) => ({
381
381
  __typename: "NodeParameter",
382
382
  parameterDefinition: {
383
383
  __typename: "ParameterDefinition",
@@ -388,15 +388,15 @@ var _ = (t) => {
388
388
  __typename: "LiteralValue",
389
389
  value: e.defaultValue.value
390
390
  } : null
391
- }), j = (e, t, n, r) => X(r) ? t.flatMap((t) => {
392
- let i = M(e, t, n, r);
391
+ }), ue = (e, t, n, r) => J(r) ? t.flatMap((t) => {
392
+ let i = de(e, t, n, r);
393
393
  return i ? [i] : [];
394
- }) : [], M = (e, t, n, r) => {
394
+ }) : [], de = (e, t, n, r) => {
395
395
  let i = e.getTypeAtLocation(t);
396
396
  if (!e.isTypeAssignableTo(i, r)) return null;
397
- let a = N(t.name?.getText()), o = n.find((e) => e.identifier === a);
398
- return o ? P(o) : null;
399
- }, N = (e) => e ? e.replace("fn_", "").replace("_", "::").replace("_", "::") : "", P = (e) => ({
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) => ({
400
400
  __typename: "SubFlowValue",
401
401
  functionDefinition: e,
402
402
  signature: e.signature,
@@ -407,81 +407,121 @@ var _ = (t) => {
407
407
  hidden: e?.hidden ?? !1,
408
408
  optional: e?.optional ?? !1
409
409
  }))
410
- }), F = { DATE: "date" }, I = (e) => e != null && e in F, L = 7, R = (t, n, r, i, a, o = !0, s, c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map()) => {
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()) => {
411
411
  if ((r.flags & e.TypeFlags.TypeParameter) !== 0) {
412
412
  let u = r.symbol?.declarations?.[0];
413
- if (u && e.isTypeParameterDeclaration(u) && u.constraint) return R(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
413
+ if (u && e.isTypeParameterDeclaration(u) && u.constraint) return P(t, n, t.getTypeFromTypeNode(u.constraint), i, a, o, s, c, l);
414
414
  }
415
- let u = t.typeToString(I(r.aliasSymbol?.getName()) && r.isIntersection() ? r.types.find((t) => (t.flags & e.TypeFlags.Object) === 0) ?? r : {
415
+ let u = t.typeToString(M(r.aliasSymbol?.getName()) && r.isIntersection() ? r.types.find((t) => (t.flags & e.TypeFlags.Object) === 0) ?? r : {
416
416
  ...r,
417
417
  aliasSymbol: void 0
418
418
  }), d = s ?? r, f = o ? { suggestions: [
419
419
  ...v(d, t),
420
420
  ...n ? y(t, n, d, t.getSymbolsInScope(n, e.SymbolFlags.Variable)) : [],
421
421
  ...re(t, i, a, d),
422
- ...j(t, i, a, d)
422
+ ...ue(t, i, a, d)
423
423
  ] } : {};
424
424
  if (r.isUnion()) {
425
425
  let o = r.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
426
426
  if (o.length === 1) return {
427
- ...R(t, n, o[0], i, a, !1, void 0, c, l),
427
+ ...P(t, n, o[0], i, a, !1, void 0, c, l),
428
428
  type: u,
429
429
  ...f
430
430
  };
431
431
  }
432
- let p = W(r);
432
+ let p = V(r);
433
433
  if (p) return {
434
434
  input: p,
435
435
  type: u,
436
436
  ...f
437
437
  };
438
- if (G(t, r)) return {
438
+ if (H(t, r)) return {
439
439
  input: "file",
440
440
  type: u,
441
- mimetype: K(t, r),
441
+ mimetype: U(t, r),
442
442
  ...f
443
443
  };
444
- if (q(r)) return {
444
+ if (fe(t, r)) return {
445
+ input: "color",
446
+ type: u,
447
+ ...f
448
+ };
449
+ if (W(r)) return {
445
450
  input: "boolean",
446
451
  type: u,
447
452
  ...f
448
453
  };
449
- if (ue(r) || le(r)) return {
454
+ if (q(r)) return {
450
455
  input: "select",
451
456
  type: u,
452
457
  ...f
453
458
  };
454
- if (J(r)) return {
459
+ if (G(r)) return {
455
460
  input: "number",
456
461
  type: u,
457
462
  ...f
458
463
  };
459
- if (Y(r)) return {
464
+ if (K(r)) return {
460
465
  input: "text",
461
466
  type: u,
462
467
  ...f
463
468
  };
464
- if (X(r)) return {
469
+ if (J(r)) return {
465
470
  input: "sub-flow",
466
471
  type: u,
467
472
  ...f
468
473
  };
469
- if (de(t, r)) {
474
+ if (ge(t, r)) {
470
475
  let e = t.getTypeArguments(r);
471
- return e.length === 1 && G(t, e[0]) ? {
476
+ if (e.length === 1 && H(t, e[0])) return {
472
477
  input: "list-file",
473
478
  type: u,
474
- mimetype: K(t, e[0]),
479
+ mimetype: U(t, e[0]),
480
+ ...f
481
+ };
482
+ let s = e.flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => P(t, n, e, i, a, o, void 0, c, l)));
483
+ if (e.length === 1 && q(e[0])) return {
484
+ input: "list-select",
485
+ type: u,
486
+ items: s,
475
487
  ...f
476
- } : {
488
+ };
489
+ if (e.length === 1) {
490
+ let t = e[0];
491
+ if (W(t)) return {
492
+ input: "list-boolean",
493
+ type: u,
494
+ items: s,
495
+ ...f
496
+ };
497
+ if (G(t)) return {
498
+ input: "list-number",
499
+ type: u,
500
+ items: s,
501
+ ...f
502
+ };
503
+ if (K(t)) return {
504
+ input: "list-text",
505
+ type: u,
506
+ items: s,
507
+ ...f
508
+ };
509
+ if (J(t)) return {
510
+ input: "list-sub-flow",
511
+ type: u,
512
+ items: s,
513
+ ...f
514
+ };
515
+ }
516
+ return {
477
517
  input: "list",
478
518
  type: u,
479
- items: e.flatMap((e) => (e.isUnion() ? e.types : [e]).map((e) => R(t, n, e, i, a, o, void 0, c, l))),
519
+ items: s,
480
520
  ...f
481
521
  };
482
522
  }
483
523
  if ((r.flags & e.TypeFlags.Object) !== 0) {
484
- if (c.has(r) || c.size >= L && w(r, t, l)) return {
524
+ if (c.has(r) || c.size >= N && T(r, t, l)) return {
485
525
  input: "data",
486
526
  type: u,
487
527
  ...f
@@ -491,7 +531,7 @@ var _ = (t) => {
491
531
  for (let u of t.getPropertiesOfType(r)) {
492
532
  let r = u.valueDeclaration ?? u.declarations?.[0];
493
533
  if (!r) continue;
494
- 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) => R(t, n, e, i, a, o, void 0, c, l));
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));
495
535
  s[u.name] = m.length === 1 ? m[0] : m, p || d.push(u.name);
496
536
  }
497
537
  return c.delete(r), {
@@ -507,14 +547,21 @@ var _ = (t) => {
507
547
  type: u,
508
548
  ...f
509
549
  };
510
- }, z = (e, t, n = !1) => {
511
- if (!e || e.input === "generic") return H(U(t), n);
512
- let r = V(e.suggestions, t.suggestions);
550
+ }, F = /* @__PURE__ */ new Set([
551
+ "list",
552
+ "list-select",
553
+ "list-boolean",
554
+ "list-number",
555
+ "list-text",
556
+ "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);
513
560
  if (e.input === "data") {
514
561
  let n = e.properties ?? {}, i = t.input === "data" ? t.properties ?? {} : {}, a = {}, o = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(i)]);
515
562
  for (let e of o) {
516
563
  let t = n[e], r = i[e];
517
- a[e] = B(t, r);
564
+ a[e] = L(t, r);
518
565
  }
519
566
  return {
520
567
  ...e,
@@ -522,8 +569,8 @@ var _ = (t) => {
522
569
  ...r ? { suggestions: r } : {}
523
570
  };
524
571
  }
525
- if (e.input === "list") {
526
- let n = e.items ?? [], i = t.input === "list" ? t.items ?? [] : [], a = n.length === i.length && n.length > 0 ? n.map((e, t) => z(e, i[t])) : n;
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;
527
574
  return {
528
575
  ...e,
529
576
  items: a,
@@ -534,7 +581,7 @@ var _ = (t) => {
534
581
  ...e,
535
582
  ...r ? { suggestions: r } : {}
536
583
  };
537
- }, B = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? z(e, t) : e ?? t, V = (e, t) => {
584
+ }, L = (e, t) => e && !Array.isArray(e) && t && !Array.isArray(t) ? I(e, t) : e ?? t, R = (e, t) => {
538
585
  let n = [...e ?? [], ...t ?? []];
539
586
  if (n.length === 0) return;
540
587
  let r = /* @__PURE__ */ new Set(), i = [];
@@ -543,13 +590,13 @@ var _ = (t) => {
543
590
  r.has(t) || (r.add(t), i.push(e));
544
591
  }
545
592
  return i;
546
- }, H = (e, t) => !t || e.input !== "generic" ? e : {
593
+ }, z = (e, t) => !t || e.input !== "generic" ? e : {
547
594
  input: "data",
548
595
  ...e.type ? { type: e.type } : {},
549
596
  properties: {},
550
597
  required: [],
551
598
  ...e.suggestions ? { suggestions: e.suggestions } : {}
552
- }, U = (e) => {
599
+ }, B = (e) => {
553
600
  if (e.input !== "select") return e;
554
601
  let t = e.suggestions ?? [], n = /* @__PURE__ */ new Set();
555
602
  for (let e of t) {
@@ -566,11 +613,11 @@ var _ = (t) => {
566
613
  ...t.length > 0 ? { suggestions: t } : {}
567
614
  };
568
615
  };
569
- function W(e) {
616
+ function V(e) {
570
617
  let t = e.aliasSymbol?.getName();
571
- return I(t) ? F[t] : void 0;
618
+ return M(t) ? j[t] : void 0;
572
619
  }
573
- function G(t, n) {
620
+ function H(t, n) {
574
621
  if (n.aliasSymbol?.getName() !== "FILE" || (n.flags & e.TypeFlags.Object) === 0) return !1;
575
622
  let r = t.getPropertiesOfType(n);
576
623
  if (r.length !== 4) return !1;
@@ -581,7 +628,21 @@ function G(t, n) {
581
628
  let s = t.getTypeOfSymbolAtLocation(a, o);
582
629
  return s.isStringLiteral() && s.value === "base64";
583
630
  }
584
- function K(e, t) {
631
+ function fe(t, n) {
632
+ if (n.aliasSymbol?.getName() !== "COLOR" || (n.flags & e.TypeFlags.Object) === 0) return !1;
633
+ let r = new Map(t.getPropertiesOfType(n).map((e) => [e.name, e]));
634
+ return [
635
+ "hue",
636
+ "saturation",
637
+ "lightness"
638
+ ].every((e) => {
639
+ let n = r.get(e);
640
+ if (!n) return !1;
641
+ let i = n.valueDeclaration ?? n.declarations?.[0];
642
+ return i ? G(t.getTypeOfSymbolAtLocation(n, i)) : !1;
643
+ });
644
+ }
645
+ function U(e, t) {
585
646
  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");
586
647
  if (!r) return "*/*";
587
648
  let i = r.valueDeclaration ?? r.declarations?.[0];
@@ -589,7 +650,7 @@ function K(e, t) {
589
650
  let a = e.getTypeOfSymbolAtLocation(r, i);
590
651
  return a.isStringLiteral() && n.test(a.value) ? a.value : "*/*";
591
652
  }
592
- function q(t) {
653
+ function W(t) {
593
654
  if ((t.flags & e.TypeFlags.Boolean) !== 0 || (t.flags & e.TypeFlags.BooleanLiteral) !== 0) return !0;
594
655
  if (t.isUnion()) {
595
656
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
@@ -597,43 +658,46 @@ function q(t) {
597
658
  }
598
659
  return !1;
599
660
  }
600
- function J(t) {
661
+ function G(t) {
601
662
  return (t.flags & e.TypeFlags.Number) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
602
663
  }
603
- function Y(t) {
664
+ function K(t) {
604
665
  return (t.flags & e.TypeFlags.String) !== 0 || (t.flags & e.TypeFlags.StringLiteral) !== 0;
605
666
  }
606
- function ce(e) {
607
- return Y(e) || J(e) || q(e);
667
+ function pe(e) {
668
+ return K(e) || G(e) || W(e);
608
669
  }
609
- function le(t) {
670
+ function me(t) {
610
671
  return (t.flags & e.TypeFlags.StringLiteral) !== 0 || (t.flags & e.TypeFlags.NumberLiteral) !== 0;
611
672
  }
612
- function ue(t) {
673
+ function q(e) {
674
+ return W(e) ? !1 : he(e) || me(e);
675
+ }
676
+ function he(t) {
613
677
  if (!t.isUnion()) return !1;
614
678
  let n = t.types.filter((t) => (t.flags & (e.TypeFlags.Undefined | e.TypeFlags.Null)) === 0);
615
- return n.length > 0 && n.every(ce);
679
+ return n.length > 0 && n.every(pe);
616
680
  }
617
- function de(e, t) {
681
+ function ge(e, t) {
618
682
  return e.isArrayType(t) || e.isTupleType(t);
619
683
  }
620
- function X(e) {
684
+ function J(e) {
621
685
  return e.getCallSignatures().length > 0;
622
686
  }
623
687
  //#endregion
624
688
  //#region src/utils.ts
625
- var Z = "\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";
626
- function fe(t, n) {
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) {
627
691
  let r = /* @__PURE__ */ new Map();
628
- return r.set(t, n), r.set("lib.codezero.d.ts", Z), a(u(r), [t, "lib.codezero.d.ts"], e, pe);
692
+ return r.set(t, n), r.set("lib.codezero.d.ts", _e), a(u(r), [t, "lib.codezero.d.ts"], e, ve);
629
693
  }
630
- var pe = {
694
+ var ve = {
631
695
  target: e.ScriptTarget.Latest,
632
696
  lib: ["lib.codezero.d.ts"],
633
697
  noEmit: !0,
634
698
  strictNullChecks: !0
635
699
  };
636
- function me(e) {
700
+ function ye(e) {
637
701
  let t = [], n = 0, r = null, i = "";
638
702
  for (let a of e) {
639
703
  if (r) a === r && (r = null);
@@ -648,56 +712,81 @@ function me(e) {
648
712
  }
649
713
  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);
650
714
  }
651
- function Q(e, t = "any", n = !0) {
652
- let r = Array.from(new Set(e?.flatMap((e) => e.genericKeys || []).flatMap(me))).map((e) => `type ${e} = ${t};`).join("\n"), i = e?.map((e) => {
653
- let t = (e.genericKeys?.length ?? 0) > 0 ? `<${e.genericKeys?.join(",")}>` : "", n = I(e.identifier) ? `${e.type} & {}` : e.type;
715
+ 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;
654
718
  return `type ${e.identifier}${t} = ${n};`;
655
719
  }).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") ?? "";
656
720
  return `${n ? r : ""}\n${i}\n${a}`;
657
721
  }
658
- var $ = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_");
659
- function he(e, t, n, r = !1, i = !0) {
660
- let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t, n = "") => {
661
- let l = a.find((e) => e?.id === t);
662
- if (!l || !l.functionDefinition) return "";
663
- if (t?.includes("NodeFunction") && s.add(t), !o.get(l.functionDefinition.identifier)) return `${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;
664
- let u = (l.parameters?.nodes || []).map((a, o) => {
665
- let s = a.value;
666
- if (!s) return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
667
- if (s.__typename === "ReferenceValue") {
668
- let n = s, r = typeof n.inputIndex == "number" ? `p_${$(n.nodeFunctionId ?? "undefined")}_${n.parameterIndex}[${n.inputIndex}]` : n.nodeFunctionId ? `node_${$(n.nodeFunctionId)}` : `flow_${$(e?.id ?? "undefined")}`;
669
- return n.referencePath?.forEach((e) => {
670
- r += `?.${e.path}`;
671
- }), `/* @pos ${t} ${o} */ (${r})${i ? "!" : ""}`;
672
- }
673
- if (s.__typename === "LiteralValue") return `/* @pos ${t} ${o} */ ${s?.value !== null && s?.value !== void 0 ? h(s?.value) : void 0}`;
674
- if (s.__typename === "SubFlowValue") {
675
- let e = s;
676
- return !e.startingNodeId && e.functionDefinition?.identifier ? `/* @pos ${t} ${o} */ ${`fn_${e.functionDefinition.identifier.replace(/::/g, "_")}`}` : `/* @pos ${t} ${o} */ (...${`p_${$(t)}_${o}`}) => {\n${c(e.startingNodeId || e.functionDefinition?.id, n + " ")}${n}}`;
677
- }
678
- return r ? `/* @pos ${t} ${o} */ {}` : `/* @pos ${t} ${o} */ undefined`;
679
- }), d = `node_${$(l.id)}`, f = `fn_${l?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
680
- u.includes("undefined");
681
- let p = `${n}`;
682
- return l.functionDefinition.identifier === "std::control::return" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `return ${d};\n`) : l.functionDefinition.identifier === "std::control::if" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
683
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
684
- }`) : l.functionDefinition.identifier === "std::control::if_else" ? (p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, p += `if(${u[0]}) {
685
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId || (l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, n + " ")}
722
+ var Z = (e) => e?.replace(/[^a-zA-Z0-9]/g, "_"), Q = (e) => e.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${"), be = (e, t) => {
723
+ let n = e.match(/^\$\{([^}]+)\}$/);
724
+ if (n && t.has(n[1])) return t.get(n[1]);
725
+ let r = /\$\{([^}]+)\}/g, i = !1;
726
+ for (let n of e.matchAll(r)) if (t.has(n[1])) {
727
+ i = !0;
728
+ break;
729
+ }
730
+ if (!i) return h(e) ?? "\"\"";
731
+ let a = "", o = 0;
732
+ for (let n of e.matchAll(r)) {
733
+ let [r, i] = n, s = n.index;
734
+ a += Q(e.slice(o, s)), a += t.has(i) ? "${" + t.get(i) + "}" : Q(r), o = s + r.length;
735
+ }
736
+ 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) {
739
+ let a = e?.nodes?.nodes || [], o = new Map(t?.map((e) => [e.identifier, e])), s = /* @__PURE__ */ new Set(), c = (t) => {
740
+ 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
+ return t.referencePath?.forEach((e) => {
742
+ n += `?.${e.path}`;
743
+ }), `(${n})${i ? "!" : ""}`;
744
+ }, 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) => {
745
+ if (e == null) return;
746
+ let r = /* @__PURE__ */ new Map();
747
+ for (let e of t ?? []) {
748
+ if (!e?.signature) continue;
749
+ let t = e.value;
750
+ if (t?.__typename === "ReferenceValue") r.set(e.signature, c(t));
751
+ else if (t?.__typename === "LiteralValue") {
752
+ let i = u(t.value, t.references, n);
753
+ i !== void 0 && r.set(e.signature, i);
754
+ } else t?.__typename === "SubFlowValue" && r.set(e.signature, l(t, n.id, n.index, n.indent));
755
+ }
756
+ return r.size === 0 ? h(e) : $(e, r);
757
+ }, d = (e, t = "") => {
758
+ let n = a.find((t) => t?.id === e);
759
+ if (!n || !n.functionDefinition) return "";
760
+ if (e?.includes("NodeFunction") && s.add(e), !o.get(n.functionDefinition.identifier)) return `${t}// Error: Function ${n.functionDefinition.identifier} not found\n`;
761
+ let i = (n.parameters?.nodes || []).map((n, i) => {
762
+ let a = n.value;
763
+ return a ? a.__typename === "ReferenceValue" ? `/* @pos ${e} ${i} */ ${c(a)}` : a.__typename === "LiteralValue" ? `/* @pos ${e} ${i} */ ${u(a.value, a.references, {
764
+ id: e,
765
+ index: i,
766
+ indent: t
767
+ })}` : 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`;
768
+ }), f = `node_${Z(n.id)}`, p = `fn_${n?.functionDefinition?.identifier?.replace(/::/g, "_")}`;
769
+ i.includes("undefined");
770
+ let m = `${t}`;
771
+ 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]}) {
772
+ ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
773
+ }`) : n.functionDefinition.identifier === "std::control::if_else" ? (m += `const ${f} = /* @pos ${e} null */ ${p}(${i.join(", ")}) ;\n`, m += `if(${i[0]}) {
774
+ ${d(n.parameters?.nodes?.[1]?.value?.startingNodeId || (n.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier, t + " ")}
686
775
  } else {
687
- ${c(l.parameters?.nodes?.[2]?.value?.startingNodeId || (l.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, n + " ")}
688
- }`) : p += `const ${d} = /* @pos ${t} null */ ${f}(${u.join(", ")}) ;\n`, l.nextNodeId && (p += c(l.nextNodeId, n)), p;
689
- }, l = Q(n), u = `declare function flow${e?.signature ?? "(): void"}`, d = t?.map((e) => `declare function fn_${e.identifier?.replace(/::/g, "_")}${e.signature}`).join("\n"), f = new Set(a.map((e) => e?.nextNodeId).filter((e) => !!e)), p = /* @__PURE__ */ new Set();
776
+ ${d(n.parameters?.nodes?.[2]?.value?.startingNodeId || (n.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier, t + " ")}
777
+ }`) : m += `const ${f} = /* @pos ${e} null */ ${p}(${i.join(", ")}) ;\n`, n.nextNodeId && (m += d(n.nextNodeId, t)), m;
778
+ }, f = X(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();
690
779
  return a.forEach((e) => e?.parameters?.nodes?.forEach((e) => {
691
- e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && p.add(e.value.startingNodeId || e.value.functionDefinition?.id);
780
+ e?.value?.__typename === "SubFlowValue" && (e.value.startingNodeId || e.value.functionDefinition?.id) && _.add(e.value.startingNodeId || e.value.functionDefinition?.id);
692
781
  })), `
693
- ${l}\n
694
- ${u}\n
695
- ${d}\n
782
+ ${f}\n
783
+ ${p}\n
784
+ ${m}\n
696
785
  (() =>
697
- ${e ? `const flow_${$(e.id ?? "")} = /* @pos null null */ flow(${e.settings?.nodes?.map((e, t) => `/* @pos null ${t} */ ${e?.value !== null && e?.value !== void 0 ? h(e?.value) : void 0}`).join(", ") ?? ""});` : ""}
698
- ${a.filter((e) => e?.id && !f.has(e.id) && !p.has(e.id)).map((e) => c(e.id)).join("\n")}
786
+ ${e ? `const flow_${Z(e.id ?? "")} = /* @pos null null */ flow(${e.settings?.nodes?.map((e, t) => `/* @pos null ${t} */ ${e?.value !== null && e?.value !== void 0 ? h(e?.value) : void 0}`).join(", ") ?? ""});` : ""}
787
+ ${a.filter((e) => e?.id && !g.has(e.id) && !_.has(e.id)).map((e) => d(e.id)).join("\n")}
699
788
  )();
700
789
  `;
701
790
  }
702
791
  //#endregion
703
- export { F as a, X as c, $ as i, z as l, he as n, R as o, Q as r, I as s, fe as t, h as u };
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code0-tech/triangulum",
3
- "version": "0.31.1",
3
+ "version": "0.33.0",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/code0-tech/triangulum#readme",
6
6
  "bugs": {
@@ -35,7 +35,7 @@
35
35
  "build": "vite build"
36
36
  },
37
37
  "devDependencies": {
38
- "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2744343400-55133b9bb6062772c50f83d945a22a531a6e48e2",
38
+ "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2780674370-053799e843870f117430b3b00f75ffec35767193",
39
39
  "@types/node": "^25.6.0",
40
40
  "@typescript/vfs": "^1.6.4",
41
41
  "lossless-json": "^4.3.1",
@@ -46,7 +46,7 @@
46
46
  "vitest": "^4.1.8"
47
47
  },
48
48
  "peerDependencies": {
49
- "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2744343400-55133b9bb6062772c50f83d945a22a531a6e48e2",
49
+ "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2780674370-053799e843870f117430b3b00f75ffec35767193",
50
50
  "@typescript/vfs": "^1.6.4",
51
51
  "lossless-json": "^4.3.0",
52
52
  "ts-json-schema-generator": "^2.9.0",
@@ -1,45 +0,0 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("typescript");c=s(c,1);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}var u=!1;try{u=typeof localStorage<`u`}catch{}var d=typeof process<`u`,f=u&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||d&&process.env.DEBUG?console.log:function(e){return``};function p(e,t,n,r,i){r===void 0&&(r={});var a=l({},g(n),r),o=y(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,u=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=v(e,r,n);throw Error(n.formatDiagnostics(f,p.compilerHost))}return{name:`vfs`,sys:e,languageService:d,getSourceFile:function(e){return d.getProgram()?.getSourceFile(e)},createFile:function(e,t){c(n.createSourceFile(e,t,a.target,!1))},updateFile:function(e,t,r){var i=d.getProgram().getSourceFile(e);if(!i)throw Error(`Did not find a source file for `+e);var a=i.text,o=r??n.createTextSpan(0,a.length),s=a.slice(0,o.start)+t+a.slice(o.start+o.length);c(n.updateSourceFile(i,s,{span:o,newLength:t.length}))},deleteFile:function(e){var t=d.getProgram().getSourceFile(e);t&&u(t)}}}function m(e){throw Error(`Method '`+e+`' is not implemented.`)}function h(e,t){return function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=t.apply(void 0,r),o=typeof a==`string`?a.slice(0,80)+`...`:a;return f.apply(void 0,[`> `+e].concat(r)),f(`< `+o),a}}var g=function(e){return l({},e.getDefaultCompilerOptions(),{jsx:e.JsxEmit.React,strict:!0,esModuleInterop:!0,module:e.ModuleKind.ESNext,suppressOutputPathCheck:!0,skipLibCheck:!0,skipDefaultLibCheck:!0},e.versionMajorMinor&&Number(e.versionMajorMinor.split(`.`)[0])>=6?{ignoreDeprecations:`6.0`}:{moduleResolution:e.ModuleResolutionKind.NodeJs})},_=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function ee(e){return{args:[],createDirectory:function(){return m(`createDirectory`)},directoryExists:h(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return m(`exit`)},fileExists:h(`fileExists`,function(t){return e.has(t)||e.has(_(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return m(`getExecutingFilePath`)},readDirectory:h(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:h(`readFile`,function(t){return e.get(t)??e.get(_(t))}),resolvePath:function(e){return e},newLine:`
2
- `,useCaseSensitiveFileNames:!0,write:function(){return m(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function v(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:l({},e,{getCanonicalFileName:function(e){return e},getDefaultLibFileName:function(){return`/`+n.getDefaultLibFileName(t)},getNewLine:function(){return e.newLine},getSourceFile:function(a,o){return r.get(a)||i(n.createSourceFile(a,e.readFile(a),o??t.target??g(n).target,!1))},useCaseSensitiveFileNames:function(){return e.useCaseSensitiveFileNames}}),updateFile:function(t){var n=r.has(t.fileName);return e.writeFile(t.fileName,t.text),r.set(t.fileName,t),n},deleteFile:function(t){var n=r.has(t.fileName);return r.delete(t.fileName),e.deleteFile(t.fileName),n}}}function y(e,t,n,r,i){var a=[].concat(t),o=v(e,n,r),s=o.compilerHost,c=o.updateFile,u=o.deleteFile,d=new Map,f=0;return{languageServiceHost:l({},s,{getProjectVersion:function(){return f.toString()},getCompilationSettings:function(){return n},getCustomTransformers:function(){return i},getScriptFileNames:function(){return a.slice()},getScriptSnapshot:function(t){var n=e.readFile(t);if(n&&typeof n==`string`)return r.ScriptSnapshot.fromString(n)},getScriptVersion:function(e){return d.get(e)||`0`},writeFile:e.writeFile}),updateFile:function(e){f++,d.set(e.fileName,f.toString()),a.includes(e.fileName)||a.push(e.fileName),c(e)},deleteFile:function(e){f++,d.set(e.fileName,f.toString());var t=a.indexOf(e.fileName);t!==-1&&a.splice(t,1),u(e)}}}function b(e){return te.test(e)}var te=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function x(e,t,n,r){let i=ne(n);return a(typeof t==`function`?t.call({"":e},``,e):e,``);function a(e,t){if(Array.isArray(r)){let t=r.find(t=>t.test(e));if(t){let n=t.stringify(e);if(typeof n!=`string`||!b(n))throw Error(`Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${n})`);return n}}if(typeof e==`boolean`||typeof e==`number`||typeof e==`string`||e===null||e instanceof Date||e instanceof Boolean||e instanceof Number||e instanceof String)return JSON.stringify(e);if(e?.isLosslessNumber||typeof e==`bigint`)return e.toString();if(Array.isArray(e))return o(e,t);if(e&&typeof e==`object`)return s(e,t)}function o(e,n){if(e.length===0)return`[]`;let r=i?n+i:void 0,o=i?`[
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
- `:`,`)}return o+=i?`\n${n}]`:`]`,o}function s(e,r){if(typeof e.toJSON==`function`)return x(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
- `:`{`;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 ne(e){if(typeof e==`number`)return` `.repeat(e);if(typeof e==`string`&&e!==``)return e}var S=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(S);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[]},C=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return S(t.type)}return e.isUnion()?e.types.flatMap(e=>C(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`}]:[]},re=(e,t,n,r)=>r.flatMap(r=>{let i=r.getName();if(!w(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?ie(i,o,e,n):i.startsWith(`p_`)?ae(i,o,e,n):i.startsWith(`flow_`)?oe(o,e,n):[]}),w=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),ie=(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)=>Z(r)?[]:t.flatMap(t=>{let i=A(e,t,n,r);return i?[i]:[]}),A=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=j(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=M(t.name?.getText());return N(n.find(e=>e.identifier===s))},j=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,M=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,N=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=P(e?.parameterDefinitions?.nodes||[])),n},P=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>F(e))}),F=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),I=(e,t,n,r)=>Z(r)?t.flatMap(t=>{let i=L(e,t,n,r);return i?[i]:[]}):[],L=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=R(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?z(o):null},R=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,z=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}))}),B={DATE:`date`},V=e=>e!=null&&e in B,H=7,U=(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 U(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(V(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:[...C(d,e),...t?re(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...ue(e,r,i,d),...I(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{...U(e,t,a[0],r,i,!1,void 0,s,l),type:u,...f}}let p=he(n);if(p)return{input:p,type:u,...f};if(G(e,n))return{input:`file`,type:u,mimetype:K(e,n),...f};if(q(n))return{input:`boolean`,type:u,...f};if(X(n)||_e(n))return{input:`select`,type:u,...f};if(J(n))return{input:`number`,type:u,...f};if(Y(n))return{input:`text`,type:u,...f};if(Z(n))return{input:`sub-flow`,type:u,...f};if(ve(e,n)){let o=e.getTypeArguments(n);return o.length===1&&G(e,o[0])?{input:`list-file`,type:u,mimetype:K(e,o[0]),...f}:{input:`list`,type:u,items:o.flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>U(e,t,n,r,i,a,void 0,s,l))),...f}}if((n.flags&c.default.TypeFlags.Object)!==0){if(s.has(n)||s.size>=H&&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=>U(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}},W=(e,t,n=!1)=>{if(!e||e.input===`generic`)return pe(me(t),n);let r=fe(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]=de(t,r)}return{...e,properties:a,...r?{suggestions:r}:{}}}if(e.input===`list`){let n=e.items??[],i=t.input===`list`?t.items??[]:[],a=n.length===i.length&&n.length>0?n.map((e,t)=>W(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},de=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?W(e,t):e??t,fe=(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},pe=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},me=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 he(e){let t=e.aliasSymbol?.getName();return V(t)?B[t]:void 0}function G(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 K(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 q(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 J(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function Y(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function ge(e){return Y(e)||J(e)||q(e)}function _e(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function X(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(ge)}function ve(e,t){return e.isArrayType(t)||e.isTupleType(t)}function Z(e){return e.getCallSignatures().length>0}var ye=`
7
- interface Array<T> {
8
- [n: number]: T;
9
- length: number;
10
- }
11
- interface String { readonly length: number; }
12
- interface Number { }
13
- interface Boolean { }
14
- interface Object { }
15
- interface Function { }
16
- interface CallableFunction extends Function {}
17
- interface NewableFunction extends Function {}
18
- interface IArguments { }
19
- interface RegExp { }
20
-
21
- declare namespace Utils {
22
- type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
23
- }
24
-
25
- import ReturnType = Utils.ReturnType;
26
- `;function be(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,ye),p(ee(n),[e,`lib.codezero.d.ts`],c.default,xe)}var xe={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function Se(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 Q(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]).flatMap(Se))).map(e=>`type ${e} = ${t};`).join(`
27
- `),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=V(e.identifier)?`${e.type} & {}`:e.type;return`type ${e.identifier}${t} = ${n};`}).join(`
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 $=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`);function Ce(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,n=``)=>{let l=a.find(e=>e?.id===t);if(!l||!l.functionDefinition)return``;if(t?.includes(`NodeFunction`)&&s.add(t),!o.get(l.functionDefinition.identifier))return`${n}// Error: Function ${l.functionDefinition.identifier} not found\n`;let u=(l.parameters?.nodes||[]).map((a,o)=>{let s=a.value;if(!s)return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`;if(s.__typename===`ReferenceValue`){let n=s,r=typeof n.inputIndex==`number`?`p_${$(n.nodeFunctionId??`undefined`)}_${n.parameterIndex}[${n.inputIndex}]`:n.nodeFunctionId?`node_${$(n.nodeFunctionId)}`:`flow_${$(e?.id??`undefined`)}`;return n.referencePath?.forEach(e=>{r+=`?.${e.path}`}),`/* @pos ${t} ${o} */ (${r})${i?`!`:``}`}if(s.__typename===`LiteralValue`)return`/* @pos ${t} ${o} */ ${s?.value!==null&&s?.value!==void 0?x(s?.value):void 0}`;if(s.__typename===`SubFlowValue`){let e=s;return!e.startingNodeId&&e.functionDefinition?.identifier?`/* @pos ${t} ${o} */ ${`fn_${e.functionDefinition.identifier.replace(/::/g,`_`)}`}`:`/* @pos ${t} ${o} */ (...${`p_${$(t)}_${o}`}) => {\n${c(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`}),d=`node_${$(l.id)}`,f=`fn_${l?.functionDefinition?.identifier?.replace(/::/g,`_`)}`;u.includes(`undefined`);let p=`${n}`;return l.functionDefinition.identifier===`std::control::return`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`return ${d};\n`):l.functionDefinition.identifier===`std::control::if`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
30
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
31
- }`):l.functionDefinition.identifier===`std::control::if_else`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
32
- ${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
33
- } else {
34
- ${c(l.parameters?.nodes?.[2]?.value?.startingNodeId||(l.parameters?.nodes?.[2]?.value)?.functionDefinition?.identifier,n+` `)}
35
- }`):p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,l.nextNodeId&&(p+=c(l.nextNodeId,n)),p},l=Q(n),u=`declare function flow${e?.signature??`(): void`}`,d=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
36
- `),f=new Set(a.map(e=>e?.nextNodeId).filter(e=>!!e)),p=new Set;return a.forEach(e=>e?.parameters?.nodes?.forEach(e=>{e?.value?.__typename===`SubFlowValue`&&(e.value.startingNodeId||e.value.functionDefinition?.id)&&p.add(e.value.startingNodeId||e.value.functionDefinition?.id)})),`
37
- ${l}\n
38
- ${u}\n
39
- ${d}\n
40
- (() =>
41
- ${e?`const flow_${$(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?x(e?.value):void 0}`).join(`, `)??``});`:``}
42
- ${a.filter(e=>e?.id&&!f.has(e.id)&&!p.has(e.id)).map(e=>c(e.id)).join(`
43
- `)}
44
- )();
45
- `}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return x}});