@stackone/core 1.32.0 → 1.34.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 +1 -1
- package/dist/index.js +1 -1
- package/dist/types/connector/types.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/stepFunctions/request/schemas.d.ts +3 -0
- package/dist/types/stepFunctions/stepFunctionsList.d.ts +3 -0
- package/dist/types/steps/types.d.ts +2 -1
- package/package.json +1 -1
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().optional(),raw:A.unknown().optional()}).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"),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()}).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){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: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
|
+
"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()];
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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';
|
|
@@ -91,10 +91,13 @@ export declare const REQUEST_INPUT_PARAMS: z.ZodObject<{
|
|
|
91
91
|
export declare const REQUEST_OUTPUT: z.ZodOptional<z.ZodObject<{
|
|
92
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
|
}>>;
|
|
@@ -216,10 +216,13 @@ export declare const stepFunctions: {
|
|
|
216
216
|
outputSchema: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
217
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
|
}>>;
|
|
@@ -5,6 +5,7 @@ export type StepSnapshot = {
|
|
|
5
5
|
};
|
|
6
6
|
successful: boolean;
|
|
7
7
|
skipped?: boolean;
|
|
8
|
+
message?: string;
|
|
8
9
|
errors?: StepError[];
|
|
9
10
|
};
|
|
10
11
|
export type StepsSnapshots = {
|
|
@@ -21,7 +22,7 @@ export type Step = {
|
|
|
21
22
|
id: string;
|
|
22
23
|
description: string;
|
|
23
24
|
stepFunction: StepFunctionMeta;
|
|
24
|
-
|
|
25
|
+
ignoreError?: boolean;
|
|
25
26
|
async?: boolean;
|
|
26
27
|
successCriteria?: string;
|
|
27
28
|
condition?: string;
|