@stackone/core 1.31.1 → 1.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.es.mjs CHANGED
@@ -1 +1 @@
1
- import{notMissing as e,getCountrySubDivisionNameBySubDivisionCode as t,getCountryAlpha2CodeByCitizenship as r,getCountrySubDivisionCodeBySubDivisionName as n,getCountrySubDivisionsByAlpha2Code as a,getCountryCodeByCountryName as o,getCountryCodeByAlpha3Code as s,getCountryCodeByAlpha2Code as i,getCountryAlpha2CodeByCountryCode as u,getCountryAlpha2CodeByCountryName as c,getCountryAlpha2CodeByAlpha3Code as l,getCountryAlpha3CodeByCountryCode as d,getCountryAlpha3CodeByCountryName as p,getCountryAlpha3CodeByAlpha2Code as y,getCountryNameByCountryCode as m,getCountryNameByAlpha2Code as _,getCountryNameByAlpha3Code as f,getCountryNameByCountryName as g,getCountryCodeByCountryCode as b,getCountryAlpha3CodeByAlpha3Code as h,getCountryAlpha2CodeByAlpha2Code as v,isString as k,isMissing as S,safeParseToDateTimeString as F,safeParseToBoolean as j,safeParseToNumber as w,safeParseToString as x}from"@stackone/utils";import{z as A}from"zod";import{evaluate as E,safeEvaluateRecord as K}from"@stackone/expressions";import{RequestParameterLocations as T,HttpMethods as U,RequestClientFactory as C,parseRequestParameters as M,createAuthorizationHeaders as O}from"@stackone/transport";const R=A.object({stepsDataToGroup:A.array(A.string()),isSingleRecord:A.boolean().optional()}),D=A.object({data:A.unknown()}),I=(e,t,r)=>Object.entries(e).reduce(((e,[n,a])=>{const o=a?.output?.data;return Array.isArray(o)&&o.length===t?e[n]={output:{data:o[r]}}:e[n]=a,e}),{}),P=(e,t,r)=>{if(!e||!r)return{record:e};const n={unified:{...e},..."object"==typeof r?r:{}},a={},o=[],s={...e};for(const r of t){const{error:t,value:i}=$(n,e.id,r);t?o.push(t):r.isUnified?s[r.targetFieldKey]=i:a[r.targetFieldKey]=i}return{record:{...s,unified_custom_fields:Object.keys(a).length>0?a:void 0},errors:o.length>0?o:void 0}},$=(e,t,r)=>{const{expression:n,targetFieldKey:a}=r;if(!n)return{error:{message:"Expression is empty",id:t,targetField:a}};let o;try{o=E(n,e)}catch{return{error:{message:"Invalid expression",id:t,targetField:a}}}return void 0===o?{error:{message:"Expression returned no value",id:t,targetField:a}}:{value:o}},L=A.object({fields:A.object({targetFieldKey:A.string(),expression:A.string(),type:A.enum(["string","number","boolean","datetime_string","enum"]),isUnified:A.boolean().optional(),enumMapper:A.object({matcher:A.string().or(A.object({matchExpression:A.string(),value:A.string()}).array())}).optional()}).array(),dataSource:A.string()}),q=A.object({data:A.unknown()}),G=(e,t)=>{if(!t)return;const r={},n=[],a={};for(const o of e){const{error:e,value:s}=z(t,t?.id,o);e?n.push(e):o.isUnified?a[o.targetFieldKey]=s:r[o.targetFieldKey]=s}return{record:{...a,unified_custom_fields:Object.keys(r).length>0?r:void 0},errors:n.length>0?n:void 0}},z=(e,t,r)=>{switch(r.type){case"string":case"number":case"boolean":case"datetime_string":return H(r,t,e);case"enum":return N(r,t,e);default:return{error:{message:"Invalid type",id:t,targetField:r.targetFieldKey}}}},H=(e,t,r)=>{if(!e.expression)return{error:{message:"Expression is empty",id:t,targetField:e.targetFieldKey}};let n;try{n=E(e.expression,r)}catch{return{error:{message:"Invalid expression",id:t,targetField:e.targetFieldKey}}}return void 0===n?{error:{message:"Expression returned no value",id:t,targetField:e.targetFieldKey}}:{value:n}},N=(S,F,j)=>{const w=H(S,F,j),x=e(w.value)?w.value:null;if(void 0===S.enumMapper)return{error:{message:"Enum mapper was not defined",id:F,targetField:S.targetFieldKey}};const A=S.enumMapper.matcher;if(k(A)){const k=(e=>{switch(e){case"country_alpha2code_by_alpha2code":return v;case"country_alpha3code_by_alpha3code":return h;case"country_code_by_country_code":return b;case"country_name_by_country_name":return g;case"country_name_by_alpha3code":return f;case"country_name_by_alpha2code":return _;case"country_name_by_country_code":return m;case"country_alpha3code_by_alpha2code":return y;case"country_alpha3code_by_country_name":return p;case"country_alpha3code_by_country_code":return d;case"country_alpha2code_by_alpha3code":return l;case"country_alpha2code_by_country_name":return c;case"country_alpha2code_by_country_code":return u;case"country_code_by_alpha2code":return i;case"country_code_by_alpha3code":return s;case"country_code_by_country_name":return o;case"country_subdivisions_by_alpha2code":return a;case"country_subdivision_code_by_subdivision_name":return n;case"country_alpha2code_by_citizenship":return r;case"country_subdivision_name_by_subdivision_code":return t;default:return}})(A);if(e(k)){return{value:{value:(e(x)?k(x):null)??"unmapped_value",source_value:x}}}return{error:{message:`The built-in matcher "${A}" is not supported`,id:F,targetField:S.targetFieldKey}}}for(const e of A){const{matchExpression:t,value:r}=e;if(!0===E(t,j))return{value:{value:r,source_value:x}}}return{value:{value:"unmapped_value",source_value:x}}},B=A.object({type:A.literal("basic"),username:A.string(),password:A.string(),encoding:A.string().optional()}),Q=A.object({type:A.literal("bearer"),token:A.string()}),Y=A.discriminatedUnion("type",[B,Q]),J=A.object({baseUrl:A.string(),url:A.string(),method:A.enum(U),response:A.object({collection:A.boolean().optional(),indexField:A.string().optional(),dataKey:A.string().optional()}).optional(),args:A.object({name:A.string(),value:A.unknown(),in:A.enum(T),condition:A.string().optional()}).array().optional()}),V=A.object({data:A.unknown(),raw:A.unknown().optional()}),W=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce(((e,r)=>{const n=t.indexField;return n&&r[n]&&(e[r[n]]=r),e}),{});if(!t?.collection&&t?.indexField){const r=t.indexField;return r&&e[r]?{[e[r]]:e}:e}return e},X=A.object({fields:A.object({targetFieldKey:A.string(),type:A.string(),isUnified:A.boolean().optional()}).array().optional(),dataSource:A.string()}),Z=A.object({data:A.unknown()});var ee;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(ee||(ee={}));const te=({value:e,type:t,format:r})=>{if(S(e))return null;switch(t){case ee.String:return x({value:e});case ee.Number:return w({value:e});case ee.Boolean:return j({value:e});case ee.DateTimeString:return F({value:e,format:r});default:return e}},re=e=>Object.values(ee).includes(e),ne=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:a,type:o}=r;re(o)&&(r.isUnified&&e(n[a])?n[a]=te({value:t[a],type:o}):n.unified_custom_fields&&e(n.unified_custom_fields?.[a])&&(n.unified_custom_fields[a]=te({value:t.unified_custom_fields?.[a],type:o})))})),{...n}},ae=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:a,type:o}=r;re(o)&&(r.isUnified&&e(n[a])?n[a]=te({value:t[a],type:o}):n.unified_custom_fields&&e(n.unified_custom_fields?.[a])&&(n.unified_custom_fields[a]=te({value:t.unified_custom_fields?.[a],type:o})))})),{...n}};var oe;!function(e){e.TYPECAST="typecast",e.MAP_FIELDS="map_fields",e.GROUP_DATA="group_data",e.REQUEST="request"}(oe||(oe={}));const se={[oe.TYPECAST]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs;if(!t||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let r;return r=Array.isArray(e.result)?e.result.map((e=>ne(e,t))):ne(e.result,t),{block:{...e,result:r},successful:!0}}},v2:{fn:async({block:e,params:t})=>{const{fields:r,dataSource:n}=X.parse(t),a=E(n,e);if(!r||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let o;return o=Array.isArray(a)?a.map((e=>ae(e,r))):ae(a,r),{block:{...e},successful:!0,output:{data:o}}},inputSchema:X,outputSchema:Z}},[oe.MAP_FIELDS]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs,r=[],n=e.steps;if(!t||"disabled"===e?.debug?.custom_mappings||!n)return{block:e,successful:!0};let a;if(Array.isArray(e.result)){const o=e.result.length;a=e.result.map(((e,a)=>{const s=I(n,o,a),i=P(e,t,s);return r.push(...i.errors||[]),i.record}))}else{const o=P(e.result,t,n);a=o.record,r.push(...o.errors||[])}return{block:{...e,result:a},successful:!0,errors:Object.keys(r).length>0?r:void 0}}},v2:{fn:async({block:e,params:t})=>{const r=[],{fields:n,dataSource:a}=L.parse(t),o=E(a,e);if(!n||!a||"disabled"===e?.debug?.custom_mappings||!o)return{block:e,successful:!0};let s;if(Array.isArray(o))s=o.map((e=>{const t=G(n,e);return r.push(...t?.errors||[]),t?.record}));else{const e=G(n,o);s=e?.record,r.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:s},errors:Object.keys(r).length>0?r:void 0}},inputSchema:L,outputSchema:q}},[oe.REQUEST]:{v1:{fn:async({block:e,params:t})=>{const r=C.build();if(!e.httpClient)throw new Error("HTTP client is not configured");const{args:n}=t,a=n?n.filter((t=>!t.condition||!0===E(t.condition,e))).map((e=>({...e,condition:void 0}))):void 0,o=t?K({...t,args:a},e):{},{baseUrl:s,url:i,method:u,response:c,args:l}=J.parse(o),d=o?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,p=Y.parse(d),y=l?M(l):{query:{},body:{},headers:{}},m=O(p),_={...y?.headers??{},...m};let f;try{f=await r.performRequest({httpClient:e.httpClient,url:`${s}${i}`,queryParams:y?.query,method:u,headers:_,body:y?.body})}catch(t){return{block:e,successful:!1,errors:[t]}}const g=c?.dataKey?f.data[c?.dataKey]:f.data,b=W(g,c);return{block:e,successful:!0,output:{data:b,raw:f}}},inputSchema:J,outputSchema:V}},[oe.GROUP_DATA]:{v1:{fn:async({block:t,params:r})=>{const{stepsDataToGroup:n,isSingleRecord:a}=R.parse(r),o=n.reduce(((r,n)=>{const o=t.steps?.[n]?.output?.data;return o?a?{...r,[n]:{...o}}:(Object.keys(o).forEach((t=>{const a=e(r[t])?r[t]:{};r[t]={...a,[n]:{...o[t]}}})),r):r}),{});return{block:{...t},successful:!0,output:{data:a?o:Object.values(o)}}},inputSchema:R,outputSchema:D}}},ie=(e,t)=>async({block:r,params:n})=>{try{e.inputSchema&&e.inputSchema.parse(n)}catch{return{block:r,successful:!1,errors:[{message:`Input parameters for ${t} are invalid`}]}}const a=await e.fn({block:r,params:n});try{e.outputSchema&&e.outputSchema.parse(a.output)}catch{return{block:r,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return a},ue={build({functionName:e,version:t="1",validateSchemas:r=!1,stepFunctionsList:n=se}){const a=n?.[e]?.[`v${t}`];if(!a)throw new Error(`Unknown step function: ${e} v${t}`);return r?{...a,fn:ie(a,e)}:a}},ce={hris:{title:"HRIS",key:"hris",description:"Human Resource Information System"},crm:{title:"CRM",key:"crm",description:"Customer Relationship Management"},ats:{title:"ATS",key:"ats",description:"Applicant Tracking System"},lms:{title:"LMS",key:"lms",description:"Learning Management System"},marketing:{title:"Marketing",key:"marketing",description:"Marketing"},filestorage:{title:"File Storage",key:"filestorage",description:"File Storage"}},le=e=>ce[e.toLowerCase()]??null,de=e=>!!ce[e.toLowerCase()];export{Y as AUTHENTICATION_SCHEMA,oe as StepFunctionName,ue as StepFunctionsFactory,le as getCategoryDetails,de as isValidCategory};
1
+ import{notMissing as e,getCountrySubDivisionNameBySubDivisionCode as t,getCountryAlpha2CodeByCitizenship as r,getCountrySubDivisionCodeBySubDivisionName as n,getCountrySubDivisionsByAlpha2Code as a,getCountryCodeByCountryName as o,getCountryCodeByAlpha3Code as s,getCountryCodeByAlpha2Code as i,getCountryAlpha2CodeByCountryCode as u,getCountryAlpha2CodeByCountryName as c,getCountryAlpha2CodeByAlpha3Code as l,getCountryAlpha3CodeByCountryCode as d,getCountryAlpha3CodeByCountryName as p,getCountryAlpha3CodeByAlpha2Code as y,getCountryNameByCountryCode as m,getCountryNameByAlpha2Code as _,getCountryNameByAlpha3Code as f,getCountryNameByCountryName as g,getCountryCodeByCountryCode as b,getCountryAlpha3CodeByAlpha3Code as h,getCountryAlpha2CodeByAlpha2Code as v,isString as k,isMissing as S,safeParseToDateTimeString as F,safeParseToBoolean as j,safeParseToNumber as w,safeParseToString as x}from"@stackone/utils";import{z as A}from"zod";import{evaluate as E,safeEvaluateRecord as K}from"@stackone/expressions";import{RequestParameterLocations as T,HttpMethods as C,RequestClientFactory as U,parseRequestParameters as M,createAuthorizationHeaders as O}from"@stackone/transport";const R=A.object({stepsDataToGroup:A.array(A.string()),isSingleRecord:A.boolean().optional()}),D=A.object({data:A.unknown()}),I=(e,t,r)=>Object.entries(e).reduce(((e,[n,a])=>{const o=a?.output?.data;return Array.isArray(o)&&o.length===t?e[n]={output:{data:o[r]}}:e[n]=a,e}),{}),P=(e,t,r)=>{if(!e||!r)return{record:e};const n={unified:{...e},..."object"==typeof r?r:{}},a={},o=[],s={...e};for(const r of t){const{error:t,value:i}=$(n,e.id,r);t?o.push(t):r.isUnified?s[r.targetFieldKey]=i:a[r.targetFieldKey]=i}return{record:{...s,unified_custom_fields:Object.keys(a).length>0?a:void 0},errors:o.length>0?o:void 0}},$=(e,t,r)=>{const{expression:n,targetFieldKey:a}=r;if(!n)return{error:{message:"Expression is empty",id:t,targetField:a}};let o;try{o=E(n,e)}catch{return{error:{message:"Invalid expression",id:t,targetField:a}}}return void 0===o?{error:{message:"Expression returned no value",id:t,targetField:a}}:{value:o}},L=A.object({fields:A.object({targetFieldKey:A.string(),expression:A.string(),type:A.enum(["string","number","boolean","datetime_string","enum"]),isUnified:A.boolean().optional(),enumMapper:A.object({matcher:A.string().or(A.object({matchExpression:A.string(),value:A.string()}).array())}).optional()}).array(),dataSource:A.string()}),q=A.object({data:A.unknown()}),G=(e,t)=>{if(!t)return;const r={},n=[],a={};for(const o of e){const{error:e,value:s}=z(t,t?.id,o);e?n.push(e):o.isUnified?a[o.targetFieldKey]=s:r[o.targetFieldKey]=s}return{record:{...a,unified_custom_fields:Object.keys(r).length>0?r:void 0},errors:n.length>0?n:void 0}},z=(e,t,r)=>{switch(r.type){case"string":case"number":case"boolean":case"datetime_string":return H(r,t,e);case"enum":return N(r,t,e);default:return{error:{message:"Invalid type",id:t,targetField:r.targetFieldKey}}}},H=(e,t,r)=>{if(!e.expression)return{error:{message:"Expression is empty",id:t,targetField:e.targetFieldKey}};let n;try{n=E(e.expression,r)}catch{return{error:{message:"Invalid expression",id:t,targetField:e.targetFieldKey}}}return void 0===n?{error:{message:"Expression returned no value",id:t,targetField:e.targetFieldKey}}:{value:n}},N=(S,F,j)=>{const w=H(S,F,j),x=e(w.value)?w.value:null;if(void 0===S.enumMapper)return{error:{message:"Enum mapper was not defined",id:F,targetField:S.targetFieldKey}};const A=S.enumMapper.matcher;if(k(A)){const k=(e=>{switch(e){case"country_alpha2code_by_alpha2code":return v;case"country_alpha3code_by_alpha3code":return h;case"country_code_by_country_code":return b;case"country_name_by_country_name":return g;case"country_name_by_alpha3code":return f;case"country_name_by_alpha2code":return _;case"country_name_by_country_code":return m;case"country_alpha3code_by_alpha2code":return y;case"country_alpha3code_by_country_name":return p;case"country_alpha3code_by_country_code":return d;case"country_alpha2code_by_alpha3code":return l;case"country_alpha2code_by_country_name":return c;case"country_alpha2code_by_country_code":return u;case"country_code_by_alpha2code":return i;case"country_code_by_alpha3code":return s;case"country_code_by_country_name":return o;case"country_subdivisions_by_alpha2code":return a;case"country_subdivision_code_by_subdivision_name":return n;case"country_alpha2code_by_citizenship":return r;case"country_subdivision_name_by_subdivision_code":return t;default:return}})(A);if(e(k)){return{value:{value:(e(x)?k(x):null)??"unmapped_value",source_value:x}}}return{error:{message:`The built-in matcher "${A}" is not supported`,id:F,targetField:S.targetFieldKey}}}for(const e of A){const{matchExpression:t,value:r}=e;if(!0===E(t,j))return{value:{value:r,source_value:x}}}return{value:{value:"unmapped_value",source_value:x}}},B=A.object({type:A.literal("basic"),username:A.string(),password:A.string(),encoding:A.string().optional()}),Q=A.object({type:A.literal("bearer"),token:A.string()}),Y=A.discriminatedUnion("type",[B,Q]),J=A.object({baseUrl:A.string(),url:A.string(),method:A.enum(C),response:A.object({collection:A.boolean().optional(),indexField:A.string().optional(),dataKey:A.string().optional()}).optional(),args:A.object({name:A.string(),value:A.unknown(),in:A.enum(T),condition:A.string().optional()}).array().optional()}),V=A.object({data:A.unknown().optional(),raw:A.unknown().optional(),statusCode:A.number()}).optional(),W=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce(((e,r)=>{const n=t.indexField;return n&&r[n]&&(e[r[n]]=r),e}),{});if(!t?.collection&&t?.indexField){const r=t.indexField;return r&&e[r]?{[e[r]]:e}:e}return e},X=A.object({fields:A.object({targetFieldKey:A.string(),type:A.string(),isUnified:A.boolean().optional()}).array().optional(),dataSource:A.string()}),Z=A.object({data:A.unknown()});var ee;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(ee||(ee={}));const te=({value:e,type:t,format:r})=>{if(S(e))return null;switch(t){case ee.String:return x({value:e});case ee.Number:return w({value:e});case ee.Boolean:return j({value:e});case ee.DateTimeString:return F({value:e,format:r});default:return e}},re=e=>Object.values(ee).includes(e),ne=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:a,type:o}=r;re(o)&&(r.isUnified&&e(n[a])?n[a]=te({value:t[a],type:o}):n.unified_custom_fields&&e(n.unified_custom_fields?.[a])&&(n.unified_custom_fields[a]=te({value:t.unified_custom_fields?.[a],type:o})))})),{...n}},ae=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:a,type:o}=r;re(o)&&(r.isUnified&&e(n[a])?n[a]=te({value:t[a],type:o}):n.unified_custom_fields&&e(n.unified_custom_fields?.[a])&&(n.unified_custom_fields[a]=te({value:t.unified_custom_fields?.[a],type:o})))})),{...n}};var oe;!function(e){e.TYPECAST="typecast",e.MAP_FIELDS="map_fields",e.GROUP_DATA="group_data",e.REQUEST="request"}(oe||(oe={}));const se={[oe.TYPECAST]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs;if(!t||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let r;return r=Array.isArray(e.result)?e.result.map((e=>ne(e,t))):ne(e.result,t),{block:{...e,result:r},successful:!0}}},v2:{fn:async({block:e,params:t})=>{const{fields:r,dataSource:n}=X.parse(t),a=E(n,e);if(!r||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let o;return o=Array.isArray(a)?a.map((e=>ae(e,r))):ae(a,r),{block:{...e},successful:!0,output:{data:o}}},inputSchema:X,outputSchema:Z}},[oe.MAP_FIELDS]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs,r=[],n=e.steps;if(!t||"disabled"===e?.debug?.custom_mappings||!n)return{block:e,successful:!0};let a;if(Array.isArray(e.result)){const o=e.result.length;a=e.result.map(((e,a)=>{const s=I(n,o,a),i=P(e,t,s);return r.push(...i.errors||[]),i.record}))}else{const o=P(e.result,t,n);a=o.record,r.push(...o.errors||[])}return{block:{...e,result:a},successful:!0,errors:Object.keys(r).length>0?r:void 0}}},v2:{fn:async({block:e,params:t})=>{const r=[],{fields:n,dataSource:a}=L.parse(t),o=E(a,e);if(!n||!a||"disabled"===e?.debug?.custom_mappings||!o)return{block:e,successful:!0};let s;if(Array.isArray(o))s=o.map((e=>{const t=G(n,e);return r.push(...t?.errors||[]),t?.record}));else{const e=G(n,o);s=e?.record,r.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:s},errors:Object.keys(r).length>0?r:void 0}},inputSchema:L,outputSchema:q}},[oe.REQUEST]:{v1:{fn:async({block:e,params:t})=>{const r=U.build();if(!e.httpClient)throw new Error("HTTP client is not configured");const{args:n}=t,a=n?n.filter((t=>!t.condition||!0===E(t.condition,e))).map((e=>({...e,condition:void 0}))):void 0,o=t?K({...t,args:a},e):{},{baseUrl:s,url:i,method:u,response:c,args:l}=J.parse(o),d=o?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,p=Y.parse(d),y=l?M(l):{query:{},body:{},headers:{}},m=O(p),_={...y?.headers??{},...m};let f;try{f=await r.performRequest({httpClient:e.httpClient,url:`${s}${i}`,queryParams:y?.query,method:u,headers:_,body:y?.body})}catch(t){const r=t;return{block:e,successful:!1,errors:[t],output:{statusCode:r?.response?.status??500}}}const g=c?.dataKey?f.data[c?.dataKey]:f.data,b=W(g,c);return{block:e,successful:!0,output:{data:b,raw:f,statusCode:f?.status}}},inputSchema:J,outputSchema:V}},[oe.GROUP_DATA]:{v1:{fn:async({block:t,params:r})=>{const{stepsDataToGroup:n,isSingleRecord:a}=R.parse(r),o=n.reduce(((r,n)=>{const o=t.steps?.[n]?.output?.data;return o?a?{...r,[n]:{...o}}:(Object.keys(o).forEach((t=>{const a=e(r[t])?r[t]:{};r[t]={...a,[n]:{...o[t]}}})),r):r}),{});return{block:{...t},successful:!0,output:{data:a?o:Object.values(o)}}},inputSchema:R,outputSchema:D}}},ie=(e,t)=>async({block:r,params:n})=>{try{e.inputSchema&&e.inputSchema.parse(n)}catch{return{block:r,successful:!1,errors:[{message:`Input parameters for ${t} are invalid`}]}}const a=await e.fn({block:r,params:n});try{e.outputSchema&&e.outputSchema.parse(a.output)}catch{return{block:r,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return a},ue={build({functionName:e,version:t="1",validateSchemas:r=!1,stepFunctionsList:n=se}){const a=n?.[e]?.[`v${t}`];if(!a)throw new Error(`Unknown step function: ${e} v${t}`);return r?{...a,fn:ie(a,e)}:a}},ce={hris:{title:"HRIS",key:"hris",description:"Human Resource Information System"},crm:{title:"CRM",key:"crm",description:"Customer Relationship Management"},ats:{title:"ATS",key:"ats",description:"Applicant Tracking System"},lms:{title:"LMS",key:"lms",description:"Learning Management System"},marketing:{title:"Marketing",key:"marketing",description:"Marketing"},filestorage:{title:"File Storage",key:"filestorage",description:"File Storage"}},le=e=>ce[e.toLowerCase()]??null,de=e=>!!ce[e.toLowerCase()];export{Y as AUTHENTICATION_SCHEMA,oe as StepFunctionName,ue as StepFunctionsFactory,le as getCategoryDetails,de as isValidCategory};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("@stackone/utils"),t=require("zod"),r=require("@stackone/expressions"),n=require("@stackone/transport");const o=t.z.object({stepsDataToGroup:t.z.array(t.z.string()),isSingleRecord:t.z.boolean().optional()}),a=t.z.object({data:t.z.unknown()}),s=(e,t,r)=>Object.entries(e).reduce(((e,[n,o])=>{const a=o?.output?.data;return Array.isArray(a)&&a.length===t?e[n]={output:{data:a[r]}}:e[n]=o,e}),{}),i=(e,t,r)=>{if(!e||!r)return{record:e};const n={unified:{...e},..."object"==typeof r?r:{}},o={},a=[],s={...e};for(const r of t){const{error:t,value:i}=u(n,e.id,r);t?a.push(t):r.isUnified?s[r.targetFieldKey]=i:o[r.targetFieldKey]=i}return{record:{...s,unified_custom_fields:Object.keys(o).length>0?o:void 0},errors:a.length>0?a:void 0}},u=(e,t,n)=>{const{expression:o,targetFieldKey:a}=n;if(!o)return{error:{message:"Expression is empty",id:t,targetField:a}};let s;try{s=r.evaluate(o,e)}catch{return{error:{message:"Invalid expression",id:t,targetField:a}}}return void 0===s?{error:{message:"Expression returned no value",id:t,targetField:a}}:{value:s}},c=t.z.object({fields:t.z.object({targetFieldKey:t.z.string(),expression:t.z.string(),type:t.z.enum(["string","number","boolean","datetime_string","enum"]),isUnified:t.z.boolean().optional(),enumMapper:t.z.object({matcher:t.z.string().or(t.z.object({matchExpression:t.z.string(),value:t.z.string()}).array())}).optional()}).array(),dataSource:t.z.string()}),l=t.z.object({data:t.z.unknown()}),d=(e,t)=>{if(!t)return;const r={},n=[],o={};for(const a of e){const{error:e,value:s}=p(t,t?.id,a);e?n.push(e):a.isUnified?o[a.targetFieldKey]=s:r[a.targetFieldKey]=s}return{record:{...o,unified_custom_fields:Object.keys(r).length>0?r:void 0},errors:n.length>0?n:void 0}},p=(e,t,r)=>{switch(r.type){case"string":case"number":case"boolean":case"datetime_string":return y(r,t,e);case"enum":return m(r,t,e);default:return{error:{message:"Invalid type",id:t,targetField:r.targetFieldKey}}}},y=(e,t,n)=>{if(!e.expression)return{error:{message:"Expression is empty",id:t,targetField:e.targetFieldKey}};let o;try{o=r.evaluate(e.expression,n)}catch{return{error:{message:"Invalid expression",id:t,targetField:e.targetFieldKey}}}return void 0===o?{error:{message:"Expression returned no value",id:t,targetField:e.targetFieldKey}}:{value:o}},m=(t,n,o)=>{const a=y(t,n,o),s=e.notMissing(a.value)?a.value:null;if(void 0===t.enumMapper)return{error:{message:"Enum mapper was not defined",id:n,targetField:t.targetFieldKey}};const i=t.enumMapper.matcher;if(e.isString(i)){const r=(t=>{switch(t){case"country_alpha2code_by_alpha2code":return e.getCountryAlpha2CodeByAlpha2Code;case"country_alpha3code_by_alpha3code":return e.getCountryAlpha3CodeByAlpha3Code;case"country_code_by_country_code":return e.getCountryCodeByCountryCode;case"country_name_by_country_name":return e.getCountryNameByCountryName;case"country_name_by_alpha3code":return e.getCountryNameByAlpha3Code;case"country_name_by_alpha2code":return e.getCountryNameByAlpha2Code;case"country_name_by_country_code":return e.getCountryNameByCountryCode;case"country_alpha3code_by_alpha2code":return e.getCountryAlpha3CodeByAlpha2Code;case"country_alpha3code_by_country_name":return e.getCountryAlpha3CodeByCountryName;case"country_alpha3code_by_country_code":return e.getCountryAlpha3CodeByCountryCode;case"country_alpha2code_by_alpha3code":return e.getCountryAlpha2CodeByAlpha3Code;case"country_alpha2code_by_country_name":return e.getCountryAlpha2CodeByCountryName;case"country_alpha2code_by_country_code":return e.getCountryAlpha2CodeByCountryCode;case"country_code_by_alpha2code":return e.getCountryCodeByAlpha2Code;case"country_code_by_alpha3code":return e.getCountryCodeByAlpha3Code;case"country_code_by_country_name":return e.getCountryCodeByCountryName;case"country_subdivisions_by_alpha2code":return e.getCountrySubDivisionsByAlpha2Code;case"country_subdivision_code_by_subdivision_name":return e.getCountrySubDivisionCodeBySubDivisionName;case"country_alpha2code_by_citizenship":return e.getCountryAlpha2CodeByCitizenship;case"country_subdivision_name_by_subdivision_code":return e.getCountrySubDivisionNameBySubDivisionCode;default:return}})(i);if(e.notMissing(r)){return{value:{value:(e.notMissing(s)?r(s):null)??"unmapped_value",source_value:s}}}return{error:{message:`The built-in matcher "${i}" is not supported`,id:n,targetField:t.targetFieldKey}}}for(const e of i){const{matchExpression:t,value:n}=e;if(!0===r.evaluate(t,o))return{value:{value:n,source_value:s}}}return{value:{value:"unmapped_value",source_value:s}}},g=t.z.object({type:t.z.literal("basic"),username:t.z.string(),password:t.z.string(),encoding:t.z.string().optional()}),_=t.z.object({type:t.z.literal("bearer"),token:t.z.string()}),f=t.z.discriminatedUnion("type",[g,_]),b=t.z.object({baseUrl:t.z.string(),url:t.z.string(),method:t.z.enum(n.HttpMethods),response:t.z.object({collection:t.z.boolean().optional(),indexField:t.z.string().optional(),dataKey:t.z.string().optional()}).optional(),args:t.z.object({name:t.z.string(),value:t.z.unknown(),in:t.z.enum(n.RequestParameterLocations),condition:t.z.string().optional()}).array().optional()}),h=t.z.object({data:t.z.unknown(),raw:t.z.unknown().optional()}),v=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce(((e,r)=>{const n=t.indexField;return n&&r[n]&&(e[r[n]]=r),e}),{});if(!t?.collection&&t?.indexField){const r=t.indexField;return r&&e[r]?{[e[r]]:e}:e}return e},C=t.z.object({fields:t.z.object({targetFieldKey:t.z.string(),type:t.z.string(),isUnified:t.z.boolean().optional()}).array().optional(),dataSource:t.z.string()}),z=t.z.object({data:t.z.unknown()});var S;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(S||(S={}));const k=({value:t,type:r,format:n})=>{if(e.isMissing(t))return null;switch(r){case S.String:return e.safeParseToString({value:t});case S.Number:return e.safeParseToNumber({value:t});case S.Boolean:return e.safeParseToBoolean({value:t});case S.DateTimeString:return e.safeParseToDateTimeString({value:t,format:n});default:return t}},A=e=>Object.values(S).includes(e),F=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:o,type:a}=r;A(a)&&(r.isUnified&&e.notMissing(n[o])?n[o]=k({value:t[o],type:a}):n.unified_custom_fields&&e.notMissing(n.unified_custom_fields?.[o])&&(n.unified_custom_fields[o]=k({value:t.unified_custom_fields?.[o],type:a})))})),{...n}},x=(t,r)=>{const n={...t};return r.forEach((r=>{const{targetFieldKey:o,type:a}=r;A(a)&&(r.isUnified&&e.notMissing(n[o])?n[o]=k({value:t[o],type:a}):n.unified_custom_fields&&e.notMissing(n.unified_custom_fields?.[o])&&(n.unified_custom_fields[o]=k({value:t.unified_custom_fields?.[o],type:a})))})),{...n}};var T;exports.StepFunctionName=void 0,(T=exports.StepFunctionName||(exports.StepFunctionName={})).TYPECAST="typecast",T.MAP_FIELDS="map_fields",T.GROUP_DATA="group_data",T.REQUEST="request";const j={[exports.StepFunctionName.TYPECAST]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs;if(!t||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let r;return r=Array.isArray(e.result)?e.result.map((e=>F(e,t))):F(e.result,t),{block:{...e,result:r},successful:!0}}},v2:{fn:async({block:e,params:t})=>{const{fields:n,dataSource:o}=C.parse(t),a=r.evaluate(o,e);if(!n||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let s;return s=Array.isArray(a)?a.map((e=>x(e,n))):x(a,n),{block:{...e},successful:!0,output:{data:s}}},inputSchema:C,outputSchema:z}},[exports.StepFunctionName.MAP_FIELDS]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs,r=[],n=e.steps;if(!t||"disabled"===e?.debug?.custom_mappings||!n)return{block:e,successful:!0};let o;if(Array.isArray(e.result)){const a=e.result.length;o=e.result.map(((e,o)=>{const u=s(n,a,o),c=i(e,t,u);return r.push(...c.errors||[]),c.record}))}else{const a=i(e.result,t,n);o=a.record,r.push(...a.errors||[])}return{block:{...e,result:o},successful:!0,errors:Object.keys(r).length>0?r:void 0}}},v2:{fn:async({block:e,params:t})=>{const n=[],{fields:o,dataSource:a}=c.parse(t),s=r.evaluate(a,e);if(!o||!a||"disabled"===e?.debug?.custom_mappings||!s)return{block:e,successful:!0};let i;if(Array.isArray(s))i=s.map((e=>{const t=d(o,e);return n.push(...t?.errors||[]),t?.record}));else{const e=d(o,s);i=e?.record,n.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:i},errors:Object.keys(n).length>0?n:void 0}},inputSchema:c,outputSchema:l}},[exports.StepFunctionName.REQUEST]:{v1:{fn:async({block:e,params:t})=>{const o=n.RequestClientFactory.build();if(!e.httpClient)throw new Error("HTTP client is not configured");const{args:a}=t,s=a?a.filter((t=>!t.condition||!0===r.evaluate(t.condition,e))).map((e=>({...e,condition:void 0}))):void 0,i=t?r.safeEvaluateRecord({...t,args:s},e):{},{baseUrl:u,url:c,method:l,response:d,args:p}=b.parse(i),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,m=f.parse(y),g=p?n.parseRequestParameters(p):{query:{},body:{},headers:{}},_=n.createAuthorizationHeaders(m),h={...g?.headers??{},..._};let C;try{C=await o.performRequest({httpClient:e.httpClient,url:`${u}${c}`,queryParams:g?.query,method:l,headers:h,body:g?.body})}catch(t){return{block:e,successful:!1,errors:[t]}}const z=d?.dataKey?C.data[d?.dataKey]:C.data,S=v(z,d);return{block:e,successful:!0,output:{data:S,raw:C}}},inputSchema:b,outputSchema:h}},[exports.StepFunctionName.GROUP_DATA]:{v1:{fn:async({block:t,params:r})=>{const{stepsDataToGroup:n,isSingleRecord:a}=o.parse(r),s=n.reduce(((r,n)=>{const o=t.steps?.[n]?.output?.data;return o?a?{...r,[n]:{...o}}:(Object.keys(o).forEach((t=>{const a=e.notMissing(r[t])?r[t]:{};r[t]={...a,[n]:{...o[t]}}})),r):r}),{});return{block:{...t},successful:!0,output:{data:a?s:Object.values(s)}}},inputSchema:o,outputSchema:a}}},B=(e,t)=>async({block:r,params:n})=>{try{e.inputSchema&&e.inputSchema.parse(n)}catch{return{block:r,successful:!1,errors:[{message:`Input parameters for ${t} are invalid`}]}}const o=await e.fn({block:r,params:n});try{e.outputSchema&&e.outputSchema.parse(o.output)}catch{return{block:r,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return o},E={build({functionName:e,version:t="1",validateSchemas:r=!1,stepFunctionsList:n=j}){const o=n?.[e]?.[`v${t}`];if(!o)throw new Error(`Unknown step function: ${e} v${t}`);return r?{...o,fn:B(o,e)}:o}},N={hris:{title:"HRIS",key:"hris",description:"Human Resource Information System"},crm:{title:"CRM",key:"crm",description:"Customer Relationship Management"},ats:{title:"ATS",key:"ats",description:"Applicant Tracking System"},lms:{title:"LMS",key:"lms",description:"Learning Management System"},marketing:{title:"Marketing",key:"marketing",description:"Marketing"},filestorage:{title:"File Storage",key:"filestorage",description:"File Storage"}};exports.AUTHENTICATION_SCHEMA=f,exports.StepFunctionsFactory=E,exports.getCategoryDetails=e=>N[e.toLowerCase()]??null,exports.isValidCategory=e=>!!N[e.toLowerCase()];
1
+ "use strict";var e=require("@stackone/utils"),t=require("zod"),r=require("@stackone/expressions"),o=require("@stackone/transport");const n=t.z.object({stepsDataToGroup:t.z.array(t.z.string()),isSingleRecord:t.z.boolean().optional()}),a=t.z.object({data:t.z.unknown()}),s=(e,t,r)=>Object.entries(e).reduce(((e,[o,n])=>{const a=n?.output?.data;return Array.isArray(a)&&a.length===t?e[o]={output:{data:a[r]}}:e[o]=n,e}),{}),i=(e,t,r)=>{if(!e||!r)return{record:e};const o={unified:{...e},..."object"==typeof r?r:{}},n={},a=[],s={...e};for(const r of t){const{error:t,value:i}=u(o,e.id,r);t?a.push(t):r.isUnified?s[r.targetFieldKey]=i:n[r.targetFieldKey]=i}return{record:{...s,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:a.length>0?a:void 0}},u=(e,t,o)=>{const{expression:n,targetFieldKey:a}=o;if(!n)return{error:{message:"Expression is empty",id:t,targetField:a}};let s;try{s=r.evaluate(n,e)}catch{return{error:{message:"Invalid expression",id:t,targetField:a}}}return void 0===s?{error:{message:"Expression returned no value",id:t,targetField:a}}:{value:s}},c=t.z.object({fields:t.z.object({targetFieldKey:t.z.string(),expression:t.z.string(),type:t.z.enum(["string","number","boolean","datetime_string","enum"]),isUnified:t.z.boolean().optional(),enumMapper:t.z.object({matcher:t.z.string().or(t.z.object({matchExpression:t.z.string(),value:t.z.string()}).array())}).optional()}).array(),dataSource:t.z.string()}),l=t.z.object({data:t.z.unknown()}),d=(e,t)=>{if(!t)return;const r={},o=[],n={};for(const a of e){const{error:e,value:s}=p(t,t?.id,a);e?o.push(e):a.isUnified?n[a.targetFieldKey]=s:r[a.targetFieldKey]=s}return{record:{...n,unified_custom_fields:Object.keys(r).length>0?r:void 0},errors:o.length>0?o:void 0}},p=(e,t,r)=>{switch(r.type){case"string":case"number":case"boolean":case"datetime_string":return y(r,t,e);case"enum":return m(r,t,e);default:return{error:{message:"Invalid type",id:t,targetField:r.targetFieldKey}}}},y=(e,t,o)=>{if(!e.expression)return{error:{message:"Expression is empty",id:t,targetField:e.targetFieldKey}};let n;try{n=r.evaluate(e.expression,o)}catch{return{error:{message:"Invalid expression",id:t,targetField:e.targetFieldKey}}}return void 0===n?{error:{message:"Expression returned no value",id:t,targetField:e.targetFieldKey}}:{value:n}},m=(t,o,n)=>{const a=y(t,o,n),s=e.notMissing(a.value)?a.value:null;if(void 0===t.enumMapper)return{error:{message:"Enum mapper was not defined",id:o,targetField:t.targetFieldKey}};const i=t.enumMapper.matcher;if(e.isString(i)){const r=(t=>{switch(t){case"country_alpha2code_by_alpha2code":return e.getCountryAlpha2CodeByAlpha2Code;case"country_alpha3code_by_alpha3code":return e.getCountryAlpha3CodeByAlpha3Code;case"country_code_by_country_code":return e.getCountryCodeByCountryCode;case"country_name_by_country_name":return e.getCountryNameByCountryName;case"country_name_by_alpha3code":return e.getCountryNameByAlpha3Code;case"country_name_by_alpha2code":return e.getCountryNameByAlpha2Code;case"country_name_by_country_code":return e.getCountryNameByCountryCode;case"country_alpha3code_by_alpha2code":return e.getCountryAlpha3CodeByAlpha2Code;case"country_alpha3code_by_country_name":return e.getCountryAlpha3CodeByCountryName;case"country_alpha3code_by_country_code":return e.getCountryAlpha3CodeByCountryCode;case"country_alpha2code_by_alpha3code":return e.getCountryAlpha2CodeByAlpha3Code;case"country_alpha2code_by_country_name":return e.getCountryAlpha2CodeByCountryName;case"country_alpha2code_by_country_code":return e.getCountryAlpha2CodeByCountryCode;case"country_code_by_alpha2code":return e.getCountryCodeByAlpha2Code;case"country_code_by_alpha3code":return e.getCountryCodeByAlpha3Code;case"country_code_by_country_name":return e.getCountryCodeByCountryName;case"country_subdivisions_by_alpha2code":return e.getCountrySubDivisionsByAlpha2Code;case"country_subdivision_code_by_subdivision_name":return e.getCountrySubDivisionCodeBySubDivisionName;case"country_alpha2code_by_citizenship":return e.getCountryAlpha2CodeByCitizenship;case"country_subdivision_name_by_subdivision_code":return e.getCountrySubDivisionNameBySubDivisionCode;default:return}})(i);if(e.notMissing(r)){return{value:{value:(e.notMissing(s)?r(s):null)??"unmapped_value",source_value:s}}}return{error:{message:`The built-in matcher "${i}" is not supported`,id:o,targetField:t.targetFieldKey}}}for(const e of i){const{matchExpression:t,value:o}=e;if(!0===r.evaluate(t,n))return{value:{value:o,source_value:s}}}return{value:{value:"unmapped_value",source_value:s}}},g=t.z.object({type:t.z.literal("basic"),username:t.z.string(),password:t.z.string(),encoding:t.z.string().optional()}),_=t.z.object({type:t.z.literal("bearer"),token:t.z.string()}),f=t.z.discriminatedUnion("type",[g,_]),b=t.z.object({baseUrl:t.z.string(),url:t.z.string(),method:t.z.enum(o.HttpMethods),response:t.z.object({collection:t.z.boolean().optional(),indexField:t.z.string().optional(),dataKey:t.z.string().optional()}).optional(),args:t.z.object({name:t.z.string(),value:t.z.unknown(),in:t.z.enum(o.RequestParameterLocations),condition:t.z.string().optional()}).array().optional()}),h=t.z.object({data:t.z.unknown().optional(),raw:t.z.unknown().optional(),statusCode:t.z.number()}).optional(),v=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce(((e,r)=>{const o=t.indexField;return o&&r[o]&&(e[r[o]]=r),e}),{});if(!t?.collection&&t?.indexField){const r=t.indexField;return r&&e[r]?{[e[r]]:e}:e}return e},C=t.z.object({fields:t.z.object({targetFieldKey:t.z.string(),type:t.z.string(),isUnified:t.z.boolean().optional()}).array().optional(),dataSource:t.z.string()}),z=t.z.object({data:t.z.unknown()});var S;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(S||(S={}));const k=({value:t,type:r,format:o})=>{if(e.isMissing(t))return null;switch(r){case S.String:return e.safeParseToString({value:t});case S.Number:return e.safeParseToNumber({value:t});case S.Boolean:return e.safeParseToBoolean({value:t});case S.DateTimeString:return e.safeParseToDateTimeString({value:t,format:o});default:return t}},A=e=>Object.values(S).includes(e),F=(t,r)=>{const o={...t};return r.forEach((r=>{const{targetFieldKey:n,type:a}=r;A(a)&&(r.isUnified&&e.notMissing(o[n])?o[n]=k({value:t[n],type:a}):o.unified_custom_fields&&e.notMissing(o.unified_custom_fields?.[n])&&(o.unified_custom_fields[n]=k({value:t.unified_custom_fields?.[n],type:a})))})),{...o}},x=(t,r)=>{const o={...t};return r.forEach((r=>{const{targetFieldKey:n,type:a}=r;A(a)&&(r.isUnified&&e.notMissing(o[n])?o[n]=k({value:t[n],type:a}):o.unified_custom_fields&&e.notMissing(o.unified_custom_fields?.[n])&&(o.unified_custom_fields[n]=k({value:t.unified_custom_fields?.[n],type:a})))})),{...o}};var T;exports.StepFunctionName=void 0,(T=exports.StepFunctionName||(exports.StepFunctionName={})).TYPECAST="typecast",T.MAP_FIELDS="map_fields",T.GROUP_DATA="group_data",T.REQUEST="request";const j={[exports.StepFunctionName.TYPECAST]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs;if(!t||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let r;return r=Array.isArray(e.result)?e.result.map((e=>F(e,t))):F(e.result,t),{block:{...e,result:r},successful:!0}}},v2:{fn:async({block:e,params:t})=>{const{fields:o,dataSource:n}=C.parse(t),a=r.evaluate(n,e);if(!o||"disabled"===e?.debug?.custom_mappings)return{block:e,successful:!0};let s;return s=Array.isArray(a)?a.map((e=>x(e,o))):x(a,o),{block:{...e},successful:!0,output:{data:s}}},inputSchema:C,outputSchema:z}},[exports.StepFunctionName.MAP_FIELDS]:{v1:{fn:async({block:e})=>{const t=e?.fieldConfigs,r=[],o=e.steps;if(!t||"disabled"===e?.debug?.custom_mappings||!o)return{block:e,successful:!0};let n;if(Array.isArray(e.result)){const a=e.result.length;n=e.result.map(((e,n)=>{const u=s(o,a,n),c=i(e,t,u);return r.push(...c.errors||[]),c.record}))}else{const a=i(e.result,t,o);n=a.record,r.push(...a.errors||[])}return{block:{...e,result:n},successful:!0,errors:Object.keys(r).length>0?r:void 0}}},v2:{fn:async({block:e,params:t})=>{const o=[],{fields:n,dataSource:a}=c.parse(t),s=r.evaluate(a,e);if(!n||!a||"disabled"===e?.debug?.custom_mappings||!s)return{block:e,successful:!0};let i;if(Array.isArray(s))i=s.map((e=>{const t=d(n,e);return o.push(...t?.errors||[]),t?.record}));else{const e=d(n,s);i=e?.record,o.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:i},errors:Object.keys(o).length>0?o:void 0}},inputSchema:c,outputSchema:l}},[exports.StepFunctionName.REQUEST]:{v1:{fn:async({block:e,params:t})=>{const n=o.RequestClientFactory.build();if(!e.httpClient)throw new Error("HTTP client is not configured");const{args:a}=t,s=a?a.filter((t=>!t.condition||!0===r.evaluate(t.condition,e))).map((e=>({...e,condition:void 0}))):void 0,i=t?r.safeEvaluateRecord({...t,args:s},e):{},{baseUrl:u,url:c,method:l,response:d,args:p}=b.parse(i),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,m=f.parse(y),g=p?o.parseRequestParameters(p):{query:{},body:{},headers:{}},_=o.createAuthorizationHeaders(m),h={...g?.headers??{},..._};let C;try{C=await n.performRequest({httpClient:e.httpClient,url:`${u}${c}`,queryParams:g?.query,method:l,headers:h,body:g?.body})}catch(t){const r=t;return{block:e,successful:!1,errors:[t],output:{statusCode:r?.response?.status??500}}}const z=d?.dataKey?C.data[d?.dataKey]:C.data,S=v(z,d);return{block:e,successful:!0,output:{data:S,raw:C,statusCode:C?.status}}},inputSchema:b,outputSchema:h}},[exports.StepFunctionName.GROUP_DATA]:{v1:{fn:async({block:t,params:r})=>{const{stepsDataToGroup:o,isSingleRecord:a}=n.parse(r),s=o.reduce(((r,o)=>{const n=t.steps?.[o]?.output?.data;return n?a?{...r,[o]:{...n}}:(Object.keys(n).forEach((t=>{const a=e.notMissing(r[t])?r[t]:{};r[t]={...a,[o]:{...n[t]}}})),r):r}),{});return{block:{...t},successful:!0,output:{data:a?s:Object.values(s)}}},inputSchema:n,outputSchema:a}}},B=(e,t)=>async({block:r,params:o})=>{try{e.inputSchema&&e.inputSchema.parse(o)}catch{return{block:r,successful:!1,errors:[{message:`Input parameters for ${t} are invalid`}]}}const n=await e.fn({block:r,params:o});try{e.outputSchema&&e.outputSchema.parse(n.output)}catch{return{block:r,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return n},E={build({functionName:e,version:t="1",validateSchemas:r=!1,stepFunctionsList:o=j}){const n=o?.[e]?.[`v${t}`];if(!n)throw new Error(`Unknown step function: ${e} v${t}`);return r?{...n,fn:B(n,e)}:n}},N={hris:{title:"HRIS",key:"hris",description:"Human Resource Information System"},crm:{title:"CRM",key:"crm",description:"Customer Relationship Management"},ats:{title:"ATS",key:"ats",description:"Applicant Tracking System"},lms:{title:"LMS",key:"lms",description:"Learning Management System"},marketing:{title:"Marketing",key:"marketing",description:"Marketing"},filestorage:{title:"File Storage",key:"filestorage",description:"File Storage"}};exports.AUTHENTICATION_SCHEMA=f,exports.StepFunctionsFactory=E,exports.getCategoryDetails=e=>N[e.toLowerCase()]??null,exports.isValidCategory=e=>!!N[e.toLowerCase()];
@@ -1,5 +1,5 @@
1
1
  export { Block, BlockIndexedRecord, BlockContext, FieldConfig, } from './blocks/types';
2
- export { StepFunction, StepFunctionParams } from './stepFunctions/types';
2
+ export { StepFunction, StepFunctionParams, StepFunctionOutput } from './stepFunctions/types';
3
3
  export { StepFunctionName } from './stepFunctions/stepFunctionsList';
4
4
  export { StepsSnapshots, Step } from './steps/types';
5
5
  export { StepFunctionsFactory } from './stepFunctions/factory';
@@ -88,13 +88,16 @@ export declare const REQUEST_INPUT_PARAMS: z.ZodObject<{
88
88
  condition?: string | undefined;
89
89
  }[] | undefined;
90
90
  }>;
91
- export declare const REQUEST_OUTPUT: z.ZodObject<{
92
- data: z.ZodUnknown;
91
+ export declare const REQUEST_OUTPUT: z.ZodOptional<z.ZodObject<{
92
+ data: z.ZodOptional<z.ZodUnknown>;
93
93
  raw: z.ZodOptional<z.ZodUnknown>;
94
+ statusCode: z.ZodNumber;
94
95
  }, "strip", z.ZodTypeAny, {
96
+ statusCode: number;
95
97
  data?: unknown;
96
98
  raw?: unknown;
97
99
  }, {
100
+ statusCode: number;
98
101
  data?: unknown;
99
102
  raw?: unknown;
100
- }>;
103
+ }>>;
@@ -213,16 +213,19 @@ export declare const stepFunctions: {
213
213
  condition?: string | undefined;
214
214
  }[] | undefined;
215
215
  }>;
216
- outputSchema: import("zod").ZodObject<{
217
- data: import("zod").ZodUnknown;
216
+ outputSchema: import("zod").ZodOptional<import("zod").ZodObject<{
217
+ data: import("zod").ZodOptional<import("zod").ZodUnknown>;
218
218
  raw: import("zod").ZodOptional<import("zod").ZodUnknown>;
219
+ statusCode: import("zod").ZodNumber;
219
220
  }, "strip", import("zod").ZodTypeAny, {
221
+ statusCode: number;
220
222
  data?: unknown;
221
223
  raw?: unknown;
222
224
  }, {
225
+ statusCode: number;
223
226
  data?: unknown;
224
227
  raw?: unknown;
225
- }>;
228
+ }>>;
226
229
  };
227
230
  };
228
231
  group_data: {
@@ -4,6 +4,8 @@ export type StepSnapshot = {
4
4
  [name: string]: unknown;
5
5
  };
6
6
  successful: boolean;
7
+ skipped?: boolean;
8
+ message?: string;
7
9
  errors?: StepError[];
8
10
  };
9
11
  export type StepsSnapshots = {
@@ -20,7 +22,8 @@ export type Step = {
20
22
  id: string;
21
23
  description: string;
22
24
  stepFunction: StepFunctionMeta;
23
- ignoreErrors?: boolean;
25
+ ignoreError?: boolean;
24
26
  async?: boolean;
25
27
  successCriteria?: string;
28
+ condition?: string;
26
29
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/core",
3
- "version": "1.31.1",
3
+ "version": "1.33.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.es.mjs",