@stackone/core 2.31.0 → 2.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +55 -6
- package/dist/index.d.mts +55 -6
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,__name=(e,n)=>t(e,`name`,{value:n,configurable:!0}),n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__copyProps=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},__toESM=(n,r,a)=>(a=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let o=require(`@stackone/utils`),s=require(`@stackone/expressions`),c=require(`@stackone/transport`),l=require(`mime-types`);l=__toESM(l);let u=require(`form-data`);u=__toESM(u);const d={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`},internal:{title:`Internal`,key:`internal`,description:`Category for internal actions`},action:{title:`Action`,key:`action`,description:`Action`}},getCategoryDetails=e=>d[e.toLowerCase()]??null,isValidCategory=e=>!!d[e.toLowerCase()],f=`so1!`,p=(0,o.encodeToBase64)(`so1!`),m=`:`,h=`,`,g=RegExp(`(?<!\\\\):`,`g`),_=RegExp(`(?<!\\\\),`,`g`),v=1;var y=class CoreError extends Error{constructor({category:e,name:t,type:n,context:r,message:i}){super(i),this.name=t??`CoreError`,this.type=n,this.category=e,this.context=r,Error.captureStackTrace&&Error.captureStackTrace(this,CoreError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},BaseCompositeIdError=class extends y{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},CompositeIdMissingHeaderError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},CompositeIdMissingBodyError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},CompositeIdUnknownIdentifierError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},CompositeIdUnsupportedVersionError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const isSingleIdentifier=e=>!(0,o.isMissing)(e)&&`value`in e&&e.value!==void 0,isMultipleIdentifier=e=>!(0,o.isMissing)(e)&&`identifiers`in e&&e.identifiers!==void 0,encodeCompositeId=(e,t={version:1})=>{if(t.version===1)return encodeIdV1(getComposedIdV1(e,t.aliases));throw new CompositeIdUnsupportedVersionError(`Cannot generate ID, unsupported version number: ${t.version}`)},decodeCompositeId=(e,t={version:1})=>{let n=decodeId(e,t),r={};return n&&n.split(_).forEach(e=>{let[n,i]=e.split(g),a=getOriginalKey(n,t.aliases??{});r[a]=unescapeValue(i)}),r},getComposedIdV1=(e,t={})=>{if(isSingleIdentifier(e))return getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(isMultipleIdentifier(e))return e.identifiers.map(e=>getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new CompositeIdUnknownIdentifierError},getSingleIdentifierString=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,escapeValue(e.value)].filter(Boolean).join(`:`),getOriginalKey=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,decodeId=(e,t)=>{if(t.version===1)return decodeIdV1(e);throw new CompositeIdUnsupportedVersionError(`Cannot decode ID, unsupported version number: ${t.version}`)},encodeIdV1=e=>`${p}${(0,o.encodeToBase64)(e)}`,decodeIdV1=e=>{if(!e.startsWith(p))throw new CompositeIdMissingHeaderError(`Trying to decode an ID without the header: ${e}`);let t=e.split(p)[1];if(!t)throw new CompositeIdMissingBodyError(`Trying to decode an ID without a body: ${e}`);return(0,o.decodeFromBase64)(t)},escapeValue=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),unescapeValue=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),isCompositeId=e=>(0,o.isMissing)(e)?!1:e.startsWith(p),evaluateEventRouter=(e,t)=>{let n=e.eventRouter;if(!(0,o.isMissing)(n))for(let e of n.rules){let n=(0,s.safeEvaluate)(`{{${e.when.trim()}}}`,t);if(n!==null&&n!==!1&&n!==void 0){let n=e.then.input?Object.fromEntries(Object.entries(e.then.input).map(([e,n])=>[e,(0,s.safeEvaluate)(`{{${String(n).trim()}}}`,t)])):void 0;return{action:e.then.action,input:n}}}},b={employment_status:[`active`,`inactive`,`terminated`,`pending`,`leave`],employment_type:[`full_time`,`part_time`,`contractor`,`intern`,`temporary`],gender:[`male`,`female`,`non_binary`,`other`,`prefer_not_to_say`],marital_status:[`single`,`married`,`divorced`,`widowed`,`domestic_partnership`]},getInputEnumValues=e=>b[e],isValidEnumRef=e=>e in b,x=[`preview`,`beta`,`ga`,`deprecated`],S=(0,o.zStrictObject)({r:o.z.record(o.z.string(),(0,o.zStrictObject)({n:o.z.number().optional().nullable(),c:o.z.string().optional().nullable(),p:o.z.number().optional().nullable()})),v:o.z.number(),t:o.z.number()}),C=(0,o.zStrictObject)({remote:o.z.record(o.z.string(),(0,o.zStrictObject)({pageNumber:o.z.number().optional(),providerPageCursor:o.z.string().optional(),position:o.z.number().optional()})),version:o.z.number(),timestamp:o.z.number()}),minifyCursor=e=>(0,o.encodeToBase64)(JSON.stringify(minifyCursorObject(e))),minifyCursorObject=e=>{let{remote:t,version:n,timestamp:r}=e;return{r:Object.fromEntries(Object.entries(t).map(([e,{pageNumber:t,providerPageCursor:n,position:r}])=>[e,{n:t,c:n,p:r}])),v:n,t:r}},expandCursor=e=>{try{if((0,o.isString)(e)){let t=(0,o.decodeFromBase64)(e),n=JSON.parse(t);return expandCursorObject(S.parse(n))}else return C.parse(e),e}catch{return null}},expandCursorObject=e=>{let{r:t,v:n,t:r}=e;return{remote:Object.fromEntries(Object.entries(t).map(([e,{n:t,c:n,p:r}])=>[e,{pageNumber:t,providerPageCursor:n,position:r}])),version:n,timestamp:r}},areCursorsEqual=(e,t)=>{let n=typeof e==`string`?expandCursor(e):e,r=typeof t==`string`?expandCursor(t):t;if(n===null||r===null)return n===r;let{timestamp:i,...a}=n,{timestamp:s,...c}=r;return(0,o.getContentHash)(a)===(0,o.getContentHash)(c)},isCursorEmpty=({cursor:e,ignoreStepIndex:t})=>(0,o.isMissing)(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return((0,o.isMissing)(t)||r!==t.toString())&&(n=n&&(0,o.isMissing)(i.pageNumber)&&(0,o.isMissing)(i.position)&&(0,o.isMissing)(i.providerPageCursor)),n},!0),updateCursor=({cursor:e,stepIndex:t,pageNumber:n,providerPageCursor:r,position:i})=>{let a={pageNumber:n??void 0,providerPageCursor:r??void 0,position:i??void 0},s=(0,o.isMissing)(n)&&(0,o.isMissing)(r)&&(0,o.isMissing)(i);return(0,o.isMissing)(e)?{remote:s?{}:{[t]:a},version:2,timestamp:Date.now()}:s?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},isCoreError=e=>e instanceof y,sanitizeRaw=e=>{let t={};return e.status!=null&&(t.status=e.status),e.data!==void 0&&(t.data=e.data),e.headers!=null&&(t.headers=e.headers),e.requestUrl!=null&&(t.requestUrl=e.requestUrl),e.message!=null&&(t.message=e.message),t},isHttpLikeError=e=>typeof e==`object`&&!!e&&`response`in e&&e.response!=null&&typeof e.response==`object`,extractErrorMessage=(e,t)=>{let n=e.data;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(typeof e.message==`string`&&e.message.trim().length>0)return e.message}if(typeof e.message==`string`&&e.message.length>0)return e.message;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(e.error!=null&&typeof e.error==`object`&&!Array.isArray(e.error)&&typeof e.error.message==`string`)return e.error.message;if(typeof e.error==`string`)return e.error;if(typeof e.error_description==`string`)return e.error_description}return typeof n==`string`&&n.length>0?n:t},buildStepErrorOutput=(e,t)=>{if(e instanceof c.HttpResponseError){let n=e.message;return{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:e.response?.status??500,message:extractErrorMessage(e.response,n),data:e.response?.data,raw:sanitizeRaw(e.response)}}}if(isHttpLikeError(e)){let n=e.response,r=e instanceof Error?e.message:`HTTP error: ${n.status??500}`;return{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:n.status??500,message:extractErrorMessage(n,r),data:n.data,raw:sanitizeRaw(n)}}}return e instanceof Error?{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:500,message:e.message}}:{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:500,message:String(e)}}},w=(0,o.zStrictObject)({type:o.z.literal(`none`)}),T=(0,o.zStrictObject)({type:o.z.literal(`basic`),username:o.z.string().optional(),password:o.z.string().optional(),encoding:o.z.string().optional()}),E=(0,o.zStrictObject)({type:o.z.literal(`bearer`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)}),D=(0,o.zStrictObject)({type:o.z.literal(`oauth2`),authorizationUrl:o.z.string().optional(),authorizationParams:o.z.record(o.z.string(),o.z.string()).optional(),tokenUrl:o.z.string().optional(),tokenParams:o.z.record(o.z.string(),o.z.string()).optional(),tokenExpiresIn:o.z.number().optional(),tokenRefreshExpiresIn:o.z.number().optional(),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0),scopes:o.z.string().optional(),scopeDelimiter:o.z.string().optional(),customHeaders:o.z.record(o.z.string(),o.z.string()).optional(),pkce:o.z.boolean().optional(),additionalTokenFields:o.z.record(o.z.string(),o.z.string().optional()).optional()}),O=o.z.discriminatedUnion(`type`,[w,T,E,D]),k=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).optional().default(`get`),authorization:O.optional(),responseMode:o.z.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:o.z.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:o.z.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:(0,o.zStrictObject)({dataKey:o.z.string().optional(),fileNameKey:o.z.string().optional(),contentTypeKey:o.z.string().optional(),contentIsBase64:o.z.boolean().optional().default(!1),urlKey:o.z.string().optional(),forwardAuth:o.z.boolean().optional().default(!1)}).optional(),maxRedirects:o.z.number().optional().default(5),followRedirects:o.z.boolean().optional().default(!0),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),A=(0,o.zStrictObject)({data:o.z.union([o.z.string(),o.z.instanceof(Buffer)]).optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),headers:o.z.record(o.z.string(),o.z.string()).optional(),contentDisposition:o.z.string().optional(),fileMetadata:(0,o.zStrictObject)({contentType:o.z.string().optional(),contentLength:o.z.number().optional(),fileName:o.z.string().optional(),lastModified:o.z.string().optional(),etag:o.z.string().optional()}).optional(),finalUrl:o.z.string().optional()}).optional(),downloadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,authorization:f,args:p,responseMode:m,responseType:h,encoding:g,response:_,maxRedirects:v,followRedirects:y}=k.parse(a),b=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,x=p?(0,c.parseRequestParameters)(p):{query:{},body:{},headers:{}},S=(0,c.createAuthorizationHeaders)((0,o.notMissing)(f)?f:O.parse(b)),C={...x?.headers??{},...S},w=e.connector?.rateLimit,T=e.connector?.concurrency,E=w!==void 0||T!==void 0?{rateLimit:w,concurrency:T}:void 0;if(m===`stream`)return performStreamDownload({block:e,httpClient:e.httpClient,baseUrl:l??``,url:u,method:d,headers:C,queryParams:x?.query,body:x?.body,maxRedirects:y?v:0,requestConfig:E});try{return{block:e,successful:!0,output:await performDownload({httpClient:e.httpClient,baseUrl:l??``,url:u,method:d,headers:C,queryParams:x?.query,body:x?.body,responseType:h,encoding:g,response:_,maxRedirects:y?v:0,requestConfig:E,authHeaders:S})}}catch(t){return buildStepErrorOutput(t,e)}},performStreamDownload=async e=>{let{block:t,httpClient:n,baseUrl:r,url:i,method:a,headers:o,queryParams:s,body:c,maxRedirects:l,requestConfig:u}=e,d=`${r}${i}`;if(!d.startsWith(`http://`)&&!d.startsWith(`https://`))throw Error(`Invalid URL: "${d}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);if(!n.requestStream)throw Error(`HTTP client does not support streaming. Either implement requestStream method or use responseMode: "buffer".`);try{let e=await n.requestStream({url:d,method:a,headers:o,queryParams:s,payload:c,maxRedirects:l,requestConfig:u}),r=extractFileMetadata(e.headers),i=buildContentDisposition(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){return buildStepErrorOutput(e,t)}},performDownload=async e=>{let{httpClient:t,baseUrl:n,url:r,method:i,headers:a,queryParams:o,body:s,responseType:c,encoding:l,response:u,maxRedirects:d,requestConfig:f,authHeaders:p}=e,m=`${n}${r}`;if(!m.startsWith(`http://`)&&!m.startsWith(`https://`))throw Error(`Invalid URL: "${m}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);let h=u?.urlKey||u?.dataKey?`json`:c,g=await t.request({url:m,method:i,headers:a,queryParams:o,payload:s,responseType:h===`json`?void 0:h,maxRedirects:d,requestConfig:f});if(u?.urlKey||u?.dataKey)return handleJsonResponse({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=encodeFileData(g.data,l),v=extractFileMetadata(g.headers),y=buildContentDisposition(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},handleJsonResponse=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:s,authHeaders:c}=e,l=n.data;if(r.urlKey){let e=extractValueByPath(l,r.urlKey);if(typeof e==`string`){let n=await t.request({url:e,method:`get`,headers:r.forwardAuth?c:{},responseType:`arraybuffer`,maxRedirects:a,requestConfig:s}),o=encodeFileData(n.data,i),u=extractFileMetadata(n.headers);if(r.fileNameKey){let e=extractValueByPath(l,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(l,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=buildContentDisposition(u);return{data:o,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:d,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=extractValueByPath(l,r.dataKey);if((0,o.isMissing)(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:i===`none`?Buffer.from(e,`base64`):Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):encodeFileData(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=encodeFileData(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=extractValueByPath(l,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(l,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let s=buildContentDisposition(a);return{data:t,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:s,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},extractValueByPath=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if((0,o.isMissing)(r)||typeof r!=`object`)return;r=r[e]}return r},encodeFileData=(e,t)=>{if(t===`none`)return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof e==`string`?Buffer.from(e):Buffer.from(JSON.stringify(e));if(t===`raw`)return typeof e==`string`?e:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e).toString(`binary`):JSON.stringify(e);if(typeof e==`string`)return t===`base64`?Buffer.from(e).toString(`base64`):e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let n=Buffer.from(e);switch(t){case`base64`:return n.toString(`base64`);case`utf8`:return n.toString(`utf8`);case`binary`:default:return n.toString(`binary`)}}return JSON.stringify(e)},extractFileMetadata=e=>{let t=(0,o.isString)(e[`content-type`])?e[`content-type`]:void 0,n=(0,o.isString)(e[`content-length`])?e[`content-length`]:void 0,r=(0,o.isString)(e[`content-disposition`])?e[`content-disposition`]:void 0,i=(0,o.isString)(e[`last-modified`])?e[`last-modified`]:void 0,a=(0,o.isString)(e.etag)?e.etag:void 0,s=n?parseInt(n,10):void 0,c=extractFileName(r);return{contentType:t,contentLength:Number.isNaN(s)?void 0:s,fileName:c,lastModified:i,etag:a}},extractFileName=e=>{if(!e)return;let t=e.match(/filename\*=(?:UTF-8''|utf-8'')([^;\s]+)/i);if(t&&t[1])try{return decodeURIComponent(t[1])}catch{}let n=e.match(/filename=["']([^"']+)["']/);if(n&&n[1])return n[1];let r=e.match(/filename=([^;\s]+)/);if(r&&r[1])return r[1]},buildContentDisposition=e=>{let{fileName:t,contentType:n}=e,r=`attachment`;if(t)r=`attachment; filename="${t}"; filename*=UTF-8''${encodeURIComponent(t).replace(/['()]/g,escape)}`;else if(n){let e=getExtensionFromContentType(n);e&&(r=`attachment; filename="download.${e}"`)}return r},getExtensionFromContentType=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return l.default.extension(t)||void 0},j=o.z.object({event:o.z.object({eventType:o.z.string(),eventDate:o.z.string().optional(),data:o.z.unknown().optional()}).optional()}),M=o.z.record(o.z.string(),o.z.unknown()),emitEventStepFunction=async({block:e,params:t})=>{let n=t?(0,s.safeEvaluateRecord)(t,e):{},{event:r}=j.parse(n);if(r&&e.emitEvent)try{await e.emitEvent({eventType:r.eventType,eventDate:r.eventDate,data:r.data})}catch(t){throw e.logger?.error({code:`EmitEventError`,message:`emitEvent callback failed: ${t.message}`}),t}else r&&!e.emitEvent&&e.logger?.warning({message:`emit_event step executed but no emitEvent callback provided on the block`});let{event:i,...a}=n;return{block:{...e},successful:!0,output:a}},N=o.z.object({stepsDataToGroup:o.z.array(o.z.string()),isSingleRecord:o.z.boolean().optional()}),P=o.z.object({data:o.z.unknown()}),groupDataStepFunction=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=N.parse(t),i=n.reduce((t,n)=>{let i=e.steps?.[n]?.output?.data;return i?r?{...t,[n]:{...i}}:(Object.keys(i).forEach(e=>{t[e]={...(0,o.notMissing)(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},F=__name(async({block:e})=>{let t=e?.fieldConfigs,n=[],r=e.steps;if(!t||e?.debug?.custom_mappings===`disabled`||!r)return{block:e,successful:!0};let i;if(Array.isArray(e.result)){let a=e.result.length;i=e.result.map((e,i)=>{let o=I(e,t,extractSingleRecordBlockStepData(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=I(e.result,t,r);i=a.record,n.push(...a.errors||[])}return{block:{...e,result:i},successful:!0,errors:Object.keys(n).length>0?n:void 0}},`mapFieldsStepFunction`),extractSingleRecordBlockStepData=(e,t,n)=>Object.entries(e).reduce((e,[r,i])=>{let a=i?.output?.data;return Array.isArray(a)&&a.length===t?e[r]={output:{data:a[n]}}:e[r]=i,e},{}),I=__name((e,t,n)=>{if(!e||!n)return{record:e};let r={unified:{...e},...typeof n==`object`?n:{}},i={},a=[],o={...e};for(let n of t){let{error:t,value:s}=L(r,e.id,n);if(t){a.push(t);continue}n.custom?i[n.targetFieldKey]=s:o[n.targetFieldKey]=s}return{record:{...o,unified_custom_fields:Object.keys(i).length>0?i:void 0},errors:a.length>0?a:void 0}},`mapSingleRecord`),L=__name((e,t,n)=>{let{expression:r,targetFieldKey:i}=n;if(!r)return{error:{message:`Expression is empty`,id:t,targetField:i}};let a;try{a=(0,s.evaluate)(r,e)}catch{return{error:{message:`Invalid expression`,id:t,targetField:i}}}return a===void 0?{error:{message:`Expression returned no value`,id:t,targetField:i}}:{value:a}},`extractFieldValue`),getEnumMatcher=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return o.getCountryAlpha2CodeByAlpha2Code;case`country_alpha3code_by_alpha3code`:return o.getCountryAlpha3CodeByAlpha3Code;case`country_code_by_country_code`:return o.getCountryCodeByCountryCode;case`country_name_by_country_name`:return o.getCountryNameByCountryName;case`country_name_by_alpha3code`:return o.getCountryNameByAlpha3Code;case`country_name_by_alpha2code`:return o.getCountryNameByAlpha2Code;case`country_name_by_country_code`:return o.getCountryNameByCountryCode;case`country_alpha3code_by_alpha2code`:return o.getCountryAlpha3CodeByAlpha2Code;case`country_alpha3code_by_country_name`:return o.getCountryAlpha3CodeByCountryName;case`country_alpha3code_by_country_code`:return o.getCountryAlpha3CodeByCountryCode;case`country_alpha2code_by_alpha3code`:return o.getCountryAlpha2CodeByAlpha3Code;case`country_alpha2code_by_country_name`:return o.getCountryAlpha2CodeByCountryName;case`country_alpha2code_by_country_code`:return o.getCountryAlpha2CodeByCountryCode;case`country_code_by_alpha2code`:return o.getCountryCodeByAlpha2Code;case`country_code_by_alpha3code`:return o.getCountryCodeByAlpha3Code;case`country_code_by_country_name`:return o.getCountryCodeByCountryName;case`country_subdivisions_by_alpha2code`:return o.getCountrySubDivisionsByAlpha2Code;case`country_subdivision_code_by_subdivision_name`:return o.getCountrySubDivisionCodeBySubDivisionName;case`country_alpha2code_by_citizenship`:return o.getCountryAlpha2CodeByCitizenship;case`country_subdivision_name_by_subdivision_code`:return o.getCountrySubDivisionNameBySubDivisionCode;case`document_file_format_from_extension`:return o.getDocumentFileFormatFromExtension;default:return}},R=(0,o.zStrictObject)({targetFieldKey:o.z.string(),alias:o.z.string().optional(),expression:o.z.string().optional(),values:o.z.unknown().optional(),type:o.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.z.boolean().default(!1),custom:o.z.boolean().default(!1),hidden:o.z.boolean().default(!1),enumMapper:(0,o.zStrictObject)({matcher:o.z.string().or((0,o.zStrictObject)({matchExpression:o.z.string(),value:o.z.string()}).array())}).optional(),properties:o.z.lazy(()=>R).array().optional(),requiredScopes:o.z.string().array().optional()}),z=o.z.object({fields:R.array(),dataSource:o.z.string(),externalSources:o.z.record(o.z.string(),o.z.string()).optional()}),B=o.z.object({data:o.z.unknown()}),mapFieldsStepFunction=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=z.parse(t),o=(0,s.evaluate)(i,e);if(!r||!i||e?.debug?.custom_mappings===`disabled`||!o)return{block:e,successful:!0};let c=Object.keys(a??{})?.reduce((t,n)=>(t[n]=(0,s.evaluate)(a?.[n],e),t),{}),l;if(Array.isArray(o))l=o.map(e=>{let t=H(r,{...e,external:c});return n.push(...t?.errors||[]),t?.record});else{let e=H(r,{...o,external:c});l=e?.record,n.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:l},errors:Object.keys(n).length>0?n:void 0}},handleObjectArrayFromValues=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=evaluateExpressionsInObject(r,t),a=H(e.properties,i);return(0,o.notMissing)(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},handleObjectArrayFromExpression=(e,t,n)=>{if(e.expression)try{let r=(0,s.evaluate)(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=H(e.properties,t);return(0,o.notMissing)(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=H(e.properties,r);return(0,o.notMissing)(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},handleSingleObject=(e,t,n)=>{let r=(0,o.notMissing)(e.values)?e.values:t,i=H(e.properties,r);return(0,o.notMissing)(i?.errors)&&n.push(...i.errors),i?.record},V=__name((e,t,n)=>{if(!(0,o.isMissing)(e.properties))return e.array&&Array.isArray(e.values)?handleObjectArrayFromValues(e,t,n):e.array&&e.expression?handleObjectArrayFromExpression(e,t,n):handleSingleObject(e,t,n)},`handleObjectField`),H=__name((e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=V(a,t,r),e===void 0)continue}else{let{error:n,value:i}=extractFieldValue(t,t?.id,a);if(e=i,n){r.push(n);continue}}a.custom?n[a.targetFieldKey]=e:i[a.targetFieldKey]=e}let a=Object.keys(n).length>0?{unified_custom_fields:n}:{};return{record:{...i,...a},errors:r.length>0?r:void 0}},`mapSingleRecord`),evaluateExpressionsInObject=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if((0,s.isValidExpression)(e))try{return(0,s.evaluate)(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>evaluateExpressionsInObject(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=evaluateExpressionsInObject(r,t);return n}return e},extractFieldValue=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return U(n,t,e);case`enum`:return evaluateEnumValue(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},U=__name((e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=(0,s.evaluate)(e.expression,n)}catch{return{error:{message:`Invalid expression`,id:t,targetField:e.targetFieldKey}}}return r===void 0?{error:{message:`Expression returned no value`,id:t,targetField:e.targetFieldKey}}:{value:r}},`evaluateValue`),evaluateEnumValue=(e,t,n)=>{let r=U(e,t,n),i=(0,o.notMissing)(r.value)?r.value:null;if(e.enumMapper===void 0)return{error:{message:`Enum mapper was not defined`,id:t,targetField:e.targetFieldKey}};let a=e.enumMapper.matcher;if((0,o.isString)(a)){let n=getEnumMatcher(a);return(0,o.notMissing)(n)?{value:{value:((0,o.notMissing)(i)?n(i):null)??`unmapped_value`,source_value:i}}:{error:{message:`The built-in matcher "${a}" is not supported`,id:t,targetField:e.targetFieldKey}}}for(let e of a){let{matchExpression:t,value:r}=e;if((0,s.evaluate)(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},W=[`data`,`headers`],ee=o.z.object({baseUrl:o.z.string(),url:o.z.string(),method:o.z.enum(c.HttpMethods),saml:(0,o.zStrictObject)({objectKey:o.z.string(),key:o.z.string(),clientId:o.z.string(),cert:o.z.unknown().optional(),issuer:o.z.string().optional(),lifetime:o.z.number().optional(),nameId:o.z.string().optional(),audience:o.z.string().optional(),nameIdentifierFormat:o.z.string().optional(),tokenEndpoint:o.z.string().optional()}).optional(),response:(0,o.zStrictObject)({indexField:o.z.string().optional(),dataKey:o.z.string().optional(),nextKey:o.z.string().optional(),nextKeyIn:o.z.enum(W).optional()}).optional(),iterator:(0,o.zStrictObject)({key:o.z.string(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),mode:o.z.enum([`cursor`,`offset`]).optional()}),cursor:(0,o.zStrictObject)({token:o.z.string().optional().nullable(),position:o.z.number().optional().nullable()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),G=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),next:o.z.string().optional().nullable(),position:o.z.number().optional()}).optional(),K=25,q=__name(e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},`isJexlExpression`),paginatedRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,l=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,u=t?(0,s.safeEvaluateRecord)({...t,args:l},e):{},d=t?.response?.nextKey,f=d&&q(d),p=t?.response?.dataKey,m=p&&q(p),h={...u?.response??{},...f?{nextKey:d}:{},...m?{dataKey:p}:{}},g={...u,customErrors:t?.customErrors,iterator:{...u?.iterator??{},condition:t?.iterator?.condition},response:f||m?h:u?.response},{baseUrl:_,url:v,method:y,response:b,iterator:x,cursor:S,customErrors:C,args:w,saml:T}=ee.parse(g),E=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=O.parse(E),k=w?(0,c.parseRequestParameters)(w):{query:{},body:{},headers:{}},A=(0,c.createAuthorizationHeaders)(D),j={...k?.headers??{},...A},M=e.connector?.rateLimit,N=e.connector?.concurrency,P=M!==void 0||N!==void 0?{rateLimit:M,concurrency:N}:void 0,F=(0,o.notMissing)(T)?{[T.objectKey]:await(0,o.generateSamlAssertion)({key:T.key,clientId:T.clientId,cert:T.cert,issuer:T.issuer,lifetime:T.lifetime,audience:T.audience,nameId:T.nameId,nameIdentifierFormat:T.nameIdentifierFormat,tokenEndpoint:T.tokenEndpoint})}:{},I=x.mode===`offset`,L=S?.token??null,R=null,z=null,B=[],V=[],H=[],U=a,W=S?.position??0,G=!0,K=!0,J=!0;do{G?G=!1:I||(W=0),L===null?I&&(x.in===`query`?k.query[x.key]=W.toString():x.in===`body`&&(Array.isArray(k.body)||(k.body[x.key]=W))):x.in===`query`?(0,o.isObject)(L)?Object.entries(L).forEach(([e,t])=>{k.query[`${x.key}[${e}]`]=t?.toString()??``}):k.query[x.key]=L.toString():x.in===`body`&&(Array.isArray(k.body)||(k.body[x.key]=L));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${_}${v}`,queryParams:{...k?.query},method:y,headers:{...j},body:Array.isArray(k?.body)?k.body:{...k?.body,...F},customErrorConfigs:C,requestConfig:P})}catch(t){return buildStepErrorOutput(t,e)}R=L,V=b?.dataKey?te(t.data,b.dataKey):t.data;let r=I?V?.slice(0,U):V?.slice(W,W+U);U-=r.length,W+=r.length,H.push(t),B=B.concat(r),z=t?.status,L=ne({result:t,response:b}),J=(0,o.notMissing)(x.condition)?(0,s.safeEvaluate)(x.condition,t.data)===!0:!0,!I&&r.length===V.length&&U===0&&(W=0,R=L),K=(0,o.isMissing)(L)&&B.length<a}while((I||(0,o.notMissing)(L))&&J&&B.length<a&&V?.length>0);return{block:e,successful:!0,output:{data:ie(B,b),raw:H,statusCode:z,next:K?void 0:R,position:K?void 0:W}}},te=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return e;let n=(0,s.safeEvaluate)(q(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},`resolveDataKey`),ne=__name(({result:e,response:t})=>{if((0,o.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?J(e.headers,r):re(e.data,r)},`resolveNextIterator`),J=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`)return null;if(q(t)){let n=(0,s.safeEvaluate)(t,e);return typeof n==`string`&&n!==``||typeof n==`number`?n:null}let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},`resolveFromHeaders`),re=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return null;let n=(0,s.safeEvaluate)(q(t)?t:`$.${t}`,e);return(0,o.isMissing)(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},`resolveFromData`),ie=__name((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Y=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:O.optional(),saml:(0,o.zStrictObject)({objectKey:o.z.string(),key:o.z.string(),clientId:o.z.string(),cert:o.z.unknown().optional(),issuer:o.z.string().optional(),lifetime:o.z.number().optional(),nameId:o.z.string().optional(),audience:o.z.string().optional(),nameIdentifierFormat:o.z.string().optional(),tokenEndpoint:o.z.string().optional()}).optional(),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),ae=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),isJexlExpression=e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},requestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?.response?.dataKey,l=a&&isJexlExpression(a),u=t?(0,s.safeEvaluateRecord)({...t,args:i},e):{},d={...u,customErrors:t?.customErrors,response:l?{...u?.response??{},dataKey:a}:u?.response},{baseUrl:f,url:p,method:m,response:h,authorization:g,customErrors:_,args:v,saml:y}=Y.parse(d),b=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,x=v?(0,c.parseRequestParameters)(v):{query:{},body:{},headers:{}},S=(0,c.createAuthorizationHeaders)((0,o.notMissing)(g)?g:O.parse(b)),C={...x?.headers??{},...S},w=e.connector?.rateLimit,T=e.connector?.concurrency,E=w!==void 0||T!==void 0?{rateLimit:w,concurrency:T}:void 0,D=(0,o.notMissing)(y)?{[y.objectKey]:await(0,o.generateSamlAssertion)({key:y.key,clientId:y.clientId,cert:y.cert,issuer:y.issuer,lifetime:y.lifetime,audience:y.audience,nameId:y.nameId,nameIdentifierFormat:y.nameIdentifierFormat,tokenEndpoint:y.tokenEndpoint})}:{},k;try{k=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:x?.query,method:m,headers:C,body:Array.isArray(x?.body)?x?.body:{...x?.body,...D},customErrorConfigs:_,requestConfig:E})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:oe(h?.dataKey?resolveDataKey(k.data,h.dataKey):k.data,h),raw:k,statusCode:k?.status,message:k?.message}}},resolveDataKey=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return e;let n=(0,s.safeEvaluate)(isJexlExpression(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},oe=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),se=[`data`,`headers`],X=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:o.z.discriminatedUnion(`type`,[(0,o.zStrictObject)({type:o.z.literal(`none`)}),(0,o.zStrictObject)({type:o.z.literal(`basic`),username:o.z.string().optional(),password:o.z.string().optional(),encoding:o.z.string().optional()}),(0,o.zStrictObject)({type:o.z.literal(`bearer`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)}),(0,o.zStrictObject)({type:o.z.literal(`oauth2`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)})]).optional(),envelope:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.unknown())]).optional(),namespaces:o.z.strictObject({namespaceIdentifier:o.z.string(),namespace:o.z.string()}).array().optional(),soapOperation:o.z.string().optional(),soapAction:o.z.string().optional(),useSoapContext:o.z.boolean().optional().default(!0),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional(),nextKey:o.z.string().optional(),nextKeyIn:o.z.enum(se).optional()}).optional(),iterator:(0,o.zStrictObject)({key:o.z.string(),in:o.z.enum(c.RequestParameterLocations)}),cursor:(0,o.zStrictObject)({token:o.z.string().optional().nullable(),position:o.z.number().optional().nullable()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),ce=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),next:o.z.string().optional().nullable(),position:o.z.number().optional()}).optional(),le=25,soapPaginatedRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,l=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,u=t?(0,s.safeEvaluateRecord)({...t,args:l},e):{},d={...u,customErrors:t?.customErrors},{baseUrl:f,url:p,method:m,response:h,iterator:g,cursor:_,authorization:v,customErrors:y,args:b,soapOperation:x,namespaces:S,envelope:C,soapAction:w,useSoapContext:T}=X.parse(d),E=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=b?(0,c.parseRequestParameters)(b):{query:{},body:{},headers:{}},k=(0,c.createAuthorizationHeaders)((0,o.notMissing)(v)?v:O.parse(E)),A={...D?.headers??{},...k},j=e.connector?.rateLimit,M=e.connector?.concurrency,N={...(j!==void 0||M!==void 0)&&{rateLimit:j,concurrency:M},soapOperation:x,namespaces:S,envelope:C,soapAction:w,soapContext:T?{username:e.credentials?.username,password:e.credentials?.password}:void 0},P=_?.token??null,F=null,I=null,L=[],R=[],z=[],B=a,V=_?.position??0,H=!0,U;do{H?H=!1:V=0,P!==null&&(g.in===`query`?D.query[g.key]=P.toString():g.in===`body`&&(D.body[g.key]=P));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:D?.query,method:m,headers:A,body:D?.body,customErrorConfigs:y,requestConfig:N})}catch(t){return buildStepErrorOutput(t,e)}F=P,R=h?.dataKey?t.data[h?.dataKey]:t.data,Array.isArray(R)||(R=R?[R]:[]);let r=R?.slice(V,V+B);B-=r.length,V+=r.length,z.push(t),L=L.concat(r),I=t?.status,P=resolveNextIterator({result:t,response:h}),r.length===R.length&&B===0&&(V=0,F=P),U=(0,o.isMissing)(P)&&L.length<a}while((0,o.notMissing)(P)&&L.length<a&&R?.length>0);return{block:e,successful:!0,output:{data:ue(L,h),raw:z,statusCode:I,next:U?void 0:F,position:U?void 0:V}}},resolveNextIterator=({result:e,response:t})=>{if((0,o.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?resolveFromHeaders(e.headers,r):resolveFromData(e.data,r)},resolveFromHeaders=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`)return null;let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},resolveFromData=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return null;let n=e[t];return(0,o.isMissing)(n)?null:typeof n==`string`||typeof n==`number`?n:null},ue=__name((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Z=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:O.optional(),envelope:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.unknown())]).optional(),namespaces:o.z.strictObject({namespaceIdentifier:o.z.string(),namespace:o.z.string()}).array().optional(),soapOperation:o.z.string().optional(),soapAction:o.z.string().optional(),useSoapContext:o.z.boolean().optional().default(!0),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),de=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),soapRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,s.safeEvaluateRecord)({...t,args:i},e):{},l={...a,customErrors:t?.customErrors},{baseUrl:u,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,soapOperation:_,namespaces:v,envelope:y,soapAction:b,useSoapContext:x}=Z.parse(l),S=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,C=g?(0,c.parseRequestParameters)(g):{query:{},body:{},headers:{}},w=(0,c.createAuthorizationHeaders)((0,o.notMissing)(m)?m:O.parse(S)),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,k={...(E!==void 0||D!==void 0)&&{rateLimit:E,concurrency:D},soapOperation:_,namespaces:v,envelope:y,soapAction:b,soapContext:x?{username:e.credentials?.username,password:e.credentials?.password}:void 0},A;try{A=await n.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:C?.query,method:f,headers:T,body:C?.body,customErrorConfigs:h,requestConfig:k})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:fe(p?.dataKey?A.data[p?.dataKey]:A.data,p),raw:A,statusCode:A?.status,message:A?.message}}},fe=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),pe=o.z.object({values:o.z.string().or(o.z.record(o.z.string(),o.z.unknown())).or(o.z.array(o.z.unknown()))}),me=o.z.object({data:o.z.unknown()}),staticValuesStepFunction=async({block:e,params:t})=>{let{values:n}=pe.parse(t),r=Array.isArray(n)?n.map(t=>evaluateValue(t,e)):evaluateValue(n,e);return{block:{...e},successful:!0,output:{data:r}}},evaluateValue=(e,t)=>(0,o.isString)(e)?(0,s.safeEvaluate)(e,t):(0,o.isObject)(e)?(0,s.safeEvaluateRecord)(e,t):e,he=o.z.object({targetFieldKey:o.z.string(),type:o.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.z.boolean().default(!1),custom:o.z.boolean().default(!1),hidden:o.z.boolean().default(!1),properties:o.z.lazy(()=>he).array().optional(),requiredScopes:o.z.string().array().optional()}),ge=o.z.object({fields:he.array().optional(),dataSource:o.z.string()}),_e=o.z.object({data:o.z.unknown()});let Q=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const typecast=({value:e,type:t,format:n})=>{if((0,o.isMissing)(e))return null;switch(t){case Q.String:return(0,o.safeParseToString)({value:e});case Q.Number:return(0,o.safeParseToNumber)({value:e});case Q.Boolean:return(0,o.safeParseToBoolean)({value:e});case Q.DateTimeString:return(0,o.safeParseToDateTimeString)({value:e,format:n});default:return e}},isFieldSupportedType=e=>Object.values(Q).includes(e),ve=__name(async({block:e})=>{let t=e?.fieldConfigs;if(!t||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let n;return n=Array.isArray(e.result)?e.result.map(e=>ye(e,t)):ye(e.result,t),{block:{...e,result:n},successful:!0}},`typecastStepFunction`),ye=__name((e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;isFieldSupportedType(i)&&(!t.custom&&(0,o.notMissing)(n[r])?n[r]=typecast({value:e[r],type:i}):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},`mapSingleRecord`),typecastStepFunction=async({block:e,params:t})=>{let{fields:n,dataSource:r}=ge.parse(t),i=(0,s.evaluate)(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>mapSingleRecord(e,n)):mapSingleRecord(i,n),{block:{...e},successful:!0,output:{data:a}}},handleObjectField=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?mapSingleRecord(t,e.properties):t):typeof t==`object`&&t?mapSingleRecord(t,e.properties):t,mapSingleRecord=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&(0,o.notMissing)(n[r])?n[r]=handleObjectField(t,e[r]):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=handleObjectField(t,e.unified_custom_fields?.[r])):isFieldSupportedType(i)&&(!t.custom&&(0,o.notMissing)(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=typecast({value:e[r],type:i})):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},be=(0,o.zStrictObject)({content:o.z.string().describe(`The file content as base64 encoded string`),contentType:o.z.string().optional().describe(`The MIME type for the binary content (defaults to application/octet-stream)`)}),xe=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).default(`post`),authorization:O.optional(),binaryContent:be.describe(`Raw binary content for octet-stream uploads`),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Se=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),uploadBinaryStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,response:f,authorization:p,binaryContent:m,args:h,customErrors:g}=xe.parse(a),_=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,v=h?(0,c.parseRequestParameters)(h):{query:{},body:{},headers:{}},y=(0,c.createAuthorizationHeaders)((0,o.notMissing)(p)?p:O.parse(_)),b=Buffer.from(m.content,`base64`),x={"content-type":m.contentType??`application/octet-stream`,...v?.headers??{},...y},S=e.connector?.rateLimit,C=e.connector?.concurrency,w=S!==void 0||C!==void 0?{rateLimit:S,concurrency:C}:void 0,T;try{T=await e.httpClient.request({url:`${l??``}${u}`,method:d,headers:x,queryParams:v?.query,payload:b,requestConfig:w})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,c.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let E=(0,c.translateCustomError)(T,g);return(0,c.isFailedStatusCode)(E?.status)?{block:e,successful:!1,errors:[(0,c.serializeHttpResponseError)(new c.HttpResponseError(E,E.message))],output:{statusCode:E.status,message:E.message}}:{block:e,successful:!0,output:{data:Ce(f?.dataKey?E.data[f?.dataKey]:E.data,f),raw:E,statusCode:E?.status,message:E?.message}}},Ce=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),we=(0,o.zStrictObject)({fieldName:o.z.string().describe(`The form field name for the file`),content:o.z.string().describe(`The file content as base64 encoded string`),filename:o.z.string().describe(`The filename to use in the upload`),contentType:o.z.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),Te=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).default(`post`),authorization:O.optional(),file:we.describe(`The file to upload`),additionalFields:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),contentType:o.z.string().optional().describe(`The MIME type for this form field (e.g., "application/json")`)}).array().optional().describe(`Additional form fields to include in the multipart request`),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Ee=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),uploadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:d,method:f,response:p,authorization:m,file:h,additionalFields:g,args:_,customErrors:v}=Te.parse(a),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=_?(0,c.parseRequestParameters)(_):{query:{},body:{},headers:{}},x=(0,c.createAuthorizationHeaders)((0,o.notMissing)(m)?m:O.parse(y)),S=new u.default;if(g)for(let e of g){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);S.append(e.name,t,e.contentType?{contentType:e.contentType}:void 0)}let C=Buffer.from(h.content,`base64`);S.append(h.fieldName,C,{filename:h.filename,contentType:h.contentType});let w={...S.getHeaders(),...b?.headers??{},...x},T=e.connector?.rateLimit,E=e.connector?.concurrency,D=T!==void 0||E!==void 0?{rateLimit:T,concurrency:E}:void 0,k;try{k=await e.httpClient.request({url:`${l??``}${d}`,method:f,headers:w,queryParams:b?.query,payload:S,requestConfig:D})}catch(t){return buildStepErrorOutput(t,e)}let A=(0,c.translateCustomError)(k,v);return(0,c.isFailedStatusCode)(A?.status)?buildStepErrorOutput(new c.HttpResponseError(A,A.message),e):{block:e,successful:!0,output:{data:indexResponseData(p?.dataKey?A.data[p?.dataKey]:A.data,p),raw:A,statusCode:A?.status,message:A?.message}}},indexResponseData=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e};let $=function(e){return e.TYPECAST=`typecast`,e.MAP_FIELDS=`map_fields`,e.GROUP_DATA=`group_data`,e.REQUEST=`request`,e.PAGINATED_REQUEST=`paginated_request`,e.SOAP_REQUEST=`soap_request`,e.SOAP_PAGINATED_REQUEST=`soap_paginated_request`,e.STATIC_VALUES=`static_values`,e.UPLOAD_FILE=`upload_file`,e.UPLOAD_BINARY=`upload_binary`,e.DOWNLOAD_FILE=`download_file`,e.EMIT_EVENT=`emit_event`,e}({});const De={[$.TYPECAST]:{v1:{fn:ve},v2:{fn:typecastStepFunction,inputSchema:ge,outputSchema:_e}},[$.MAP_FIELDS]:{v1:{fn:F},v2:{fn:mapFieldsStepFunction,inputSchema:z,outputSchema:B}},[$.REQUEST]:{v1:{fn:requestStepFunction,inputSchema:Y,outputSchema:ae}},[$.GROUP_DATA]:{v1:{fn:groupDataStepFunction,inputSchema:N,outputSchema:P}},[$.PAGINATED_REQUEST]:{v1:{fn:paginatedRequestStepFunction,inputSchema:ee,outputSchema:G}},[$.SOAP_REQUEST]:{v1:{fn:soapRequestStepFunction,inputSchema:Z,outputSchema:de}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:soapPaginatedRequestStepFunction,inputSchema:X,outputSchema:ce}},[$.STATIC_VALUES]:{v1:{fn:staticValuesStepFunction,inputSchema:pe,outputSchema:me}},[$.UPLOAD_FILE]:{v1:{fn:uploadFileStepFunction,inputSchema:Te,outputSchema:Ee}},[$.UPLOAD_BINARY]:{v1:{fn:uploadBinaryStepFunction,inputSchema:xe,outputSchema:Se}},[$.DOWNLOAD_FILE]:{v1:{fn:downloadFileStepFunction,inputSchema:k,outputSchema:A}},[$.EMIT_EVENT]:{v1:{fn:emitEventStepFunction,inputSchema:j,outputSchema:M}}},stepFunctionEnhancedWithSchemasValidation=(e,t)=>async({block:n,params:r})=>{try{e.inputSchema&&e.inputSchema.parse(r)}catch(e){return{block:n,successful:!1,errors:[{message:`Input parameters for ${t} are invalid: ${e?.message}`}]}}let i=await e.fn({block:n,params:r});try{e.outputSchema&&e.outputSchema.parse(i.output)}catch{return{block:n,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return i},Oe={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=De}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:stepFunctionEnhancedWithSchemasValidation(i,e)}:i}},isForeachStep=e=>`iterator`in e&&typeof e.iterator==`string`;exports.AUTHORIZATION_SCHEMA=O,exports.COMPOSITE_ID_LATEST_VERSION=1,exports.CoreError=y,exports.INPUT_ENUM_REGISTRY=b,exports.ReleaseStages=x,exports.StepFunctionName=$,exports.StepFunctionsFactory=Oe,exports.StepFunctionsRegistry=De,exports.areCursorsEqual=areCursorsEqual,exports.decodeCompositeId=decodeCompositeId,exports.encodeCompositeId=encodeCompositeId,exports.evaluateEventRouter=evaluateEventRouter,exports.expandCursor=expandCursor,exports.getCategoryDetails=getCategoryDetails,exports.getInputEnumValues=getInputEnumValues,exports.isCompositeId=isCompositeId,exports.isCoreError=isCoreError,exports.isCursorEmpty=isCursorEmpty,exports.isForeachStep=isForeachStep,exports.isValidCategory=isValidCategory,exports.isValidEnumRef=isValidEnumRef,exports.minifyCursor=minifyCursor,exports.updateCursor=updateCursor;
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,__name=(e,n)=>t(e,`name`,{value:n,configurable:!0}),n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__copyProps=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},__toESM=(n,r,a)=>(a=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let o=require(`@stackone/utils`),s=require(`@stackone/expressions`),c=require(`@stackone/transport`),l=require(`mime-types`);l=__toESM(l);let u=require(`form-data`);u=__toESM(u);const d={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`},internal:{title:`Internal`,key:`internal`,description:`Category for internal actions`},action:{title:`Action`,key:`action`,description:`Action`}},getCategoryDetails=e=>d[e.toLowerCase()]??null,isValidCategory=e=>!!d[e.toLowerCase()],f=`so1!`,p=(0,o.encodeToBase64)(`so1!`),m=`:`,h=`,`,g=RegExp(`(?<!\\\\):`,`g`),_=RegExp(`(?<!\\\\),`,`g`),v=1;var y=class CoreError extends Error{constructor({category:e,name:t,type:n,context:r,message:i}){super(i),this.name=t??`CoreError`,this.type=n,this.category=e,this.context=r,Error.captureStackTrace&&Error.captureStackTrace(this,CoreError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},BaseCompositeIdError=class extends y{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},CompositeIdMissingHeaderError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},CompositeIdMissingBodyError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},CompositeIdUnknownIdentifierError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},CompositeIdUnsupportedVersionError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const isSingleIdentifier=e=>!(0,o.isMissing)(e)&&`value`in e&&e.value!==void 0,isMultipleIdentifier=e=>!(0,o.isMissing)(e)&&`identifiers`in e&&e.identifiers!==void 0,encodeCompositeId=(e,t={version:1})=>{if(t.version===1)return encodeIdV1(getComposedIdV1(e,t.aliases));throw new CompositeIdUnsupportedVersionError(`Cannot generate ID, unsupported version number: ${t.version}`)},decodeCompositeId=(e,t={version:1})=>{let n=decodeId(e,t),r={};return n&&n.split(_).forEach(e=>{let[n,i]=e.split(g),a=getOriginalKey(n,t.aliases??{});r[a]=unescapeValue(i)}),r},getComposedIdV1=(e,t={})=>{if(isSingleIdentifier(e))return getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(isMultipleIdentifier(e))return e.identifiers.map(e=>getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new CompositeIdUnknownIdentifierError},getSingleIdentifierString=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,escapeValue(e.value)].filter(Boolean).join(`:`),getOriginalKey=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,decodeId=(e,t)=>{if(t.version===1)return decodeIdV1(e);throw new CompositeIdUnsupportedVersionError(`Cannot decode ID, unsupported version number: ${t.version}`)},encodeIdV1=e=>`${p}${(0,o.encodeToBase64)(e)}`,decodeIdV1=e=>{if(!e.startsWith(p))throw new CompositeIdMissingHeaderError(`Trying to decode an ID without the header: ${e}`);let t=e.split(p)[1];if(!t)throw new CompositeIdMissingBodyError(`Trying to decode an ID without a body: ${e}`);return(0,o.decodeFromBase64)(t)},escapeValue=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),unescapeValue=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),isCompositeId=e=>(0,o.isMissing)(e)?!1:e.startsWith(p),evaluateExternalAccountIdExtractor=(e,t)=>{let n=e.events?.externalAccountIdExtractor;if((0,o.isMissing)(n)||typeof n.result!=`string`||n.result.trim().length===0)return;let r=(0,s.safeEvaluate)(`{{${n.result.trim()}}}`,t);if(!(0,o.isMissing)(r)){if(typeof r==`string`){let e=r.trim();return e.length>0?e:void 0}if(typeof r==`number`||typeof r==`bigint`||typeof r==`boolean`)return String(r)}},evaluateEventRouter=(e,t)=>{let n=e.events?.router;if(!(0,o.isMissing)(n))for(let e of n.rules){let n=(0,s.safeEvaluate)(`{{${e.when.trim()}}}`,t);if(n!==null&&n!==!1&&n!==void 0){let n=e.then.input?Object.fromEntries(Object.entries(e.then.input).map(([e,n])=>[e,(0,s.safeEvaluate)(`{{${String(n).trim()}}}`,t)])):void 0;return{action:e.then.action,input:n}}}},b={employment_status:[`active`,`inactive`,`terminated`,`pending`,`leave`],employment_type:[`full_time`,`part_time`,`contractor`,`intern`,`temporary`],gender:[`male`,`female`,`non_binary`,`other`,`prefer_not_to_say`],marital_status:[`single`,`married`,`divorced`,`widowed`,`domestic_partnership`]},getInputEnumValues=e=>b[e],isValidEnumRef=e=>e in b,x=[`preview`,`beta`,`ga`,`deprecated`],S=(0,o.zStrictObject)({r:o.z.record(o.z.string(),(0,o.zStrictObject)({n:o.z.number().optional().nullable(),c:o.z.string().optional().nullable(),p:o.z.number().optional().nullable()})),v:o.z.number(),t:o.z.number()}),C=(0,o.zStrictObject)({remote:o.z.record(o.z.string(),(0,o.zStrictObject)({pageNumber:o.z.number().optional(),providerPageCursor:o.z.string().optional(),position:o.z.number().optional()})),version:o.z.number(),timestamp:o.z.number()}),minifyCursor=e=>(0,o.encodeToBase64)(JSON.stringify(minifyCursorObject(e))),minifyCursorObject=e=>{let{remote:t,version:n,timestamp:r}=e;return{r:Object.fromEntries(Object.entries(t).map(([e,{pageNumber:t,providerPageCursor:n,position:r}])=>[e,{n:t,c:n,p:r}])),v:n,t:r}},expandCursor=e=>{try{if((0,o.isString)(e)){let t=(0,o.decodeFromBase64)(e),n=JSON.parse(t);return expandCursorObject(S.parse(n))}else return C.parse(e),e}catch{return null}},expandCursorObject=e=>{let{r:t,v:n,t:r}=e;return{remote:Object.fromEntries(Object.entries(t).map(([e,{n:t,c:n,p:r}])=>[e,{pageNumber:t,providerPageCursor:n,position:r}])),version:n,timestamp:r}},areCursorsEqual=(e,t)=>{let n=typeof e==`string`?expandCursor(e):e,r=typeof t==`string`?expandCursor(t):t;if(n===null||r===null)return n===r;let{timestamp:i,...a}=n,{timestamp:s,...c}=r;return(0,o.getContentHash)(a)===(0,o.getContentHash)(c)},isCursorEmpty=({cursor:e,ignoreStepIndex:t})=>(0,o.isMissing)(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return((0,o.isMissing)(t)||r!==t.toString())&&(n=n&&(0,o.isMissing)(i.pageNumber)&&(0,o.isMissing)(i.position)&&(0,o.isMissing)(i.providerPageCursor)),n},!0),updateCursor=({cursor:e,stepIndex:t,pageNumber:n,providerPageCursor:r,position:i})=>{let a={pageNumber:n??void 0,providerPageCursor:r??void 0,position:i??void 0},s=(0,o.isMissing)(n)&&(0,o.isMissing)(r)&&(0,o.isMissing)(i);return(0,o.isMissing)(e)?{remote:s?{}:{[t]:a},version:2,timestamp:Date.now()}:s?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},isCoreError=e=>e instanceof y,sanitizeRaw=e=>{let t={};return e.status!=null&&(t.status=e.status),e.data!==void 0&&(t.data=e.data),e.headers!=null&&(t.headers=e.headers),e.requestUrl!=null&&(t.requestUrl=e.requestUrl),e.message!=null&&(t.message=e.message),t},isHttpLikeError=e=>typeof e==`object`&&!!e&&`response`in e&&e.response!=null&&typeof e.response==`object`,extractErrorMessage=(e,t)=>{let n=e.data;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(typeof e.message==`string`&&e.message.trim().length>0)return e.message}if(typeof e.message==`string`&&e.message.length>0)return e.message;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(e.error!=null&&typeof e.error==`object`&&!Array.isArray(e.error)&&typeof e.error.message==`string`)return e.error.message;if(typeof e.error==`string`)return e.error;if(typeof e.error_description==`string`)return e.error_description}return typeof n==`string`&&n.length>0?n:t},buildStepErrorOutput=(e,t)=>{if(e instanceof c.HttpResponseError){let n=e.message;return{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:e.response?.status??500,message:extractErrorMessage(e.response,n),data:e.response?.data,raw:sanitizeRaw(e.response)}}}if(isHttpLikeError(e)){let n=e.response,r=e instanceof Error?e.message:`HTTP error: ${n.status??500}`;return{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:n.status??500,message:extractErrorMessage(n,r),data:n.data,raw:sanitizeRaw(n)}}}return e instanceof Error?{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:500,message:e.message}}:{block:t,successful:!1,errors:[(0,c.serializeHttpResponseError)(e)],output:{statusCode:500,message:String(e)}}},w=(0,o.zStrictObject)({type:o.z.literal(`none`)}),T=(0,o.zStrictObject)({type:o.z.literal(`basic`),username:o.z.string().optional(),password:o.z.string().optional(),encoding:o.z.string().optional()}),E=(0,o.zStrictObject)({type:o.z.literal(`bearer`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)}),D=(0,o.zStrictObject)({type:o.z.literal(`oauth2`),authorizationUrl:o.z.string().optional(),authorizationParams:o.z.record(o.z.string(),o.z.string()).optional(),tokenUrl:o.z.string().optional(),tokenParams:o.z.record(o.z.string(),o.z.string()).optional(),tokenExpiresIn:o.z.number().optional(),tokenRefreshExpiresIn:o.z.number().optional(),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0),scopes:o.z.string().optional(),scopeDelimiter:o.z.string().optional(),customHeaders:o.z.record(o.z.string(),o.z.string()).optional(),pkce:o.z.boolean().optional(),additionalTokenFields:o.z.record(o.z.string(),o.z.string().optional()).optional()}),O=o.z.discriminatedUnion(`type`,[w,T,E,D]),k=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).optional().default(`get`),authorization:O.optional(),responseMode:o.z.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:o.z.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:o.z.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:(0,o.zStrictObject)({dataKey:o.z.string().optional(),fileNameKey:o.z.string().optional(),contentTypeKey:o.z.string().optional(),contentIsBase64:o.z.boolean().optional().default(!1),urlKey:o.z.string().optional(),forwardAuth:o.z.boolean().optional().default(!1)}).optional(),maxRedirects:o.z.number().optional().default(5),followRedirects:o.z.boolean().optional().default(!0),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),A=(0,o.zStrictObject)({data:o.z.union([o.z.string(),o.z.instanceof(Buffer)]).optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),headers:o.z.record(o.z.string(),o.z.string()).optional(),contentDisposition:o.z.string().optional(),fileMetadata:(0,o.zStrictObject)({contentType:o.z.string().optional(),contentLength:o.z.number().optional(),fileName:o.z.string().optional(),lastModified:o.z.string().optional(),etag:o.z.string().optional()}).optional(),finalUrl:o.z.string().optional()}).optional(),downloadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,authorization:f,args:p,responseMode:m,responseType:h,encoding:g,response:_,maxRedirects:v,followRedirects:y}=k.parse(a),b=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,x=p?(0,c.parseRequestParameters)(p):{query:{},body:{},headers:{}},S=(0,c.createAuthorizationHeaders)((0,o.notMissing)(f)?f:O.parse(b)),C={...x?.headers??{},...S},w=e.connector?.rateLimit,T=e.connector?.concurrency,E=w!==void 0||T!==void 0?{rateLimit:w,concurrency:T}:void 0;if(m===`stream`)return performStreamDownload({block:e,httpClient:e.httpClient,baseUrl:l??``,url:u,method:d,headers:C,queryParams:x?.query,body:x?.body,maxRedirects:y?v:0,requestConfig:E});try{return{block:e,successful:!0,output:await performDownload({httpClient:e.httpClient,baseUrl:l??``,url:u,method:d,headers:C,queryParams:x?.query,body:x?.body,responseType:h,encoding:g,response:_,maxRedirects:y?v:0,requestConfig:E,authHeaders:S})}}catch(t){return buildStepErrorOutput(t,e)}},performStreamDownload=async e=>{let{block:t,httpClient:n,baseUrl:r,url:i,method:a,headers:o,queryParams:s,body:c,maxRedirects:l,requestConfig:u}=e,d=`${r}${i}`;if(!d.startsWith(`http://`)&&!d.startsWith(`https://`))throw Error(`Invalid URL: "${d}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);if(!n.requestStream)throw Error(`HTTP client does not support streaming. Either implement requestStream method or use responseMode: "buffer".`);try{let e=await n.requestStream({url:d,method:a,headers:o,queryParams:s,payload:c,maxRedirects:l,requestConfig:u}),r=extractFileMetadata(e.headers),i=buildContentDisposition(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){return buildStepErrorOutput(e,t)}},performDownload=async e=>{let{httpClient:t,baseUrl:n,url:r,method:i,headers:a,queryParams:o,body:s,responseType:c,encoding:l,response:u,maxRedirects:d,requestConfig:f,authHeaders:p}=e,m=`${n}${r}`;if(!m.startsWith(`http://`)&&!m.startsWith(`https://`))throw Error(`Invalid URL: "${m}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);let h=u?.urlKey||u?.dataKey?`json`:c,g=await t.request({url:m,method:i,headers:a,queryParams:o,payload:s,responseType:h===`json`?void 0:h,maxRedirects:d,requestConfig:f});if(u?.urlKey||u?.dataKey)return handleJsonResponse({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=encodeFileData(g.data,l),v=extractFileMetadata(g.headers),y=buildContentDisposition(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},handleJsonResponse=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:s,authHeaders:c}=e,l=n.data;if(r.urlKey){let e=extractValueByPath(l,r.urlKey);if(typeof e==`string`){let n=await t.request({url:e,method:`get`,headers:r.forwardAuth?c:{},responseType:`arraybuffer`,maxRedirects:a,requestConfig:s}),o=encodeFileData(n.data,i),u=extractFileMetadata(n.headers);if(r.fileNameKey){let e=extractValueByPath(l,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(l,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=buildContentDisposition(u);return{data:o,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:d,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=extractValueByPath(l,r.dataKey);if((0,o.isMissing)(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:i===`none`?Buffer.from(e,`base64`):Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):encodeFileData(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=encodeFileData(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=extractValueByPath(l,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(l,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let s=buildContentDisposition(a);return{data:t,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:s,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},extractValueByPath=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if((0,o.isMissing)(r)||typeof r!=`object`)return;r=r[e]}return r},encodeFileData=(e,t)=>{if(t===`none`)return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof e==`string`?Buffer.from(e):Buffer.from(JSON.stringify(e));if(t===`raw`)return typeof e==`string`?e:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e).toString(`binary`):JSON.stringify(e);if(typeof e==`string`)return t===`base64`?Buffer.from(e).toString(`base64`):e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let n=Buffer.from(e);switch(t){case`base64`:return n.toString(`base64`);case`utf8`:return n.toString(`utf8`);case`binary`:default:return n.toString(`binary`)}}return JSON.stringify(e)},extractFileMetadata=e=>{let t=(0,o.isString)(e[`content-type`])?e[`content-type`]:void 0,n=(0,o.isString)(e[`content-length`])?e[`content-length`]:void 0,r=(0,o.isString)(e[`content-disposition`])?e[`content-disposition`]:void 0,i=(0,o.isString)(e[`last-modified`])?e[`last-modified`]:void 0,a=(0,o.isString)(e.etag)?e.etag:void 0,s=n?parseInt(n,10):void 0,c=extractFileName(r);return{contentType:t,contentLength:Number.isNaN(s)?void 0:s,fileName:c,lastModified:i,etag:a}},extractFileName=e=>{if(!e)return;let t=e.match(/filename\*=(?:UTF-8''|utf-8'')([^;\s]+)/i);if(t&&t[1])try{return decodeURIComponent(t[1])}catch{}let n=e.match(/filename=["']([^"']+)["']/);if(n&&n[1])return n[1];let r=e.match(/filename=([^;\s]+)/);if(r&&r[1])return r[1]},buildContentDisposition=e=>{let{fileName:t,contentType:n}=e,r=`attachment`;if(t)r=`attachment; filename="${t}"; filename*=UTF-8''${encodeURIComponent(t).replace(/['()]/g,escape)}`;else if(n){let e=getExtensionFromContentType(n);e&&(r=`attachment; filename="download.${e}"`)}return r},getExtensionFromContentType=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return l.default.extension(t)||void 0},j=o.z.object({event:o.z.object({eventType:o.z.string(),eventDate:o.z.string().optional(),data:o.z.unknown().optional()}).optional()}),M=o.z.record(o.z.string(),o.z.unknown()),emitEventStepFunction=async({block:e,params:t})=>{let n=t?(0,s.safeEvaluateRecord)(t,e):{},{event:r}=j.parse(n);if(r&&e.emitEvent)try{await e.emitEvent({eventType:r.eventType,eventDate:r.eventDate,data:r.data})}catch(t){throw e.logger?.error({code:`EmitEventError`,message:`emitEvent callback failed: ${t.message}`}),t}else r&&!e.emitEvent&&e.logger?.warning({message:`emit_event step executed but no emitEvent callback provided on the block`});let{event:i,...a}=n;return{block:{...e},successful:!0,output:a}},N=o.z.object({stepsDataToGroup:o.z.array(o.z.string()),isSingleRecord:o.z.boolean().optional()}),P=o.z.object({data:o.z.unknown()}),groupDataStepFunction=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=N.parse(t),i=n.reduce((t,n)=>{let i=e.steps?.[n]?.output?.data;return i?r?{...t,[n]:{...i}}:(Object.keys(i).forEach(e=>{t[e]={...(0,o.notMissing)(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},F=__name(async({block:e})=>{let t=e?.fieldConfigs,n=[],r=e.steps;if(!t||e?.debug?.custom_mappings===`disabled`||!r)return{block:e,successful:!0};let i;if(Array.isArray(e.result)){let a=e.result.length;i=e.result.map((e,i)=>{let o=I(e,t,extractSingleRecordBlockStepData(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=I(e.result,t,r);i=a.record,n.push(...a.errors||[])}return{block:{...e,result:i},successful:!0,errors:Object.keys(n).length>0?n:void 0}},`mapFieldsStepFunction`),extractSingleRecordBlockStepData=(e,t,n)=>Object.entries(e).reduce((e,[r,i])=>{let a=i?.output?.data;return Array.isArray(a)&&a.length===t?e[r]={output:{data:a[n]}}:e[r]=i,e},{}),I=__name((e,t,n)=>{if(!e||!n)return{record:e};let r={unified:{...e},...typeof n==`object`?n:{}},i={},a=[],o={...e};for(let n of t){let{error:t,value:s}=L(r,e.id,n);if(t){a.push(t);continue}n.custom?i[n.targetFieldKey]=s:o[n.targetFieldKey]=s}return{record:{...o,unified_custom_fields:Object.keys(i).length>0?i:void 0},errors:a.length>0?a:void 0}},`mapSingleRecord`),L=__name((e,t,n)=>{let{expression:r,targetFieldKey:i}=n;if(!r)return{error:{message:`Expression is empty`,id:t,targetField:i}};let a;try{a=(0,s.evaluate)(r,e)}catch{return{error:{message:`Invalid expression`,id:t,targetField:i}}}return a===void 0?{error:{message:`Expression returned no value`,id:t,targetField:i}}:{value:a}},`extractFieldValue`),getEnumMatcher=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return o.getCountryAlpha2CodeByAlpha2Code;case`country_alpha3code_by_alpha3code`:return o.getCountryAlpha3CodeByAlpha3Code;case`country_code_by_country_code`:return o.getCountryCodeByCountryCode;case`country_name_by_country_name`:return o.getCountryNameByCountryName;case`country_name_by_alpha3code`:return o.getCountryNameByAlpha3Code;case`country_name_by_alpha2code`:return o.getCountryNameByAlpha2Code;case`country_name_by_country_code`:return o.getCountryNameByCountryCode;case`country_alpha3code_by_alpha2code`:return o.getCountryAlpha3CodeByAlpha2Code;case`country_alpha3code_by_country_name`:return o.getCountryAlpha3CodeByCountryName;case`country_alpha3code_by_country_code`:return o.getCountryAlpha3CodeByCountryCode;case`country_alpha2code_by_alpha3code`:return o.getCountryAlpha2CodeByAlpha3Code;case`country_alpha2code_by_country_name`:return o.getCountryAlpha2CodeByCountryName;case`country_alpha2code_by_country_code`:return o.getCountryAlpha2CodeByCountryCode;case`country_code_by_alpha2code`:return o.getCountryCodeByAlpha2Code;case`country_code_by_alpha3code`:return o.getCountryCodeByAlpha3Code;case`country_code_by_country_name`:return o.getCountryCodeByCountryName;case`country_subdivisions_by_alpha2code`:return o.getCountrySubDivisionsByAlpha2Code;case`country_subdivision_code_by_subdivision_name`:return o.getCountrySubDivisionCodeBySubDivisionName;case`country_alpha2code_by_citizenship`:return o.getCountryAlpha2CodeByCitizenship;case`country_subdivision_name_by_subdivision_code`:return o.getCountrySubDivisionNameBySubDivisionCode;case`document_file_format_from_extension`:return o.getDocumentFileFormatFromExtension;default:return}},R=(0,o.zStrictObject)({targetFieldKey:o.z.string(),alias:o.z.string().optional(),expression:o.z.string().optional(),values:o.z.unknown().optional(),type:o.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.z.boolean().default(!1),custom:o.z.boolean().default(!1),hidden:o.z.boolean().default(!1),enumMapper:(0,o.zStrictObject)({matcher:o.z.string().or((0,o.zStrictObject)({matchExpression:o.z.string(),value:o.z.string()}).array())}).optional(),properties:o.z.lazy(()=>R).array().optional(),requiredScopes:o.z.string().array().optional()}),z=o.z.object({fields:R.array(),dataSource:o.z.string(),externalSources:o.z.record(o.z.string(),o.z.string()).optional()}),B=o.z.object({data:o.z.unknown()}),mapFieldsStepFunction=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=z.parse(t),o=(0,s.evaluate)(i,e);if(!r||!i||e?.debug?.custom_mappings===`disabled`||!o)return{block:e,successful:!0};let c=Object.keys(a??{})?.reduce((t,n)=>(t[n]=(0,s.evaluate)(a?.[n],e),t),{}),l;if(Array.isArray(o))l=o.map(e=>{let t=H(r,{...e,external:c});return n.push(...t?.errors||[]),t?.record});else{let e=H(r,{...o,external:c});l=e?.record,n.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:l},errors:Object.keys(n).length>0?n:void 0}},handleObjectArrayFromValues=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=evaluateExpressionsInObject(r,t),a=H(e.properties,i);return(0,o.notMissing)(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},handleObjectArrayFromExpression=(e,t,n)=>{if(e.expression)try{let r=(0,s.evaluate)(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=H(e.properties,t);return(0,o.notMissing)(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=H(e.properties,r);return(0,o.notMissing)(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},handleSingleObject=(e,t,n)=>{let r=(0,o.notMissing)(e.values)?e.values:t,i=H(e.properties,r);return(0,o.notMissing)(i?.errors)&&n.push(...i.errors),i?.record},V=__name((e,t,n)=>{if(!(0,o.isMissing)(e.properties))return e.array&&Array.isArray(e.values)?handleObjectArrayFromValues(e,t,n):e.array&&e.expression?handleObjectArrayFromExpression(e,t,n):handleSingleObject(e,t,n)},`handleObjectField`),H=__name((e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=V(a,t,r),e===void 0)continue}else{let{error:n,value:i}=extractFieldValue(t,t?.id,a);if(e=i,n){r.push(n);continue}}a.custom?n[a.targetFieldKey]=e:i[a.targetFieldKey]=e}let a=Object.keys(n).length>0?{unified_custom_fields:n}:{};return{record:{...i,...a},errors:r.length>0?r:void 0}},`mapSingleRecord`),evaluateExpressionsInObject=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if((0,s.isValidExpression)(e))try{return(0,s.evaluate)(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>evaluateExpressionsInObject(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=evaluateExpressionsInObject(r,t);return n}return e},extractFieldValue=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return U(n,t,e);case`enum`:return evaluateEnumValue(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},U=__name((e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=(0,s.evaluate)(e.expression,n)}catch{return{error:{message:`Invalid expression`,id:t,targetField:e.targetFieldKey}}}return r===void 0?{error:{message:`Expression returned no value`,id:t,targetField:e.targetFieldKey}}:{value:r}},`evaluateValue`),evaluateEnumValue=(e,t,n)=>{let r=U(e,t,n),i=(0,o.notMissing)(r.value)?r.value:null;if(e.enumMapper===void 0)return{error:{message:`Enum mapper was not defined`,id:t,targetField:e.targetFieldKey}};let a=e.enumMapper.matcher;if((0,o.isString)(a)){let n=getEnumMatcher(a);return(0,o.notMissing)(n)?{value:{value:((0,o.notMissing)(i)?n(i):null)??`unmapped_value`,source_value:i}}:{error:{message:`The built-in matcher "${a}" is not supported`,id:t,targetField:e.targetFieldKey}}}for(let e of a){let{matchExpression:t,value:r}=e;if((0,s.evaluate)(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},W=[`data`,`headers`],ee=o.z.object({baseUrl:o.z.string(),url:o.z.string(),method:o.z.enum(c.HttpMethods),saml:(0,o.zStrictObject)({objectKey:o.z.string(),key:o.z.string(),clientId:o.z.string(),cert:o.z.unknown().optional(),issuer:o.z.string().optional(),lifetime:o.z.number().optional(),nameId:o.z.string().optional(),audience:o.z.string().optional(),nameIdentifierFormat:o.z.string().optional(),tokenEndpoint:o.z.string().optional()}).optional(),response:(0,o.zStrictObject)({indexField:o.z.string().optional(),dataKey:o.z.string().optional(),nextKey:o.z.string().optional(),nextKeyIn:o.z.enum(W).optional()}).optional(),iterator:(0,o.zStrictObject)({key:o.z.string(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),mode:o.z.enum([`cursor`,`offset`]).optional()}),cursor:(0,o.zStrictObject)({token:o.z.string().optional().nullable(),position:o.z.number().optional().nullable()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),G=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),next:o.z.string().optional().nullable(),position:o.z.number().optional()}).optional(),K=25,q=__name(e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},`isJexlExpression`),paginatedRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,l=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,u=t?(0,s.safeEvaluateRecord)({...t,args:l},e):{},d=t?.response?.nextKey,f=d&&q(d),p=t?.response?.dataKey,m=p&&q(p),h={...u?.response??{},...f?{nextKey:d}:{},...m?{dataKey:p}:{}},g={...u,customErrors:t?.customErrors,iterator:{...u?.iterator??{},condition:t?.iterator?.condition},response:f||m?h:u?.response},{baseUrl:_,url:v,method:y,response:b,iterator:x,cursor:S,customErrors:C,args:w,saml:T}=ee.parse(g),E=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=O.parse(E),k=w?(0,c.parseRequestParameters)(w):{query:{},body:{},headers:{}},A=(0,c.createAuthorizationHeaders)(D),j={...k?.headers??{},...A},M=e.connector?.rateLimit,N=e.connector?.concurrency,P=M!==void 0||N!==void 0?{rateLimit:M,concurrency:N}:void 0,F=(0,o.notMissing)(T)?{[T.objectKey]:await(0,o.generateSamlAssertion)({key:T.key,clientId:T.clientId,cert:T.cert,issuer:T.issuer,lifetime:T.lifetime,audience:T.audience,nameId:T.nameId,nameIdentifierFormat:T.nameIdentifierFormat,tokenEndpoint:T.tokenEndpoint})}:{},I=x.mode===`offset`,L=S?.token??null,R=null,z=null,B=[],V=[],H=[],U=a,W=S?.position??0,G=!0,K=!0,J=!0;do{G?G=!1:I||(W=0),L===null?I&&(x.in===`query`?k.query[x.key]=W.toString():x.in===`body`&&(Array.isArray(k.body)||(k.body[x.key]=W))):x.in===`query`?(0,o.isObject)(L)?Object.entries(L).forEach(([e,t])=>{k.query[`${x.key}[${e}]`]=t?.toString()??``}):k.query[x.key]=L.toString():x.in===`body`&&(Array.isArray(k.body)||(k.body[x.key]=L));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${_}${v}`,queryParams:{...k?.query},method:y,headers:{...j},body:Array.isArray(k?.body)?k.body:{...k?.body,...F},customErrorConfigs:C,requestConfig:P})}catch(t){return buildStepErrorOutput(t,e)}R=L,V=b?.dataKey?te(t.data,b.dataKey):t.data;let r=I?V?.slice(0,U):V?.slice(W,W+U);U-=r.length,W+=r.length,H.push(t),B=B.concat(r),z=t?.status,L=ne({result:t,response:b}),J=(0,o.notMissing)(x.condition)?(0,s.safeEvaluate)(x.condition,t.data)===!0:!0,!I&&r.length===V.length&&U===0&&(W=0,R=L),K=(0,o.isMissing)(L)&&B.length<a}while((I||(0,o.notMissing)(L))&&J&&B.length<a&&V?.length>0);return{block:e,successful:!0,output:{data:ie(B,b),raw:H,statusCode:z,next:K?void 0:R,position:K?void 0:W}}},te=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return e;let n=(0,s.safeEvaluate)(q(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},`resolveDataKey`),ne=__name(({result:e,response:t})=>{if((0,o.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?J(e.headers,r):re(e.data,r)},`resolveNextIterator`),J=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`)return null;if(q(t)){let n=(0,s.safeEvaluate)(t,e);return typeof n==`string`&&n!==``||typeof n==`number`?n:null}let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},`resolveFromHeaders`),re=__name((e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return null;let n=(0,s.safeEvaluate)(q(t)?t:`$.${t}`,e);return(0,o.isMissing)(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},`resolveFromData`),ie=__name((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Y=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:O.optional(),saml:(0,o.zStrictObject)({objectKey:o.z.string(),key:o.z.string(),clientId:o.z.string(),cert:o.z.unknown().optional(),issuer:o.z.string().optional(),lifetime:o.z.number().optional(),nameId:o.z.string().optional(),audience:o.z.string().optional(),nameIdentifierFormat:o.z.string().optional(),tokenEndpoint:o.z.string().optional()}).optional(),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),ae=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),isJexlExpression=e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},requestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?.response?.dataKey,l=a&&isJexlExpression(a),u=t?(0,s.safeEvaluateRecord)({...t,args:i},e):{},d={...u,customErrors:t?.customErrors,response:l?{...u?.response??{},dataKey:a}:u?.response},{baseUrl:f,url:p,method:m,response:h,authorization:g,customErrors:_,args:v,saml:y}=Y.parse(d),b=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,x=v?(0,c.parseRequestParameters)(v):{query:{},body:{},headers:{}},S=(0,c.createAuthorizationHeaders)((0,o.notMissing)(g)?g:O.parse(b)),C={...x?.headers??{},...S},w=e.connector?.rateLimit,T=e.connector?.concurrency,E=w!==void 0||T!==void 0?{rateLimit:w,concurrency:T}:void 0,D=(0,o.notMissing)(y)?{[y.objectKey]:await(0,o.generateSamlAssertion)({key:y.key,clientId:y.clientId,cert:y.cert,issuer:y.issuer,lifetime:y.lifetime,audience:y.audience,nameId:y.nameId,nameIdentifierFormat:y.nameIdentifierFormat,tokenEndpoint:y.tokenEndpoint})}:{},k;try{k=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:x?.query,method:m,headers:C,body:Array.isArray(x?.body)?x?.body:{...x?.body,...D},customErrorConfigs:_,requestConfig:E})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:oe(h?.dataKey?resolveDataKey(k.data,h.dataKey):k.data,h),raw:k,statusCode:k?.status,message:k?.message}}},resolveDataKey=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return e;let n=(0,s.safeEvaluate)(isJexlExpression(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},oe=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),se=[`data`,`headers`],X=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:o.z.discriminatedUnion(`type`,[(0,o.zStrictObject)({type:o.z.literal(`none`)}),(0,o.zStrictObject)({type:o.z.literal(`basic`),username:o.z.string().optional(),password:o.z.string().optional(),encoding:o.z.string().optional()}),(0,o.zStrictObject)({type:o.z.literal(`bearer`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)}),(0,o.zStrictObject)({type:o.z.literal(`oauth2`),token:o.z.string(),includeBearer:o.z.boolean().optional().default(!0)})]).optional(),envelope:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.unknown())]).optional(),namespaces:o.z.strictObject({namespaceIdentifier:o.z.string(),namespace:o.z.string()}).array().optional(),soapOperation:o.z.string().optional(),soapAction:o.z.string().optional(),useSoapContext:o.z.boolean().optional().default(!0),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional(),nextKey:o.z.string().optional(),nextKeyIn:o.z.enum(se).optional()}).optional(),iterator:(0,o.zStrictObject)({key:o.z.string(),in:o.z.enum(c.RequestParameterLocations)}),cursor:(0,o.zStrictObject)({token:o.z.string().optional().nullable(),position:o.z.number().optional().nullable()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),ce=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional(),next:o.z.string().optional().nullable(),position:o.z.number().optional()}).optional(),le=25,soapPaginatedRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,l=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,u=t?(0,s.safeEvaluateRecord)({...t,args:l},e):{},d={...u,customErrors:t?.customErrors},{baseUrl:f,url:p,method:m,response:h,iterator:g,cursor:_,authorization:v,customErrors:y,args:b,soapOperation:x,namespaces:S,envelope:C,soapAction:w,useSoapContext:T}=X.parse(d),E=u?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=b?(0,c.parseRequestParameters)(b):{query:{},body:{},headers:{}},k=(0,c.createAuthorizationHeaders)((0,o.notMissing)(v)?v:O.parse(E)),A={...D?.headers??{},...k},j=e.connector?.rateLimit,M=e.connector?.concurrency,N={...(j!==void 0||M!==void 0)&&{rateLimit:j,concurrency:M},soapOperation:x,namespaces:S,envelope:C,soapAction:w,soapContext:T?{username:e.credentials?.username,password:e.credentials?.password}:void 0},P=_?.token??null,F=null,I=null,L=[],R=[],z=[],B=a,V=_?.position??0,H=!0,U;do{H?H=!1:V=0,P!==null&&(g.in===`query`?D.query[g.key]=P.toString():g.in===`body`&&(D.body[g.key]=P));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:D?.query,method:m,headers:A,body:D?.body,customErrorConfigs:y,requestConfig:N})}catch(t){return buildStepErrorOutput(t,e)}F=P,R=h?.dataKey?t.data[h?.dataKey]:t.data,Array.isArray(R)||(R=R?[R]:[]);let r=R?.slice(V,V+B);B-=r.length,V+=r.length,z.push(t),L=L.concat(r),I=t?.status,P=resolveNextIterator({result:t,response:h}),r.length===R.length&&B===0&&(V=0,F=P),U=(0,o.isMissing)(P)&&L.length<a}while((0,o.notMissing)(P)&&L.length<a&&R?.length>0);return{block:e,successful:!0,output:{data:ue(L,h),raw:z,statusCode:I,next:U?void 0:F,position:U?void 0:V}}},resolveNextIterator=({result:e,response:t})=>{if((0,o.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?resolveFromHeaders(e.headers,r):resolveFromData(e.data,r)},resolveFromHeaders=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`)return null;let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},resolveFromData=(e,t)=>{if((0,o.isMissing)(e)||typeof e!=`object`||!e)return null;let n=e[t];return(0,o.isMissing)(n)?null:typeof n==`string`||typeof n==`number`?n:null},ue=__name((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Z=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods),authorization:O.optional(),envelope:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.unknown())]).optional(),namespaces:o.z.strictObject({namespaceIdentifier:o.z.string(),namespace:o.z.string()}).array().optional(),soapOperation:o.z.string().optional(),soapAction:o.z.string().optional(),useSoapContext:o.z.boolean().optional().default(!0),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional()}),de=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),soapRequestStepFunction=async({block:e,params:t})=>{let n=c.RequestClientFactory.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,s.safeEvaluateRecord)({...t,args:i},e):{},l={...a,customErrors:t?.customErrors},{baseUrl:u,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,soapOperation:_,namespaces:v,envelope:y,soapAction:b,useSoapContext:x}=Z.parse(l),S=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,C=g?(0,c.parseRequestParameters)(g):{query:{},body:{},headers:{}},w=(0,c.createAuthorizationHeaders)((0,o.notMissing)(m)?m:O.parse(S)),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,k={...(E!==void 0||D!==void 0)&&{rateLimit:E,concurrency:D},soapOperation:_,namespaces:v,envelope:y,soapAction:b,soapContext:x?{username:e.credentials?.username,password:e.credentials?.password}:void 0},A;try{A=await n.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:C?.query,method:f,headers:T,body:C?.body,customErrorConfigs:h,requestConfig:k})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:fe(p?.dataKey?A.data[p?.dataKey]:A.data,p),raw:A,statusCode:A?.status,message:A?.message}}},fe=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),pe=o.z.object({values:o.z.string().or(o.z.record(o.z.string(),o.z.unknown())).or(o.z.array(o.z.unknown()))}),me=o.z.object({data:o.z.unknown()}),staticValuesStepFunction=async({block:e,params:t})=>{let{values:n}=pe.parse(t),r=Array.isArray(n)?n.map(t=>evaluateValue(t,e)):evaluateValue(n,e);return{block:{...e},successful:!0,output:{data:r}}},evaluateValue=(e,t)=>(0,o.isString)(e)?(0,s.safeEvaluate)(e,t):(0,o.isObject)(e)?(0,s.safeEvaluateRecord)(e,t):e,he=o.z.object({targetFieldKey:o.z.string(),type:o.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.z.boolean().default(!1),custom:o.z.boolean().default(!1),hidden:o.z.boolean().default(!1),properties:o.z.lazy(()=>he).array().optional(),requiredScopes:o.z.string().array().optional()}),ge=o.z.object({fields:he.array().optional(),dataSource:o.z.string()}),_e=o.z.object({data:o.z.unknown()});let Q=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const typecast=({value:e,type:t,format:n})=>{if((0,o.isMissing)(e))return null;switch(t){case Q.String:return(0,o.safeParseToString)({value:e});case Q.Number:return(0,o.safeParseToNumber)({value:e});case Q.Boolean:return(0,o.safeParseToBoolean)({value:e});case Q.DateTimeString:return(0,o.safeParseToDateTimeString)({value:e,format:n});default:return e}},isFieldSupportedType=e=>Object.values(Q).includes(e),ve=__name(async({block:e})=>{let t=e?.fieldConfigs;if(!t||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let n;return n=Array.isArray(e.result)?e.result.map(e=>ye(e,t)):ye(e.result,t),{block:{...e,result:n},successful:!0}},`typecastStepFunction`),ye=__name((e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;isFieldSupportedType(i)&&(!t.custom&&(0,o.notMissing)(n[r])?n[r]=typecast({value:e[r],type:i}):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},`mapSingleRecord`),typecastStepFunction=async({block:e,params:t})=>{let{fields:n,dataSource:r}=ge.parse(t),i=(0,s.evaluate)(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>mapSingleRecord(e,n)):mapSingleRecord(i,n),{block:{...e},successful:!0,output:{data:a}}},handleObjectField=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?mapSingleRecord(t,e.properties):t):typeof t==`object`&&t?mapSingleRecord(t,e.properties):t,mapSingleRecord=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&(0,o.notMissing)(n[r])?n[r]=handleObjectField(t,e[r]):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=handleObjectField(t,e.unified_custom_fields?.[r])):isFieldSupportedType(i)&&(!t.custom&&(0,o.notMissing)(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=typecast({value:e[r],type:i})):n.unified_custom_fields&&(0,o.notMissing)(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},be=(0,o.zStrictObject)({content:o.z.string().describe(`The file content as base64 encoded string`),contentType:o.z.string().optional().describe(`The MIME type for the binary content (defaults to application/octet-stream)`)}),xe=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).default(`post`),authorization:O.optional(),binaryContent:be.describe(`Raw binary content for octet-stream uploads`),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Se=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),uploadBinaryStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,response:f,authorization:p,binaryContent:m,args:h,customErrors:g}=xe.parse(a),_=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,v=h?(0,c.parseRequestParameters)(h):{query:{},body:{},headers:{}},y=(0,c.createAuthorizationHeaders)((0,o.notMissing)(p)?p:O.parse(_)),b=Buffer.from(m.content,`base64`),x={"content-type":m.contentType??`application/octet-stream`,...v?.headers??{},...y},S=e.connector?.rateLimit,C=e.connector?.concurrency,w=S!==void 0||C!==void 0?{rateLimit:S,concurrency:C}:void 0,T;try{T=await e.httpClient.request({url:`${l??``}${u}`,method:d,headers:x,queryParams:v?.query,payload:b,requestConfig:w})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,c.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let E=(0,c.translateCustomError)(T,g);return(0,c.isFailedStatusCode)(E?.status)?{block:e,successful:!1,errors:[(0,c.serializeHttpResponseError)(new c.HttpResponseError(E,E.message))],output:{statusCode:E.status,message:E.message}}:{block:e,successful:!0,output:{data:Ce(f?.dataKey?E.data[f?.dataKey]:E.data,f),raw:E,statusCode:E?.status,message:E?.message}}},Ce=__name((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),we=(0,o.zStrictObject)({fieldName:o.z.string().describe(`The form field name for the file`),content:o.z.string().describe(`The file content as base64 encoded string`),filename:o.z.string().describe(`The filename to use in the upload`),contentType:o.z.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),Te=o.z.object({baseUrl:o.z.string().optional(),url:o.z.string(),method:o.z.enum(c.HttpMethods).default(`post`),authorization:O.optional(),file:we.describe(`The file to upload`),additionalFields:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),contentType:o.z.string().optional().describe(`The MIME type for this form field (e.g., "application/json")`)}).array().optional().describe(`Additional form fields to include in the multipart request`),response:(0,o.zStrictObject)({collection:o.z.boolean().optional(),indexField:o.z.string().optional(),dataKey:o.z.string().optional()}).optional(),customErrors:c.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,o.zStrictObject)({name:o.z.string(),value:o.z.unknown(),in:o.z.enum(c.RequestParameterLocations),spread:o.z.boolean().optional(),condition:o.z.string().optional(),arrayFormat:o.z.enum(c.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Ee=(0,o.zStrictObject)({data:o.z.unknown().optional(),raw:o.z.unknown().optional(),statusCode:o.z.number(),message:o.z.string().optional()}).optional(),uploadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||(0,s.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,s.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:l,url:d,method:f,response:p,authorization:m,file:h,additionalFields:g,args:_,customErrors:v}=Te.parse(a),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=_?(0,c.parseRequestParameters)(_):{query:{},body:{},headers:{}},x=(0,c.createAuthorizationHeaders)((0,o.notMissing)(m)?m:O.parse(y)),S=new u.default;if(g)for(let e of g){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);S.append(e.name,t,e.contentType?{contentType:e.contentType}:void 0)}let C=Buffer.from(h.content,`base64`);S.append(h.fieldName,C,{filename:h.filename,contentType:h.contentType});let w={...S.getHeaders(),...b?.headers??{},...x},T=e.connector?.rateLimit,E=e.connector?.concurrency,D=T!==void 0||E!==void 0?{rateLimit:T,concurrency:E}:void 0,k;try{k=await e.httpClient.request({url:`${l??``}${d}`,method:f,headers:w,queryParams:b?.query,payload:S,requestConfig:D})}catch(t){return buildStepErrorOutput(t,e)}let A=(0,c.translateCustomError)(k,v);return(0,c.isFailedStatusCode)(A?.status)?buildStepErrorOutput(new c.HttpResponseError(A,A.message),e):{block:e,successful:!0,output:{data:indexResponseData(p?.dataKey?A.data[p?.dataKey]:A.data,p),raw:A,statusCode:A?.status,message:A?.message}}},indexResponseData=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e};let $=function(e){return e.TYPECAST=`typecast`,e.MAP_FIELDS=`map_fields`,e.GROUP_DATA=`group_data`,e.REQUEST=`request`,e.PAGINATED_REQUEST=`paginated_request`,e.SOAP_REQUEST=`soap_request`,e.SOAP_PAGINATED_REQUEST=`soap_paginated_request`,e.STATIC_VALUES=`static_values`,e.UPLOAD_FILE=`upload_file`,e.UPLOAD_BINARY=`upload_binary`,e.DOWNLOAD_FILE=`download_file`,e.EMIT_EVENT=`emit_event`,e}({});const De={[$.TYPECAST]:{v1:{fn:ve},v2:{fn:typecastStepFunction,inputSchema:ge,outputSchema:_e}},[$.MAP_FIELDS]:{v1:{fn:F},v2:{fn:mapFieldsStepFunction,inputSchema:z,outputSchema:B}},[$.REQUEST]:{v1:{fn:requestStepFunction,inputSchema:Y,outputSchema:ae}},[$.GROUP_DATA]:{v1:{fn:groupDataStepFunction,inputSchema:N,outputSchema:P}},[$.PAGINATED_REQUEST]:{v1:{fn:paginatedRequestStepFunction,inputSchema:ee,outputSchema:G}},[$.SOAP_REQUEST]:{v1:{fn:soapRequestStepFunction,inputSchema:Z,outputSchema:de}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:soapPaginatedRequestStepFunction,inputSchema:X,outputSchema:ce}},[$.STATIC_VALUES]:{v1:{fn:staticValuesStepFunction,inputSchema:pe,outputSchema:me}},[$.UPLOAD_FILE]:{v1:{fn:uploadFileStepFunction,inputSchema:Te,outputSchema:Ee}},[$.UPLOAD_BINARY]:{v1:{fn:uploadBinaryStepFunction,inputSchema:xe,outputSchema:Se}},[$.DOWNLOAD_FILE]:{v1:{fn:downloadFileStepFunction,inputSchema:k,outputSchema:A}},[$.EMIT_EVENT]:{v1:{fn:emitEventStepFunction,inputSchema:j,outputSchema:M}}},stepFunctionEnhancedWithSchemasValidation=(e,t)=>async({block:n,params:r})=>{try{e.inputSchema&&e.inputSchema.parse(r)}catch(e){return{block:n,successful:!1,errors:[{message:`Input parameters for ${t} are invalid: ${e?.message}`}]}}let i=await e.fn({block:n,params:r});try{e.outputSchema&&e.outputSchema.parse(i.output)}catch{return{block:n,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return i},Oe={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=De}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:stepFunctionEnhancedWithSchemasValidation(i,e)}:i}},isForeachStep=e=>`iterator`in e&&typeof e.iterator==`string`;exports.AUTHORIZATION_SCHEMA=O,exports.COMPOSITE_ID_LATEST_VERSION=1,exports.CoreError=y,exports.INPUT_ENUM_REGISTRY=b,exports.ReleaseStages=x,exports.StepFunctionName=$,exports.StepFunctionsFactory=Oe,exports.StepFunctionsRegistry=De,exports.areCursorsEqual=areCursorsEqual,exports.decodeCompositeId=decodeCompositeId,exports.encodeCompositeId=encodeCompositeId,exports.evaluateEventRouter=evaluateEventRouter,exports.evaluateExternalAccountIdExtractor=evaluateExternalAccountIdExtractor,exports.expandCursor=expandCursor,exports.getCategoryDetails=getCategoryDetails,exports.getInputEnumValues=getInputEnumValues,exports.isCompositeId=isCompositeId,exports.isCoreError=isCoreError,exports.isCursorEmpty=isCursorEmpty,exports.isForeachStep=isForeachStep,exports.isValidCategory=isValidCategory,exports.isValidEnumRef=isValidEnumRef,exports.minifyCursor=minifyCursor,exports.updateCursor=updateCursor;
|
package/dist/index.d.cts
CHANGED
|
@@ -1500,6 +1500,13 @@ type EventToEmit = {
|
|
|
1500
1500
|
eventDate?: string;
|
|
1501
1501
|
data?: unknown;
|
|
1502
1502
|
};
|
|
1503
|
+
type ConnectorEvents = {
|
|
1504
|
+
actions?: {
|
|
1505
|
+
[actionId: string]: Action;
|
|
1506
|
+
};
|
|
1507
|
+
router?: EventRouter;
|
|
1508
|
+
externalAccountIdExtractor?: Action;
|
|
1509
|
+
};
|
|
1503
1510
|
type Connector = {
|
|
1504
1511
|
title: string;
|
|
1505
1512
|
version: string;
|
|
@@ -1516,15 +1523,12 @@ type Connector = {
|
|
|
1516
1523
|
actions?: {
|
|
1517
1524
|
[actionId: string]: Action;
|
|
1518
1525
|
};
|
|
1519
|
-
|
|
1520
|
-
[actionId: string]: Action;
|
|
1521
|
-
};
|
|
1526
|
+
events?: ConnectorEvents;
|
|
1522
1527
|
rateLimit?: RateLimitConfig;
|
|
1523
1528
|
concurrency?: ConcurrencyConfig;
|
|
1524
1529
|
releaseStage?: ReleaseStage;
|
|
1525
1530
|
forkedFrom?: string;
|
|
1526
1531
|
owner?: string;
|
|
1527
|
-
eventRouter?: EventRouter;
|
|
1528
1532
|
};
|
|
1529
1533
|
type Assets = {
|
|
1530
1534
|
icon: string;
|
|
@@ -1536,6 +1540,16 @@ type EnumOneOf = {
|
|
|
1536
1540
|
} | {
|
|
1537
1541
|
ref: string;
|
|
1538
1542
|
};
|
|
1543
|
+
type InputFormat = 'email' | 'url' | 'uuid' | 'date' | 'datetime' | 'uri';
|
|
1544
|
+
type InputRules = {
|
|
1545
|
+
minLength?: number;
|
|
1546
|
+
maxLength?: number;
|
|
1547
|
+
pattern?: string;
|
|
1548
|
+
format?: InputFormat;
|
|
1549
|
+
min?: number;
|
|
1550
|
+
max?: number;
|
|
1551
|
+
errorMessage?: string;
|
|
1552
|
+
};
|
|
1539
1553
|
type Input = {
|
|
1540
1554
|
name: string;
|
|
1541
1555
|
type: 'string' | 'number' | 'boolean' | 'datetime_string' | 'object' | 'enum';
|
|
@@ -1545,7 +1559,31 @@ type Input = {
|
|
|
1545
1559
|
array?: boolean;
|
|
1546
1560
|
properties?: Omit<Input, 'in'>[];
|
|
1547
1561
|
oneOf?: EnumOneOf;
|
|
1548
|
-
|
|
1562
|
+
rules?: InputRules;
|
|
1563
|
+
};
|
|
1564
|
+
type RequiredIfCondition = {
|
|
1565
|
+
field: string;
|
|
1566
|
+
equals?: string;
|
|
1567
|
+
notEquals?: string;
|
|
1568
|
+
present?: boolean;
|
|
1569
|
+
};
|
|
1570
|
+
type AtLeastOneOfRule = {
|
|
1571
|
+
rule: 'atLeastOneOf';
|
|
1572
|
+
fields: string[];
|
|
1573
|
+
errorMessage?: string;
|
|
1574
|
+
};
|
|
1575
|
+
type RequiredIfRule = {
|
|
1576
|
+
rule: 'requiredIf';
|
|
1577
|
+
field: string;
|
|
1578
|
+
condition: RequiredIfCondition;
|
|
1579
|
+
errorMessage?: string;
|
|
1580
|
+
};
|
|
1581
|
+
type MutuallyExclusiveRule = {
|
|
1582
|
+
rule: 'mutuallyExclusive';
|
|
1583
|
+
fields: string[];
|
|
1584
|
+
errorMessage?: string;
|
|
1585
|
+
};
|
|
1586
|
+
type ActionValidationRule = AtLeastOneOfRule | RequiredIfRule | MutuallyExclusiveRule;
|
|
1549
1587
|
type ActionExample = {
|
|
1550
1588
|
exampleDescription?: string;
|
|
1551
1589
|
[key: string]: unknown;
|
|
@@ -1567,6 +1605,7 @@ type Action = {
|
|
|
1567
1605
|
entrypointUrl?: string;
|
|
1568
1606
|
entrypointHttpMethod?: HttpMethod;
|
|
1569
1607
|
inputs?: Input[];
|
|
1608
|
+
validationRules?: ActionValidationRule[];
|
|
1570
1609
|
requiredScopes?: string[];
|
|
1571
1610
|
steps: {
|
|
1572
1611
|
[stepId: string]: Step;
|
|
@@ -1605,6 +1644,7 @@ type AuthenticationField = {
|
|
|
1605
1644
|
placeholder?: string;
|
|
1606
1645
|
description?: string;
|
|
1607
1646
|
tooltip?: string;
|
|
1647
|
+
externalSystemAccountIdentifier?: boolean;
|
|
1608
1648
|
};
|
|
1609
1649
|
type SupportConfig = {
|
|
1610
1650
|
link?: string;
|
|
@@ -1671,6 +1711,15 @@ type Authentication = {
|
|
|
1671
1711
|
};
|
|
1672
1712
|
};
|
|
1673
1713
|
//#endregion
|
|
1714
|
+
//#region src/connector/event-extraction.d.ts
|
|
1715
|
+
type EvaluationContext$1 = {
|
|
1716
|
+
body: unknown;
|
|
1717
|
+
headers: Record<string, unknown>;
|
|
1718
|
+
path?: string;
|
|
1719
|
+
method: string;
|
|
1720
|
+
};
|
|
1721
|
+
declare const evaluateExternalAccountIdExtractor: (connector: Connector, context: EvaluationContext$1) => string | undefined;
|
|
1722
|
+
//#endregion
|
|
1674
1723
|
//#region src/connector/event-router.d.ts
|
|
1675
1724
|
type EvaluationContext = {
|
|
1676
1725
|
body: unknown;
|
|
@@ -1800,4 +1849,4 @@ type Account = {
|
|
|
1800
1849
|
originOwnerName?: string;
|
|
1801
1850
|
};
|
|
1802
1851
|
//#endregion
|
|
1803
|
-
export { AUTHORIZATION_SCHEMA, type Account, type Action, type ActionExample, type ActionResponse, type ActionType, type Assets, type Authentication, type AuthenticationConfig, type AuthenticationField, type AuthenticationGuides, type Block, type BlockContext, type BlockIndexedRecord, COMPOSITE_ID_LATEST_VERSION, type Category, type CompositeIdentifier, type CompositeIdentifierConfig, type CompositeIdentifierConnectorConfig, type Connector, CoreError, type Cursor, type DefenderMetadata, type DefenderSettings, type EnumOneOf, type EventRouter, type EventRouterRule, type EventToEmit, type FieldConfig, type ForeachStep, type Guide, type GuideImage, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type IntermediateStepSnapshot, type MatchedEventAction, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type SimpleStep, type Source, type Step, type StepFunction, type StepFunctionMeta, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, evaluateEventRouter, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isForeachStep, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
|
|
1852
|
+
export { AUTHORIZATION_SCHEMA, type Account, type Action, type ActionExample, type ActionResponse, type ActionType, type ActionValidationRule, type Assets, type Authentication, type AuthenticationConfig, type AuthenticationField, type AuthenticationGuides, type Block, type BlockContext, type BlockIndexedRecord, COMPOSITE_ID_LATEST_VERSION, type Category, type CompositeIdentifier, type CompositeIdentifierConfig, type CompositeIdentifierConnectorConfig, type Connector, type ConnectorEvents, CoreError, type Cursor, type DefenderMetadata, type DefenderSettings, type EnumOneOf, type EventRouter, type EventRouterRule, type EventToEmit, type FieldConfig, type ForeachStep, type Guide, type GuideImage, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputFormat, type InputLocation, type InputRules, type IntermediateStepSnapshot, type MatchedEventAction, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type SimpleStep, type Source, type Step, type StepFunction, type StepFunctionMeta, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, evaluateEventRouter, evaluateExternalAccountIdExtractor, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isForeachStep, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
|
package/dist/index.d.mts
CHANGED
|
@@ -1499,6 +1499,13 @@ type EventToEmit = {
|
|
|
1499
1499
|
eventDate?: string;
|
|
1500
1500
|
data?: unknown;
|
|
1501
1501
|
};
|
|
1502
|
+
type ConnectorEvents = {
|
|
1503
|
+
actions?: {
|
|
1504
|
+
[actionId: string]: Action;
|
|
1505
|
+
};
|
|
1506
|
+
router?: EventRouter;
|
|
1507
|
+
externalAccountIdExtractor?: Action;
|
|
1508
|
+
};
|
|
1502
1509
|
type Connector = {
|
|
1503
1510
|
title: string;
|
|
1504
1511
|
version: string;
|
|
@@ -1515,15 +1522,12 @@ type Connector = {
|
|
|
1515
1522
|
actions?: {
|
|
1516
1523
|
[actionId: string]: Action;
|
|
1517
1524
|
};
|
|
1518
|
-
|
|
1519
|
-
[actionId: string]: Action;
|
|
1520
|
-
};
|
|
1525
|
+
events?: ConnectorEvents;
|
|
1521
1526
|
rateLimit?: RateLimitConfig;
|
|
1522
1527
|
concurrency?: ConcurrencyConfig;
|
|
1523
1528
|
releaseStage?: ReleaseStage;
|
|
1524
1529
|
forkedFrom?: string;
|
|
1525
1530
|
owner?: string;
|
|
1526
|
-
eventRouter?: EventRouter;
|
|
1527
1531
|
};
|
|
1528
1532
|
type Assets = {
|
|
1529
1533
|
icon: string;
|
|
@@ -1535,6 +1539,16 @@ type EnumOneOf = {
|
|
|
1535
1539
|
} | {
|
|
1536
1540
|
ref: string;
|
|
1537
1541
|
};
|
|
1542
|
+
type InputFormat = 'email' | 'url' | 'uuid' | 'date' | 'datetime' | 'uri';
|
|
1543
|
+
type InputRules = {
|
|
1544
|
+
minLength?: number;
|
|
1545
|
+
maxLength?: number;
|
|
1546
|
+
pattern?: string;
|
|
1547
|
+
format?: InputFormat;
|
|
1548
|
+
min?: number;
|
|
1549
|
+
max?: number;
|
|
1550
|
+
errorMessage?: string;
|
|
1551
|
+
};
|
|
1538
1552
|
type Input = {
|
|
1539
1553
|
name: string;
|
|
1540
1554
|
type: 'string' | 'number' | 'boolean' | 'datetime_string' | 'object' | 'enum';
|
|
@@ -1544,7 +1558,31 @@ type Input = {
|
|
|
1544
1558
|
array?: boolean;
|
|
1545
1559
|
properties?: Omit<Input, 'in'>[];
|
|
1546
1560
|
oneOf?: EnumOneOf;
|
|
1547
|
-
|
|
1561
|
+
rules?: InputRules;
|
|
1562
|
+
};
|
|
1563
|
+
type RequiredIfCondition = {
|
|
1564
|
+
field: string;
|
|
1565
|
+
equals?: string;
|
|
1566
|
+
notEquals?: string;
|
|
1567
|
+
present?: boolean;
|
|
1568
|
+
};
|
|
1569
|
+
type AtLeastOneOfRule = {
|
|
1570
|
+
rule: 'atLeastOneOf';
|
|
1571
|
+
fields: string[];
|
|
1572
|
+
errorMessage?: string;
|
|
1573
|
+
};
|
|
1574
|
+
type RequiredIfRule = {
|
|
1575
|
+
rule: 'requiredIf';
|
|
1576
|
+
field: string;
|
|
1577
|
+
condition: RequiredIfCondition;
|
|
1578
|
+
errorMessage?: string;
|
|
1579
|
+
};
|
|
1580
|
+
type MutuallyExclusiveRule = {
|
|
1581
|
+
rule: 'mutuallyExclusive';
|
|
1582
|
+
fields: string[];
|
|
1583
|
+
errorMessage?: string;
|
|
1584
|
+
};
|
|
1585
|
+
type ActionValidationRule = AtLeastOneOfRule | RequiredIfRule | MutuallyExclusiveRule;
|
|
1548
1586
|
type ActionExample = {
|
|
1549
1587
|
exampleDescription?: string;
|
|
1550
1588
|
[key: string]: unknown;
|
|
@@ -1566,6 +1604,7 @@ type Action = {
|
|
|
1566
1604
|
entrypointUrl?: string;
|
|
1567
1605
|
entrypointHttpMethod?: HttpMethod;
|
|
1568
1606
|
inputs?: Input[];
|
|
1607
|
+
validationRules?: ActionValidationRule[];
|
|
1569
1608
|
requiredScopes?: string[];
|
|
1570
1609
|
steps: {
|
|
1571
1610
|
[stepId: string]: Step;
|
|
@@ -1604,6 +1643,7 @@ type AuthenticationField = {
|
|
|
1604
1643
|
placeholder?: string;
|
|
1605
1644
|
description?: string;
|
|
1606
1645
|
tooltip?: string;
|
|
1646
|
+
externalSystemAccountIdentifier?: boolean;
|
|
1607
1647
|
};
|
|
1608
1648
|
type SupportConfig = {
|
|
1609
1649
|
link?: string;
|
|
@@ -1670,6 +1710,15 @@ type Authentication = {
|
|
|
1670
1710
|
};
|
|
1671
1711
|
};
|
|
1672
1712
|
//#endregion
|
|
1713
|
+
//#region src/connector/event-extraction.d.ts
|
|
1714
|
+
type EvaluationContext$1 = {
|
|
1715
|
+
body: unknown;
|
|
1716
|
+
headers: Record<string, unknown>;
|
|
1717
|
+
path?: string;
|
|
1718
|
+
method: string;
|
|
1719
|
+
};
|
|
1720
|
+
declare const evaluateExternalAccountIdExtractor: (connector: Connector, context: EvaluationContext$1) => string | undefined;
|
|
1721
|
+
//#endregion
|
|
1673
1722
|
//#region src/connector/event-router.d.ts
|
|
1674
1723
|
type EvaluationContext = {
|
|
1675
1724
|
body: unknown;
|
|
@@ -1799,4 +1848,4 @@ type Account = {
|
|
|
1799
1848
|
originOwnerName?: string;
|
|
1800
1849
|
};
|
|
1801
1850
|
//#endregion
|
|
1802
|
-
export { AUTHORIZATION_SCHEMA, type Account, type Action, type ActionExample, type ActionResponse, type ActionType, type Assets, type Authentication, type AuthenticationConfig, type AuthenticationField, type AuthenticationGuides, type Block, type BlockContext, type BlockIndexedRecord, COMPOSITE_ID_LATEST_VERSION, type Category, type CompositeIdentifier, type CompositeIdentifierConfig, type CompositeIdentifierConnectorConfig, type Connector, CoreError, type Cursor, type DefenderMetadata, type DefenderSettings, type EnumOneOf, type EventRouter, type EventRouterRule, type EventToEmit, type FieldConfig, type ForeachStep, type Guide, type GuideImage, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type IntermediateStepSnapshot, type MatchedEventAction, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type SimpleStep, type Source, type Step, type StepFunction, type StepFunctionMeta, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, evaluateEventRouter, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isForeachStep, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
|
|
1851
|
+
export { AUTHORIZATION_SCHEMA, type Account, type Action, type ActionExample, type ActionResponse, type ActionType, type ActionValidationRule, type Assets, type Authentication, type AuthenticationConfig, type AuthenticationField, type AuthenticationGuides, type Block, type BlockContext, type BlockIndexedRecord, COMPOSITE_ID_LATEST_VERSION, type Category, type CompositeIdentifier, type CompositeIdentifierConfig, type CompositeIdentifierConnectorConfig, type Connector, type ConnectorEvents, CoreError, type Cursor, type DefenderMetadata, type DefenderSettings, type EnumOneOf, type EventRouter, type EventRouterRule, type EventToEmit, type FieldConfig, type ForeachStep, type Guide, type GuideImage, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputFormat, type InputLocation, type InputRules, type IntermediateStepSnapshot, type MatchedEventAction, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type SimpleStep, type Source, type Step, type StepFunction, type StepFunctionMeta, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, evaluateEventRouter, evaluateExternalAccountIdExtractor, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isForeachStep, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-Cfxk5zVN.mjs";import{decodeFromBase64 as t,encodeToBase64 as n,generateSamlAssertion as r,getContentHash as i,getCountryAlpha2CodeByAlpha2Code as a,getCountryAlpha2CodeByAlpha3Code as o,getCountryAlpha2CodeByCitizenship as s,getCountryAlpha2CodeByCountryCode as c,getCountryAlpha2CodeByCountryName as l,getCountryAlpha3CodeByAlpha2Code as u,getCountryAlpha3CodeByAlpha3Code as d,getCountryAlpha3CodeByCountryCode as f,getCountryAlpha3CodeByCountryName as p,getCountryCodeByAlpha2Code as m,getCountryCodeByAlpha3Code as h,getCountryCodeByCountryCode as g,getCountryCodeByCountryName as _,getCountryNameByAlpha2Code as v,getCountryNameByAlpha3Code as y,getCountryNameByCountryCode as b,getCountryNameByCountryName as x,getCountrySubDivisionCodeBySubDivisionName as S,getCountrySubDivisionNameBySubDivisionCode as C,getCountrySubDivisionsByAlpha2Code as w,getDocumentFileFormatFromExtension as T,isMissing as E,isObject as ee,isString as D,notMissing as O,safeParseToBoolean as k,safeParseToDateTimeString as te,safeParseToNumber as A,safeParseToString as j,z as M,zStrictObject as N}from"@stackone/utils";import{evaluate as P,isValidExpression as F,safeEvaluate as I,safeEvaluateRecord as L}from"@stackone/expressions";import{CUSTOM_ERROR_CONFIG_SCHEMA as R,HttpMethods as z,HttpResponseError as B,QueryArrayFormats as V,RequestClientFactory as H,RequestParameterLocations as U,createAuthorizationHeaders as W,isFailedStatusCode as G,parseRequestParameters as K,serializeHttpResponseError as q,translateCustomError as J}from"@stackone/transport";import ne from"mime-types";import re from"form-data";const ie={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`},internal:{title:`Internal`,key:`internal`,description:`Category for internal actions`},action:{title:`Action`,key:`action`,description:`Action`}},getCategoryDetails=e=>ie[e.toLowerCase()]??null,isValidCategory=e=>!!ie[e.toLowerCase()],ae=n(`so1!`),oe=RegExp(`(?<!\\\\):`,`g`),se=RegExp(`(?<!\\\\),`,`g`),ce=1;var le=class CoreError extends Error{constructor({category:e,name:t,type:n,context:r,message:i}){super(i),this.name=t??`CoreError`,this.type=n,this.category=e,this.context=r,Error.captureStackTrace&&Error.captureStackTrace(this,CoreError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},BaseCompositeIdError=class extends le{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},CompositeIdMissingHeaderError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},CompositeIdMissingBodyError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},CompositeIdUnknownIdentifierError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},CompositeIdUnsupportedVersionError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const isSingleIdentifier=e=>!E(e)&&`value`in e&&e.value!==void 0,isMultipleIdentifier=e=>!E(e)&&`identifiers`in e&&e.identifiers!==void 0,encodeCompositeId=(e,t={version:1})=>{if(t.version===1)return encodeIdV1(getComposedIdV1(e,t.aliases));throw new CompositeIdUnsupportedVersionError(`Cannot generate ID, unsupported version number: ${t.version}`)},decodeCompositeId=(e,t={version:1})=>{let n=decodeId(e,t),r={};return n&&n.split(se).forEach(e=>{let[n,i]=e.split(oe),a=getOriginalKey(n,t.aliases??{});r[a]=unescapeValue(i)}),r},getComposedIdV1=(e,t={})=>{if(isSingleIdentifier(e))return getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(isMultipleIdentifier(e))return e.identifiers.map(e=>getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new CompositeIdUnknownIdentifierError},getSingleIdentifierString=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,escapeValue(e.value)].filter(Boolean).join(`:`),getOriginalKey=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,decodeId=(e,t)=>{if(t.version===1)return decodeIdV1(e);throw new CompositeIdUnsupportedVersionError(`Cannot decode ID, unsupported version number: ${t.version}`)},encodeIdV1=e=>`${ae}${n(e)}`,decodeIdV1=e=>{if(!e.startsWith(ae))throw new CompositeIdMissingHeaderError(`Trying to decode an ID without the header: ${e}`);let n=e.split(ae)[1];if(!n)throw new CompositeIdMissingBodyError(`Trying to decode an ID without a body: ${e}`);return t(n)},escapeValue=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),unescapeValue=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),isCompositeId=e=>E(e)?!1:e.startsWith(ae),evaluateEventRouter=(e,t)=>{let n=e.eventRouter;if(!E(n))for(let e of n.rules){let n=I(`{{${e.when.trim()}}}`,t);if(n!==null&&n!==!1&&n!==void 0){let n=e.then.input?Object.fromEntries(Object.entries(e.then.input).map(([e,n])=>[e,I(`{{${String(n).trim()}}}`,t)])):void 0;return{action:e.then.action,input:n}}}},ue={employment_status:[`active`,`inactive`,`terminated`,`pending`,`leave`],employment_type:[`full_time`,`part_time`,`contractor`,`intern`,`temporary`],gender:[`male`,`female`,`non_binary`,`other`,`prefer_not_to_say`],marital_status:[`single`,`married`,`divorced`,`widowed`,`domestic_partnership`]},getInputEnumValues=e=>ue[e],isValidEnumRef=e=>e in ue,de=[`preview`,`beta`,`ga`,`deprecated`],fe=N({r:M.record(M.string(),N({n:M.number().optional().nullable(),c:M.string().optional().nullable(),p:M.number().optional().nullable()})),v:M.number(),t:M.number()}),pe=N({remote:M.record(M.string(),N({pageNumber:M.number().optional(),providerPageCursor:M.string().optional(),position:M.number().optional()})),version:M.number(),timestamp:M.number()}),minifyCursor=e=>n(JSON.stringify(minifyCursorObject(e))),minifyCursorObject=e=>{let{remote:t,version:n,timestamp:r}=e;return{r:Object.fromEntries(Object.entries(t).map(([e,{pageNumber:t,providerPageCursor:n,position:r}])=>[e,{n:t,c:n,p:r}])),v:n,t:r}},expandCursor=e=>{try{if(D(e)){let n=t(e),r=JSON.parse(n);return expandCursorObject(fe.parse(r))}else return pe.parse(e),e}catch{return null}},expandCursorObject=e=>{let{r:t,v:n,t:r}=e;return{remote:Object.fromEntries(Object.entries(t).map(([e,{n:t,c:n,p:r}])=>[e,{pageNumber:t,providerPageCursor:n,position:r}])),version:n,timestamp:r}},areCursorsEqual=(e,t)=>{let n=typeof e==`string`?expandCursor(e):e,r=typeof t==`string`?expandCursor(t):t;if(n===null||r===null)return n===r;let{timestamp:a,...o}=n,{timestamp:s,...c}=r;return i(o)===i(c)},isCursorEmpty=({cursor:e,ignoreStepIndex:t})=>E(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return(E(t)||r!==t.toString())&&(n=n&&E(i.pageNumber)&&E(i.position)&&E(i.providerPageCursor)),n},!0),updateCursor=({cursor:e,stepIndex:t,pageNumber:n,providerPageCursor:r,position:i})=>{let a={pageNumber:n??void 0,providerPageCursor:r??void 0,position:i??void 0},o=E(n)&&E(r)&&E(i);return E(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},isCoreError=e=>e instanceof le,sanitizeRaw=e=>{let t={};return e.status!=null&&(t.status=e.status),e.data!==void 0&&(t.data=e.data),e.headers!=null&&(t.headers=e.headers),e.requestUrl!=null&&(t.requestUrl=e.requestUrl),e.message!=null&&(t.message=e.message),t},isHttpLikeError=e=>typeof e==`object`&&!!e&&`response`in e&&e.response!=null&&typeof e.response==`object`,extractErrorMessage=(e,t)=>{let n=e.data;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(typeof e.message==`string`&&e.message.trim().length>0)return e.message}if(typeof e.message==`string`&&e.message.length>0)return e.message;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(e.error!=null&&typeof e.error==`object`&&!Array.isArray(e.error)&&typeof e.error.message==`string`)return e.error.message;if(typeof e.error==`string`)return e.error;if(typeof e.error_description==`string`)return e.error_description}return typeof n==`string`&&n.length>0?n:t},buildStepErrorOutput=(e,t)=>{if(e instanceof B){let n=e.message;return{block:t,successful:!1,errors:[q(e)],output:{statusCode:e.response?.status??500,message:extractErrorMessage(e.response,n),data:e.response?.data,raw:sanitizeRaw(e.response)}}}if(isHttpLikeError(e)){let n=e.response,r=e instanceof Error?e.message:`HTTP error: ${n.status??500}`;return{block:t,successful:!1,errors:[q(e)],output:{statusCode:n.status??500,message:extractErrorMessage(n,r),data:n.data,raw:sanitizeRaw(n)}}}return e instanceof Error?{block:t,successful:!1,errors:[q(e)],output:{statusCode:500,message:e.message}}:{block:t,successful:!1,errors:[q(e)],output:{statusCode:500,message:String(e)}}},me=N({type:M.literal(`none`)}),he=N({type:M.literal(`basic`),username:M.string().optional(),password:M.string().optional(),encoding:M.string().optional()}),ge=N({type:M.literal(`bearer`),token:M.string(),includeBearer:M.boolean().optional().default(!0)}),_e=N({type:M.literal(`oauth2`),authorizationUrl:M.string().optional(),authorizationParams:M.record(M.string(),M.string()).optional(),tokenUrl:M.string().optional(),tokenParams:M.record(M.string(),M.string()).optional(),tokenExpiresIn:M.number().optional(),tokenRefreshExpiresIn:M.number().optional(),token:M.string(),includeBearer:M.boolean().optional().default(!0),scopes:M.string().optional(),scopeDelimiter:M.string().optional(),customHeaders:M.record(M.string(),M.string()).optional(),pkce:M.boolean().optional(),additionalTokenFields:M.record(M.string(),M.string().optional()).optional()}),Y=M.discriminatedUnion(`type`,[me,he,ge,_e]),ve=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).optional().default(`get`),authorization:Y.optional(),responseMode:M.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:M.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:M.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:N({dataKey:M.string().optional(),fileNameKey:M.string().optional(),contentTypeKey:M.string().optional(),contentIsBase64:M.boolean().optional().default(!1),urlKey:M.string().optional(),forwardAuth:M.boolean().optional().default(!1)}).optional(),maxRedirects:M.number().optional().default(5),followRedirects:M.boolean().optional().default(!0),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),ye=N({data:M.union([M.string(),M.instanceof(Buffer)]).optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),headers:M.record(M.string(),M.string()).optional(),contentDisposition:M.string().optional(),fileMetadata:N({contentType:M.string().optional(),contentLength:M.number().optional(),fileName:M.string().optional(),lastModified:M.string().optional(),etag:M.string().optional()}).optional(),finalUrl:M.string().optional()}).optional(),downloadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,authorization:l,args:u,responseMode:d,responseType:f,encoding:p,response:m,maxRedirects:h,followRedirects:g}=ve.parse(a),_=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,v=u?K(u):{query:{},body:{},headers:{}},y=W(O(l)?l:Y.parse(_)),b={...v?.headers??{},...y},x=e.connector?.rateLimit,S=e.connector?.concurrency,C=x!==void 0||S!==void 0?{rateLimit:x,concurrency:S}:void 0;if(d===`stream`)return performStreamDownload({block:e,httpClient:e.httpClient,baseUrl:o??``,url:s,method:c,headers:b,queryParams:v?.query,body:v?.body,maxRedirects:g?h:0,requestConfig:C});try{return{block:e,successful:!0,output:await performDownload({httpClient:e.httpClient,baseUrl:o??``,url:s,method:c,headers:b,queryParams:v?.query,body:v?.body,responseType:f,encoding:p,response:m,maxRedirects:g?h:0,requestConfig:C,authHeaders:y})}}catch(t){return buildStepErrorOutput(t,e)}},performStreamDownload=async e=>{let{block:t,httpClient:n,baseUrl:r,url:i,method:a,headers:o,queryParams:s,body:c,maxRedirects:l,requestConfig:u}=e,d=`${r}${i}`;if(!d.startsWith(`http://`)&&!d.startsWith(`https://`))throw Error(`Invalid URL: "${d}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);if(!n.requestStream)throw Error(`HTTP client does not support streaming. Either implement requestStream method or use responseMode: "buffer".`);try{let e=await n.requestStream({url:d,method:a,headers:o,queryParams:s,payload:c,maxRedirects:l,requestConfig:u}),r=extractFileMetadata(e.headers),i=buildContentDisposition(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){return buildStepErrorOutput(e,t)}},performDownload=async e=>{let{httpClient:t,baseUrl:n,url:r,method:i,headers:a,queryParams:o,body:s,responseType:c,encoding:l,response:u,maxRedirects:d,requestConfig:f,authHeaders:p}=e,m=`${n}${r}`;if(!m.startsWith(`http://`)&&!m.startsWith(`https://`))throw Error(`Invalid URL: "${m}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);let h=u?.urlKey||u?.dataKey?`json`:c,g=await t.request({url:m,method:i,headers:a,queryParams:o,payload:s,responseType:h===`json`?void 0:h,maxRedirects:d,requestConfig:f});if(u?.urlKey||u?.dataKey)return handleJsonResponse({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=encodeFileData(g.data,l),v=extractFileMetadata(g.headers),y=buildContentDisposition(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},handleJsonResponse=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:o,authHeaders:s}=e,c=n.data;if(r.urlKey){let e=extractValueByPath(c,r.urlKey);if(typeof e==`string`){let n=await t.request({url:e,method:`get`,headers:r.forwardAuth?s:{},responseType:`arraybuffer`,maxRedirects:a,requestConfig:o}),l=encodeFileData(n.data,i),u=extractFileMetadata(n.headers);if(r.fileNameKey){let e=extractValueByPath(c,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(c,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=buildContentDisposition(u);return{data:l,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:d,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=extractValueByPath(c,r.dataKey);if(E(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:i===`none`?Buffer.from(e,`base64`):Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):encodeFileData(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=encodeFileData(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=extractValueByPath(c,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(c,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let o=buildContentDisposition(a);return{data:t,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:o,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},extractValueByPath=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if(E(r)||typeof r!=`object`)return;r=r[e]}return r},encodeFileData=(e,t)=>{if(t===`none`)return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof e==`string`?Buffer.from(e):Buffer.from(JSON.stringify(e));if(t===`raw`)return typeof e==`string`?e:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e).toString(`binary`):JSON.stringify(e);if(typeof e==`string`)return t===`base64`?Buffer.from(e).toString(`base64`):e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let n=Buffer.from(e);switch(t){case`base64`:return n.toString(`base64`);case`utf8`:return n.toString(`utf8`);case`binary`:default:return n.toString(`binary`)}}return JSON.stringify(e)},extractFileMetadata=e=>{let t=D(e[`content-type`])?e[`content-type`]:void 0,n=D(e[`content-length`])?e[`content-length`]:void 0,r=D(e[`content-disposition`])?e[`content-disposition`]:void 0,i=D(e[`last-modified`])?e[`last-modified`]:void 0,a=D(e.etag)?e.etag:void 0,o=n?parseInt(n,10):void 0,s=extractFileName(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},extractFileName=e=>{if(!e)return;let t=e.match(/filename\*=(?:UTF-8''|utf-8'')([^;\s]+)/i);if(t&&t[1])try{return decodeURIComponent(t[1])}catch{}let n=e.match(/filename=["']([^"']+)["']/);if(n&&n[1])return n[1];let r=e.match(/filename=([^;\s]+)/);if(r&&r[1])return r[1]},buildContentDisposition=e=>{let{fileName:t,contentType:n}=e,r=`attachment`;if(t)r=`attachment; filename="${t}"; filename*=UTF-8''${encodeURIComponent(t).replace(/['()]/g,escape)}`;else if(n){let e=getExtensionFromContentType(n);e&&(r=`attachment; filename="download.${e}"`)}return r},getExtensionFromContentType=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return ne.extension(t)||void 0},be=M.object({event:M.object({eventType:M.string(),eventDate:M.string().optional(),data:M.unknown().optional()}).optional()}),xe=M.record(M.string(),M.unknown()),emitEventStepFunction=async({block:e,params:t})=>{let n=t?L(t,e):{},{event:r}=be.parse(n);if(r&&e.emitEvent)try{await e.emitEvent({eventType:r.eventType,eventDate:r.eventDate,data:r.data})}catch(t){throw e.logger?.error({code:`EmitEventError`,message:`emitEvent callback failed: ${t.message}`}),t}else r&&!e.emitEvent&&e.logger?.warning({message:`emit_event step executed but no emitEvent callback provided on the block`});let{event:i,...a}=n;return{block:{...e},successful:!0,output:a}},Se=M.object({stepsDataToGroup:M.array(M.string()),isSingleRecord:M.boolean().optional()}),Ce=M.object({data:M.unknown()}),groupDataStepFunction=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=Se.parse(t),i=n.reduce((t,n)=>{let i=e.steps?.[n]?.output?.data;return i?r?{...t,[n]:{...i}}:(Object.keys(i).forEach(e=>{t[e]={...O(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},we=e(async({block:e})=>{let t=e?.fieldConfigs,n=[],r=e.steps;if(!t||e?.debug?.custom_mappings===`disabled`||!r)return{block:e,successful:!0};let i;if(Array.isArray(e.result)){let a=e.result.length;i=e.result.map((e,i)=>{let o=Te(e,t,extractSingleRecordBlockStepData(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=Te(e.result,t,r);i=a.record,n.push(...a.errors||[])}return{block:{...e,result:i},successful:!0,errors:Object.keys(n).length>0?n:void 0}},`mapFieldsStepFunction`),extractSingleRecordBlockStepData=(e,t,n)=>Object.entries(e).reduce((e,[r,i])=>{let a=i?.output?.data;return Array.isArray(a)&&a.length===t?e[r]={output:{data:a[n]}}:e[r]=i,e},{}),Te=e((e,t,n)=>{if(!e||!n)return{record:e};let r={unified:{...e},...typeof n==`object`?n:{}},i={},a=[],o={...e};for(let n of t){let{error:t,value:s}=Ee(r,e.id,n);if(t){a.push(t);continue}n.custom?i[n.targetFieldKey]=s:o[n.targetFieldKey]=s}return{record:{...o,unified_custom_fields:Object.keys(i).length>0?i:void 0},errors:a.length>0?a:void 0}},`mapSingleRecord`),Ee=e((e,t,n)=>{let{expression:r,targetFieldKey:i}=n;if(!r)return{error:{message:`Expression is empty`,id:t,targetField:i}};let a;try{a=P(r,e)}catch{return{error:{message:`Invalid expression`,id:t,targetField:i}}}return a===void 0?{error:{message:`Expression returned no value`,id:t,targetField:i}}:{value:a}},`extractFieldValue`),getEnumMatcher=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return a;case`country_alpha3code_by_alpha3code`:return d;case`country_code_by_country_code`:return g;case`country_name_by_country_name`:return x;case`country_name_by_alpha3code`:return y;case`country_name_by_alpha2code`:return v;case`country_name_by_country_code`:return b;case`country_alpha3code_by_alpha2code`:return u;case`country_alpha3code_by_country_name`:return p;case`country_alpha3code_by_country_code`:return f;case`country_alpha2code_by_alpha3code`:return o;case`country_alpha2code_by_country_name`:return l;case`country_alpha2code_by_country_code`:return c;case`country_code_by_alpha2code`:return m;case`country_code_by_alpha3code`:return h;case`country_code_by_country_name`:return _;case`country_subdivisions_by_alpha2code`:return w;case`country_subdivision_code_by_subdivision_name`:return S;case`country_alpha2code_by_citizenship`:return s;case`country_subdivision_name_by_subdivision_code`:return C;case`document_file_format_from_extension`:return T;default:return}},De=N({targetFieldKey:M.string(),alias:M.string().optional(),expression:M.string().optional(),values:M.unknown().optional(),type:M.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:M.boolean().default(!1),custom:M.boolean().default(!1),hidden:M.boolean().default(!1),enumMapper:N({matcher:M.string().or(N({matchExpression:M.string(),value:M.string()}).array())}).optional(),properties:M.lazy(()=>De).array().optional(),requiredScopes:M.string().array().optional()}),Oe=M.object({fields:De.array(),dataSource:M.string(),externalSources:M.record(M.string(),M.string()).optional()}),ke=M.object({data:M.unknown()}),mapFieldsStepFunction=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=Oe.parse(t),o=P(i,e);if(!r||!i||e?.debug?.custom_mappings===`disabled`||!o)return{block:e,successful:!0};let s=Object.keys(a??{})?.reduce((t,n)=>(t[n]=P(a?.[n],e),t),{}),c;if(Array.isArray(o))c=o.map(e=>{let t=X(r,{...e,external:s});return n.push(...t?.errors||[]),t?.record});else{let e=X(r,{...o,external:s});c=e?.record,n.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:c},errors:Object.keys(n).length>0?n:void 0}},handleObjectArrayFromValues=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=evaluateExpressionsInObject(r,t),a=X(e.properties,i);return O(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},handleObjectArrayFromExpression=(e,t,n)=>{if(e.expression)try{let r=P(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=X(e.properties,t);return O(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=X(e.properties,r);return O(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},handleSingleObject=(e,t,n)=>{let r=O(e.values)?e.values:t,i=X(e.properties,r);return O(i?.errors)&&n.push(...i.errors),i?.record},Ae=e((e,t,n)=>{if(!E(e.properties))return e.array&&Array.isArray(e.values)?handleObjectArrayFromValues(e,t,n):e.array&&e.expression?handleObjectArrayFromExpression(e,t,n):handleSingleObject(e,t,n)},`handleObjectField`),X=e((e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=Ae(a,t,r),e===void 0)continue}else{let{error:n,value:i}=extractFieldValue(t,t?.id,a);if(e=i,n){r.push(n);continue}}a.custom?n[a.targetFieldKey]=e:i[a.targetFieldKey]=e}let a=Object.keys(n).length>0?{unified_custom_fields:n}:{};return{record:{...i,...a},errors:r.length>0?r:void 0}},`mapSingleRecord`),evaluateExpressionsInObject=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if(F(e))try{return P(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>evaluateExpressionsInObject(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=evaluateExpressionsInObject(r,t);return n}return e},extractFieldValue=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return je(n,t,e);case`enum`:return evaluateEnumValue(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},je=e((e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=P(e.expression,n)}catch{return{error:{message:`Invalid expression`,id:t,targetField:e.targetFieldKey}}}return r===void 0?{error:{message:`Expression returned no value`,id:t,targetField:e.targetFieldKey}}:{value:r}},`evaluateValue`),evaluateEnumValue=(e,t,n)=>{let r=je(e,t,n),i=O(r.value)?r.value:null;if(e.enumMapper===void 0)return{error:{message:`Enum mapper was not defined`,id:t,targetField:e.targetFieldKey}};let a=e.enumMapper.matcher;if(D(a)){let n=getEnumMatcher(a);return O(n)?{value:{value:(O(i)?n(i):null)??`unmapped_value`,source_value:i}}:{error:{message:`The built-in matcher "${a}" is not supported`,id:t,targetField:e.targetFieldKey}}}for(let e of a){let{matchExpression:t,value:r}=e;if(P(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},Me=M.object({baseUrl:M.string(),url:M.string(),method:M.enum(z),saml:N({objectKey:M.string(),key:M.string(),clientId:M.string(),cert:M.unknown().optional(),issuer:M.string().optional(),lifetime:M.number().optional(),nameId:M.string().optional(),audience:M.string().optional(),nameIdentifierFormat:M.string().optional(),tokenEndpoint:M.string().optional()}).optional(),response:N({indexField:M.string().optional(),dataKey:M.string().optional(),nextKey:M.string().optional(),nextKeyIn:M.enum([`data`,`headers`]).optional()}).optional(),iterator:N({key:M.string(),in:M.enum(U),condition:M.string().optional(),mode:M.enum([`cursor`,`offset`]).optional()}),cursor:N({token:M.string().optional().nullable(),position:M.number().optional().nullable()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ne=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),next:M.string().optional().nullable(),position:M.number().optional()}).optional(),Z=e(e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},`isJexlExpression`),paginatedRequestStepFunction=async({block:e,params:t})=>{let n=H.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=Number(e.inputs?.page_size),o=Number.isNaN(a)?25:a,s=i?i.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,c=t?L({...t,args:s},e):{},l=t?.response?.nextKey,u=l&&Z(l),d=t?.response?.dataKey,f=d&&Z(d),p={...c?.response??{},...u?{nextKey:l}:{},...f?{dataKey:d}:{}},m={...c,customErrors:t?.customErrors,iterator:{...c?.iterator??{},condition:t?.iterator?.condition},response:u||f?p:c?.response},{baseUrl:h,url:g,method:_,response:v,iterator:y,cursor:b,customErrors:x,args:S,saml:C}=Me.parse(m),w=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,T=Y.parse(w),D=S?K(S):{query:{},body:{},headers:{}},k=W(T),te={...D?.headers??{},...k},A=e.connector?.rateLimit,j=e.connector?.concurrency,M=A!==void 0||j!==void 0?{rateLimit:A,concurrency:j}:void 0,N=O(C)?{[C.objectKey]:await r({key:C.key,clientId:C.clientId,cert:C.cert,issuer:C.issuer,lifetime:C.lifetime,audience:C.audience,nameId:C.nameId,nameIdentifierFormat:C.nameIdentifierFormat,tokenEndpoint:C.tokenEndpoint})}:{},F=y.mode===`offset`,R=b?.token??null,z=null,B=null,V=[],U=[],G=[],q=o,J=b?.position??0,ne=!0,re=!0,ie=!0;do{ne?ne=!1:F||(J=0),R===null?F&&(y.in===`query`?D.query[y.key]=J.toString():y.in===`body`&&(Array.isArray(D.body)||(D.body[y.key]=J))):y.in===`query`?ee(R)?Object.entries(R).forEach(([e,t])=>{D.query[`${y.key}[${e}]`]=t?.toString()??``}):D.query[y.key]=R.toString():y.in===`body`&&(Array.isArray(D.body)||(D.body[y.key]=R));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${h}${g}`,queryParams:{...D?.query},method:_,headers:{...te},body:Array.isArray(D?.body)?D.body:{...D?.body,...N},customErrorConfigs:x,requestConfig:M})}catch(t){return buildStepErrorOutput(t,e)}z=R,U=v?.dataKey?Pe(t.data,v.dataKey):t.data;let r=F?U?.slice(0,q):U?.slice(J,J+q);q-=r.length,J+=r.length,G.push(t),V=V.concat(r),B=t?.status,R=Fe({result:t,response:v}),ie=O(y.condition)?I(y.condition,t.data)===!0:!0,!F&&r.length===U.length&&q===0&&(J=0,z=R),re=E(R)&&V.length<o}while((F||O(R))&&ie&&V.length<o&&U?.length>0);return{block:e,successful:!0,output:{data:Re(V,v),raw:G,statusCode:B,next:re?void 0:z,position:re?void 0:J}}},Pe=e((e,t)=>{if(E(e)||typeof e!=`object`||!e)return e;let n=I(Z(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},`resolveDataKey`),Fe=e(({result:e,response:t})=>{if(E(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Ie(e.headers,r):Le(e.data,r)},`resolveNextIterator`),Ie=e((e,t)=>{if(E(e)||typeof e!=`object`)return null;if(Z(t)){let n=I(t,e);return typeof n==`string`&&n!==``||typeof n==`number`?n:null}let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},`resolveFromHeaders`),Le=e((e,t)=>{if(E(e)||typeof e!=`object`||!e)return null;let n=I(Z(t)?t:`$.${t}`,e);return E(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},`resolveFromData`),Re=e((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),ze=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:Y.optional(),saml:N({objectKey:M.string(),key:M.string(),clientId:M.string(),cert:M.unknown().optional(),issuer:M.string().optional(),lifetime:M.number().optional(),nameId:M.string().optional(),audience:M.string().optional(),nameIdentifierFormat:M.string().optional(),tokenEndpoint:M.string().optional()}).optional(),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Be=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),isJexlExpression=e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},requestStepFunction=async({block:e,params:t})=>{let n=H.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=i?i.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,o=t?.response?.dataKey,s=o&&isJexlExpression(o),c=t?L({...t,args:a},e):{},l={...c,customErrors:t?.customErrors,response:s?{...c?.response??{},dataKey:o}:c?.response},{baseUrl:u,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,saml:_}=ze.parse(l),v=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,y=g?K(g):{query:{},body:{},headers:{}},b=W(O(m)?m:Y.parse(v)),x={...y?.headers??{},...b},S=e.connector?.rateLimit,C=e.connector?.concurrency,w=S!==void 0||C!==void 0?{rateLimit:S,concurrency:C}:void 0,T=O(_)?{[_.objectKey]:await r({key:_.key,clientId:_.clientId,cert:_.cert,issuer:_.issuer,lifetime:_.lifetime,audience:_.audience,nameId:_.nameId,nameIdentifierFormat:_.nameIdentifierFormat,tokenEndpoint:_.tokenEndpoint})}:{},E;try{E=await n.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:y?.query,method:f,headers:x,body:Array.isArray(y?.body)?y?.body:{...y?.body,...T},customErrorConfigs:h,requestConfig:w})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:Ve(p?.dataKey?resolveDataKey(E.data,p.dataKey):E.data,p),raw:E,statusCode:E?.status,message:E?.message}}},resolveDataKey=(e,t)=>{if(E(e)||typeof e!=`object`||!e)return e;let n=I(isJexlExpression(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},Ve=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),He=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:M.discriminatedUnion(`type`,[N({type:M.literal(`none`)}),N({type:M.literal(`basic`),username:M.string().optional(),password:M.string().optional(),encoding:M.string().optional()}),N({type:M.literal(`bearer`),token:M.string(),includeBearer:M.boolean().optional().default(!0)}),N({type:M.literal(`oauth2`),token:M.string(),includeBearer:M.boolean().optional().default(!0)})]).optional(),envelope:M.union([M.string(),M.record(M.string(),M.unknown())]).optional(),namespaces:M.strictObject({namespaceIdentifier:M.string(),namespace:M.string()}).array().optional(),soapOperation:M.string().optional(),soapAction:M.string().optional(),useSoapContext:M.boolean().optional().default(!0),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional(),nextKey:M.string().optional(),nextKeyIn:M.enum([`data`,`headers`]).optional()}).optional(),iterator:N({key:M.string(),in:M.enum(U)}),cursor:N({token:M.string().optional().nullable(),position:M.number().optional().nullable()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ue=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),next:M.string().optional().nullable(),position:M.number().optional()}).optional(),soapPaginatedRequestStepFunction=async({block:e,params:t})=>{let n=H.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,o=r?r.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?L({...t,args:o},e):{},c={...s,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,response:f,iterator:p,cursor:m,authorization:h,customErrors:g,args:_,soapOperation:v,namespaces:y,envelope:b,soapAction:x,useSoapContext:S}=He.parse(c),C=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,w=_?K(_):{query:{},body:{},headers:{}},T=W(O(h)?h:Y.parse(C)),ee={...w?.headers??{},...T},D=e.connector?.rateLimit,k=e.connector?.concurrency,te={...(D!==void 0||k!==void 0)&&{rateLimit:D,concurrency:k},soapOperation:v,namespaces:y,envelope:b,soapAction:x,soapContext:S?{username:e.credentials?.username,password:e.credentials?.password}:void 0},A=m?.token??null,j=null,M=null,N=[],F=[],I=[],R=a,z=m?.position??0,B=!0,V;do{B?B=!1:z=0,A!==null&&(p.in===`query`?w.query[p.key]=A.toString():p.in===`body`&&(w.body[p.key]=A));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${l}${u}`,queryParams:w?.query,method:d,headers:ee,body:w?.body,customErrorConfigs:g,requestConfig:te})}catch(t){return buildStepErrorOutput(t,e)}j=A,F=f?.dataKey?t.data[f?.dataKey]:t.data,Array.isArray(F)||(F=F?[F]:[]);let r=F?.slice(z,z+R);R-=r.length,z+=r.length,I.push(t),N=N.concat(r),M=t?.status,A=resolveNextIterator({result:t,response:f}),r.length===F.length&&R===0&&(z=0,j=A),V=E(A)&&N.length<a}while(O(A)&&N.length<a&&F?.length>0);return{block:e,successful:!0,output:{data:We(N,f),raw:I,statusCode:M,next:V?void 0:j,position:V?void 0:z}}},resolveNextIterator=({result:e,response:t})=>{if(E(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?resolveFromHeaders(e.headers,r):resolveFromData(e.data,r)},resolveFromHeaders=(e,t)=>{if(E(e)||typeof e!=`object`)return null;let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},resolveFromData=(e,t)=>{if(E(e)||typeof e!=`object`||!e)return null;let n=e[t];return E(n)?null:typeof n==`string`||typeof n==`number`?n:null},We=e((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Ge=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:Y.optional(),envelope:M.union([M.string(),M.record(M.string(),M.unknown())]).optional(),namespaces:M.strictObject({namespaceIdentifier:M.string(),namespace:M.string()}).array().optional(),soapOperation:M.string().optional(),soapAction:M.string().optional(),useSoapContext:M.boolean().optional().default(!0),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ke=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),soapRequestStepFunction=async({block:e,params:t})=>{let n=H.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?L({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:c,method:l,response:u,authorization:d,customErrors:f,args:p,soapOperation:m,namespaces:h,envelope:g,soapAction:_,useSoapContext:v}=Ge.parse(o),y=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=p?K(p):{query:{},body:{},headers:{}},x=W(O(d)?d:Y.parse(y)),S={...b?.headers??{},...x},C=e.connector?.rateLimit,w=e.connector?.concurrency,T={...(C!==void 0||w!==void 0)&&{rateLimit:C,concurrency:w},soapOperation:m,namespaces:h,envelope:g,soapAction:_,soapContext:v?{username:e.credentials?.username,password:e.credentials?.password}:void 0},E;try{E=await n.performRequest({httpClient:e.httpClient,url:`${s}${c}`,queryParams:b?.query,method:l,headers:S,body:b?.body,customErrorConfigs:f,requestConfig:T})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:qe(u?.dataKey?E.data[u?.dataKey]:E.data,u),raw:E,statusCode:E?.status,message:E?.message}}},qe=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Je=M.object({values:M.string().or(M.record(M.string(),M.unknown())).or(M.array(M.unknown()))}),Ye=M.object({data:M.unknown()}),staticValuesStepFunction=async({block:e,params:t})=>{let{values:n}=Je.parse(t),r=Array.isArray(n)?n.map(t=>evaluateValue(t,e)):evaluateValue(n,e);return{block:{...e},successful:!0,output:{data:r}}},evaluateValue=(e,t)=>D(e)?I(e,t):ee(e)?L(e,t):e,Xe=M.object({targetFieldKey:M.string(),type:M.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:M.boolean().default(!1),custom:M.boolean().default(!1),hidden:M.boolean().default(!1),properties:M.lazy(()=>Xe).array().optional(),requiredScopes:M.string().array().optional()}),Ze=M.object({fields:Xe.array().optional(),dataSource:M.string()}),Qe=M.object({data:M.unknown()});let Q=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const typecast=({value:e,type:t,format:n})=>{if(E(e))return null;switch(t){case Q.String:return j({value:e});case Q.Number:return A({value:e});case Q.Boolean:return k({value:e});case Q.DateTimeString:return te({value:e,format:n});default:return e}},isFieldSupportedType=e=>Object.values(Q).includes(e),$e=e(async({block:e})=>{let t=e?.fieldConfigs;if(!t||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let n;return n=Array.isArray(e.result)?e.result.map(e=>et(e,t)):et(e.result,t),{block:{...e,result:n},successful:!0}},`typecastStepFunction`),et=e((e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;isFieldSupportedType(i)&&(!t.custom&&O(n[r])?n[r]=typecast({value:e[r],type:i}):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},`mapSingleRecord`),typecastStepFunction=async({block:e,params:t})=>{let{fields:n,dataSource:r}=Ze.parse(t),i=P(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>mapSingleRecord(e,n)):mapSingleRecord(i,n),{block:{...e},successful:!0,output:{data:a}}},handleObjectField=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?mapSingleRecord(t,e.properties):t):typeof t==`object`&&t?mapSingleRecord(t,e.properties):t,mapSingleRecord=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&O(n[r])?n[r]=handleObjectField(t,e[r]):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=handleObjectField(t,e.unified_custom_fields?.[r])):isFieldSupportedType(i)&&(!t.custom&&O(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=typecast({value:e[r],type:i})):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},tt=N({content:M.string().describe(`The file content as base64 encoded string`),contentType:M.string().optional().describe(`The MIME type for the binary content (defaults to application/octet-stream)`)}),nt=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).default(`post`),authorization:Y.optional(),binaryContent:tt.describe(`Raw binary content for octet-stream uploads`),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),rt=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),uploadBinaryStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,response:l,authorization:u,binaryContent:d,args:f,customErrors:p}=nt.parse(a),m=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,h=f?K(f):{query:{},body:{},headers:{}},g=W(O(u)?u:Y.parse(m)),_=Buffer.from(d.content,`base64`),v={"content-type":d.contentType??`application/octet-stream`,...h?.headers??{},...g},y=e.connector?.rateLimit,b=e.connector?.concurrency,x=y!==void 0||b!==void 0?{rateLimit:y,concurrency:b}:void 0,S;try{S=await e.httpClient.request({url:`${o??``}${s}`,method:c,headers:v,queryParams:h?.query,payload:_,requestConfig:x})}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let C=J(S,p);return G(C?.status)?{block:e,successful:!1,errors:[q(new B(C,C.message))],output:{statusCode:C.status,message:C.message}}:{block:e,successful:!0,output:{data:it(l?.dataKey?C.data[l?.dataKey]:C.data,l),raw:C,statusCode:C?.status,message:C?.message}}},it=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),at=N({fieldName:M.string().describe(`The form field name for the file`),content:M.string().describe(`The file content as base64 encoded string`),filename:M.string().describe(`The filename to use in the upload`),contentType:M.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),ot=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).default(`post`),authorization:Y.optional(),file:at.describe(`The file to upload`),additionalFields:N({name:M.string(),value:M.unknown(),contentType:M.string().optional().describe(`The MIME type for this form field (e.g., "application/json")`)}).array().optional().describe(`Additional form fields to include in the multipart request`),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),st=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),uploadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,response:l,authorization:u,file:d,additionalFields:f,args:p,customErrors:m}=ot.parse(a),h=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,g=p?K(p):{query:{},body:{},headers:{}},_=W(O(u)?u:Y.parse(h)),v=new re;if(f)for(let e of f){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);v.append(e.name,t,e.contentType?{contentType:e.contentType}:void 0)}let y=Buffer.from(d.content,`base64`);v.append(d.fieldName,y,{filename:d.filename,contentType:d.contentType});let b={...v.getHeaders(),...g?.headers??{},..._},x=e.connector?.rateLimit,S=e.connector?.concurrency,C=x!==void 0||S!==void 0?{rateLimit:x,concurrency:S}:void 0,w;try{w=await e.httpClient.request({url:`${o??``}${s}`,method:c,headers:b,queryParams:g?.query,payload:v,requestConfig:C})}catch(t){return buildStepErrorOutput(t,e)}let T=J(w,m);return G(T?.status)?buildStepErrorOutput(new B(T,T.message),e):{block:e,successful:!0,output:{data:indexResponseData(l?.dataKey?T.data[l?.dataKey]:T.data,l),raw:T,statusCode:T?.status,message:T?.message}}},indexResponseData=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e};let $=function(e){return e.TYPECAST=`typecast`,e.MAP_FIELDS=`map_fields`,e.GROUP_DATA=`group_data`,e.REQUEST=`request`,e.PAGINATED_REQUEST=`paginated_request`,e.SOAP_REQUEST=`soap_request`,e.SOAP_PAGINATED_REQUEST=`soap_paginated_request`,e.STATIC_VALUES=`static_values`,e.UPLOAD_FILE=`upload_file`,e.UPLOAD_BINARY=`upload_binary`,e.DOWNLOAD_FILE=`download_file`,e.EMIT_EVENT=`emit_event`,e}({});const ct={[$.TYPECAST]:{v1:{fn:$e},v2:{fn:typecastStepFunction,inputSchema:Ze,outputSchema:Qe}},[$.MAP_FIELDS]:{v1:{fn:we},v2:{fn:mapFieldsStepFunction,inputSchema:Oe,outputSchema:ke}},[$.REQUEST]:{v1:{fn:requestStepFunction,inputSchema:ze,outputSchema:Be}},[$.GROUP_DATA]:{v1:{fn:groupDataStepFunction,inputSchema:Se,outputSchema:Ce}},[$.PAGINATED_REQUEST]:{v1:{fn:paginatedRequestStepFunction,inputSchema:Me,outputSchema:Ne}},[$.SOAP_REQUEST]:{v1:{fn:soapRequestStepFunction,inputSchema:Ge,outputSchema:Ke}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:soapPaginatedRequestStepFunction,inputSchema:He,outputSchema:Ue}},[$.STATIC_VALUES]:{v1:{fn:staticValuesStepFunction,inputSchema:Je,outputSchema:Ye}},[$.UPLOAD_FILE]:{v1:{fn:uploadFileStepFunction,inputSchema:ot,outputSchema:st}},[$.UPLOAD_BINARY]:{v1:{fn:uploadBinaryStepFunction,inputSchema:nt,outputSchema:rt}},[$.DOWNLOAD_FILE]:{v1:{fn:downloadFileStepFunction,inputSchema:ve,outputSchema:ye}},[$.EMIT_EVENT]:{v1:{fn:emitEventStepFunction,inputSchema:be,outputSchema:xe}}},stepFunctionEnhancedWithSchemasValidation=(e,t)=>async({block:n,params:r})=>{try{e.inputSchema&&e.inputSchema.parse(r)}catch(e){return{block:n,successful:!1,errors:[{message:`Input parameters for ${t} are invalid: ${e?.message}`}]}}let i=await e.fn({block:n,params:r});try{e.outputSchema&&e.outputSchema.parse(i.output)}catch{return{block:n,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return i},lt={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=ct}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:stepFunctionEnhancedWithSchemasValidation(i,e)}:i}},isForeachStep=e=>`iterator`in e&&typeof e.iterator==`string`;export{Y as AUTHORIZATION_SCHEMA,ce as COMPOSITE_ID_LATEST_VERSION,le as CoreError,ue as INPUT_ENUM_REGISTRY,de as ReleaseStages,$ as StepFunctionName,lt as StepFunctionsFactory,ct as StepFunctionsRegistry,areCursorsEqual,decodeCompositeId,encodeCompositeId,evaluateEventRouter,expandCursor,getCategoryDetails,getInputEnumValues,isCompositeId,isCoreError,isCursorEmpty,isForeachStep,isValidCategory,isValidEnumRef,minifyCursor,updateCursor};
|
|
1
|
+
import{t as e}from"./chunk-Cfxk5zVN.mjs";import{decodeFromBase64 as t,encodeToBase64 as n,generateSamlAssertion as r,getContentHash as i,getCountryAlpha2CodeByAlpha2Code as a,getCountryAlpha2CodeByAlpha3Code as o,getCountryAlpha2CodeByCitizenship as s,getCountryAlpha2CodeByCountryCode as c,getCountryAlpha2CodeByCountryName as l,getCountryAlpha3CodeByAlpha2Code as u,getCountryAlpha3CodeByAlpha3Code as d,getCountryAlpha3CodeByCountryCode as f,getCountryAlpha3CodeByCountryName as p,getCountryCodeByAlpha2Code as m,getCountryCodeByAlpha3Code as h,getCountryCodeByCountryCode as g,getCountryCodeByCountryName as _,getCountryNameByAlpha2Code as v,getCountryNameByAlpha3Code as y,getCountryNameByCountryCode as b,getCountryNameByCountryName as x,getCountrySubDivisionCodeBySubDivisionName as S,getCountrySubDivisionNameBySubDivisionCode as C,getCountrySubDivisionsByAlpha2Code as w,getDocumentFileFormatFromExtension as T,isMissing as E,isObject as ee,isString as D,notMissing as O,safeParseToBoolean as k,safeParseToDateTimeString as te,safeParseToNumber as A,safeParseToString as j,z as M,zStrictObject as N}from"@stackone/utils";import{evaluate as P,isValidExpression as F,safeEvaluate as I,safeEvaluateRecord as L}from"@stackone/expressions";import{CUSTOM_ERROR_CONFIG_SCHEMA as R,HttpMethods as z,HttpResponseError as B,QueryArrayFormats as V,RequestClientFactory as H,RequestParameterLocations as U,createAuthorizationHeaders as W,isFailedStatusCode as G,parseRequestParameters as K,serializeHttpResponseError as q,translateCustomError as J}from"@stackone/transport";import ne from"mime-types";import re from"form-data";const ie={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`},internal:{title:`Internal`,key:`internal`,description:`Category for internal actions`},action:{title:`Action`,key:`action`,description:`Action`}},getCategoryDetails=e=>ie[e.toLowerCase()]??null,isValidCategory=e=>!!ie[e.toLowerCase()],ae=n(`so1!`),oe=RegExp(`(?<!\\\\):`,`g`),se=RegExp(`(?<!\\\\),`,`g`),ce=1;var le=class CoreError extends Error{constructor({category:e,name:t,type:n,context:r,message:i}){super(i),this.name=t??`CoreError`,this.type=n,this.category=e,this.context=r,Error.captureStackTrace&&Error.captureStackTrace(this,CoreError)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},BaseCompositeIdError=class extends le{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},CompositeIdMissingHeaderError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},CompositeIdMissingBodyError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},CompositeIdUnknownIdentifierError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},CompositeIdUnsupportedVersionError=class extends BaseCompositeIdError{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const isSingleIdentifier=e=>!E(e)&&`value`in e&&e.value!==void 0,isMultipleIdentifier=e=>!E(e)&&`identifiers`in e&&e.identifiers!==void 0,encodeCompositeId=(e,t={version:1})=>{if(t.version===1)return encodeIdV1(getComposedIdV1(e,t.aliases));throw new CompositeIdUnsupportedVersionError(`Cannot generate ID, unsupported version number: ${t.version}`)},decodeCompositeId=(e,t={version:1})=>{let n=decodeId(e,t),r={};return n&&n.split(se).forEach(e=>{let[n,i]=e.split(oe),a=getOriginalKey(n,t.aliases??{});r[a]=unescapeValue(i)}),r},getComposedIdV1=(e,t={})=>{if(isSingleIdentifier(e))return getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(isMultipleIdentifier(e))return e.identifiers.map(e=>getSingleIdentifierString({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new CompositeIdUnknownIdentifierError},getSingleIdentifierString=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,escapeValue(e.value)].filter(Boolean).join(`:`),getOriginalKey=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,decodeId=(e,t)=>{if(t.version===1)return decodeIdV1(e);throw new CompositeIdUnsupportedVersionError(`Cannot decode ID, unsupported version number: ${t.version}`)},encodeIdV1=e=>`${ae}${n(e)}`,decodeIdV1=e=>{if(!e.startsWith(ae))throw new CompositeIdMissingHeaderError(`Trying to decode an ID without the header: ${e}`);let n=e.split(ae)[1];if(!n)throw new CompositeIdMissingBodyError(`Trying to decode an ID without a body: ${e}`);return t(n)},escapeValue=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),unescapeValue=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),isCompositeId=e=>E(e)?!1:e.startsWith(ae),evaluateExternalAccountIdExtractor=(e,t)=>{let n=e.events?.externalAccountIdExtractor;if(E(n)||typeof n.result!=`string`||n.result.trim().length===0)return;let r=I(`{{${n.result.trim()}}}`,t);if(!E(r)){if(typeof r==`string`){let e=r.trim();return e.length>0?e:void 0}if(typeof r==`number`||typeof r==`bigint`||typeof r==`boolean`)return String(r)}},evaluateEventRouter=(e,t)=>{let n=e.events?.router;if(!E(n))for(let e of n.rules){let n=I(`{{${e.when.trim()}}}`,t);if(n!==null&&n!==!1&&n!==void 0){let n=e.then.input?Object.fromEntries(Object.entries(e.then.input).map(([e,n])=>[e,I(`{{${String(n).trim()}}}`,t)])):void 0;return{action:e.then.action,input:n}}}},ue={employment_status:[`active`,`inactive`,`terminated`,`pending`,`leave`],employment_type:[`full_time`,`part_time`,`contractor`,`intern`,`temporary`],gender:[`male`,`female`,`non_binary`,`other`,`prefer_not_to_say`],marital_status:[`single`,`married`,`divorced`,`widowed`,`domestic_partnership`]},getInputEnumValues=e=>ue[e],isValidEnumRef=e=>e in ue,de=[`preview`,`beta`,`ga`,`deprecated`],fe=N({r:M.record(M.string(),N({n:M.number().optional().nullable(),c:M.string().optional().nullable(),p:M.number().optional().nullable()})),v:M.number(),t:M.number()}),pe=N({remote:M.record(M.string(),N({pageNumber:M.number().optional(),providerPageCursor:M.string().optional(),position:M.number().optional()})),version:M.number(),timestamp:M.number()}),minifyCursor=e=>n(JSON.stringify(minifyCursorObject(e))),minifyCursorObject=e=>{let{remote:t,version:n,timestamp:r}=e;return{r:Object.fromEntries(Object.entries(t).map(([e,{pageNumber:t,providerPageCursor:n,position:r}])=>[e,{n:t,c:n,p:r}])),v:n,t:r}},expandCursor=e=>{try{if(D(e)){let n=t(e),r=JSON.parse(n);return expandCursorObject(fe.parse(r))}else return pe.parse(e),e}catch{return null}},expandCursorObject=e=>{let{r:t,v:n,t:r}=e;return{remote:Object.fromEntries(Object.entries(t).map(([e,{n:t,c:n,p:r}])=>[e,{pageNumber:t,providerPageCursor:n,position:r}])),version:n,timestamp:r}},areCursorsEqual=(e,t)=>{let n=typeof e==`string`?expandCursor(e):e,r=typeof t==`string`?expandCursor(t):t;if(n===null||r===null)return n===r;let{timestamp:a,...o}=n,{timestamp:s,...c}=r;return i(o)===i(c)},isCursorEmpty=({cursor:e,ignoreStepIndex:t})=>E(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return(E(t)||r!==t.toString())&&(n=n&&E(i.pageNumber)&&E(i.position)&&E(i.providerPageCursor)),n},!0),updateCursor=({cursor:e,stepIndex:t,pageNumber:n,providerPageCursor:r,position:i})=>{let a={pageNumber:n??void 0,providerPageCursor:r??void 0,position:i??void 0},o=E(n)&&E(r)&&E(i);return E(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},isCoreError=e=>e instanceof le,sanitizeRaw=e=>{let t={};return e.status!=null&&(t.status=e.status),e.data!==void 0&&(t.data=e.data),e.headers!=null&&(t.headers=e.headers),e.requestUrl!=null&&(t.requestUrl=e.requestUrl),e.message!=null&&(t.message=e.message),t},isHttpLikeError=e=>typeof e==`object`&&!!e&&`response`in e&&e.response!=null&&typeof e.response==`object`,extractErrorMessage=(e,t)=>{let n=e.data;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(typeof e.message==`string`&&e.message.trim().length>0)return e.message}if(typeof e.message==`string`&&e.message.length>0)return e.message;if(typeof n==`object`&&n&&!Array.isArray(n)){let e=n;if(e.error!=null&&typeof e.error==`object`&&!Array.isArray(e.error)&&typeof e.error.message==`string`)return e.error.message;if(typeof e.error==`string`)return e.error;if(typeof e.error_description==`string`)return e.error_description}return typeof n==`string`&&n.length>0?n:t},buildStepErrorOutput=(e,t)=>{if(e instanceof B){let n=e.message;return{block:t,successful:!1,errors:[q(e)],output:{statusCode:e.response?.status??500,message:extractErrorMessage(e.response,n),data:e.response?.data,raw:sanitizeRaw(e.response)}}}if(isHttpLikeError(e)){let n=e.response,r=e instanceof Error?e.message:`HTTP error: ${n.status??500}`;return{block:t,successful:!1,errors:[q(e)],output:{statusCode:n.status??500,message:extractErrorMessage(n,r),data:n.data,raw:sanitizeRaw(n)}}}return e instanceof Error?{block:t,successful:!1,errors:[q(e)],output:{statusCode:500,message:e.message}}:{block:t,successful:!1,errors:[q(e)],output:{statusCode:500,message:String(e)}}},me=N({type:M.literal(`none`)}),he=N({type:M.literal(`basic`),username:M.string().optional(),password:M.string().optional(),encoding:M.string().optional()}),ge=N({type:M.literal(`bearer`),token:M.string(),includeBearer:M.boolean().optional().default(!0)}),_e=N({type:M.literal(`oauth2`),authorizationUrl:M.string().optional(),authorizationParams:M.record(M.string(),M.string()).optional(),tokenUrl:M.string().optional(),tokenParams:M.record(M.string(),M.string()).optional(),tokenExpiresIn:M.number().optional(),tokenRefreshExpiresIn:M.number().optional(),token:M.string(),includeBearer:M.boolean().optional().default(!0),scopes:M.string().optional(),scopeDelimiter:M.string().optional(),customHeaders:M.record(M.string(),M.string()).optional(),pkce:M.boolean().optional(),additionalTokenFields:M.record(M.string(),M.string().optional()).optional()}),Y=M.discriminatedUnion(`type`,[me,he,ge,_e]),ve=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).optional().default(`get`),authorization:Y.optional(),responseMode:M.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:M.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:M.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:N({dataKey:M.string().optional(),fileNameKey:M.string().optional(),contentTypeKey:M.string().optional(),contentIsBase64:M.boolean().optional().default(!1),urlKey:M.string().optional(),forwardAuth:M.boolean().optional().default(!1)}).optional(),maxRedirects:M.number().optional().default(5),followRedirects:M.boolean().optional().default(!0),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),ye=N({data:M.union([M.string(),M.instanceof(Buffer)]).optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),headers:M.record(M.string(),M.string()).optional(),contentDisposition:M.string().optional(),fileMetadata:N({contentType:M.string().optional(),contentLength:M.number().optional(),fileName:M.string().optional(),lastModified:M.string().optional(),etag:M.string().optional()}).optional(),finalUrl:M.string().optional()}).optional(),downloadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,authorization:l,args:u,responseMode:d,responseType:f,encoding:p,response:m,maxRedirects:h,followRedirects:g}=ve.parse(a),_=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,v=u?K(u):{query:{},body:{},headers:{}},y=W(O(l)?l:Y.parse(_)),b={...v?.headers??{},...y},x=e.connector?.rateLimit,S=e.connector?.concurrency,C=x!==void 0||S!==void 0?{rateLimit:x,concurrency:S}:void 0;if(d===`stream`)return performStreamDownload({block:e,httpClient:e.httpClient,baseUrl:o??``,url:s,method:c,headers:b,queryParams:v?.query,body:v?.body,maxRedirects:g?h:0,requestConfig:C});try{return{block:e,successful:!0,output:await performDownload({httpClient:e.httpClient,baseUrl:o??``,url:s,method:c,headers:b,queryParams:v?.query,body:v?.body,responseType:f,encoding:p,response:m,maxRedirects:g?h:0,requestConfig:C,authHeaders:y})}}catch(t){return buildStepErrorOutput(t,e)}},performStreamDownload=async e=>{let{block:t,httpClient:n,baseUrl:r,url:i,method:a,headers:o,queryParams:s,body:c,maxRedirects:l,requestConfig:u}=e,d=`${r}${i}`;if(!d.startsWith(`http://`)&&!d.startsWith(`https://`))throw Error(`Invalid URL: "${d}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);if(!n.requestStream)throw Error(`HTTP client does not support streaming. Either implement requestStream method or use responseMode: "buffer".`);try{let e=await n.requestStream({url:d,method:a,headers:o,queryParams:s,payload:c,maxRedirects:l,requestConfig:u}),r=extractFileMetadata(e.headers),i=buildContentDisposition(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){return buildStepErrorOutput(e,t)}},performDownload=async e=>{let{httpClient:t,baseUrl:n,url:r,method:i,headers:a,queryParams:o,body:s,responseType:c,encoding:l,response:u,maxRedirects:d,requestConfig:f,authHeaders:p}=e,m=`${n}${r}`;if(!m.startsWith(`http://`)&&!m.startsWith(`https://`))throw Error(`Invalid URL: "${m}". URL must be absolute (start with http:// or https://). Either provide a baseUrl or ensure url is a complete URL.`);let h=u?.urlKey||u?.dataKey?`json`:c,g=await t.request({url:m,method:i,headers:a,queryParams:o,payload:s,responseType:h===`json`?void 0:h,maxRedirects:d,requestConfig:f});if(u?.urlKey||u?.dataKey)return handleJsonResponse({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=encodeFileData(g.data,l),v=extractFileMetadata(g.headers),y=buildContentDisposition(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},handleJsonResponse=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:o,authHeaders:s}=e,c=n.data;if(r.urlKey){let e=extractValueByPath(c,r.urlKey);if(typeof e==`string`){let n=await t.request({url:e,method:`get`,headers:r.forwardAuth?s:{},responseType:`arraybuffer`,maxRedirects:a,requestConfig:o}),l=encodeFileData(n.data,i),u=extractFileMetadata(n.headers);if(r.fileNameKey){let e=extractValueByPath(c,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(c,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=buildContentDisposition(u);return{data:l,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:d,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=extractValueByPath(c,r.dataKey);if(E(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:i===`none`?Buffer.from(e,`base64`):Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):encodeFileData(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=encodeFileData(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=extractValueByPath(c,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=extractValueByPath(c,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let o=buildContentDisposition(a);return{data:t,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:o,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},extractValueByPath=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if(E(r)||typeof r!=`object`)return;r=r[e]}return r},encodeFileData=(e,t)=>{if(t===`none`)return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof e==`string`?Buffer.from(e):Buffer.from(JSON.stringify(e));if(t===`raw`)return typeof e==`string`?e:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e).toString(`binary`):JSON.stringify(e);if(typeof e==`string`)return t===`base64`?Buffer.from(e).toString(`base64`):e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let n=Buffer.from(e);switch(t){case`base64`:return n.toString(`base64`);case`utf8`:return n.toString(`utf8`);case`binary`:default:return n.toString(`binary`)}}return JSON.stringify(e)},extractFileMetadata=e=>{let t=D(e[`content-type`])?e[`content-type`]:void 0,n=D(e[`content-length`])?e[`content-length`]:void 0,r=D(e[`content-disposition`])?e[`content-disposition`]:void 0,i=D(e[`last-modified`])?e[`last-modified`]:void 0,a=D(e.etag)?e.etag:void 0,o=n?parseInt(n,10):void 0,s=extractFileName(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},extractFileName=e=>{if(!e)return;let t=e.match(/filename\*=(?:UTF-8''|utf-8'')([^;\s]+)/i);if(t&&t[1])try{return decodeURIComponent(t[1])}catch{}let n=e.match(/filename=["']([^"']+)["']/);if(n&&n[1])return n[1];let r=e.match(/filename=([^;\s]+)/);if(r&&r[1])return r[1]},buildContentDisposition=e=>{let{fileName:t,contentType:n}=e,r=`attachment`;if(t)r=`attachment; filename="${t}"; filename*=UTF-8''${encodeURIComponent(t).replace(/['()]/g,escape)}`;else if(n){let e=getExtensionFromContentType(n);e&&(r=`attachment; filename="download.${e}"`)}return r},getExtensionFromContentType=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return ne.extension(t)||void 0},be=M.object({event:M.object({eventType:M.string(),eventDate:M.string().optional(),data:M.unknown().optional()}).optional()}),xe=M.record(M.string(),M.unknown()),emitEventStepFunction=async({block:e,params:t})=>{let n=t?L(t,e):{},{event:r}=be.parse(n);if(r&&e.emitEvent)try{await e.emitEvent({eventType:r.eventType,eventDate:r.eventDate,data:r.data})}catch(t){throw e.logger?.error({code:`EmitEventError`,message:`emitEvent callback failed: ${t.message}`}),t}else r&&!e.emitEvent&&e.logger?.warning({message:`emit_event step executed but no emitEvent callback provided on the block`});let{event:i,...a}=n;return{block:{...e},successful:!0,output:a}},Se=M.object({stepsDataToGroup:M.array(M.string()),isSingleRecord:M.boolean().optional()}),Ce=M.object({data:M.unknown()}),groupDataStepFunction=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=Se.parse(t),i=n.reduce((t,n)=>{let i=e.steps?.[n]?.output?.data;return i?r?{...t,[n]:{...i}}:(Object.keys(i).forEach(e=>{t[e]={...O(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},we=e(async({block:e})=>{let t=e?.fieldConfigs,n=[],r=e.steps;if(!t||e?.debug?.custom_mappings===`disabled`||!r)return{block:e,successful:!0};let i;if(Array.isArray(e.result)){let a=e.result.length;i=e.result.map((e,i)=>{let o=Te(e,t,extractSingleRecordBlockStepData(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=Te(e.result,t,r);i=a.record,n.push(...a.errors||[])}return{block:{...e,result:i},successful:!0,errors:Object.keys(n).length>0?n:void 0}},`mapFieldsStepFunction`),extractSingleRecordBlockStepData=(e,t,n)=>Object.entries(e).reduce((e,[r,i])=>{let a=i?.output?.data;return Array.isArray(a)&&a.length===t?e[r]={output:{data:a[n]}}:e[r]=i,e},{}),Te=e((e,t,n)=>{if(!e||!n)return{record:e};let r={unified:{...e},...typeof n==`object`?n:{}},i={},a=[],o={...e};for(let n of t){let{error:t,value:s}=Ee(r,e.id,n);if(t){a.push(t);continue}n.custom?i[n.targetFieldKey]=s:o[n.targetFieldKey]=s}return{record:{...o,unified_custom_fields:Object.keys(i).length>0?i:void 0},errors:a.length>0?a:void 0}},`mapSingleRecord`),Ee=e((e,t,n)=>{let{expression:r,targetFieldKey:i}=n;if(!r)return{error:{message:`Expression is empty`,id:t,targetField:i}};let a;try{a=P(r,e)}catch{return{error:{message:`Invalid expression`,id:t,targetField:i}}}return a===void 0?{error:{message:`Expression returned no value`,id:t,targetField:i}}:{value:a}},`extractFieldValue`),getEnumMatcher=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return a;case`country_alpha3code_by_alpha3code`:return d;case`country_code_by_country_code`:return g;case`country_name_by_country_name`:return x;case`country_name_by_alpha3code`:return y;case`country_name_by_alpha2code`:return v;case`country_name_by_country_code`:return b;case`country_alpha3code_by_alpha2code`:return u;case`country_alpha3code_by_country_name`:return p;case`country_alpha3code_by_country_code`:return f;case`country_alpha2code_by_alpha3code`:return o;case`country_alpha2code_by_country_name`:return l;case`country_alpha2code_by_country_code`:return c;case`country_code_by_alpha2code`:return m;case`country_code_by_alpha3code`:return h;case`country_code_by_country_name`:return _;case`country_subdivisions_by_alpha2code`:return w;case`country_subdivision_code_by_subdivision_name`:return S;case`country_alpha2code_by_citizenship`:return s;case`country_subdivision_name_by_subdivision_code`:return C;case`document_file_format_from_extension`:return T;default:return}},De=N({targetFieldKey:M.string(),alias:M.string().optional(),expression:M.string().optional(),values:M.unknown().optional(),type:M.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:M.boolean().default(!1),custom:M.boolean().default(!1),hidden:M.boolean().default(!1),enumMapper:N({matcher:M.string().or(N({matchExpression:M.string(),value:M.string()}).array())}).optional(),properties:M.lazy(()=>De).array().optional(),requiredScopes:M.string().array().optional()}),Oe=M.object({fields:De.array(),dataSource:M.string(),externalSources:M.record(M.string(),M.string()).optional()}),ke=M.object({data:M.unknown()}),mapFieldsStepFunction=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=Oe.parse(t),o=P(i,e);if(!r||!i||e?.debug?.custom_mappings===`disabled`||!o)return{block:e,successful:!0};let s=Object.keys(a??{})?.reduce((t,n)=>(t[n]=P(a?.[n],e),t),{}),c;if(Array.isArray(o))c=o.map(e=>{let t=X(r,{...e,external:s});return n.push(...t?.errors||[]),t?.record});else{let e=X(r,{...o,external:s});c=e?.record,n.push(...e?.errors||[])}return{block:{...e},successful:!0,output:{data:c},errors:Object.keys(n).length>0?n:void 0}},handleObjectArrayFromValues=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=evaluateExpressionsInObject(r,t),a=X(e.properties,i);return O(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},handleObjectArrayFromExpression=(e,t,n)=>{if(e.expression)try{let r=P(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=X(e.properties,t);return O(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=X(e.properties,r);return O(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},handleSingleObject=(e,t,n)=>{let r=O(e.values)?e.values:t,i=X(e.properties,r);return O(i?.errors)&&n.push(...i.errors),i?.record},Ae=e((e,t,n)=>{if(!E(e.properties))return e.array&&Array.isArray(e.values)?handleObjectArrayFromValues(e,t,n):e.array&&e.expression?handleObjectArrayFromExpression(e,t,n):handleSingleObject(e,t,n)},`handleObjectField`),X=e((e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=Ae(a,t,r),e===void 0)continue}else{let{error:n,value:i}=extractFieldValue(t,t?.id,a);if(e=i,n){r.push(n);continue}}a.custom?n[a.targetFieldKey]=e:i[a.targetFieldKey]=e}let a=Object.keys(n).length>0?{unified_custom_fields:n}:{};return{record:{...i,...a},errors:r.length>0?r:void 0}},`mapSingleRecord`),evaluateExpressionsInObject=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if(F(e))try{return P(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>evaluateExpressionsInObject(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=evaluateExpressionsInObject(r,t);return n}return e},extractFieldValue=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return je(n,t,e);case`enum`:return evaluateEnumValue(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},je=e((e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=P(e.expression,n)}catch{return{error:{message:`Invalid expression`,id:t,targetField:e.targetFieldKey}}}return r===void 0?{error:{message:`Expression returned no value`,id:t,targetField:e.targetFieldKey}}:{value:r}},`evaluateValue`),evaluateEnumValue=(e,t,n)=>{let r=je(e,t,n),i=O(r.value)?r.value:null;if(e.enumMapper===void 0)return{error:{message:`Enum mapper was not defined`,id:t,targetField:e.targetFieldKey}};let a=e.enumMapper.matcher;if(D(a)){let n=getEnumMatcher(a);return O(n)?{value:{value:(O(i)?n(i):null)??`unmapped_value`,source_value:i}}:{error:{message:`The built-in matcher "${a}" is not supported`,id:t,targetField:e.targetFieldKey}}}for(let e of a){let{matchExpression:t,value:r}=e;if(P(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},Me=M.object({baseUrl:M.string(),url:M.string(),method:M.enum(z),saml:N({objectKey:M.string(),key:M.string(),clientId:M.string(),cert:M.unknown().optional(),issuer:M.string().optional(),lifetime:M.number().optional(),nameId:M.string().optional(),audience:M.string().optional(),nameIdentifierFormat:M.string().optional(),tokenEndpoint:M.string().optional()}).optional(),response:N({indexField:M.string().optional(),dataKey:M.string().optional(),nextKey:M.string().optional(),nextKeyIn:M.enum([`data`,`headers`]).optional()}).optional(),iterator:N({key:M.string(),in:M.enum(U),condition:M.string().optional(),mode:M.enum([`cursor`,`offset`]).optional()}),cursor:N({token:M.string().optional().nullable(),position:M.number().optional().nullable()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ne=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),next:M.string().optional().nullable(),position:M.number().optional()}).optional(),Z=e(e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},`isJexlExpression`),paginatedRequestStepFunction=async({block:e,params:t})=>{let n=H.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=Number(e.inputs?.page_size),o=Number.isNaN(a)?25:a,s=i?i.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,c=t?L({...t,args:s},e):{},l=t?.response?.nextKey,u=l&&Z(l),d=t?.response?.dataKey,f=d&&Z(d),p={...c?.response??{},...u?{nextKey:l}:{},...f?{dataKey:d}:{}},m={...c,customErrors:t?.customErrors,iterator:{...c?.iterator??{},condition:t?.iterator?.condition},response:u||f?p:c?.response},{baseUrl:h,url:g,method:_,response:v,iterator:y,cursor:b,customErrors:x,args:S,saml:C}=Me.parse(m),w=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,T=Y.parse(w),D=S?K(S):{query:{},body:{},headers:{}},k=W(T),te={...D?.headers??{},...k},A=e.connector?.rateLimit,j=e.connector?.concurrency,M=A!==void 0||j!==void 0?{rateLimit:A,concurrency:j}:void 0,N=O(C)?{[C.objectKey]:await r({key:C.key,clientId:C.clientId,cert:C.cert,issuer:C.issuer,lifetime:C.lifetime,audience:C.audience,nameId:C.nameId,nameIdentifierFormat:C.nameIdentifierFormat,tokenEndpoint:C.tokenEndpoint})}:{},F=y.mode===`offset`,R=b?.token??null,z=null,B=null,V=[],U=[],G=[],q=o,J=b?.position??0,ne=!0,re=!0,ie=!0;do{ne?ne=!1:F||(J=0),R===null?F&&(y.in===`query`?D.query[y.key]=J.toString():y.in===`body`&&(Array.isArray(D.body)||(D.body[y.key]=J))):y.in===`query`?ee(R)?Object.entries(R).forEach(([e,t])=>{D.query[`${y.key}[${e}]`]=t?.toString()??``}):D.query[y.key]=R.toString():y.in===`body`&&(Array.isArray(D.body)||(D.body[y.key]=R));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${h}${g}`,queryParams:{...D?.query},method:_,headers:{...te},body:Array.isArray(D?.body)?D.body:{...D?.body,...N},customErrorConfigs:x,requestConfig:M})}catch(t){return buildStepErrorOutput(t,e)}z=R,U=v?.dataKey?Pe(t.data,v.dataKey):t.data;let r=F?U?.slice(0,q):U?.slice(J,J+q);q-=r.length,J+=r.length,G.push(t),V=V.concat(r),B=t?.status,R=Fe({result:t,response:v}),ie=O(y.condition)?I(y.condition,t.data)===!0:!0,!F&&r.length===U.length&&q===0&&(J=0,z=R),re=E(R)&&V.length<o}while((F||O(R))&&ie&&V.length<o&&U?.length>0);return{block:e,successful:!0,output:{data:Re(V,v),raw:G,statusCode:B,next:re?void 0:z,position:re?void 0:J}}},Pe=e((e,t)=>{if(E(e)||typeof e!=`object`||!e)return e;let n=I(Z(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},`resolveDataKey`),Fe=e(({result:e,response:t})=>{if(E(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Ie(e.headers,r):Le(e.data,r)},`resolveNextIterator`),Ie=e((e,t)=>{if(E(e)||typeof e!=`object`)return null;if(Z(t)){let n=I(t,e);return typeof n==`string`&&n!==``||typeof n==`number`?n:null}let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},`resolveFromHeaders`),Le=e((e,t)=>{if(E(e)||typeof e!=`object`||!e)return null;let n=I(Z(t)?t:`$.${t}`,e);return E(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},`resolveFromData`),Re=e((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),ze=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:Y.optional(),saml:N({objectKey:M.string(),key:M.string(),clientId:M.string(),cert:M.unknown().optional(),issuer:M.string().optional(),lifetime:M.number().optional(),nameId:M.string().optional(),audience:M.string().optional(),nameIdentifierFormat:M.string().optional(),tokenEndpoint:M.string().optional()}).optional(),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Be=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),isJexlExpression=e=>{let t=e.trim();return t.startsWith(`{{`)&&t.endsWith(`}}`)},requestStepFunction=async({block:e,params:t})=>{let n=H.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=i?i.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,o=t?.response?.dataKey,s=o&&isJexlExpression(o),c=t?L({...t,args:a},e):{},l={...c,customErrors:t?.customErrors,response:s?{...c?.response??{},dataKey:o}:c?.response},{baseUrl:u,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,saml:_}=ze.parse(l),v=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,y=g?K(g):{query:{},body:{},headers:{}},b=W(O(m)?m:Y.parse(v)),x={...y?.headers??{},...b},S=e.connector?.rateLimit,C=e.connector?.concurrency,w=S!==void 0||C!==void 0?{rateLimit:S,concurrency:C}:void 0,T=O(_)?{[_.objectKey]:await r({key:_.key,clientId:_.clientId,cert:_.cert,issuer:_.issuer,lifetime:_.lifetime,audience:_.audience,nameId:_.nameId,nameIdentifierFormat:_.nameIdentifierFormat,tokenEndpoint:_.tokenEndpoint})}:{},E;try{E=await n.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:y?.query,method:f,headers:x,body:Array.isArray(y?.body)?y?.body:{...y?.body,...T},customErrorConfigs:h,requestConfig:w})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:Ve(p?.dataKey?resolveDataKey(E.data,p.dataKey):E.data,p),raw:E,statusCode:E?.status,message:E?.message}}},resolveDataKey=(e,t)=>{if(E(e)||typeof e!=`object`||!e)return e;let n=I(isJexlExpression(t)?t:`$.${t}`,e);return n===void 0?e[t]:n},Ve=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),He=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:M.discriminatedUnion(`type`,[N({type:M.literal(`none`)}),N({type:M.literal(`basic`),username:M.string().optional(),password:M.string().optional(),encoding:M.string().optional()}),N({type:M.literal(`bearer`),token:M.string(),includeBearer:M.boolean().optional().default(!0)}),N({type:M.literal(`oauth2`),token:M.string(),includeBearer:M.boolean().optional().default(!0)})]).optional(),envelope:M.union([M.string(),M.record(M.string(),M.unknown())]).optional(),namespaces:M.strictObject({namespaceIdentifier:M.string(),namespace:M.string()}).array().optional(),soapOperation:M.string().optional(),soapAction:M.string().optional(),useSoapContext:M.boolean().optional().default(!0),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional(),nextKey:M.string().optional(),nextKeyIn:M.enum([`data`,`headers`]).optional()}).optional(),iterator:N({key:M.string(),in:M.enum(U)}),cursor:N({token:M.string().optional().nullable(),position:M.number().optional().nullable()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ue=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional(),next:M.string().optional().nullable(),position:M.number().optional()}).optional(),soapPaginatedRequestStepFunction=async({block:e,params:t})=>{let n=H.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=Number(e.inputs?.page_size),a=Number.isNaN(i)?25:i,o=r?r.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?L({...t,args:o},e):{},c={...s,customErrors:t?.customErrors},{baseUrl:l,url:u,method:d,response:f,iterator:p,cursor:m,authorization:h,customErrors:g,args:_,soapOperation:v,namespaces:y,envelope:b,soapAction:x,useSoapContext:S}=He.parse(c),C=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,w=_?K(_):{query:{},body:{},headers:{}},T=W(O(h)?h:Y.parse(C)),ee={...w?.headers??{},...T},D=e.connector?.rateLimit,k=e.connector?.concurrency,te={...(D!==void 0||k!==void 0)&&{rateLimit:D,concurrency:k},soapOperation:v,namespaces:y,envelope:b,soapAction:x,soapContext:S?{username:e.credentials?.username,password:e.credentials?.password}:void 0},A=m?.token??null,j=null,M=null,N=[],F=[],I=[],R=a,z=m?.position??0,B=!0,V;do{B?B=!1:z=0,A!==null&&(p.in===`query`?w.query[p.key]=A.toString():p.in===`body`&&(w.body[p.key]=A));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${l}${u}`,queryParams:w?.query,method:d,headers:ee,body:w?.body,customErrorConfigs:g,requestConfig:te})}catch(t){return buildStepErrorOutput(t,e)}j=A,F=f?.dataKey?t.data[f?.dataKey]:t.data,Array.isArray(F)||(F=F?[F]:[]);let r=F?.slice(z,z+R);R-=r.length,z+=r.length,I.push(t),N=N.concat(r),M=t?.status,A=resolveNextIterator({result:t,response:f}),r.length===F.length&&R===0&&(z=0,j=A),V=E(A)&&N.length<a}while(O(A)&&N.length<a&&F?.length>0);return{block:e,successful:!0,output:{data:We(N,f),raw:I,statusCode:M,next:V?void 0:j,position:V?void 0:z}}},resolveNextIterator=({result:e,response:t})=>{if(E(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?resolveFromHeaders(e.headers,r):resolveFromData(e.data,r)},resolveFromHeaders=(e,t)=>{if(E(e)||typeof e!=`object`)return null;let n=t.toLowerCase(),[,r]=Object.entries(e).find(([e])=>e?.toLowerCase()===n)??[];if(Array.isArray(r)){let e=r.find(e=>typeof e==`string`&&e!==``||typeof e==`number`);return typeof e==`string`||typeof e==`number`?e:null}return typeof r==`string`&&r!==``||typeof r==`number`?r:null},resolveFromData=(e,t)=>{if(E(e)||typeof e!=`object`||!e)return null;let n=e[t];return E(n)?null:typeof n==`string`||typeof n==`number`?n:null},We=e((e,t)=>{if(t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Ge=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z),authorization:Y.optional(),envelope:M.union([M.string(),M.record(M.string(),M.unknown())]).optional(),namespaces:M.strictObject({namespaceIdentifier:M.string(),namespace:M.string()}).array().optional(),soapOperation:M.string().optional(),soapAction:M.string().optional(),useSoapContext:M.boolean().optional().default(!0),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional()}),Ke=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),soapRequestStepFunction=async({block:e,params:t})=>{let n=H.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?L({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:c,method:l,response:u,authorization:d,customErrors:f,args:p,soapOperation:m,namespaces:h,envelope:g,soapAction:_,useSoapContext:v}=Ge.parse(o),y=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=p?K(p):{query:{},body:{},headers:{}},x=W(O(d)?d:Y.parse(y)),S={...b?.headers??{},...x},C=e.connector?.rateLimit,w=e.connector?.concurrency,T={...(C!==void 0||w!==void 0)&&{rateLimit:C,concurrency:w},soapOperation:m,namespaces:h,envelope:g,soapAction:_,soapContext:v?{username:e.credentials?.username,password:e.credentials?.password}:void 0},E;try{E=await n.performRequest({httpClient:e.httpClient,url:`${s}${c}`,queryParams:b?.query,method:l,headers:S,body:b?.body,customErrorConfigs:f,requestConfig:T})}catch(t){return buildStepErrorOutput(t,e)}return{block:e,successful:!0,output:{data:qe(u?.dataKey?E.data[u?.dataKey]:E.data,u),raw:E,statusCode:E?.status,message:E?.message}}},qe=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),Je=M.object({values:M.string().or(M.record(M.string(),M.unknown())).or(M.array(M.unknown()))}),Ye=M.object({data:M.unknown()}),staticValuesStepFunction=async({block:e,params:t})=>{let{values:n}=Je.parse(t),r=Array.isArray(n)?n.map(t=>evaluateValue(t,e)):evaluateValue(n,e);return{block:{...e},successful:!0,output:{data:r}}},evaluateValue=(e,t)=>D(e)?I(e,t):ee(e)?L(e,t):e,Xe=M.object({targetFieldKey:M.string(),type:M.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:M.boolean().default(!1),custom:M.boolean().default(!1),hidden:M.boolean().default(!1),properties:M.lazy(()=>Xe).array().optional(),requiredScopes:M.string().array().optional()}),Ze=M.object({fields:Xe.array().optional(),dataSource:M.string()}),Qe=M.object({data:M.unknown()});let Q=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const typecast=({value:e,type:t,format:n})=>{if(E(e))return null;switch(t){case Q.String:return j({value:e});case Q.Number:return A({value:e});case Q.Boolean:return k({value:e});case Q.DateTimeString:return te({value:e,format:n});default:return e}},isFieldSupportedType=e=>Object.values(Q).includes(e),$e=e(async({block:e})=>{let t=e?.fieldConfigs;if(!t||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let n;return n=Array.isArray(e.result)?e.result.map(e=>et(e,t)):et(e.result,t),{block:{...e,result:n},successful:!0}},`typecastStepFunction`),et=e((e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;isFieldSupportedType(i)&&(!t.custom&&O(n[r])?n[r]=typecast({value:e[r],type:i}):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},`mapSingleRecord`),typecastStepFunction=async({block:e,params:t})=>{let{fields:n,dataSource:r}=Ze.parse(t),i=P(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>mapSingleRecord(e,n)):mapSingleRecord(i,n),{block:{...e},successful:!0,output:{data:a}}},handleObjectField=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?mapSingleRecord(t,e.properties):t):typeof t==`object`&&t?mapSingleRecord(t,e.properties):t,mapSingleRecord=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&O(n[r])?n[r]=handleObjectField(t,e[r]):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=handleObjectField(t,e.unified_custom_fields?.[r])):isFieldSupportedType(i)&&(!t.custom&&O(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=typecast({value:e[r],type:i})):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=typecast({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},tt=N({content:M.string().describe(`The file content as base64 encoded string`),contentType:M.string().optional().describe(`The MIME type for the binary content (defaults to application/octet-stream)`)}),nt=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).default(`post`),authorization:Y.optional(),binaryContent:tt.describe(`Raw binary content for octet-stream uploads`),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),rt=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),uploadBinaryStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,response:l,authorization:u,binaryContent:d,args:f,customErrors:p}=nt.parse(a),m=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,h=f?K(f):{query:{},body:{},headers:{}},g=W(O(u)?u:Y.parse(m)),_=Buffer.from(d.content,`base64`),v={"content-type":d.contentType??`application/octet-stream`,...h?.headers??{},...g},y=e.connector?.rateLimit,b=e.connector?.concurrency,x=y!==void 0||b!==void 0?{rateLimit:y,concurrency:b}:void 0,S;try{S=await e.httpClient.request({url:`${o??``}${s}`,method:c,headers:v,queryParams:h?.query,payload:_,requestConfig:x})}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let C=J(S,p);return G(C?.status)?{block:e,successful:!1,errors:[q(new B(C,C.message))],output:{statusCode:C.status,message:C.message}}:{block:e,successful:!0,output:{data:it(l?.dataKey?C.data[l?.dataKey]:C.data,l),raw:C,statusCode:C?.status,message:C?.message}}},it=e((e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e},`indexResponseData`),at=N({fieldName:M.string().describe(`The form field name for the file`),content:M.string().describe(`The file content as base64 encoded string`),filename:M.string().describe(`The filename to use in the upload`),contentType:M.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),ot=M.object({baseUrl:M.string().optional(),url:M.string(),method:M.enum(z).default(`post`),authorization:Y.optional(),file:at.describe(`The file to upload`),additionalFields:N({name:M.string(),value:M.unknown(),contentType:M.string().optional().describe(`The MIME type for this form field (e.g., "application/json")`)}).array().optional().describe(`Additional form fields to include in the multipart request`),response:N({collection:M.boolean().optional(),indexField:M.string().optional(),dataKey:M.string().optional()}).optional(),customErrors:R.array().optional(),args:N({name:M.string(),value:M.unknown(),in:M.enum(U),spread:M.boolean().optional(),condition:M.string().optional(),arrayFormat:M.enum(V).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),st=N({data:M.unknown().optional(),raw:M.unknown().optional(),statusCode:M.number(),message:M.string().optional()}).optional(),uploadFileStepFunction=async({block:e,params:t})=>{if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:n}=t,r=n?n.filter(t=>!t.condition||P(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?L({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,response:l,authorization:u,file:d,additionalFields:f,args:p,customErrors:m}=ot.parse(a),h=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,g=p?K(p):{query:{},body:{},headers:{}},_=W(O(u)?u:Y.parse(h)),v=new re;if(f)for(let e of f){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);v.append(e.name,t,e.contentType?{contentType:e.contentType}:void 0)}let y=Buffer.from(d.content,`base64`);v.append(d.fieldName,y,{filename:d.filename,contentType:d.contentType});let b={...v.getHeaders(),...g?.headers??{},..._},x=e.connector?.rateLimit,S=e.connector?.concurrency,C=x!==void 0||S!==void 0?{rateLimit:x,concurrency:S}:void 0,w;try{w=await e.httpClient.request({url:`${o??``}${s}`,method:c,headers:b,queryParams:g?.query,payload:v,requestConfig:C})}catch(t){return buildStepErrorOutput(t,e)}let T=J(w,m);return G(T?.status)?buildStepErrorOutput(new B(T,T.message),e):{block:e,successful:!0,output:{data:indexResponseData(l?.dataKey?T.data[l?.dataKey]:T.data,l),raw:T,statusCode:T?.status,message:T?.message}}},indexResponseData=(e,t)=>{if(t?.collection&&t?.indexField&&Array.isArray(e))return e.reduce((e,n)=>{let r=t.indexField;return r&&n[r]&&(e[n[r]]=n),e},{});if(!t?.collection&&t?.indexField){let n=t.indexField;return n&&e[n]?{[e[n]]:e}:e}return e};let $=function(e){return e.TYPECAST=`typecast`,e.MAP_FIELDS=`map_fields`,e.GROUP_DATA=`group_data`,e.REQUEST=`request`,e.PAGINATED_REQUEST=`paginated_request`,e.SOAP_REQUEST=`soap_request`,e.SOAP_PAGINATED_REQUEST=`soap_paginated_request`,e.STATIC_VALUES=`static_values`,e.UPLOAD_FILE=`upload_file`,e.UPLOAD_BINARY=`upload_binary`,e.DOWNLOAD_FILE=`download_file`,e.EMIT_EVENT=`emit_event`,e}({});const ct={[$.TYPECAST]:{v1:{fn:$e},v2:{fn:typecastStepFunction,inputSchema:Ze,outputSchema:Qe}},[$.MAP_FIELDS]:{v1:{fn:we},v2:{fn:mapFieldsStepFunction,inputSchema:Oe,outputSchema:ke}},[$.REQUEST]:{v1:{fn:requestStepFunction,inputSchema:ze,outputSchema:Be}},[$.GROUP_DATA]:{v1:{fn:groupDataStepFunction,inputSchema:Se,outputSchema:Ce}},[$.PAGINATED_REQUEST]:{v1:{fn:paginatedRequestStepFunction,inputSchema:Me,outputSchema:Ne}},[$.SOAP_REQUEST]:{v1:{fn:soapRequestStepFunction,inputSchema:Ge,outputSchema:Ke}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:soapPaginatedRequestStepFunction,inputSchema:He,outputSchema:Ue}},[$.STATIC_VALUES]:{v1:{fn:staticValuesStepFunction,inputSchema:Je,outputSchema:Ye}},[$.UPLOAD_FILE]:{v1:{fn:uploadFileStepFunction,inputSchema:ot,outputSchema:st}},[$.UPLOAD_BINARY]:{v1:{fn:uploadBinaryStepFunction,inputSchema:nt,outputSchema:rt}},[$.DOWNLOAD_FILE]:{v1:{fn:downloadFileStepFunction,inputSchema:ve,outputSchema:ye}},[$.EMIT_EVENT]:{v1:{fn:emitEventStepFunction,inputSchema:be,outputSchema:xe}}},stepFunctionEnhancedWithSchemasValidation=(e,t)=>async({block:n,params:r})=>{try{e.inputSchema&&e.inputSchema.parse(r)}catch(e){return{block:n,successful:!1,errors:[{message:`Input parameters for ${t} are invalid: ${e?.message}`}]}}let i=await e.fn({block:n,params:r});try{e.outputSchema&&e.outputSchema.parse(i.output)}catch{return{block:n,successful:!1,errors:[{message:`Output data of ${t} has unexpected format`}]}}return i},lt={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=ct}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:stepFunctionEnhancedWithSchemasValidation(i,e)}:i}},isForeachStep=e=>`iterator`in e&&typeof e.iterator==`string`;export{Y as AUTHORIZATION_SCHEMA,ce as COMPOSITE_ID_LATEST_VERSION,le as CoreError,ue as INPUT_ENUM_REGISTRY,de as ReleaseStages,$ as StepFunctionName,lt as StepFunctionsFactory,ct as StepFunctionsRegistry,areCursorsEqual,decodeCompositeId,encodeCompositeId,evaluateEventRouter,evaluateExternalAccountIdExtractor,expandCursor,getCategoryDetails,getInputEnumValues,isCompositeId,isCoreError,isCursorEmpty,isForeachStep,isValidCategory,isValidEnumRef,minifyCursor,updateCursor};
|