@code0-tech/triangulum 0.29.0 → 0.30.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/extraction/getFlowSchemas.d.ts +57 -0
- package/dist/index.d.ts +2 -0
- package/dist/triangulum.cjs.js +19 -18
- package/dist/triangulum.es.js +321 -189
- package/dist/util/jsonSchema.util.d.ts +18 -0
- package/package.json +9 -7
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { DataType, Flow, FunctionDefinition, SubFlowValue } from '@code0-tech/sagittarius-graphql-types';
|
|
2
|
+
import { JsonSchema } from '../util/jsonSchema.util';
|
|
3
|
+
/**
|
|
4
|
+
* The input/output JSON schemas computed for a callable signature.
|
|
5
|
+
*
|
|
6
|
+
* Both are derived from the *real* signature — the flow's own signature for the
|
|
7
|
+
* flow, or the callback parameter type (e.g. `(item: T) => void`) for a
|
|
8
|
+
* sub-flow.
|
|
9
|
+
*
|
|
10
|
+
* `inputSchema` is an `object` schema whose `properties` hold one entry per
|
|
11
|
+
* signature parameter, keyed by the parameter name (non-optional parameters are
|
|
12
|
+
* listed in `required`). `outputSchema` describes the return type.
|
|
13
|
+
*/
|
|
14
|
+
export interface SignatureSchemas {
|
|
15
|
+
/** Object schema whose properties are the signature's parameters, by name. */
|
|
16
|
+
inputSchema: JsonSchema;
|
|
17
|
+
/** JSON schema describing the signature's return type. */
|
|
18
|
+
outputSchema: JsonSchema;
|
|
19
|
+
}
|
|
20
|
+
/** A {@link SubFlowValue} enriched with its computed input/output schemas. */
|
|
21
|
+
export type SchematizedSubFlowValue = SubFlowValue & SignatureSchemas;
|
|
22
|
+
/**
|
|
23
|
+
* A {@link Flow} enriched with the input/output schemas of its own signature.
|
|
24
|
+
* Every {@link SubFlowValue} nested in a node parameter is additionally enriched
|
|
25
|
+
* in place (see {@link SchematizedSubFlowValue}).
|
|
26
|
+
*/
|
|
27
|
+
export type SchematizedFlow = Flow & SignatureSchemas;
|
|
28
|
+
/**
|
|
29
|
+
* Enriches a flow with the input and output JSON schemas of its signature and of
|
|
30
|
+
* every sub-flow it contains.
|
|
31
|
+
*
|
|
32
|
+
* The same flow is returned back, but with two additional fields on the flow
|
|
33
|
+
* itself and on every {@link SubFlowValue} that appears as a node parameter:
|
|
34
|
+
* - `inputSchema` — an `object` JSON schema keyed by the signature's parameter names
|
|
35
|
+
* - `outputSchema` — the JSON schema of the signature's return type
|
|
36
|
+
*
|
|
37
|
+
* The schemas are computed from the real signatures, resolved through the same
|
|
38
|
+
* virtual TypeScript program that {@link generateFlowSourceCode} builds:
|
|
39
|
+
* - For the flow, the schemas come from the flow's own `signature`.
|
|
40
|
+
* - For a sub-flow, the schemas come from the callback parameter type of the
|
|
41
|
+
* surrounding function (e.g. `std::list::for_each`'s `consumer` parameter is
|
|
42
|
+
* typed `(item: T) => void`). Because the type is resolved from the concrete
|
|
43
|
+
* call, generic type parameters (the `T` above) are already instantiated with
|
|
44
|
+
* the real element type at that node.
|
|
45
|
+
*
|
|
46
|
+
* The actual JSON Schema generation is delegated to `ts-json-schema-generator`
|
|
47
|
+
* (see {@link generateJsonSchemas}); this function only resolves the real
|
|
48
|
+
* TypeScript type of each parameter/return and hands it over as a type
|
|
49
|
+
* expression.
|
|
50
|
+
*
|
|
51
|
+
* @param flow - The flow to enrich; returned unchanged when undefined
|
|
52
|
+
* @param functions - Available function definitions (drive the generated code)
|
|
53
|
+
* @param dataTypes - Available data type definitions (drive the type aliases)
|
|
54
|
+
* @returns The same flow, enriched with input/output schemas, or `undefined`
|
|
55
|
+
* when no flow was supplied
|
|
56
|
+
*/
|
|
57
|
+
export declare const getFlowSchemas: (flow?: Flow, functions?: FunctionDefinition[], dataTypes?: DataType[]) => SchematizedFlow | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './extraction/getTypeFromValue';
|
|
2
2
|
export * from './extraction/getValueFromType';
|
|
3
|
+
export * from './extraction/getFlowSchemas';
|
|
4
|
+
export type { JsonSchema } from './util/jsonSchema.util';
|
|
3
5
|
export * from './validation/getFlowValidation';
|
|
4
6
|
export * from './validation/getValueValidation';
|
|
5
7
|
export * from './schema/getSignatureSchema';
|
package/dist/triangulum.cjs.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});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,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("typescript");c=s(c,1);
|
|
2
|
-
`,useCaseSensitiveFileNames:!0,write:function(){return
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});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,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("typescript");c=s(c,1);let l=require("ts-json-schema-generator");function u(){return u=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},u.apply(null,arguments)}var d=!1;try{d=typeof localStorage<`u`}catch{}var f=typeof process<`u`,p=d&&typeof localStorage.getItem==`function`&&localStorage.getItem(`DEBUG`)||f&&process.env.DEBUG?console.log:function(e){return``};function m(e,t,n,r,i){r===void 0&&(r={});var a=u({},_(n),r),o=x(e,t,a,n,i),s=o.languageServiceHost,c=o.updateFile,l=o.deleteFile,d=n.createLanguageService(s),f=d.getCompilerOptionsDiagnostics();if(f.length){var p=b(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&&l(t)}}}function h(e){throw Error(`Method '`+e+`' is not implemented.`)}function g(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 p.apply(void 0,[`> `+e].concat(r)),p(`< `+o),a}}var _=function(e){return u({},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})},v=function(e){return e.replace(`/`,`/lib.`).toLowerCase()};function y(e){return{args:[],createDirectory:function(){return h(`createDirectory`)},directoryExists:g(`directoryExists`,function(t){return Array.from(e.keys()).some(function(e){return e.startsWith(t)})}),exit:function(){return h(`exit`)},fileExists:g(`fileExists`,function(t){return e.has(t)||e.has(v(t))}),getCurrentDirectory:function(){return`/`},getDirectories:function(){return[]},getExecutingFilePath:function(){return h(`getExecutingFilePath`)},readDirectory:g(`readDirectory`,function(t){return t===`/`?Array.from(e.keys()):[]}),readFile:g(`readFile`,function(t){return e.get(t)??e.get(v(t))}),resolvePath:function(e){return e},newLine:`
|
|
2
|
+
`,useCaseSensitiveFileNames:!0,write:function(){return h(`write`)},writeFile:function(t,n){e.set(t,n)},deleteFile:function(t){e.delete(t)}}}function b(e,t,n){var r=new Map,i=function(e){return r.set(e.fileName,e),e};return{compilerHost:u({},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??_(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 x(e,t,n,r,i){var a=[].concat(t),o=b(e,n,r),s=o.compilerHost,c=o.updateFile,l=o.deleteFile,d=new Map,f=0;return{languageServiceHost:u({},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),l(e)}}}function ee(e){return te.test(e)}var te=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function S(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`||!ee(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
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),s!==void 0&&typeof s!=`function`?o+=a(s,r):o+=`null`,n<e.length-1&&(o+=i?`,
|
|
4
|
-
`:`,`)}return o+=i?`\n${n}]`:`]`,o}function s(e,r){if(typeof e.toJSON==`function`)return
|
|
4
|
+
`:`,`)}return o+=i?`\n${n}]`:`]`,o}function s(e,r){if(typeof e.toJSON==`function`)return S(e.toJSON(),t,n,void 0);let o=Array.isArray(t)?t.map(String):Object.keys(e);if(o.length===0)return`{}`;let s=i?r+i:void 0,l=!0,u=i?`{
|
|
5
5
|
`:`{`;for(let n of o){let r=typeof t==`function`?t.call(e,n,e[n]):e[n];if(c(n,r)){l?l=!1:u+=i?`,
|
|
6
|
-
`:`,`;let e=JSON.stringify(n);u+=i?`${s+e}: `:`${e}:`,u+=a(r,s)}}return u+=i?`\n${r}}`:`}`,u}function c(e,t){return t!==void 0&&typeof t!=`function`&&typeof t!=`symbol`}}function
|
|
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 C=e=>{if(c.default.isUnionTypeNode(e))return e.types.flatMap(C);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[]},w=(e,t)=>{if(t&&e.aliasSymbol){let t=e.aliasSymbol.declarations?.[0];if(t&&c.default.isTypeAliasDeclaration(t))return C(t.type)}return e.isUnion()?e.types.flatMap(e=>w(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(!ie(i))return[];let a=r.getDeclarations()?.[0];if(!a||a.getEnd()>=t.getEnd())return[];let o=e.getTypeOfSymbolAtLocation(r,t);return i.startsWith(`node_`)?ae(i,o,e,n):i.startsWith(`p_`)?oe(i,o,e,n):i.startsWith(`flow_`)?se(o,e,n):[]}),ie=e=>e.startsWith(`node_`)||e.startsWith(`p_`)||e.startsWith(`flow_`),ae=(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})},oe=(e,t,n,r)=>{let{nodeFunctionId:i,paramIndexFromName:a}=ce(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}))},se=(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,`/`),ce=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}},le=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),ue=(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}),ue(s,t).forEach(e=>{if(i.has(e)||r.length>=le&&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},de=(e,t,n,r)=>R(r)?[]:t.flatMap(t=>{let i=fe(e,t,n,r);return i?[i]:[]}),fe=(e,t,n,r)=>{if(t.parameters.length>0)return null;let i=e.getSignatureFromDeclaration(t),a=pe(e,e.getReturnTypeOfSignature(i)),o=e.getNonNullableType(a);if((o.flags&c.default.TypeFlags.Never)!==0||!e.isTypeAssignableTo(o,r))return null;let s=me(t.name?.getText());return he(n.find(e=>e.identifier===s))},pe=(e,t)=>t.isTypeParameter()?e.getBaseConstraintOfType(t)||e.getAnyType():t,me=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,he=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=ge(e?.parameterDefinitions?.nodes||[])),n},ge=e=>({__typename:`NodeParameterConnection`,nodes:e.map(e=>_e(e))}),_e=e=>({__typename:`NodeParameter`,parameterDefinition:{__typename:`ParameterDefinition`,id:e?.id,identifier:e?.identifier},value:e?.defaultValue?{__typename:`LiteralValue`,value:e.defaultValue.value}:null}),ve=(e,t,n,r)=>R(r)?t.flatMap(t=>{let i=ye(e,t,n,r);return i?[i]:[]}):[],ye=(e,t,n,r)=>{let i=e.getTypeAtLocation(t);if(!e.isTypeAssignableTo(i,r))return null;let a=be(t.name?.getText()),o=n.find(e=>e.identifier===a);return o?xe(o):null},be=e=>e?e.replace(`fn_`,``).replace(`_`,`::`).replace(`_`,`::`):``,xe=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}))}),A={DATE:`date`},j=e=>e!=null&&e in A,M=7,N=(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 N(e,t,e.getTypeFromTypeNode(u.constraint),r,i,a,o,s,l)}let u=e.typeToString(n),d=o??n,f=a?{suggestions:[...w(d,e),...t?re(e,t,d,e.getSymbolsInScope(t,c.default.SymbolFlags.Variable)):[],...de(e,r,i,d),...ve(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{...N(e,t,a[0],r,i,!1,void 0,s,l),type:u,...f}}let p=Ee(n);if(p)return{input:p,type:u,...f};if(F(n))return{input:`boolean`,type:u,...f};if(ke(n)||Oe(n))return{input:`select`,type:u,...f};if(I(n))return{input:`number`,type:u,...f};if(L(n))return{input:`text`,type:u,...f};if(R(n))return{input:`sub-flow`,type:u,...f};if(Ae(e,n))return{input:`list`,type:u,items:e.getTypeArguments(n).flatMap(n=>(n.isUnion()?n.types:[n]).map(n=>N(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>=M&&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=>N(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}},P=(e,t,n=!1)=>{if(!e||e.input===`generic`)return we(Te(t),n);let r=Ce(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]=Se(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)=>P(e,i[t])):n;return{...e,items:a,...r?{suggestions:r}:{}}}return{...e,...r?{suggestions:r}:{}}},Se=(e,t)=>e&&!Array.isArray(e)&&t&&!Array.isArray(t)?P(e,t):e??t,Ce=(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},we=(e,t)=>!t||e.input!==`generic`?e:{input:`data`,...e.type?{type:e.type}:{},properties:{},required:[],...e.suggestions?{suggestions:e.suggestions}:{}},Te=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 Ee(e){let t=e.aliasSymbol?.getName();return j(t)?A[t]:void 0}function F(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 I(e){return(e.flags&c.default.TypeFlags.Number)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function L(e){return(e.flags&c.default.TypeFlags.String)!==0||(e.flags&c.default.TypeFlags.StringLiteral)!==0}function De(e){return L(e)||I(e)||F(e)}function Oe(e){return(e.flags&c.default.TypeFlags.StringLiteral)!==0||(e.flags&c.default.TypeFlags.NumberLiteral)!==0}function ke(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(De)}function Ae(e,t){return e.isArrayType(t)||e.isTupleType(t)}function R(e){return e.getCallSignatures().length>0}var je=`
|
|
7
7
|
interface Array<T> {
|
|
8
8
|
[n: number]: T;
|
|
9
9
|
length: number;
|
|
@@ -23,34 +23,35 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
import ReturnType = Utils.ReturnType;
|
|
26
|
-
`;function
|
|
27
|
-
`),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=
|
|
26
|
+
`;function z(e,t){let n=new Map;return n.set(e,t),n.set(`lib.codezero.d.ts`,je),m(y(n),[e,`lib.codezero.d.ts`],c.default,Me)}var Me={target:c.default.ScriptTarget.Latest,lib:[`lib.codezero.d.ts`],noEmit:!0,strictNullChecks:!0};function Ne(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 B(e,t=`any`,n=!0){let r=Array.from(new Set(e?.flatMap(e=>e.genericKeys||[]).flatMap(Ne))).map(e=>`type ${e} = ${t};`).join(`
|
|
27
|
+
`),i=e?.map(e=>{let t=(e.genericKeys?.length??0)>0?`<${e.genericKeys?.join(`,`)}>`:``,n=j(e.identifier)?`${e.type} & {}`:e.type;return`type ${e.identifier}${t} = ${n};`}).join(`
|
|
28
28
|
`),a=e?.filter(e=>(e.genericKeys?.length??0)>0).map(e=>`declare const __widen_${e.identifier}: ${e.identifier}<${e.genericKeys.map(()=>`any`).join(`, `)}>;`).join(`
|
|
29
|
-
`)??``;return`${n?r:``}\n${i}\n${a}`}var
|
|
29
|
+
`)??``;return`${n?r:``}\n${i}\n${a}`}var V=e=>e?.replace(/[^a-zA-Z0-9]/g,`_`);function H(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_${V(n.nodeFunctionId??`undefined`)}_${n.parameterIndex}[${n.inputIndex}]`:n.nodeFunctionId?`node_${V(n.nodeFunctionId)}`:`flow_${V(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?S(s?.value):void 0}`;if(s.__typename===`SubFlowValue`){let e=s;return`/* @pos ${t} ${o} */ (...${`p_${V(t)}_${o}`}) => {\n${c(e.startingNodeId||e.functionDefinition?.id,n+` `)}${n}}`}return r?`/* @pos ${t} ${o} */ {}`:`/* @pos ${t} ${o} */ undefined`}),d=`node_${V(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
30
|
${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
|
|
31
31
|
}`):l.functionDefinition.identifier===`std::control::if_else`?(p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,p+=`if(${u[0]}) {
|
|
32
32
|
${c(l.parameters?.nodes?.[1]?.value?.startingNodeId||(l.parameters?.nodes?.[1]?.value)?.functionDefinition?.identifier,n+` `)}
|
|
33
33
|
} else {
|
|
34
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=
|
|
35
|
+
}`):p+=`const ${d} = /* @pos ${t} null */ ${f}(${u.join(`, `)}) ;\n`,l.nextNodeId&&(p+=c(l.nextNodeId,n)),p},l=B(n),u=`declare function flow${e?.signature??`(): void`}`,d=t?.map(e=>`declare function fn_${e.identifier?.replace(/::/g,`_`)}${e.signature}`).join(`
|
|
36
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
37
|
${l}\n
|
|
38
38
|
${u}\n
|
|
39
39
|
${d}\n
|
|
40
40
|
(() =>
|
|
41
|
-
${e?`const flow_${
|
|
41
|
+
${e?`const flow_${V(e.id??``)} = /* @pos null null */ flow(${e.settings?.nodes?.map((e,t)=>`/* @pos null ${t} */ ${e?.value!==null&&e?.value!==void 0?S(e?.value):void 0}`).join(`, `)??``});`:``}
|
|
42
42
|
${a.filter(e=>e?.id&&!f.has(e.id)&&!p.has(e.id)).map(e=>c(e.id)).join(`
|
|
43
43
|
`)}
|
|
44
44
|
)();
|
|
45
|
-
`}var
|
|
46
|
-
${
|
|
45
|
+
`}var U=(e,t)=>{let n=S(e?.value);if(!n)return`any`;let r=`
|
|
46
|
+
${B(t,`unknown`)}
|
|
47
47
|
const tempValue = ${n??`any`};
|
|
48
|
-
`,i=`index.ts`,a=
|
|
49
|
-
${
|
|
48
|
+
`,i=`index.ts`,a=z(i,r),o=a.getSourceFile(i),s=a.languageService.getProgram().getTypeChecker(),l=`any`,u=e=>{if(c.default.isVariableDeclaration(e)&&e.name.getText()===`tempValue`){let t=s.getTypeAtLocation(e),n=t=>{if(t.isUnion()){let e=t.types.map(n);return Array.from(new Set(e)).sort().join(` | `)}if(s.isArrayType(t)){let e=t.typeArguments||[],r=e.length>0?n(e[0]):`any`;return e[0]?.isUnion()?`(${r})[]`:`${r}[]`}if(t.getFlags()&c.default.TypeFlags.Object||t.isClassOrInterface()){let r=s.getPropertiesOfType(t);if(r.length>0)return`{ ${r.map(t=>{let r=s.getTypeOfSymbolAtLocation(t,e);return`${t.getName()}: ${n(r)}`}).join(`, `)} }`}let r=s.getBaseTypeOfLiteralType(t);return s.typeToString(r,e)};l=n(t)}c.default.forEachChild(e,u)};return u(o),l},Pe=(e,t)=>{let n=`
|
|
49
|
+
${B(t)}
|
|
50
50
|
type Target = ${e};
|
|
51
|
-
`,r=`index.ts`,i=
|
|
52
|
-
`)
|
|
53
|
-
|
|
51
|
+
`,r=`index.ts`,i=z(r,n),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=a.statements.find(e=>c.default.isTypeAliasDeclaration(e)&&e.name.text===`Target`);if(!s)return{__typename:`LiteralValue`,value:null};let l=o.getTypeAtLocation(s.type),u=(e,t,n=new Set)=>{let r=new Set(n);if(r.has(e))return null;let i=e.getFlags();if(e.isUnion()){if(t.type,c.default.isTypeAliasDeclaration(t)&&t.type&&c.default.isUnionTypeNode(t.type))return u(o.getTypeFromTypeNode(t.type.types[0]),t,r);let n=e.types.filter(e=>{let t=e.getFlags();return!(t&c.default.TypeFlags.Undefined)&&!(t&c.default.TypeFlags.Null)});return u(n.length>0?n[0]:e.types[0],t,r)}if(i&c.default.TypeFlags.StringLiteral)return e.value;if(i&c.default.TypeFlags.String)return``;if(i&c.default.TypeFlags.NumberLiteral)return e.value;if(i&c.default.TypeFlags.Number)return 0;if(i&c.default.TypeFlags.BooleanLiteral)return e.intrinsicName===`true`;if(i&c.default.TypeFlags.Boolean)return!1;if(o.isArrayType(e)){r.add(e);let n=u(e.typeArguments?.[0]||o.getAnyType(),t,r);return n===null?[]:[n]}if(e.isClassOrInterface()||i&c.default.TypeFlags.Object||e.getProperties().length>0){r.add(e);let n={};return e.getProperties().forEach(e=>{let i=o.getTypeOfSymbolAtLocation(e,t),a=e.valueDeclaration;i&&(n[e.getName()]=u(i,a||t,r))}),n}return null};return{__typename:`LiteralValue`,value:u(l,s)}},W={...l.DEFAULT_CONFIG,expose:`none`,topRef:!1,jsDoc:`none`,skipTypeCheck:!0},Fe=(e,t)=>{let n=Object.keys(e);if(n.length===0)return{};let r=Le(Ie(e,t)),i={};for(let e of n)try{i[e]=Re(r.createSchema(e))}catch{i[e]={}}return i},Ie=(e,t)=>{let n=Object.entries(e).map(([e,t])=>`export type ${e} = ${t};`).join(`
|
|
52
|
+
`);return`${B(t)}\n${n}`},Le=e=>{let t=z(`index.ts`,e).languageService.getProgram();return new l.SchemaGenerator(t,(0,l.createParser)(t,W),(0,l.createFormatter)(W),W)},Re=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))},ze=(e,t,n)=>{if(!e)return;let r=`index.ts`,i=z(r,H(e,t,n)),a=i.getSourceFile(r),o=i.languageService.getProgram().getTypeChecker(),s=Fe({...Be(o,a),...Ve(o,a,e)},n),c=(e.nodes?.nodes??[]).map(e=>e&&Ue(e,s));return{...e,inputSchema:s[G]??Y(),outputSchema:s[K]??X(),nodes:{...e.nodes,nodes:c}}},G=`Flow_input`,K=`Flow_output`,q=(e,t,n)=>`Node_${V(e)}_${t}_${n}`,Be=(e,t)=>{let n=t.statements.filter(c.default.isFunctionDeclaration).find(e=>e.name?.getText()===`flow`);if(!n)return{};let r=e.getSignatureFromDeclaration(n);if(!r)return{};let{input:i,output:a}=J(e,r,n);return{[G]:i,[K]:a}},Ve=(e,t,n)=>{let r=Ke(t),i={};for(let t of n.nodes?.nodes??[]){if(!t?.id)continue;let n=t.parameters?.nodes;if(!n?.some(Z))continue;let a=Ge(r,t),o=a?e.getResolvedSignature(a):void 0;o&&n.forEach((n,r)=>{if(!Z(n))return;let s=He(e,o,a,r);if(!s)return;let{input:c,output:l}=J(e,s,a);i[q(t.id,r,`input`)]=c,i[q(t.id,r,`output`)]=l})}return i},He=(e,t,n,r)=>{let i=t.parameters[r];if(i)return e.getTypeOfSymbolAtLocation(i,n).getCallSignatures()[0]},J=(e,t,n)=>{let r=t=>e.typeToString(t,n,c.default.TypeFormatFlags.NoTruncation);return{input:`{ ${t.parameters.map(t=>{let i=e.getTypeOfSymbolAtLocation(t,t.valueDeclaration??n),a=We(t)?`?`:``;return`${t.getName()}${a}: ${r(i)}`}).join(`; `)} }`,output:r(e.getReturnTypeOfSignature(t))}},Y=()=>({type:`object`}),X=()=>({}),Ue=(e,t)=>{let n=e.parameters?.nodes;if(!n?.some(Z))return e;let r=n.map((n,r)=>{if(!Z(n))return n;let i={...n.value,inputSchema:t[q(e.id,r,`input`)]??Y(),outputSchema:t[q(e.id,r,`output`)]??X()};return{...n,value:i}});return{...e,parameters:{...e.parameters,nodes:r}}},Z=e=>e?.value?.__typename===`SubFlowValue`,We=e=>{let t=e.valueDeclaration;return!!t&&c.default.isParameter(t)&&(!!t.questionToken||!!t.initializer||!!t.dotDotDotToken)},Ge=(e,t)=>{let n=e.get(`node_${V(t.id)}`)?.initializer;return n&&c.default.isCallExpression(n)?n:void 0},Ke=e=>{let t=new Map;return e.statements.forEach(e=>{e.forEachChild(function e(n){c.default.isVariableDeclaration(n)&&(n.parent.flags&c.default.NodeFlags.Const)!==0&&t.set(n.name.getText(),n),n.forEachChild(e)})}),t},qe=2345,Je=2339,Q=(e,t,n)=>{if(e.getStart()>t||e.getEnd()<n)return;let r=e;return e.forEachChild(e=>{let i=Q(e,t,n);i&&(r=i)}),r},Ye=(e,t,n)=>{if(e.start===void 0||e.length===void 0)return!1;let r=Q(t,e.start,e.start+e.length);if(!r)return!1;if(e.code===qe&&c.default.isExpression(r)){let e=n.getTypeAtLocation(r);if(!e.isUnion())return!1;let t=n.getContextualType(r);return t?e.types.some(e=>(e.flags&(c.default.TypeFlags.Null|c.default.TypeFlags.Undefined))===0&&n.isTypeAssignableTo(e,t)):!1}if(e.code===Je&&c.default.isPropertyAccessExpression(r.parent)){let e=n.getNonNullableType(n.getTypeAtLocation(r.parent.expression));if(!e.isUnion())return!1;let t=r.getText();return e.types.some(e=>e.getProperty(t)!==void 0)}return!1},Xe=(e,t,n)=>{if(!e?.startingNodeId)return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`You need to provide a starting node to be able to execute this flow.`,severity:`error`}]};if(!e.nodes?.nodes?.find(t=>t?.id==e.startingNodeId))return{isValid:!1,returnType:`void`,diagnostics:[{nodeId:null,parameterIndex:null,code:0,message:`The starting node is not linked within the flow. Please make sure the starting node is connected to the rest of the flow.`,severity:`error`}]};let r=new Set(t?.map(e=>e.identifier)),i=(e.nodes?.nodes??[]).filter(e=>e?.functionDefinition&&!r.has(e.functionDefinition.identifier)).map(e=>({nodeId:e.id,parameterIndex:null,code:0,message:`The function definition "${e.functionDefinition.identifier}" is not reachable.`,severity:`error`}));if(i.length>0)return{isValid:!1,returnType:`void`,diagnostics:i};let a=H(e,t,n,!1,!1),o=`index.ts`,s=z(o,a),l=s.getSourceFile(o),u=s.languageService.getProgram(),d=u.getTypeChecker(),f=u.getSemanticDiagnostics(l).map(e=>{let t=(0,c.flattenDiagnosticMessageText)(e.messageText,`
|
|
53
|
+
`),n,r=null;if(e.start!==void 0){let t=l.getFullText(),i=Math.max(0,e.start-300),a=Math.min(t.length,e.start),o=t.substring(i,a),s=/\/\* @pos ([^ ]+) (\d+|null) \*\//g,c,u=null,d=-1;for(;(c=s.exec(o))!==null;){let t=i+c.index+c[0].length;t<=e.start&&t>d&&(d=t,u=c)}u&&(n=u[1]===`null`?null:u[1],r=parseInt(u[2],10))}let i=Ye(e,l,d)?`warning`:`error`;return{message:t,code:e.code,severity:i,nodeId:n,parameterIndex:typeof r==`number`&&Number.isSafeInteger(r)?r:null}}).filter(e=>e!==null);return{isValid:!f.some(e=>e?.severity===`error`),returnType:`void`,diagnostics:f}},Ze=(e,t,n)=>{let r=S(t?.value),i=`
|
|
54
|
+
${B(n)}
|
|
54
55
|
const testValue: ${e} = ${r};
|
|
55
|
-
`,a=`index.ts`,o=
|
|
56
|
-
`),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}},
|
|
56
|
+
`,a=`index.ts`,o=z(a,i).languageService.getSemanticDiagnostics(a).map(e=>{let t=c.default.flattenDiagnosticMessageText(e.messageText,`
|
|
57
|
+
`),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}},Qe=(e,t,n,r)=>{let i=H(e,n,t),a=`index.ts`,o=z(a,i),s=o.getSourceFile(a),l=o.languageService.getProgram().getTypeChecker(),u=e.nodes?.nodes?.find(e=>e?.id===r),d=r?`fn_${u?.functionDefinition?.identifier?.replace(/::/g,`_`)}`:`flow`,f=r?`node_${V(r)}`:`flow_${V(e.id)}`,p=et(s),m=tt(s).get(f),h=p.get(d),g=nt(l,m),_=rt(l,h,m),v=g?.map((e,t)=>(e.flags&c.default.TypeFlags.Undefined)===0?e:_?.[t]??e),y=(u?.parameters?.nodes??[]).map(e=>e?.value!=null),b=at(l,m,v,_,it(h,g,y),r?p:new Map,r?n:[],y),x=$e(l,m,h);return{nodeId:r,parameters:b,return:x?N(l,m,x,Array.from(p.values()),n,!1):{input:`generic`}}},$e=(e,t,n)=>{if(t?.initializer&&c.default.isCallExpression(t.initializer)){let n=e.getResolvedSignature(t.initializer);if(n)return e.getReturnTypeOfSignature(n)}if(n){let t=e.getSignatureFromDeclaration(n);if(t)return e.getReturnTypeOfSignature(t)}},et=e=>new Map(e.statements.filter(c.default.isFunctionDeclaration).map(e=>[e.name.getText(),e])),tt=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)},nt=(e,t)=>{if(!(!t?.initializer||!c.default.isCallExpression(t.initializer)))return e.getResolvedSignature(t.initializer)?.parameters.map(n=>e.getTypeOfSymbolAtLocation(n,t.initializer))},rt=(e,t,n)=>{if(!(!t||!n?.initializer))return t.parameters.map(t=>{let r=e.getSymbolAtLocation(t.name);return e.getTypeOfSymbolAtLocation(r,n.initializer)})},it=(e,t,n=[])=>{let r=e.typeParameters?.map(e=>e.name.getText())||[],i={};e.parameters.forEach((e,t)=>{if(!e.type)return;let n=new Set;e.type.forEachChild(function t(i){if(c.default.isTypeReferenceNode(i)&&c.default.isIdentifier(i.typeName)){let e=i.typeName.text;r.includes(e)&&n.add(e)}if(c.default.isTypeReferenceNode(e.type)&&c.default.isIdentifier(e.type.typeName)){let t=e.type.typeName.text;r.includes(t)&&n.add(t)}i.forEachChild(t)}),n.forEach(e=>{i[e]||(i[e]=[]),i[e].push(t)})});let a=Object.values(i).filter(e=>e.length>1).map(([e,...t])=>t.map(t=>({parameterIndex:t,dependsOnIndex:e}))).flat();return t?a.filter(e=>{if(n[e.dependsOnIndex])return!1;let r=t[e.parameterIndex];if(!r)return!0;let i=(r.flags&c.default.TypeFlags.Null)!==0,a=(r.flags&c.default.TypeFlags.Undefined)!==0;return i||a}):a},at=(e,t,n,r,i,a,o,s)=>n?n.map((n,c)=>{let l=r?.[c],u=l?ot(e,l,t):void 0,d=N(e,t,n,Array.from(a.values()),o,!0,u);return{schema:P(l?N(e,t,l,Array.from(a.values()),o,!1):void 0,d,s[c]??!1),blockedBy:i.filter(e=>e.parameterIndex===c).map(e=>e.dependsOnIndex)}}):[],ot=(e,t,n)=>{if((t.flags&c.default.TypeFlags.TypeParameter)!==0){let n=t.symbol?.declarations?.[0];return n&&c.default.isTypeParameterDeclaration(n)&&n.constraint?e.getTypeFromTypeNode(n.constraint):e.getAnyType()}if((t.flags&c.default.TypeFlags.Conditional)!==0)return e.getBaseConstraintOfType(t)??e.getAnyType();if((t.flags&c.default.TypeFlags.Object)!==0&&$(t,e,new Set)){let r=t.aliasSymbol?.getName();if(r){let t=e.getSymbolsInScope(n,c.default.SymbolFlags.Variable).find(e=>e.getName()===`__widen_${r}`);if(t)return e.getTypeOfSymbolAtLocation(t,n)}return e.getAnyType()}return t},$=(e,t,n)=>n.has(e)?!1:(n.add(e),!!((e.flags&c.default.TypeFlags.TypeParameter)!==0||(e.flags&c.default.TypeFlags.Object)!==0&&(t.getTypeArguments(e).some(e=>$(e,t,n))||e.aliasTypeArguments?.some(e=>$(e,t,n))))),st=(e,t=[])=>{let n=`index.ts`,r=z(n,`${B(t)}\ntype MyType = ${e}`).languageService.getProgram(),i=r?.getSourceFile(n),a=r?.getTypeChecker();if(!i||!a)return;let o=i.statements.filter(e=>c.default.isTypeAliasDeclaration(e)||c.default.isInterfaceDeclaration(e)||c.default.isClassDeclaration(e)).pop();if(!o)return;let s=a.getTypeAtLocation(o);if(s)return N(a,void 0,s,[],[],!1)};exports.getFlowSchemas=ze,exports.getFlowValidation=Xe,exports.getSignatureSchema=Qe,exports.getTypeFromValue=U,exports.getTypeSchema=st,exports.getValueFromType=Pe,exports.getValueValidation=Ze;
|