@stackone/core 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@stackone/utils`),l=require(`@stackone/expressions`),u=require(`@stackone/transport`),d=require(`form-data`);d=s(d);const f={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`}},p=e=>f[e.toLowerCase()]??null,m=e=>!!f[e.toLowerCase()],h=`so1!`,g=(0,c.encodeToBase64)(`so1!`),_=`:`,v=`,`,y=RegExp(`(?<!\\\\):`,`g`),b=RegExp(`(?<!\\\\),`,`g`),x=1;var S=class e extends Error{constructor({category:t,name:n,type:r,context:i,message:a}){super(a),this.name=n??`CoreError`,this.type=r,this.category=t,this.context=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},C=class extends S{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},w=class extends C{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},T=class extends C{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},E=class extends C{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},D=class extends C{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const O=e=>!(0,c.isMissing)(e)&&`value`in e&&e.value!==void 0,k=e=>!(0,c.isMissing)(e)&&`identifiers`in e&&e.identifiers!==void 0,A=(e,t={version:1})=>{if(t.version===1)return I(M(e,t.aliases));throw new D(`Cannot generate ID, unsupported version number: ${t.version}`)},j=(e,t={version:1})=>{let n=F(e,t),r={};return n&&n.split(b).forEach(e=>{let[n,i]=e.split(y),a=P(n,t.aliases??{});r[a]=z(i)}),r},M=(e,t={})=>{if(O(e))return N({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(k(e))return e.identifiers.map(e=>N({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new E},N=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,R(e.value)].filter(Boolean).join(`:`),P=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,F=(e,t)=>{if(t.version===1)return L(e);throw new D(`Cannot decode ID, unsupported version number: ${t.version}`)},I=e=>`${g}${(0,c.encodeToBase64)(e)}`,L=e=>{if(!e.startsWith(g))throw new w(`Trying to decode an ID without the header: ${e}`);let t=e.split(g)[1];if(!t)throw new T(`Trying to decode an ID without a body: ${e}`);return(0,c.decodeFromBase64)(t)},R=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),z=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),B=e=>(0,c.isMissing)(e)?!1:e.startsWith(g),V={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`]},H=e=>V[e],ee=e=>e in V,te=[`preview`,`beta`,`ga`,`deprecated`],ne=(0,c.zStrictObject)({r:c.z.record(c.z.string(),(0,c.zStrictObject)({n:c.z.number().optional().nullable(),c:c.z.string().optional().nullable(),p:c.z.number().optional().nullable()})),v:c.z.number(),t:c.z.number()}),re=(0,c.zStrictObject)({remote:c.z.record(c.z.string(),(0,c.zStrictObject)({pageNumber:c.z.number().optional(),providerPageCursor:c.z.string().optional(),position:c.z.number().optional()})),version:c.z.number(),timestamp:c.z.number()}),ie=e=>(0,c.encodeToBase64)(JSON.stringify(ae(e))),ae=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}},U=e=>{try{if((0,c.isString)(e)){let t=(0,c.decodeFromBase64)(e),n=JSON.parse(t);return oe(ne.parse(n))}else return re.parse(e),e}catch{return null}},oe=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}},se=(e,t)=>{let n=typeof e==`string`?U(e):e,r=typeof t==`string`?U(t):t;if(n===null||r===null)return n===r;let{timestamp:i,...a}=n,{timestamp:o,...s}=r;return(0,c.getContentHash)(a)===(0,c.getContentHash)(s)},ce=({cursor:e,ignoreStepIndex:t})=>(0,c.isMissing)(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return((0,c.isMissing)(t)||r!==t.toString())&&(n=n&&(0,c.isMissing)(i.pageNumber)&&(0,c.isMissing)(i.position)&&(0,c.isMissing)(i.providerPageCursor)),n},!0),le=({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=(0,c.isMissing)(n)&&(0,c.isMissing)(r)&&(0,c.isMissing)(i);return(0,c.isMissing)(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},ue=e=>e instanceof S,de=(0,c.zStrictObject)({type:c.z.literal(`none`)}),fe=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),pe=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),me=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),W=c.z.discriminatedUnion(`type`,[de,fe,pe,me]),he=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods).optional().default(`get`),authorization:W.optional(),responseType:c.z.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:c.z.enum([`base64`,`utf8`,`binary`,`raw`]).optional().default(`base64`),response:(0,c.zStrictObject)({dataKey:c.z.string().optional(),fileNameKey:c.z.string().optional(),contentTypeKey:c.z.string().optional(),contentIsBase64:c.z.boolean().optional().default(!1),urlKey:c.z.string().optional(),forwardAuth:c.z.boolean().optional().default(!1)}).optional(),maxRedirects:c.z.number().optional().default(5),followRedirects:c.z.boolean().optional().default(!0),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),ge=(0,c.zStrictObject)({data:c.z.string().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),fileMetadata:(0,c.zStrictObject)({contentType:c.z.string().optional(),contentLength:c.z.number().optional(),fileName:c.z.string().optional(),lastModified:c.z.string().optional(),etag:c.z.string().optional()}).optional(),finalUrl:c.z.string().optional()}).optional(),_e=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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,l.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:d,authorization:f,args:p,responseType:m,encoding:h,response:g,maxRedirects:_,followRedirects:v}=he.parse(a),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=p?(0,u.parseRequestParameters)(p):{query:{},body:{},headers:{}},x=(0,u.createAuthorizationHeaders)((0,c.notMissing)(f)?f:W.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}:void 0;try{return{block:e,successful:!0,output:await ve({httpClient:e.httpClient,baseUrl:o??``,url:s,method:d,headers:S,queryParams:b?.query,body:b?.body,responseType:m,encoding:h,response:g,maxRedirects:v?_:0,requestConfig:T,authHeaders:x})}}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},ve=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 ye({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=K(g.data,l),v=be(g.headers);return{data:_,raw:g,statusCode:g?.status,message:g?.message,fileMetadata:v,finalUrl:g?.requestUrl}},ye=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:o,authHeaders:s}=e,l=n.data;if(r.urlKey){let e=G(l,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}),c=K(n.data,i),u=be(n.headers);if(r.fileNameKey){let e=G(l,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=G(l,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}return{data:c,raw:n,statusCode:n?.status,message:n?.message,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=G(l,r.dataKey);if((0,c.isMissing)(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):K(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=K(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=G(l,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=G(l,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}return{data:t,raw:n,statusCode:n?.status,message:n?.message,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},G=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if((0,c.isMissing)(r)||typeof r!=`object`)return;r=r[e]}return r},K=(e,t)=>{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)},be=e=>{let t=e[`content-type`],n=e[`content-length`],r=e[`content-disposition`],i=e[`last-modified`],a=e.etag,o=n?parseInt(n,10):void 0,s=xe(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},xe=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]},Se=c.z.object({stepsDataToGroup:c.z.array(c.z.string()),isSingleRecord:c.z.boolean().optional()}),Ce=c.z.object({data:c.z.unknown()}),we=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]={...(0,c.notMissing)(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},Te=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=De(e,t,Ee(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=De(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}},Ee=(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},{}),De=(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}=Oe(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}},Oe=(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,l.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}},ke=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return c.getCountryAlpha2CodeByAlpha2Code;case`country_alpha3code_by_alpha3code`:return c.getCountryAlpha3CodeByAlpha3Code;case`country_code_by_country_code`:return c.getCountryCodeByCountryCode;case`country_name_by_country_name`:return c.getCountryNameByCountryName;case`country_name_by_alpha3code`:return c.getCountryNameByAlpha3Code;case`country_name_by_alpha2code`:return c.getCountryNameByAlpha2Code;case`country_name_by_country_code`:return c.getCountryNameByCountryCode;case`country_alpha3code_by_alpha2code`:return c.getCountryAlpha3CodeByAlpha2Code;case`country_alpha3code_by_country_name`:return c.getCountryAlpha3CodeByCountryName;case`country_alpha3code_by_country_code`:return c.getCountryAlpha3CodeByCountryCode;case`country_alpha2code_by_alpha3code`:return c.getCountryAlpha2CodeByAlpha3Code;case`country_alpha2code_by_country_name`:return c.getCountryAlpha2CodeByCountryName;case`country_alpha2code_by_country_code`:return c.getCountryAlpha2CodeByCountryCode;case`country_code_by_alpha2code`:return c.getCountryCodeByAlpha2Code;case`country_code_by_alpha3code`:return c.getCountryCodeByAlpha3Code;case`country_code_by_country_name`:return c.getCountryCodeByCountryName;case`country_subdivisions_by_alpha2code`:return c.getCountrySubDivisionsByAlpha2Code;case`country_subdivision_code_by_subdivision_name`:return c.getCountrySubDivisionCodeBySubDivisionName;case`country_alpha2code_by_citizenship`:return c.getCountryAlpha2CodeByCitizenship;case`country_subdivision_name_by_subdivision_code`:return c.getCountrySubDivisionNameBySubDivisionCode;case`document_file_format_from_extension`:return c.getDocumentFileFormatFromExtension;default:return}},Ae=(0,c.zStrictObject)({targetFieldKey:c.z.string(),alias:c.z.string().optional(),expression:c.z.string().optional(),values:c.z.unknown().optional(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),enumMapper:(0,c.zStrictObject)({matcher:c.z.string().or((0,c.zStrictObject)({matchExpression:c.z.string(),value:c.z.string()}).array())}).optional(),properties:c.z.lazy(()=>Ae).array().optional(),requiredScopes:c.z.string().array().optional()}),je=c.z.object({fields:Ae.array(),dataSource:c.z.string(),externalSources:c.z.record(c.z.string(),c.z.string()).optional()}),Me=c.z.object({data:c.z.unknown()}),Ne=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=je.parse(t),o=(0,l.evaluate)(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]=(0,l.evaluate)(a?.[n],e),t),{}),c;if(Array.isArray(o))c=o.map(e=>{let t=q(r,{...e,external:s});return n.push(...t?.errors||[]),t?.record});else{let e=q(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}},Pe=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=J(r,t),a=q(e.properties,i);return(0,c.notMissing)(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},Fe=(e,t,n)=>{if(e.expression)try{let r=(0,l.evaluate)(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=q(e.properties,t);return(0,c.notMissing)(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=q(e.properties,r);return(0,c.notMissing)(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},Ie=(e,t,n)=>{let r=(0,c.notMissing)(e.values)?e.values:t,i=q(e.properties,r);return(0,c.notMissing)(i?.errors)&&n.push(...i.errors),i?.record},Le=(e,t,n)=>{if(!(0,c.isMissing)(e.properties))return e.array&&Array.isArray(e.values)?Pe(e,t,n):e.array&&e.expression?Fe(e,t,n):Ie(e,t,n)},q=(e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=Le(a,t,r),e===void 0)continue}else{let{error:n,value:i}=Re(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}},J=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if((0,l.isValidExpression)(e))try{return(0,l.evaluate)(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>J(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=J(r,t);return n}return e},Re=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return ze(n,t,e);case`enum`:return Be(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},ze=(e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=(0,l.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}},Be=(e,t,n)=>{let r=ze(e,t,n),i=(0,c.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,c.isString)(a)){let n=ke(a);return(0,c.notMissing)(n)?{value:{value:((0,c.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,l.evaluate)(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},Ve=[`data`,`headers`],He=(0,c.zStrictObject)({type:c.z.literal(`none`)}),Ue=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),We=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),Ge=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),Ke=c.z.discriminatedUnion(`type`,[He,Ue,We,Ge]),qe=c.z.object({baseUrl:c.z.string(),url:c.z.string(),method:c.z.enum(u.HttpMethods),saml:(0,c.zStrictObject)({objectKey:c.z.string(),key:c.z.string(),clientId:c.z.string(),cert:c.z.unknown().optional(),issuer:c.z.string().optional(),lifetime:c.z.number().optional(),nameId:c.z.string().optional(),audience:c.z.string().optional(),nameIdentifierFormat:c.z.string().optional(),tokenEndpoint:c.z.string().optional()}).optional(),response:(0,c.zStrictObject)({indexField:c.z.string().optional(),dataKey:c.z.string().optional(),nextKey:c.z.string().optional(),nextKeyIn:c.z.enum(Ve).optional()}).optional(),iterator:(0,c.zStrictObject)({key:c.z.string(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional()}),cursor:(0,c.zStrictObject)({token:c.z.string().optional().nullable(),position:c.z.number().optional().nullable()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),Je=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),next:c.z.string().optional().nullable(),position:c.z.number().optional()}).optional(),Ye=25,Xe=async({block:e,params:t})=>{let n=u.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,o=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?(0,l.safeEvaluateRecord)({...t,args:o},e):{},d={...s,customErrors:t?.customErrors,iterator:{...s?.iterator??{},condition:t?.iterator?.condition}},{baseUrl:f,url:p,method:m,response:h,iterator:g,cursor:_,customErrors:v,args:y,saml:b}=qe.parse(d),x=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,S=Ke.parse(x),C=y?(0,u.parseRequestParameters)(y):{query:{},body:{},headers:{}},w=(0,u.createAuthorizationHeaders)(S),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,O=E!==void 0||D!==void 0?{rateLimit:E,concurrency:D}:void 0,k=(0,c.notMissing)(b)?{[b.objectKey]:await(0,c.generateSamlAssertion)({key:b.key,clientId:b.clientId,cert:b.cert,issuer:b.issuer,lifetime:b.lifetime,audience:b.audience,nameId:b.nameId,nameIdentifierFormat:b.nameIdentifierFormat,tokenEndpoint:b.tokenEndpoint})}:{},A=_?.token??null,j=null,M=null,N=[],P=[],F=[],I=a,L=_?.position??0,R=!0,z=!0,B=!0;do{R?R=!1:L=0,A!==null&&(g.in===`query`?(0,c.isObject)(A)?Object.entries(A).forEach(([e,t])=>{C.query[`${g.key}[${e}]`]=t?.toString()??``}):C.query[g.key]=A.toString():g.in===`body`&&(Array.isArray(C.body)||(C.body[g.key]=A)));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:{...C?.query},method:m,headers:{...T},body:Array.isArray(C?.body)?C.body:{...C?.body,...k},customErrorConfigs:v,requestConfig:O})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}j=A,P=h?.dataKey?t.data[h?.dataKey]:t.data;let r=P?.slice(L,L+I);I-=r.length,L+=r.length,F.push(t),N=N.concat(r),M=t?.status,A=Ze({result:t,response:h}),B=(0,c.notMissing)(g.condition)?(0,l.safeEvaluate)(g.condition,t.data)===!0:!0,r.length===P.length&&I===0&&(L=0,j=A),z=(0,c.isMissing)(A)&&N.length<a}while((0,c.notMissing)(A)&&B&&N.length<a&&P?.length>0);return{block:e,successful:!0,output:{data:et(N,h),raw:F,statusCode:M,next:z?void 0:j,position:z?void 0:L}}},Ze=({result:e,response:t})=>{if((0,c.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Qe(e.headers,r):$e(e.data,r)},Qe=(e,t)=>{if((0,c.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},$e=(e,t)=>{if((0,c.isMissing)(e)||typeof e!=`object`||!e)return null;let n=(0,l.safeEvaluate)(`$.${t}`,e);return(0,c.isMissing)(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},et=(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},tt=(0,c.zStrictObject)({type:c.z.literal(`none`)}),nt=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),rt=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),it=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),at=c.z.discriminatedUnion(`type`,[tt,nt,rt,it]),ot=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:at.optional(),saml:(0,c.zStrictObject)({objectKey:c.z.string(),key:c.z.string(),clientId:c.z.string(),cert:c.z.unknown().optional(),issuer:c.z.string().optional(),lifetime:c.z.number().optional(),nameId:c.z.string().optional(),audience:c.z.string().optional(),nameIdentifierFormat:c.z.string().optional(),tokenEndpoint:c.z.string().optional()}).optional(),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),st=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),ct=async({block:e,params:t})=>{let n=u.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,l.safeEvaluateRecord)({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,saml:_}=ot.parse(o),v=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,y=g?(0,u.parseRequestParameters)(g):{query:{},body:{},headers:{}},b=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:at.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=(0,c.notMissing)(_)?{[_.objectKey]:await(0,c.generateSamlAssertion)({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:`${s}${d}`,queryParams:y?.query,method:f,headers:x,body:Array.isArray(y?.body)?y?.body:{...y?.body,...T},customErrorConfigs:h,requestConfig:w})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:lt(p?.dataKey?E.data[p?.dataKey]:E.data,p),raw:E,statusCode:E?.status,message:E?.message}}},lt=(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},ut=[`data`,`headers`],dt=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:c.z.discriminatedUnion(`type`,[(0,c.zStrictObject)({type:c.z.literal(`none`)}),(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),(0,c.zStrictObject)({type:c.z.literal(`oauth2`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)})]).optional(),envelope:c.z.union([c.z.string(),c.z.record(c.z.string(),c.z.unknown())]).optional(),namespaces:c.z.strictObject({namespaceIdentifier:c.z.string(),namespace:c.z.string()}).array().optional(),soapOperation:c.z.string().optional(),soapAction:c.z.string().optional(),useSoapContext:c.z.boolean().optional().default(!0),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional(),nextKey:c.z.string().optional(),nextKeyIn:c.z.enum(ut).optional()}).optional(),iterator:(0,c.zStrictObject)({key:c.z.string(),in:c.z.enum(u.RequestParameterLocations)}),cursor:(0,c.zStrictObject)({token:c.z.string().optional().nullable(),position:c.z.number().optional().nullable()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),ft=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),next:c.z.string().optional().nullable(),position:c.z.number().optional()}).optional(),pt=25,mt=async({block:e,params:t})=>{let n=u.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,o=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?(0,l.safeEvaluateRecord)({...t,args:o},e):{},d={...s,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}=dt.parse(d),E=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=b?(0,u.parseRequestParameters)(b):{query:{},body:{},headers:{}},O=(0,u.createAuthorizationHeaders)((0,c.notMissing)(v)?v:W.parse(E)),k={...D?.headers??{},...O},A=e.connector?.rateLimit,j=e.connector?.concurrency,M={...(A!==void 0||j!==void 0)&&{rateLimit:A,concurrency:j},soapOperation:x,namespaces:S,envelope:C,soapAction:w,soapContext:T?{username:e.credentials?.username,password:e.credentials?.password}:void 0},N=_?.token??null,P=null,F=null,I=[],L=[],R=[],z=a,B=_?.position??0,V=!0,H;do{V?V=!1:B=0,N!==null&&(g.in===`query`?D.query[g.key]=N.toString():g.in===`body`&&(D.body[g.key]=N));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:D?.query,method:m,headers:k,body:D?.body,customErrorConfigs:y,requestConfig:M})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}P=N,L=h?.dataKey?t.data[h?.dataKey]:t.data,Array.isArray(L)||(L=L?[L]:[]);let r=L?.slice(B,B+z);z-=r.length,B+=r.length,R.push(t),I=I.concat(r),F=t?.status,N=ht({result:t,response:h}),r.length===L.length&&z===0&&(B=0,P=N),H=(0,c.isMissing)(N)&&I.length<a}while((0,c.notMissing)(N)&&I.length<a&&L?.length>0);return{block:e,successful:!0,output:{data:vt(I,h),raw:R,statusCode:F,next:H?void 0:P,position:H?void 0:B}}},ht=({result:e,response:t})=>{if((0,c.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?gt(e.headers,r):_t(e.data,r)},gt=(e,t)=>{if((0,c.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},_t=(e,t)=>{if((0,c.isMissing)(e)||typeof e!=`object`||!e)return null;let n=e[t];return(0,c.isMissing)(n)?null:typeof n==`string`||typeof n==`number`?n:null},vt=(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},yt=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:W.optional(),envelope:c.z.union([c.z.string(),c.z.record(c.z.string(),c.z.unknown())]).optional(),namespaces:c.z.strictObject({namespaceIdentifier:c.z.string(),namespace:c.z.string()}).array().optional(),soapOperation:c.z.string().optional(),soapAction:c.z.string().optional(),useSoapContext:c.z.boolean().optional().default(!0),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),bt=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),xt=async({block:e,params:t})=>{let n=u.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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,l.safeEvaluateRecord)({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,soapOperation:_,namespaces:v,envelope:y,soapAction:b,useSoapContext:x}=yt.parse(o),S=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,C=g?(0,u.parseRequestParameters)(g):{query:{},body:{},headers:{}},w=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:W.parse(S)),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,O={...(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},k;try{k=await n.performRequest({httpClient:e.httpClient,url:`${s}${d}`,queryParams:C?.query,method:f,headers:T,body:C?.body,customErrorConfigs:h,requestConfig:O})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:St(p?.dataKey?k.data[p?.dataKey]:k.data,p),raw:k,statusCode:k?.status,message:k?.message}}},St=(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},Ct=c.z.object({values:c.z.string().or(c.z.record(c.z.string(),c.z.unknown())).or(c.z.array(c.z.unknown()))}),wt=c.z.object({data:c.z.unknown()}),Tt=async({block:e,params:t})=>{let{values:n}=Ct.parse(t),r=Array.isArray(n)?n.map(t=>Et(t,e)):Et(n,e);return{block:{...e},successful:!0,output:{data:r}}},Et=(e,t)=>(0,c.isString)(e)?(0,l.safeEvaluate)(e,t):(0,c.isObject)(e)?(0,l.safeEvaluateRecord)(e,t):e,Dt=c.z.object({targetFieldKey:c.z.string(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),properties:c.z.lazy(()=>Dt).array().optional(),requiredScopes:c.z.string().array().optional()}),Ot=c.z.object({fields:Dt.array().optional(),dataSource:c.z.string()}),kt=c.z.object({data:c.z.unknown()});let Y=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const X=({value:e,type:t,format:n})=>{if((0,c.isMissing)(e))return null;switch(t){case Y.String:return(0,c.safeParseToString)({value:e});case Y.Number:return(0,c.safeParseToNumber)({value:e});case Y.Boolean:return(0,c.safeParseToBoolean)({value:e});case Y.DateTimeString:return(0,c.safeParseToDateTimeString)({value:e,format:n});default:return e}},At=e=>Object.values(Y).includes(e),jt=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=>Mt(e,t)):Mt(e.result,t),{block:{...e,result:n},successful:!0}},Mt=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;At(i)&&(!t.custom&&(0,c.notMissing)(n[r])?n[r]=X({value:e[r],type:i}):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=X({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},Nt=async({block:e,params:t})=>{let{fields:n,dataSource:r}=Ot.parse(t),i=(0,l.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=>Z(e,n)):Z(i,n),{block:{...e},successful:!0,output:{data:a}}},Pt=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?Z(t,e.properties):t):typeof t==`object`&&t?Z(t,e.properties):t,Z=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&(0,c.notMissing)(n[r])?n[r]=Pt(t,e[r]):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=Pt(t,e.unified_custom_fields?.[r])):At(i)&&(!t.custom&&(0,c.notMissing)(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=X({value:e[r],type:i})):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=X({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},Ft=(0,c.zStrictObject)({fieldName:c.z.string().describe(`The form field name for the file`),content:c.z.string().describe(`The file content as base64 encoded string`),filename:c.z.string().describe(`The filename to use in the upload`),contentType:c.z.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),It=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods).default(`post`),authorization:W.optional(),file:Ft.describe(`The file to upload`),additionalFields:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown()}).array().optional().describe(`Additional form fields to include in the multipart request`),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Lt=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),Rt=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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,l.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:f,response:p,authorization:m,file:h,additionalFields:g,args:_,customErrors:v}=It.parse(a),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=_?(0,u.parseRequestParameters)(_):{query:{},body:{},headers:{}},x=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:W.parse(y)),S=new d.default,C=Buffer.from(h.content,`base64`);if(S.append(h.fieldName,C,{filename:h.filename,contentType:h.contentType}),g)for(let e of g){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);S.append(e.name,t)}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,O;try{O=await e.httpClient.request({url:`${o??``}${s}`,method:f,headers:w,queryParams:b?.query,payload:S,requestConfig:D})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let k=(0,u.translateCustomError)(O,v);return(0,u.isFailedStatusCode)(k?.status)?{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(new u.HttpResponseError(k,k.message))],output:{statusCode:k.status,message:k.message}}:{block:e,successful:!0,output:{data:zt(p?.dataKey?k.data[p?.dataKey]:k.data,p),raw:k,statusCode:k?.status,message:k?.message}}},zt=(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 Q=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.DOWNLOAD_FILE=`download_file`,e}({});const $={[Q.TYPECAST]:{v1:{fn:jt},v2:{fn:Nt,inputSchema:Ot,outputSchema:kt}},[Q.MAP_FIELDS]:{v1:{fn:Te},v2:{fn:Ne,inputSchema:je,outputSchema:Me}},[Q.REQUEST]:{v1:{fn:ct,inputSchema:ot,outputSchema:st}},[Q.GROUP_DATA]:{v1:{fn:we,inputSchema:Se,outputSchema:Ce}},[Q.PAGINATED_REQUEST]:{v1:{fn:Xe,inputSchema:qe,outputSchema:Je}},[Q.SOAP_REQUEST]:{v1:{fn:xt,inputSchema:yt,outputSchema:bt}},[Q.SOAP_PAGINATED_REQUEST]:{v1:{fn:mt,inputSchema:dt,outputSchema:ft}},[Q.STATIC_VALUES]:{v1:{fn:Tt,inputSchema:Ct,outputSchema:wt}},[Q.UPLOAD_FILE]:{v1:{fn:Rt,inputSchema:It,outputSchema:Lt}},[Q.DOWNLOAD_FILE]:{v1:{fn:_e,inputSchema:he,outputSchema:ge}}},Bt=(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},Vt={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=$}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:Bt(i,e)}:i}};exports.AUTHORIZATION_SCHEMA=W,exports.COMPOSITE_ID_LATEST_VERSION=1,exports.CoreError=S,exports.INPUT_ENUM_REGISTRY=V,exports.ReleaseStages=te,exports.StepFunctionName=Q,exports.StepFunctionsFactory=Vt,exports.StepFunctionsRegistry=$,exports.areCursorsEqual=se,exports.decodeCompositeId=j,exports.encodeCompositeId=A,exports.expandCursor=U,exports.getCategoryDetails=p,exports.getInputEnumValues=H,exports.isCompositeId=B,exports.isCoreError=ue,exports.isCursorEmpty=ce,exports.isValidCategory=m,exports.isValidEnumRef=ee,exports.minifyCursor=ie,exports.updateCursor=le;
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@stackone/utils`),l=require(`@stackone/expressions`),u=require(`@stackone/transport`),d=require(`mime-types`);d=s(d);let f=require(`form-data`);f=s(f);const p={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`}},m=e=>p[e.toLowerCase()]??null,h=e=>!!p[e.toLowerCase()],g=`so1!`,_=(0,c.encodeToBase64)(`so1!`),v=`:`,y=`,`,b=RegExp(`(?<!\\\\):`,`g`),x=RegExp(`(?<!\\\\),`,`g`),S=1;var C=class e extends Error{constructor({category:t,name:n,type:r,context:i,message:a}){super(a),this.name=n??`CoreError`,this.type=r,this.category=t,this.context=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},w=class extends C{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},T=class extends w{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},E=class extends w{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},D=class extends w{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},O=class extends w{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const k=e=>!(0,c.isMissing)(e)&&`value`in e&&e.value!==void 0,A=e=>!(0,c.isMissing)(e)&&`identifiers`in e&&e.identifiers!==void 0,j=(e,t={version:1})=>{if(t.version===1)return L(N(e,t.aliases));throw new O(`Cannot generate ID, unsupported version number: ${t.version}`)},M=(e,t={version:1})=>{let n=I(e,t),r={};return n&&n.split(x).forEach(e=>{let[n,i]=e.split(b),a=F(n,t.aliases??{});r[a]=B(i)}),r},N=(e,t={})=>{if(k(e))return P({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(A(e))return e.identifiers.map(e=>P({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new D},P=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,z(e.value)].filter(Boolean).join(`:`),F=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,I=(e,t)=>{if(t.version===1)return R(e);throw new O(`Cannot decode ID, unsupported version number: ${t.version}`)},L=e=>`${_}${(0,c.encodeToBase64)(e)}`,R=e=>{if(!e.startsWith(_))throw new T(`Trying to decode an ID without the header: ${e}`);let t=e.split(_)[1];if(!t)throw new E(`Trying to decode an ID without a body: ${e}`);return(0,c.decodeFromBase64)(t)},z=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),B=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),V=e=>(0,c.isMissing)(e)?!1:e.startsWith(_),H={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`]},ee=e=>H[e],te=e=>e in H,ne=[`preview`,`beta`,`ga`,`deprecated`],re=(0,c.zStrictObject)({r:c.z.record(c.z.string(),(0,c.zStrictObject)({n:c.z.number().optional().nullable(),c:c.z.string().optional().nullable(),p:c.z.number().optional().nullable()})),v:c.z.number(),t:c.z.number()}),ie=(0,c.zStrictObject)({remote:c.z.record(c.z.string(),(0,c.zStrictObject)({pageNumber:c.z.number().optional(),providerPageCursor:c.z.string().optional(),position:c.z.number().optional()})),version:c.z.number(),timestamp:c.z.number()}),ae=e=>(0,c.encodeToBase64)(JSON.stringify(oe(e))),oe=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}},U=e=>{try{if((0,c.isString)(e)){let t=(0,c.decodeFromBase64)(e),n=JSON.parse(t);return se(re.parse(n))}else return ie.parse(e),e}catch{return null}},se=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}},ce=(e,t)=>{let n=typeof e==`string`?U(e):e,r=typeof t==`string`?U(t):t;if(n===null||r===null)return n===r;let{timestamp:i,...a}=n,{timestamp:o,...s}=r;return(0,c.getContentHash)(a)===(0,c.getContentHash)(s)},le=({cursor:e,ignoreStepIndex:t})=>(0,c.isMissing)(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return((0,c.isMissing)(t)||r!==t.toString())&&(n=n&&(0,c.isMissing)(i.pageNumber)&&(0,c.isMissing)(i.position)&&(0,c.isMissing)(i.providerPageCursor)),n},!0),ue=({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=(0,c.isMissing)(n)&&(0,c.isMissing)(r)&&(0,c.isMissing)(i);return(0,c.isMissing)(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},de=e=>e instanceof C,fe=(0,c.zStrictObject)({type:c.z.literal(`none`)}),pe=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),me=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),he=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),W=c.z.discriminatedUnion(`type`,[fe,pe,me,he]),ge=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods).optional().default(`get`),authorization:W.optional(),responseMode:c.z.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:c.z.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:c.z.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:(0,c.zStrictObject)({dataKey:c.z.string().optional(),fileNameKey:c.z.string().optional(),contentTypeKey:c.z.string().optional(),contentIsBase64:c.z.boolean().optional().default(!1),urlKey:c.z.string().optional(),forwardAuth:c.z.boolean().optional().default(!1)}).optional(),maxRedirects:c.z.number().optional().default(5),followRedirects:c.z.boolean().optional().default(!0),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),_e=(0,c.zStrictObject)({data:c.z.union([c.z.string(),c.z.instanceof(Buffer)]).optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),headers:c.z.record(c.z.string(),c.z.string()).optional(),contentDisposition:c.z.string().optional(),fileMetadata:(0,c.zStrictObject)({contentType:c.z.string().optional(),contentLength:c.z.number().optional(),fileName:c.z.string().optional(),lastModified:c.z.string().optional(),etag:c.z.string().optional()}).optional(),finalUrl:c.z.string().optional()}).optional(),ve=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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,l.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:d,authorization:f,args:p,responseMode:m,responseType:h,encoding:g,response:_,maxRedirects:v,followRedirects:y}=ge.parse(a),b=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,x=p?(0,u.parseRequestParameters)(p):{query:{},body:{},headers:{}},S=(0,u.createAuthorizationHeaders)((0,c.notMissing)(f)?f:W.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 ye({block:e,httpClient:e.httpClient,baseUrl:o??``,url:s,method:d,headers:C,queryParams:x?.query,body:x?.body,maxRedirects:y?v:0,requestConfig:E});try{return{block:e,successful:!0,output:await be({httpClient:e.httpClient,baseUrl:o??``,url:s,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){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},ye=async e=>{let{block:t,httpClient:n,baseUrl:r,url:i,method:a,headers:o,queryParams:s,body:c,maxRedirects:l,requestConfig:d}=e,f=`${r}${i}`;if(!f.startsWith(`http://`)&&!f.startsWith(`https://`))throw Error(`Invalid URL: "${f}". 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:f,method:a,headers:o,queryParams:s,payload:c,maxRedirects:l,requestConfig:d}),r=q(e.headers),i=J(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){let n=e;return{block:t,successful:!1,errors:[(0,u.serializeHttpResponseError)(e)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},be=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 xe({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=K(g.data,l),v=q(g.headers),y=J(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},xe=async e=>{let{httpClient:t,result:n,response:r,encoding:i,maxRedirects:a,requestConfig:o,authHeaders:s}=e,l=n.data;if(r.urlKey){let e=G(l,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}),c=K(n.data,i),u=q(n.headers);if(r.fileNameKey){let e=G(l,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=G(l,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=J(u);return{data:c,raw:n,statusCode:n?.status,message:n?.message,headers:n.headers,contentDisposition:d,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=G(l,r.dataKey);if((0,c.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):K(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=K(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=G(l,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=G(l,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let o=J(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`)},G=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if((0,c.isMissing)(r)||typeof r!=`object`)return;r=r[e]}return r},K=(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)},q=e=>{let t=e[`content-type`],n=e[`content-length`],r=e[`content-disposition`],i=e[`last-modified`],a=e.etag,o=n?parseInt(n,10):void 0,s=Se(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},Se=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]},J=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=Ce(n);e&&(r=`attachment; filename="download.${e}"`)}return r},Ce=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return d.default.extension(t)||void 0},we=c.z.object({stepsDataToGroup:c.z.array(c.z.string()),isSingleRecord:c.z.boolean().optional()}),Te=c.z.object({data:c.z.unknown()}),Ee=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=we.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,c.notMissing)(t[e])?t[e]:{},[n]:{...i[e]}}}),t):t},{});return{block:{...e},successful:!0,output:{data:r?i:Object.values(i)}}},De=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=ke(e,t,Oe(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=ke(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}},Oe=(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},{}),ke=(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}=Ae(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}},Ae=(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,l.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}},je=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return c.getCountryAlpha2CodeByAlpha2Code;case`country_alpha3code_by_alpha3code`:return c.getCountryAlpha3CodeByAlpha3Code;case`country_code_by_country_code`:return c.getCountryCodeByCountryCode;case`country_name_by_country_name`:return c.getCountryNameByCountryName;case`country_name_by_alpha3code`:return c.getCountryNameByAlpha3Code;case`country_name_by_alpha2code`:return c.getCountryNameByAlpha2Code;case`country_name_by_country_code`:return c.getCountryNameByCountryCode;case`country_alpha3code_by_alpha2code`:return c.getCountryAlpha3CodeByAlpha2Code;case`country_alpha3code_by_country_name`:return c.getCountryAlpha3CodeByCountryName;case`country_alpha3code_by_country_code`:return c.getCountryAlpha3CodeByCountryCode;case`country_alpha2code_by_alpha3code`:return c.getCountryAlpha2CodeByAlpha3Code;case`country_alpha2code_by_country_name`:return c.getCountryAlpha2CodeByCountryName;case`country_alpha2code_by_country_code`:return c.getCountryAlpha2CodeByCountryCode;case`country_code_by_alpha2code`:return c.getCountryCodeByAlpha2Code;case`country_code_by_alpha3code`:return c.getCountryCodeByAlpha3Code;case`country_code_by_country_name`:return c.getCountryCodeByCountryName;case`country_subdivisions_by_alpha2code`:return c.getCountrySubDivisionsByAlpha2Code;case`country_subdivision_code_by_subdivision_name`:return c.getCountrySubDivisionCodeBySubDivisionName;case`country_alpha2code_by_citizenship`:return c.getCountryAlpha2CodeByCitizenship;case`country_subdivision_name_by_subdivision_code`:return c.getCountrySubDivisionNameBySubDivisionCode;case`document_file_format_from_extension`:return c.getDocumentFileFormatFromExtension;default:return}},Me=(0,c.zStrictObject)({targetFieldKey:c.z.string(),alias:c.z.string().optional(),expression:c.z.string().optional(),values:c.z.unknown().optional(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),enumMapper:(0,c.zStrictObject)({matcher:c.z.string().or((0,c.zStrictObject)({matchExpression:c.z.string(),value:c.z.string()}).array())}).optional(),properties:c.z.lazy(()=>Me).array().optional(),requiredScopes:c.z.string().array().optional()}),Ne=c.z.object({fields:Me.array(),dataSource:c.z.string(),externalSources:c.z.record(c.z.string(),c.z.string()).optional()}),Pe=c.z.object({data:c.z.unknown()}),Fe=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=Ne.parse(t),o=(0,l.evaluate)(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]=(0,l.evaluate)(a?.[n],e),t),{}),c;if(Array.isArray(o))c=o.map(e=>{let t=Y(r,{...e,external:s});return n.push(...t?.errors||[]),t?.record});else{let e=Y(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}},Ie=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=Be(r,t),a=Y(e.properties,i);return(0,c.notMissing)(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},Le=(e,t,n)=>{if(e.expression)try{let r=(0,l.evaluate)(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=Y(e.properties,t);return(0,c.notMissing)(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=Y(e.properties,r);return(0,c.notMissing)(t?.errors)&&n.push(...t.errors),t?.record}}catch{n.push({message:`Invalid expression`,id:t?.id,targetField:e.targetFieldKey});return}},Re=(e,t,n)=>{let r=(0,c.notMissing)(e.values)?e.values:t,i=Y(e.properties,r);return(0,c.notMissing)(i?.errors)&&n.push(...i.errors),i?.record},ze=(e,t,n)=>{if(!(0,c.isMissing)(e.properties))return e.array&&Array.isArray(e.values)?Ie(e,t,n):e.array&&e.expression?Le(e,t,n):Re(e,t,n)},Y=(e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=ze(a,t,r),e===void 0)continue}else{let{error:n,value:i}=Ve(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}},Be=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if((0,l.isValidExpression)(e))try{return(0,l.evaluate)(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>Be(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=Be(r,t);return n}return e},Ve=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return He(n,t,e);case`enum`:return Ue(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},He=(e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=(0,l.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}},Ue=(e,t,n)=>{let r=He(e,t,n),i=(0,c.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,c.isString)(a)){let n=je(a);return(0,c.notMissing)(n)?{value:{value:((0,c.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,l.evaluate)(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},We=[`data`,`headers`],Ge=(0,c.zStrictObject)({type:c.z.literal(`none`)}),Ke=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),qe=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),Je=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),Ye=c.z.discriminatedUnion(`type`,[Ge,Ke,qe,Je]),Xe=c.z.object({baseUrl:c.z.string(),url:c.z.string(),method:c.z.enum(u.HttpMethods),saml:(0,c.zStrictObject)({objectKey:c.z.string(),key:c.z.string(),clientId:c.z.string(),cert:c.z.unknown().optional(),issuer:c.z.string().optional(),lifetime:c.z.number().optional(),nameId:c.z.string().optional(),audience:c.z.string().optional(),nameIdentifierFormat:c.z.string().optional(),tokenEndpoint:c.z.string().optional()}).optional(),response:(0,c.zStrictObject)({indexField:c.z.string().optional(),dataKey:c.z.string().optional(),nextKey:c.z.string().optional(),nextKeyIn:c.z.enum(We).optional()}).optional(),iterator:(0,c.zStrictObject)({key:c.z.string(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional()}),cursor:(0,c.zStrictObject)({token:c.z.string().optional().nullable(),position:c.z.number().optional().nullable()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),Ze=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),next:c.z.string().optional().nullable(),position:c.z.number().optional()}).optional(),Qe=25,$e=async({block:e,params:t})=>{let n=u.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,o=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?(0,l.safeEvaluateRecord)({...t,args:o},e):{},d={...s,customErrors:t?.customErrors,iterator:{...s?.iterator??{},condition:t?.iterator?.condition}},{baseUrl:f,url:p,method:m,response:h,iterator:g,cursor:_,customErrors:v,args:y,saml:b}=Xe.parse(d),x=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,S=Ye.parse(x),C=y?(0,u.parseRequestParameters)(y):{query:{},body:{},headers:{}},w=(0,u.createAuthorizationHeaders)(S),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,O=E!==void 0||D!==void 0?{rateLimit:E,concurrency:D}:void 0,k=(0,c.notMissing)(b)?{[b.objectKey]:await(0,c.generateSamlAssertion)({key:b.key,clientId:b.clientId,cert:b.cert,issuer:b.issuer,lifetime:b.lifetime,audience:b.audience,nameId:b.nameId,nameIdentifierFormat:b.nameIdentifierFormat,tokenEndpoint:b.tokenEndpoint})}:{},A=_?.token??null,j=null,M=null,N=[],P=[],F=[],I=a,L=_?.position??0,R=!0,z=!0,B=!0;do{R?R=!1:L=0,A!==null&&(g.in===`query`?(0,c.isObject)(A)?Object.entries(A).forEach(([e,t])=>{C.query[`${g.key}[${e}]`]=t?.toString()??``}):C.query[g.key]=A.toString():g.in===`body`&&(Array.isArray(C.body)||(C.body[g.key]=A)));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:{...C?.query},method:m,headers:{...T},body:Array.isArray(C?.body)?C.body:{...C?.body,...k},customErrorConfigs:v,requestConfig:O})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}j=A,P=h?.dataKey?t.data[h?.dataKey]:t.data;let r=P?.slice(L,L+I);I-=r.length,L+=r.length,F.push(t),N=N.concat(r),M=t?.status,A=et({result:t,response:h}),B=(0,c.notMissing)(g.condition)?(0,l.safeEvaluate)(g.condition,t.data)===!0:!0,r.length===P.length&&I===0&&(L=0,j=A),z=(0,c.isMissing)(A)&&N.length<a}while((0,c.notMissing)(A)&&B&&N.length<a&&P?.length>0);return{block:e,successful:!0,output:{data:rt(N,h),raw:F,statusCode:M,next:z?void 0:j,position:z?void 0:L}}},et=({result:e,response:t})=>{if((0,c.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?tt(e.headers,r):nt(e.data,r)},tt=(e,t)=>{if((0,c.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},nt=(e,t)=>{if((0,c.isMissing)(e)||typeof e!=`object`||!e)return null;let n=(0,l.safeEvaluate)(`$.${t}`,e);return(0,c.isMissing)(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},rt=(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},it=(0,c.zStrictObject)({type:c.z.literal(`none`)}),at=(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),ot=(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),st=(0,c.zStrictObject)({type:c.z.literal(`oauth2`),authorizationUrl:c.z.string().optional(),authorizationParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenUrl:c.z.string().optional(),tokenParams:c.z.record(c.z.string(),c.z.string()).optional(),tokenExpiresIn:c.z.number().optional(),tokenRefreshExpiresIn:c.z.number().optional(),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0),scopes:c.z.string().optional(),scopeDelimiter:c.z.string().optional(),customHeaders:c.z.record(c.z.string(),c.z.string()).optional(),pkce:c.z.boolean().optional()}),ct=c.z.discriminatedUnion(`type`,[it,at,ot,st]),lt=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:ct.optional(),saml:(0,c.zStrictObject)({objectKey:c.z.string(),key:c.z.string(),clientId:c.z.string(),cert:c.z.unknown().optional(),issuer:c.z.string().optional(),lifetime:c.z.number().optional(),nameId:c.z.string().optional(),audience:c.z.string().optional(),nameIdentifierFormat:c.z.string().optional(),tokenEndpoint:c.z.string().optional()}).optional(),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),ut=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),dt=async({block:e,params:t})=>{let n=u.RequestClientFactory.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,l.safeEvaluateRecord)({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,saml:_}=lt.parse(o),v=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,y=g?(0,u.parseRequestParameters)(g):{query:{},body:{},headers:{}},b=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:ct.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=(0,c.notMissing)(_)?{[_.objectKey]:await(0,c.generateSamlAssertion)({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:`${s}${d}`,queryParams:y?.query,method:f,headers:x,body:Array.isArray(y?.body)?y?.body:{...y?.body,...T},customErrorConfigs:h,requestConfig:w})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:ft(p?.dataKey?E.data[p?.dataKey]:E.data,p),raw:E,statusCode:E?.status,message:E?.message}}},ft=(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},pt=[`data`,`headers`],mt=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:c.z.discriminatedUnion(`type`,[(0,c.zStrictObject)({type:c.z.literal(`none`)}),(0,c.zStrictObject)({type:c.z.literal(`basic`),username:c.z.string().optional(),password:c.z.string().optional(),encoding:c.z.string().optional()}),(0,c.zStrictObject)({type:c.z.literal(`bearer`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)}),(0,c.zStrictObject)({type:c.z.literal(`oauth2`),token:c.z.string(),includeBearer:c.z.boolean().optional().default(!0)})]).optional(),envelope:c.z.union([c.z.string(),c.z.record(c.z.string(),c.z.unknown())]).optional(),namespaces:c.z.strictObject({namespaceIdentifier:c.z.string(),namespace:c.z.string()}).array().optional(),soapOperation:c.z.string().optional(),soapAction:c.z.string().optional(),useSoapContext:c.z.boolean().optional().default(!0),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional(),nextKey:c.z.string().optional(),nextKeyIn:c.z.enum(pt).optional()}).optional(),iterator:(0,c.zStrictObject)({key:c.z.string(),in:c.z.enum(u.RequestParameterLocations)}),cursor:(0,c.zStrictObject)({token:c.z.string().optional().nullable(),position:c.z.number().optional().nullable()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),ht=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional(),next:c.z.string().optional().nullable(),position:c.z.number().optional()}).optional(),gt=25,_t=async({block:e,params:t})=>{let n=u.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,o=r?r.filter(t=>!t.condition||(0,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?(0,l.safeEvaluateRecord)({...t,args:o},e):{},d={...s,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}=mt.parse(d),E=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,D=b?(0,u.parseRequestParameters)(b):{query:{},body:{},headers:{}},O=(0,u.createAuthorizationHeaders)((0,c.notMissing)(v)?v:W.parse(E)),k={...D?.headers??{},...O},A=e.connector?.rateLimit,j=e.connector?.concurrency,M={...(A!==void 0||j!==void 0)&&{rateLimit:A,concurrency:j},soapOperation:x,namespaces:S,envelope:C,soapAction:w,soapContext:T?{username:e.credentials?.username,password:e.credentials?.password}:void 0},N=_?.token??null,P=null,F=null,I=[],L=[],R=[],z=a,B=_?.position??0,V=!0,H;do{V?V=!1:B=0,N!==null&&(g.in===`query`?D.query[g.key]=N.toString():g.in===`body`&&(D.body[g.key]=N));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${f}${p}`,queryParams:D?.query,method:m,headers:k,body:D?.body,customErrorConfigs:y,requestConfig:M})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}P=N,L=h?.dataKey?t.data[h?.dataKey]:t.data,Array.isArray(L)||(L=L?[L]:[]);let r=L?.slice(B,B+z);z-=r.length,B+=r.length,R.push(t),I=I.concat(r),F=t?.status,N=vt({result:t,response:h}),r.length===L.length&&z===0&&(B=0,P=N),H=(0,c.isMissing)(N)&&I.length<a}while((0,c.notMissing)(N)&&I.length<a&&L?.length>0);return{block:e,successful:!0,output:{data:xt(I,h),raw:R,statusCode:F,next:H?void 0:P,position:H?void 0:B}}},vt=({result:e,response:t})=>{if((0,c.isMissing)(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?yt(e.headers,r):bt(e.data,r)},yt=(e,t)=>{if((0,c.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},bt=(e,t)=>{if((0,c.isMissing)(e)||typeof e!=`object`||!e)return null;let n=e[t];return(0,c.isMissing)(n)?null:typeof n==`string`||typeof n==`number`?n:null},xt=(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},St=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods),authorization:W.optional(),envelope:c.z.union([c.z.string(),c.z.record(c.z.string(),c.z.unknown())]).optional(),namespaces:c.z.strictObject({namespaceIdentifier:c.z.string(),namespace:c.z.string()}).array().optional(),soapOperation:c.z.string().optional(),soapAction:c.z.string().optional(),useSoapContext:c.z.boolean().optional().default(!0),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional()}),Ct=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),wt=async({block:e,params:t})=>{let n=u.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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?(0,l.safeEvaluateRecord)({...t,args:i},e):{},o={...a,customErrors:t?.customErrors},{baseUrl:s,url:d,method:f,response:p,authorization:m,customErrors:h,args:g,soapOperation:_,namespaces:v,envelope:y,soapAction:b,useSoapContext:x}=St.parse(o),S=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,C=g?(0,u.parseRequestParameters)(g):{query:{},body:{},headers:{}},w=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:W.parse(S)),T={...C?.headers??{},...w},E=e.connector?.rateLimit,D=e.connector?.concurrency,O={...(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},k;try{k=await n.performRequest({httpClient:e.httpClient,url:`${s}${d}`,queryParams:C?.query,method:f,headers:T,body:C?.body,customErrorConfigs:h,requestConfig:O})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:Tt(p?.dataKey?k.data[p?.dataKey]:k.data,p),raw:k,statusCode:k?.status,message:k?.message}}},Tt=(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},Et=c.z.object({values:c.z.string().or(c.z.record(c.z.string(),c.z.unknown())).or(c.z.array(c.z.unknown()))}),Dt=c.z.object({data:c.z.unknown()}),Ot=async({block:e,params:t})=>{let{values:n}=Et.parse(t),r=Array.isArray(n)?n.map(t=>kt(t,e)):kt(n,e);return{block:{...e},successful:!0,output:{data:r}}},kt=(e,t)=>(0,c.isString)(e)?(0,l.safeEvaluate)(e,t):(0,c.isObject)(e)?(0,l.safeEvaluateRecord)(e,t):e,At=c.z.object({targetFieldKey:c.z.string(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),properties:c.z.lazy(()=>At).array().optional(),requiredScopes:c.z.string().array().optional()}),jt=c.z.object({fields:At.array().optional(),dataSource:c.z.string()}),Mt=c.z.object({data:c.z.unknown()});let X=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const Z=({value:e,type:t,format:n})=>{if((0,c.isMissing)(e))return null;switch(t){case X.String:return(0,c.safeParseToString)({value:e});case X.Number:return(0,c.safeParseToNumber)({value:e});case X.Boolean:return(0,c.safeParseToBoolean)({value:e});case X.DateTimeString:return(0,c.safeParseToDateTimeString)({value:e,format:n});default:return e}},Nt=e=>Object.values(X).includes(e),Pt=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=>Ft(e,t)):Ft(e.result,t),{block:{...e,result:n},successful:!0}},Ft=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;Nt(i)&&(!t.custom&&(0,c.notMissing)(n[r])?n[r]=Z({value:e[r],type:i}):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=Z({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},It=async({block:e,params:t})=>{let{fields:n,dataSource:r}=jt.parse(t),i=(0,l.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=>Q(e,n)):Q(i,n),{block:{...e},successful:!0,output:{data:a}}},Lt=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?Q(t,e.properties):t):typeof t==`object`&&t?Q(t,e.properties):t,Q=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i,array:a}=t;i===`object`?!t.custom&&(0,c.notMissing)(n[r])?n[r]=Lt(t,e[r]):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=Lt(t,e.unified_custom_fields?.[r])):Nt(i)&&(!t.custom&&(0,c.notMissing)(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=Z({value:e[r],type:i})):n.unified_custom_fields&&(0,c.notMissing)(n.unified_custom_fields?.[r])&&(!a||!Array.isArray(n.unified_custom_fields[r]))&&(n.unified_custom_fields[r]=Z({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},Rt=(0,c.zStrictObject)({fieldName:c.z.string().describe(`The form field name for the file`),content:c.z.string().describe(`The file content as base64 encoded string`),filename:c.z.string().describe(`The filename to use in the upload`),contentType:c.z.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),zt=c.z.object({baseUrl:c.z.string().optional(),url:c.z.string(),method:c.z.enum(u.HttpMethods).default(`post`),authorization:W.optional(),file:Rt.describe(`The file to upload`),additionalFields:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown()}).array().optional().describe(`Additional form fields to include in the multipart request`),response:(0,c.zStrictObject)({collection:c.z.boolean().optional(),indexField:c.z.string().optional(),dataKey:c.z.string().optional()}).optional(),customErrors:u.CUSTOM_ERROR_CONFIG_SCHEMA.array().optional(),args:(0,c.zStrictObject)({name:c.z.string(),value:c.z.unknown(),in:c.z.enum(u.RequestParameterLocations),spread:c.z.boolean().optional(),condition:c.z.string().optional(),arrayFormat:c.z.enum(u.QueryArrayFormats).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),Bt=(0,c.zStrictObject)({data:c.z.unknown().optional(),raw:c.z.unknown().optional(),statusCode:c.z.number(),message:c.z.string().optional()}).optional(),Vt=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,l.evaluate)(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?(0,l.safeEvaluateRecord)({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:d,response:p,authorization:m,file:h,additionalFields:g,args:_,customErrors:v}=zt.parse(a),y=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=_?(0,u.parseRequestParameters)(_):{query:{},body:{},headers:{}},x=(0,u.createAuthorizationHeaders)((0,c.notMissing)(m)?m:W.parse(y)),S=new f.default,C=Buffer.from(h.content,`base64`);if(S.append(h.fieldName,C,{filename:h.filename,contentType:h.contentType}),g)for(let e of g){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);S.append(e.name,t)}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,O;try{O=await e.httpClient.request({url:`${o??``}${s}`,method:d,headers:w,queryParams:b?.query,payload:S,requestConfig:D})}catch(t){let n=t;return{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let k=(0,u.translateCustomError)(O,v);return(0,u.isFailedStatusCode)(k?.status)?{block:e,successful:!1,errors:[(0,u.serializeHttpResponseError)(new u.HttpResponseError(k,k.message))],output:{statusCode:k.status,message:k.message}}:{block:e,successful:!0,output:{data:Ht(p?.dataKey?k.data[p?.dataKey]:k.data,p),raw:k,statusCode:k?.status,message:k?.message}}},Ht=(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.DOWNLOAD_FILE=`download_file`,e}({});const Ut={[$.TYPECAST]:{v1:{fn:Pt},v2:{fn:It,inputSchema:jt,outputSchema:Mt}},[$.MAP_FIELDS]:{v1:{fn:De},v2:{fn:Fe,inputSchema:Ne,outputSchema:Pe}},[$.REQUEST]:{v1:{fn:dt,inputSchema:lt,outputSchema:ut}},[$.GROUP_DATA]:{v1:{fn:Ee,inputSchema:we,outputSchema:Te}},[$.PAGINATED_REQUEST]:{v1:{fn:$e,inputSchema:Xe,outputSchema:Ze}},[$.SOAP_REQUEST]:{v1:{fn:wt,inputSchema:St,outputSchema:Ct}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:_t,inputSchema:mt,outputSchema:ht}},[$.STATIC_VALUES]:{v1:{fn:Ot,inputSchema:Et,outputSchema:Dt}},[$.UPLOAD_FILE]:{v1:{fn:Vt,inputSchema:zt,outputSchema:Bt}},[$.DOWNLOAD_FILE]:{v1:{fn:ve,inputSchema:ge,outputSchema:_e}}},Wt=(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},Gt={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=Ut}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:Wt(i,e)}:i}};exports.AUTHORIZATION_SCHEMA=W,exports.COMPOSITE_ID_LATEST_VERSION=1,exports.CoreError=C,exports.INPUT_ENUM_REGISTRY=H,exports.ReleaseStages=ne,exports.StepFunctionName=$,exports.StepFunctionsFactory=Gt,exports.StepFunctionsRegistry=Ut,exports.areCursorsEqual=ce,exports.decodeCompositeId=M,exports.encodeCompositeId=j,exports.expandCursor=U,exports.getCategoryDetails=m,exports.getInputEnumValues=ee,exports.isCompositeId=V,exports.isCoreError=de,exports.isCursorEmpty=le,exports.isValidCategory=h,exports.isValidEnumRef=te,exports.minifyCursor=ae,exports.updateCursor=ue;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import http from "node:http";
2
2
  import https from "node:https";
3
+ import { Readable } from "node:stream";
3
4
  import { ZodType, z } from "@stackone/utils";
4
5
  import * as zod_v40 from "zod/v4";
5
6
  import * as zod_v4_core0 from "zod/v4/core";
@@ -184,6 +185,12 @@ type HttpResponse<T = any> = {
184
185
  responseTime?: Date;
185
186
  message?: string;
186
187
  };
188
+ type StreamHttpResponse = {
189
+ status: number;
190
+ headers: HttpHeaders;
191
+ stream: Readable;
192
+ requestUrl: string;
193
+ };
187
194
  interface IHttpClient {
188
195
  request<P, T>({
189
196
  headers,
@@ -248,6 +255,33 @@ interface IHttpClient {
248
255
  payload?: P;
249
256
  requestConfig?: RequestConfig;
250
257
  }): Promise<HttpResponse<T>>;
258
+ requestStream({
259
+ headers,
260
+ url,
261
+ method,
262
+ queryParams,
263
+ maxRedirects,
264
+ context,
265
+ traceId,
266
+ payload,
267
+ httpsAgent,
268
+ httpAgent,
269
+ requestConfig,
270
+ httpsAgentConfig
271
+ }: {
272
+ headers?: HttpHeaders;
273
+ url: string;
274
+ method?: HttpMethod;
275
+ queryParams?: HttpQueryParams;
276
+ maxRedirects?: number;
277
+ context?: RequestContext;
278
+ traceId?: string;
279
+ payload?: unknown;
280
+ httpsAgent?: https.Agent;
281
+ httpAgent?: http.Agent;
282
+ requestConfig?: RequestConfig;
283
+ httpsAgentConfig?: https.AgentOptions;
284
+ }): Promise<StreamHttpResponse>;
251
285
  }
252
286
  interface OperationSetting {
253
287
  url?: string;
@@ -871,6 +905,10 @@ declare const stepFunctions: {
871
905
  customHeaders: zod_v40.ZodOptional<zod_v40.ZodRecord<zod_v40.ZodString, zod_v40.ZodString>>;
872
906
  pkce: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
873
907
  }, zod_v4_core0.$strict>]>>;
908
+ responseMode: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
909
+ buffer: "buffer";
910
+ stream: "stream";
911
+ }>>>;
874
912
  responseType: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
875
913
  arraybuffer: "arraybuffer";
876
914
  blob: "blob";
@@ -878,6 +916,7 @@ declare const stepFunctions: {
878
916
  json: "json";
879
917
  }>>>;
880
918
  encoding: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
919
+ none: "none";
881
920
  raw: "raw";
882
921
  base64: "base64";
883
922
  utf8: "utf8";
@@ -917,10 +956,12 @@ declare const stepFunctions: {
917
956
  }, zod_v4_core0.$strict>>>;
918
957
  }, zod_v4_core0.$strip>;
919
958
  outputSchema: zod_v40.ZodOptional<zod_v40.ZodObject<{
920
- data: zod_v40.ZodOptional<zod_v40.ZodString>;
959
+ data: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>>;
921
960
  raw: zod_v40.ZodOptional<zod_v40.ZodUnknown>;
922
961
  statusCode: zod_v40.ZodNumber;
923
962
  message: zod_v40.ZodOptional<zod_v40.ZodString>;
963
+ headers: zod_v40.ZodOptional<zod_v40.ZodRecord<zod_v40.ZodString, zod_v40.ZodString>>;
964
+ contentDisposition: zod_v40.ZodOptional<zod_v40.ZodString>;
924
965
  fileMetadata: zod_v40.ZodOptional<zod_v40.ZodObject<{
925
966
  contentType: zod_v40.ZodOptional<zod_v40.ZodString>;
926
967
  contentLength: zod_v40.ZodOptional<zod_v40.ZodNumber>;
@@ -1063,6 +1104,7 @@ type Block = {
1063
1104
  credentials?: Credentials;
1064
1105
  scopes?: string[];
1065
1106
  outputs?: unknown;
1107
+ streamOutput?: StreamOutputData;
1066
1108
  nextCursor?: Cursor | null;
1067
1109
  response?: {
1068
1110
  statusCode: number;
@@ -1150,6 +1192,18 @@ type StepFunctionInstance = {
1150
1192
  inputSchema?: ZodType;
1151
1193
  outputSchema?: ZodType;
1152
1194
  };
1195
+ type StreamOutputData = {
1196
+ stream: Readable;
1197
+ headers: Record<string, string>;
1198
+ contentDisposition: string;
1199
+ fileMetadata: {
1200
+ contentType?: string;
1201
+ contentLength?: number;
1202
+ fileName?: string;
1203
+ lastModified?: string;
1204
+ etag?: string;
1205
+ };
1206
+ };
1153
1207
  type StepFunctionOutput = {
1154
1208
  block: Block;
1155
1209
  successful: boolean;
@@ -1157,6 +1211,7 @@ type StepFunctionOutput = {
1157
1211
  output?: {
1158
1212
  [name: string]: unknown;
1159
1213
  };
1214
+ streamOutput?: StreamOutputData;
1160
1215
  };
1161
1216
  //#endregion
1162
1217
  //#region src/steps/types.d.ts
@@ -1479,4 +1534,4 @@ type Account = {
1479
1534
  originOwnerName?: string;
1480
1535
  };
1481
1536
  //#endregion
1482
- 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 EnumOneOf, type FieldConfig, type Guide, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type Source, type Step, type StepFunction, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
1537
+ 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 EnumOneOf, type FieldConfig, type Guide, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type Source, type Step, type StepFunction, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ZodType, z } from "@stackone/utils";
2
+ import { Readable } from "node:stream";
2
3
  import http from "node:http";
3
4
  import https from "node:https";
4
5
  import * as zod_v40 from "zod/v4";
@@ -184,6 +185,12 @@ type HttpResponse<T = any> = {
184
185
  responseTime?: Date;
185
186
  message?: string;
186
187
  };
188
+ type StreamHttpResponse = {
189
+ status: number;
190
+ headers: HttpHeaders;
191
+ stream: Readable;
192
+ requestUrl: string;
193
+ };
187
194
  interface IHttpClient {
188
195
  request<P, T>({
189
196
  headers,
@@ -248,6 +255,33 @@ interface IHttpClient {
248
255
  payload?: P;
249
256
  requestConfig?: RequestConfig;
250
257
  }): Promise<HttpResponse<T>>;
258
+ requestStream({
259
+ headers,
260
+ url,
261
+ method,
262
+ queryParams,
263
+ maxRedirects,
264
+ context,
265
+ traceId,
266
+ payload,
267
+ httpsAgent,
268
+ httpAgent,
269
+ requestConfig,
270
+ httpsAgentConfig
271
+ }: {
272
+ headers?: HttpHeaders;
273
+ url: string;
274
+ method?: HttpMethod;
275
+ queryParams?: HttpQueryParams;
276
+ maxRedirects?: number;
277
+ context?: RequestContext;
278
+ traceId?: string;
279
+ payload?: unknown;
280
+ httpsAgent?: https.Agent;
281
+ httpAgent?: http.Agent;
282
+ requestConfig?: RequestConfig;
283
+ httpsAgentConfig?: https.AgentOptions;
284
+ }): Promise<StreamHttpResponse>;
251
285
  }
252
286
  interface OperationSetting {
253
287
  url?: string;
@@ -871,6 +905,10 @@ declare const stepFunctions: {
871
905
  customHeaders: zod_v40.ZodOptional<zod_v40.ZodRecord<zod_v40.ZodString, zod_v40.ZodString>>;
872
906
  pkce: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
873
907
  }, zod_v4_core0.$strict>]>>;
908
+ responseMode: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
909
+ buffer: "buffer";
910
+ stream: "stream";
911
+ }>>>;
874
912
  responseType: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
875
913
  arraybuffer: "arraybuffer";
876
914
  blob: "blob";
@@ -878,6 +916,7 @@ declare const stepFunctions: {
878
916
  json: "json";
879
917
  }>>>;
880
918
  encoding: zod_v40.ZodDefault<zod_v40.ZodOptional<zod_v40.ZodEnum<{
919
+ none: "none";
881
920
  raw: "raw";
882
921
  base64: "base64";
883
922
  utf8: "utf8";
@@ -917,10 +956,12 @@ declare const stepFunctions: {
917
956
  }, zod_v4_core0.$strict>>>;
918
957
  }, zod_v4_core0.$strip>;
919
958
  outputSchema: zod_v40.ZodOptional<zod_v40.ZodObject<{
920
- data: zod_v40.ZodOptional<zod_v40.ZodString>;
959
+ data: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>>;
921
960
  raw: zod_v40.ZodOptional<zod_v40.ZodUnknown>;
922
961
  statusCode: zod_v40.ZodNumber;
923
962
  message: zod_v40.ZodOptional<zod_v40.ZodString>;
963
+ headers: zod_v40.ZodOptional<zod_v40.ZodRecord<zod_v40.ZodString, zod_v40.ZodString>>;
964
+ contentDisposition: zod_v40.ZodOptional<zod_v40.ZodString>;
924
965
  fileMetadata: zod_v40.ZodOptional<zod_v40.ZodObject<{
925
966
  contentType: zod_v40.ZodOptional<zod_v40.ZodString>;
926
967
  contentLength: zod_v40.ZodOptional<zod_v40.ZodNumber>;
@@ -1063,6 +1104,7 @@ type Block = {
1063
1104
  credentials?: Credentials;
1064
1105
  scopes?: string[];
1065
1106
  outputs?: unknown;
1107
+ streamOutput?: StreamOutputData;
1066
1108
  nextCursor?: Cursor | null;
1067
1109
  response?: {
1068
1110
  statusCode: number;
@@ -1150,6 +1192,18 @@ type StepFunctionInstance = {
1150
1192
  inputSchema?: ZodType;
1151
1193
  outputSchema?: ZodType;
1152
1194
  };
1195
+ type StreamOutputData = {
1196
+ stream: Readable;
1197
+ headers: Record<string, string>;
1198
+ contentDisposition: string;
1199
+ fileMetadata: {
1200
+ contentType?: string;
1201
+ contentLength?: number;
1202
+ fileName?: string;
1203
+ lastModified?: string;
1204
+ etag?: string;
1205
+ };
1206
+ };
1153
1207
  type StepFunctionOutput = {
1154
1208
  block: Block;
1155
1209
  successful: boolean;
@@ -1157,6 +1211,7 @@ type StepFunctionOutput = {
1157
1211
  output?: {
1158
1212
  [name: string]: unknown;
1159
1213
  };
1214
+ streamOutput?: StreamOutputData;
1160
1215
  };
1161
1216
  //#endregion
1162
1217
  //#region src/steps/types.d.ts
@@ -1479,4 +1534,4 @@ type Account = {
1479
1534
  originOwnerName?: string;
1480
1535
  };
1481
1536
  //#endregion
1482
- 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 EnumOneOf, type FieldConfig, type Guide, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type Source, type Step, type StepFunction, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
1537
+ 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 EnumOneOf, type FieldConfig, type Guide, type GuideSection, type GuideStep, INPUT_ENUM_REGISTRY, type Input, type InputLocation, type ReleaseStage, ReleaseStages, type Schema, type SchemaField, type ScopeDefinition, type Settings, type Source, type Step, type StepFunction, StepFunctionName, type StepFunctionOutput, type StepFunctionParams, StepFunctionsFactory, stepFunctions as StepFunctionsRegistry, type StepsSnapshots, type StreamOutputData, type SupportConfig, type TestActionConfig, areCursorsEqual, decodeCompositeId, encodeCompositeId, expandCursor, getCategoryDetails, getInputEnumValues, isCompositeId, isCoreError, isCursorEmpty, isValidCategory, isValidEnumRef, minifyCursor, updateCursor };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{decodeFromBase64 as e,encodeToBase64 as t,generateSamlAssertion as n,getContentHash as r,getCountryAlpha2CodeByAlpha2Code as i,getCountryAlpha2CodeByAlpha3Code as a,getCountryAlpha2CodeByCitizenship as o,getCountryAlpha2CodeByCountryCode as s,getCountryAlpha2CodeByCountryName as c,getCountryAlpha3CodeByAlpha2Code as l,getCountryAlpha3CodeByAlpha3Code as u,getCountryAlpha3CodeByCountryCode as d,getCountryAlpha3CodeByCountryName as f,getCountryCodeByAlpha2Code as p,getCountryCodeByAlpha3Code as m,getCountryCodeByCountryCode as h,getCountryCodeByCountryName as g,getCountryNameByAlpha2Code as _,getCountryNameByAlpha3Code as v,getCountryNameByCountryCode as y,getCountryNameByCountryName as b,getCountrySubDivisionCodeBySubDivisionName as x,getCountrySubDivisionNameBySubDivisionCode as S,getCountrySubDivisionsByAlpha2Code as C,getDocumentFileFormatFromExtension as w,isMissing as T,isObject as E,isString as D,notMissing as O,safeParseToBoolean as k,safeParseToDateTimeString as A,safeParseToNumber as j,safeParseToString as M,z as N,zStrictObject as P}from"@stackone/utils";import{evaluate as F,isValidExpression as I,safeEvaluate as L,safeEvaluateRecord as R}from"@stackone/expressions";import{CUSTOM_ERROR_CONFIG_SCHEMA as z,HttpMethods as B,HttpResponseError as V,QueryArrayFormats as H,RequestClientFactory as U,RequestParameterLocations as W,createAuthorizationHeaders as G,isFailedStatusCode as ee,parseRequestParameters as K,serializeHttpResponseError as q,translateCustomError as te}from"@stackone/transport";import ne from"form-data";const re={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`}},ie=e=>re[e.toLowerCase()]??null,ae=e=>!!re[e.toLowerCase()],oe=t(`so1!`),se=RegExp(`(?<!\\\\):`,`g`),ce=RegExp(`(?<!\\\\),`,`g`),le=1;var ue=class e extends Error{constructor({category:t,name:n,type:r,context:i,message:a}){super(a),this.name=n??`CoreError`,this.type=r,this.category=t,this.context=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},de=class extends ue{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},fe=class extends de{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},pe=class extends de{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},me=class extends de{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},he=class extends de{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const ge=e=>!T(e)&&`value`in e&&e.value!==void 0,_e=e=>!T(e)&&`identifiers`in e&&e.identifiers!==void 0,ve=(e,t={version:1})=>{if(t.version===1)return we(be(e,t.aliases));throw new he(`Cannot generate ID, unsupported version number: ${t.version}`)},ye=(e,t={version:1})=>{let n=Ce(e,t),r={};return n&&n.split(ce).forEach(e=>{let[n,i]=e.split(se),a=Se(n,t.aliases??{});r[a]=De(i)}),r},be=(e,t={})=>{if(ge(e))return xe({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(_e(e))return e.identifiers.map(e=>xe({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new me},xe=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,Ee(e.value)].filter(Boolean).join(`:`),Se=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,Ce=(e,t)=>{if(t.version===1)return Te(e);throw new he(`Cannot decode ID, unsupported version number: ${t.version}`)},we=e=>`${oe}${t(e)}`,Te=t=>{if(!t.startsWith(oe))throw new fe(`Trying to decode an ID without the header: ${t}`);let n=t.split(oe)[1];if(!n)throw new pe(`Trying to decode an ID without a body: ${t}`);return e(n)},Ee=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),De=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),Oe=e=>T(e)?!1:e.startsWith(oe),ke={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`]},Ae=e=>ke[e],je=e=>e in ke,Me=[`preview`,`beta`,`ga`,`deprecated`],Ne=P({r:N.record(N.string(),P({n:N.number().optional().nullable(),c:N.string().optional().nullable(),p:N.number().optional().nullable()})),v:N.number(),t:N.number()}),Pe=P({remote:N.record(N.string(),P({pageNumber:N.number().optional(),providerPageCursor:N.string().optional(),position:N.number().optional()})),version:N.number(),timestamp:N.number()}),Fe=e=>t(JSON.stringify(Ie(e))),Ie=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}},Le=t=>{try{if(D(t)){let n=e(t),r=JSON.parse(n);return Re(Ne.parse(r))}else return Pe.parse(t),t}catch{return null}},Re=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}},ze=(e,t)=>{let n=typeof e==`string`?Le(e):e,i=typeof t==`string`?Le(t):t;if(n===null||i===null)return n===i;let{timestamp:a,...o}=n,{timestamp:s,...c}=i;return r(o)===r(c)},Be=({cursor:e,ignoreStepIndex:t})=>T(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return(T(t)||r!==t.toString())&&(n=n&&T(i.pageNumber)&&T(i.position)&&T(i.providerPageCursor)),n},!0),Ve=({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=T(n)&&T(r)&&T(i);return T(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},He=e=>e instanceof ue,Ue=P({type:N.literal(`none`)}),We=P({type:N.literal(`basic`),username:N.string().optional(),password:N.string().optional(),encoding:N.string().optional()}),Ge=P({type:N.literal(`bearer`),token:N.string(),includeBearer:N.boolean().optional().default(!0)}),Ke=P({type:N.literal(`oauth2`),authorizationUrl:N.string().optional(),authorizationParams:N.record(N.string(),N.string()).optional(),tokenUrl:N.string().optional(),tokenParams:N.record(N.string(),N.string()).optional(),tokenExpiresIn:N.number().optional(),tokenRefreshExpiresIn:N.number().optional(),token:N.string(),includeBearer:N.boolean().optional().default(!0),scopes:N.string().optional(),scopeDelimiter:N.string().optional(),customHeaders:N.record(N.string(),N.string()).optional(),pkce:N.boolean().optional()}),J=N.discriminatedUnion(`type`,[Ue,We,Ge,Ke]),qe=N.object({baseUrl:N.string().optional(),url:N.string(),method:N.enum(B).optional().default(`get`),authorization:J.optional(),responseType:N.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:N.enum([`base64`,`utf8`,`binary`,`raw`]).optional().default(`base64`),response:P({dataKey:N.string().optional(),fileNameKey:N.string().optional(),contentTypeKey:N.string().optional(),contentIsBase64:N.boolean().optional().default(!1),urlKey:N.string().optional(),forwardAuth:N.boolean().optional().default(!1)}).optional(),maxRedirects:N.number().optional().default(5),followRedirects:N.boolean().optional().default(!0),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),spread:N.boolean().optional(),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional()}),Je=P({data:N.string().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional(),fileMetadata:P({contentType:N.string().optional(),contentLength:N.number().optional(),fileName:N.string().optional(),lastModified:N.string().optional(),etag:N.string().optional()}).optional(),finalUrl:N.string().optional()}).optional(),Ye=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||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?R({...t,args:r},e):{},a={...i,customErrors:t?.customErrors},{baseUrl:o,url:s,method:c,authorization:l,args:u,responseType:d,encoding:f,response:p,maxRedirects:m,followRedirects:h}=qe.parse(a),g=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,_=u?K(u):{query:{},body:{},headers:{}},v=G(O(l)?l:J.parse(g)),y={..._?.headers??{},...v},b=e.connector?.rateLimit,x=e.connector?.concurrency,S=b!==void 0||x!==void 0?{rateLimit:b,concurrency:x}:void 0;try{return{block:e,successful:!0,output:await Xe({httpClient:e.httpClient,baseUrl:o??``,url:s,method:c,headers:y,queryParams:_?.query,body:_?.body,responseType:d,encoding:f,response:p,maxRedirects:h?m:0,requestConfig:S,authHeaders:v})}}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},Xe=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 Ze({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=X(g.data,l),v=Qe(g.headers);return{data:_,raw:g,statusCode:g?.status,message:g?.message,fileMetadata:v,finalUrl:g?.requestUrl}},Ze=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=Y(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=X(n.data,i),u=Qe(n.headers);if(r.fileNameKey){let e=Y(c,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=Y(c,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}return{data:l,raw:n,statusCode:n?.status,message:n?.message,fileMetadata:u,finalUrl:e}}}if(r.dataKey){let e=Y(c,r.dataKey);if(T(e))throw Error(`No file content found at path: ${r.dataKey}`);let t;if(typeof e==`string`)t=r.contentIsBase64?i===`base64`?e:Buffer.from(e,`base64`).toString(i===`raw`?`binary`:i):X(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=X(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=Y(c,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=Y(c,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}return{data:t,raw:n,statusCode:n?.status,message:n?.message,fileMetadata:a}}throw Error(`JSON response handling requires either urlKey or dataKey to be specified`)},Y=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if(T(r)||typeof r!=`object`)return;r=r[e]}return r},X=(e,t)=>{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)},Qe=e=>{let t=e[`content-type`],n=e[`content-length`],r=e[`content-disposition`],i=e[`last-modified`],a=e.etag,o=n?parseInt(n,10):void 0,s=$e(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},$e=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]},et=N.object({stepsDataToGroup:N.array(N.string()),isSingleRecord:N.boolean().optional()}),tt=N.object({data:N.unknown()}),nt=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=et.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)}}},rt=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=at(e,t,it(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=at(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}},it=(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},{}),at=(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}=ot(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}},ot=(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=F(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}},st=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return i;case`country_alpha3code_by_alpha3code`:return u;case`country_code_by_country_code`:return h;case`country_name_by_country_name`:return b;case`country_name_by_alpha3code`:return v;case`country_name_by_alpha2code`:return _;case`country_name_by_country_code`:return y;case`country_alpha3code_by_alpha2code`:return l;case`country_alpha3code_by_country_name`:return f;case`country_alpha3code_by_country_code`:return d;case`country_alpha2code_by_alpha3code`:return a;case`country_alpha2code_by_country_name`:return c;case`country_alpha2code_by_country_code`:return s;case`country_code_by_alpha2code`:return p;case`country_code_by_alpha3code`:return m;case`country_code_by_country_name`:return g;case`country_subdivisions_by_alpha2code`:return C;case`country_subdivision_code_by_subdivision_name`:return x;case`country_alpha2code_by_citizenship`:return o;case`country_subdivision_name_by_subdivision_code`:return S;case`document_file_format_from_extension`:return w;default:return}},ct=P({targetFieldKey:N.string(),alias:N.string().optional(),expression:N.string().optional(),values:N.unknown().optional(),type:N.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:N.boolean().default(!1),custom:N.boolean().default(!1),hidden:N.boolean().default(!1),enumMapper:P({matcher:N.string().or(P({matchExpression:N.string(),value:N.string()}).array())}).optional(),properties:N.lazy(()=>ct).array().optional(),requiredScopes:N.string().array().optional()}),lt=N.object({fields:ct.array(),dataSource:N.string(),externalSources:N.record(N.string(),N.string()).optional()}),ut=N.object({data:N.unknown()}),dt=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=lt.parse(t),o=F(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]=F(a?.[n],e),t),{}),c;if(Array.isArray(o))c=o.map(e=>{let t=Z(r,{...e,external:s});return n.push(...t?.errors||[]),t?.record});else{let e=Z(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}},ft=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=gt(r,t),a=Z(e.properties,i);return O(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},pt=(e,t,n)=>{if(e.expression)try{let r=F(e.expression,t);if(Array.isArray(r))return r.map(t=>{let r=Z(e.properties,t);return O(r?.errors)&&n.push(...r.errors),r?.record}).filter(Boolean);{let t=Z(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}},mt=(e,t,n)=>{let r=O(e.values)?e.values:t,i=Z(e.properties,r);return O(i?.errors)&&n.push(...i.errors),i?.record},ht=(e,t,n)=>{if(!T(e.properties))return e.array&&Array.isArray(e.values)?ft(e,t,n):e.array&&e.expression?pt(e,t,n):mt(e,t,n)},Z=(e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=ht(a,t,r),e===void 0)continue}else{let{error:n,value:i}=_t(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}},gt=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if(I(e))try{return F(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>gt(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=gt(r,t);return n}return e},_t=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return vt(n,t,e);case`enum`:return yt(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},vt=(e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=F(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}},yt=(e,t,n)=>{let r=vt(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=st(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(F(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},bt=[`data`,`headers`],xt=P({type:N.literal(`none`)}),St=P({type:N.literal(`basic`),username:N.string().optional(),password:N.string().optional(),encoding:N.string().optional()}),Ct=P({type:N.literal(`bearer`),token:N.string(),includeBearer:N.boolean().optional().default(!0)}),wt=P({type:N.literal(`oauth2`),authorizationUrl:N.string().optional(),authorizationParams:N.record(N.string(),N.string()).optional(),tokenUrl:N.string().optional(),tokenParams:N.record(N.string(),N.string()).optional(),tokenExpiresIn:N.number().optional(),tokenRefreshExpiresIn:N.number().optional(),token:N.string(),includeBearer:N.boolean().optional().default(!0),scopes:N.string().optional(),scopeDelimiter:N.string().optional(),customHeaders:N.record(N.string(),N.string()).optional(),pkce:N.boolean().optional()}),Tt=N.discriminatedUnion(`type`,[xt,St,Ct,wt]),Et=N.object({baseUrl:N.string(),url:N.string(),method:N.enum(B),saml:P({objectKey:N.string(),key:N.string(),clientId:N.string(),cert:N.unknown().optional(),issuer:N.string().optional(),lifetime:N.number().optional(),nameId:N.string().optional(),audience:N.string().optional(),nameIdentifierFormat:N.string().optional(),tokenEndpoint:N.string().optional()}).optional(),response:P({indexField:N.string().optional(),dataKey:N.string().optional(),nextKey:N.string().optional(),nextKeyIn:N.enum(bt).optional()}).optional(),iterator:P({key:N.string(),in:N.enum(W),condition:N.string().optional()}),cursor:P({token:N.string().optional().nullable(),position:N.number().optional().nullable()}).optional(),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),spread:N.boolean().optional(),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional()}),Dt=P({data:N.unknown().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional(),next:N.string().optional().nullable(),position:N.number().optional()}).optional(),Ot=async({block:e,params:t})=>{let r=U.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||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,c=t?R({...t,args:s},e):{},l={...c,customErrors:t?.customErrors,iterator:{...c?.iterator??{},condition:t?.iterator?.condition}},{baseUrl:u,url:d,method:f,response:p,iterator:m,cursor:h,customErrors:g,args:_,saml:v}=Et.parse(l),y=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=Tt.parse(y),x=_?K(_):{query:{},body:{},headers:{}},S=G(b),C={...x?.headers??{},...S},w=e.connector?.rateLimit,D=e.connector?.concurrency,k=w!==void 0||D!==void 0?{rateLimit:w,concurrency:D}:void 0,A=O(v)?{[v.objectKey]:await n({key:v.key,clientId:v.clientId,cert:v.cert,issuer:v.issuer,lifetime:v.lifetime,audience:v.audience,nameId:v.nameId,nameIdentifierFormat:v.nameIdentifierFormat,tokenEndpoint:v.tokenEndpoint})}:{},j=h?.token??null,M=null,N=null,P=[],I=[],z=[],B=o,V=h?.position??0,H=!0,W=!0,ee=!0;do{H?H=!1:V=0,j!==null&&(m.in===`query`?E(j)?Object.entries(j).forEach(([e,t])=>{x.query[`${m.key}[${e}]`]=t?.toString()??``}):x.query[m.key]=j.toString():m.in===`body`&&(Array.isArray(x.body)||(x.body[m.key]=j)));let t;try{t=await r.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:{...x?.query},method:f,headers:{...C},body:Array.isArray(x?.body)?x.body:{...x?.body,...A},customErrorConfigs:g,requestConfig:k})}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}M=j,I=p?.dataKey?t.data[p?.dataKey]:t.data;let n=I?.slice(V,V+B);B-=n.length,V+=n.length,z.push(t),P=P.concat(n),N=t?.status,j=kt({result:t,response:p}),ee=O(m.condition)?L(m.condition,t.data)===!0:!0,n.length===I.length&&B===0&&(V=0,M=j),W=T(j)&&P.length<o}while(O(j)&&ee&&P.length<o&&I?.length>0);return{block:e,successful:!0,output:{data:Mt(P,p),raw:z,statusCode:N,next:W?void 0:M,position:W?void 0:V}}},kt=({result:e,response:t})=>{if(T(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?At(e.headers,r):jt(e.data,r)},At=(e,t)=>{if(T(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},jt=(e,t)=>{if(T(e)||typeof e!=`object`||!e)return null;let n=L(`$.${t}`,e);return T(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},Mt=(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},Nt=P({type:N.literal(`none`)}),Pt=P({type:N.literal(`basic`),username:N.string().optional(),password:N.string().optional(),encoding:N.string().optional()}),Ft=P({type:N.literal(`bearer`),token:N.string(),includeBearer:N.boolean().optional().default(!0)}),It=P({type:N.literal(`oauth2`),authorizationUrl:N.string().optional(),authorizationParams:N.record(N.string(),N.string()).optional(),tokenUrl:N.string().optional(),tokenParams:N.record(N.string(),N.string()).optional(),tokenExpiresIn:N.number().optional(),tokenRefreshExpiresIn:N.number().optional(),token:N.string(),includeBearer:N.boolean().optional().default(!0),scopes:N.string().optional(),scopeDelimiter:N.string().optional(),customHeaders:N.record(N.string(),N.string()).optional(),pkce:N.boolean().optional()}),Lt=N.discriminatedUnion(`type`,[Nt,Pt,Ft,It]),Rt=N.object({baseUrl:N.string().optional(),url:N.string(),method:N.enum(B),authorization:Lt.optional(),saml:P({objectKey:N.string(),key:N.string(),clientId:N.string(),cert:N.unknown().optional(),issuer:N.string().optional(),lifetime:N.number().optional(),nameId:N.string().optional(),audience:N.string().optional(),nameIdentifierFormat:N.string().optional(),tokenEndpoint:N.string().optional()}).optional(),response:P({collection:N.boolean().optional(),indexField:N.string().optional(),dataKey:N.string().optional()}).optional(),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),spread:N.boolean().optional(),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional()}),zt=P({data:N.unknown().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional()}).optional(),Bt=async({block:e,params:t})=>{let r=U.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=i?i.filter(t=>!t.condition||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,o=t?R({...t,args:a},e):{},s={...o,customErrors:t?.customErrors},{baseUrl:c,url:l,method:u,response:d,authorization:f,customErrors:p,args:m,saml:h}=Rt.parse(s),g=o?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,_=m?K(m):{query:{},body:{},headers:{}},v=G(O(f)?f:Lt.parse(g)),y={..._?.headers??{},...v},b=e.connector?.rateLimit,x=e.connector?.concurrency,S=b!==void 0||x!==void 0?{rateLimit:b,concurrency:x}:void 0,C=O(h)?{[h.objectKey]:await n({key:h.key,clientId:h.clientId,cert:h.cert,issuer:h.issuer,lifetime:h.lifetime,audience:h.audience,nameId:h.nameId,nameIdentifierFormat:h.nameIdentifierFormat,tokenEndpoint:h.tokenEndpoint})}:{},w;try{w=await r.performRequest({httpClient:e.httpClient,url:`${c}${l}`,queryParams:_?.query,method:u,headers:y,body:Array.isArray(_?.body)?_?.body:{..._?.body,...C},customErrorConfigs:p,requestConfig:S})}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:Vt(d?.dataKey?w.data[d?.dataKey]:w.data,d),raw:w,statusCode:w?.status,message:w?.message}}},Vt=(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},Ht=N.object({baseUrl:N.string().optional(),url:N.string(),method:N.enum(B),authorization:N.discriminatedUnion(`type`,[P({type:N.literal(`none`)}),P({type:N.literal(`basic`),username:N.string().optional(),password:N.string().optional(),encoding:N.string().optional()}),P({type:N.literal(`bearer`),token:N.string(),includeBearer:N.boolean().optional().default(!0)}),P({type:N.literal(`oauth2`),token:N.string(),includeBearer:N.boolean().optional().default(!0)})]).optional(),envelope:N.union([N.string(),N.record(N.string(),N.unknown())]).optional(),namespaces:N.strictObject({namespaceIdentifier:N.string(),namespace:N.string()}).array().optional(),soapOperation:N.string().optional(),soapAction:N.string().optional(),useSoapContext:N.boolean().optional().default(!0),response:P({collection:N.boolean().optional(),indexField:N.string().optional(),dataKey:N.string().optional(),nextKey:N.string().optional(),nextKeyIn:N.enum([`data`,`headers`]).optional()}).optional(),iterator:P({key:N.string(),in:N.enum(W)}),cursor:P({token:N.string().optional().nullable(),position:N.number().optional().nullable()}).optional(),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional()}),Ut=P({data:N.unknown().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional(),next:N.string().optional().nullable(),position:N.number().optional()}).optional(),Wt=async({block:e,params:t})=>{let n=U.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||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?R({...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}=Ht.parse(c),C=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,w=_?K(_):{query:{},body:{},headers:{}},E=G(O(h)?h:J.parse(C)),D={...w?.headers??{},...E},k=e.connector?.rateLimit,A=e.connector?.concurrency,j={...(k!==void 0||A!==void 0)&&{rateLimit:k,concurrency:A},soapOperation:v,namespaces:y,envelope:b,soapAction:x,soapContext:S?{username:e.credentials?.username,password:e.credentials?.password}:void 0},M=m?.token??null,N=null,P=null,I=[],L=[],z=[],B=a,V=m?.position??0,H=!0,W;do{H?H=!1:V=0,M!==null&&(p.in===`query`?w.query[p.key]=M.toString():p.in===`body`&&(w.body[p.key]=M));let t;try{t=await n.performRequest({httpClient:e.httpClient,url:`${l}${u}`,queryParams:w?.query,method:d,headers:D,body:w?.body,customErrorConfigs:g,requestConfig:j})}catch(t){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}N=M,L=f?.dataKey?t.data[f?.dataKey]:t.data,Array.isArray(L)||(L=L?[L]:[]);let r=L?.slice(V,V+B);B-=r.length,V+=r.length,z.push(t),I=I.concat(r),P=t?.status,M=Gt({result:t,response:f}),r.length===L.length&&B===0&&(V=0,N=M),W=T(M)&&I.length<a}while(O(M)&&I.length<a&&L?.length>0);return{block:e,successful:!0,output:{data:Jt(I,f),raw:z,statusCode:P,next:W?void 0:N,position:W?void 0:V}}},Gt=({result:e,response:t})=>{if(T(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Kt(e.headers,r):qt(e.data,r)},Kt=(e,t)=>{if(T(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},qt=(e,t)=>{if(T(e)||typeof e!=`object`||!e)return null;let n=e[t];return T(n)?null:typeof n==`string`||typeof n==`number`?n:null},Jt=(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},Yt=N.object({baseUrl:N.string().optional(),url:N.string(),method:N.enum(B),authorization:J.optional(),envelope:N.union([N.string(),N.record(N.string(),N.unknown())]).optional(),namespaces:N.strictObject({namespaceIdentifier:N.string(),namespace:N.string()}).array().optional(),soapOperation:N.string().optional(),soapAction:N.string().optional(),useSoapContext:N.boolean().optional().default(!0),response:P({collection:N.boolean().optional(),indexField:N.string().optional(),dataKey:N.string().optional()}).optional(),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional()}),Xt=P({data:N.unknown().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional()}).optional(),Zt=async({block:e,params:t})=>{let n=U.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?R({...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}=Yt.parse(o),y=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=p?K(p):{query:{},body:{},headers:{}},x=G(O(d)?d:J.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){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:Qt(u?.dataKey?E.data[u?.dataKey]:E.data,u),raw:E,statusCode:E?.status,message:E?.message}}},Qt=(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},$t=N.object({values:N.string().or(N.record(N.string(),N.unknown())).or(N.array(N.unknown()))}),en=N.object({data:N.unknown()}),tn=async({block:e,params:t})=>{let{values:n}=$t.parse(t),r=Array.isArray(n)?n.map(t=>nn(t,e)):nn(n,e);return{block:{...e},successful:!0,output:{data:r}}},nn=(e,t)=>D(e)?L(e,t):E(e)?R(e,t):e,rn=N.object({targetFieldKey:N.string(),type:N.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:N.boolean().default(!1),custom:N.boolean().default(!1),hidden:N.boolean().default(!1),properties:N.lazy(()=>rn).array().optional(),requiredScopes:N.string().array().optional()}),an=N.object({fields:rn.array().optional(),dataSource:N.string()}),on=N.object({data:N.unknown()});let Q=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const sn=({value:e,type:t,format:n})=>{if(T(e))return null;switch(t){case Q.String:return M({value:e});case Q.Number:return j({value:e});case Q.Boolean:return k({value:e});case Q.DateTimeString:return A({value:e,format:n});default:return e}},cn=e=>Object.values(Q).includes(e),ln=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=>un(e,t)):un(e.result,t),{block:{...e,result:n},successful:!0}},un=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;cn(i)&&(!t.custom&&O(n[r])?n[r]=sn({value:e[r],type:i}):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=sn({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},dn=async({block:e,params:t})=>{let{fields:n,dataSource:r}=an.parse(t),i=F(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>pn(e,n)):pn(i,n),{block:{...e},successful:!0,output:{data:a}}},fn=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?pn(t,e.properties):t):typeof t==`object`&&t?pn(t,e.properties):t,pn=(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]=fn(t,e[r]):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=fn(t,e.unified_custom_fields?.[r])):cn(i)&&(!t.custom&&O(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=sn({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]=sn({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},mn=P({fieldName:N.string().describe(`The form field name for the file`),content:N.string().describe(`The file content as base64 encoded string`),filename:N.string().describe(`The filename to use in the upload`),contentType:N.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),hn=N.object({baseUrl:N.string().optional(),url:N.string(),method:N.enum(B).default(`post`),authorization:J.optional(),file:mn.describe(`The file to upload`),additionalFields:P({name:N.string(),value:N.unknown()}).array().optional().describe(`Additional form fields to include in the multipart request`),response:P({collection:N.boolean().optional(),indexField:N.string().optional(),dataKey:N.string().optional()}).optional(),customErrors:z.array().optional(),args:P({name:N.string(),value:N.unknown(),in:N.enum(W),spread:N.boolean().optional(),condition:N.string().optional(),arrayFormat:N.enum(H).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),gn=P({data:N.unknown().optional(),raw:N.unknown().optional(),statusCode:N.number(),message:N.string().optional()}).optional(),_n=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||F(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?R({...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}=hn.parse(a),h=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,g=p?K(p):{query:{},body:{},headers:{}},_=G(O(u)?u:J.parse(h)),v=new ne,y=Buffer.from(d.content,`base64`);if(v.append(d.fieldName,y,{filename:d.filename,contentType:d.contentType}),f)for(let e of f){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);v.append(e.name,t)}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){let n=t;return{block:e,successful:!1,errors:[q(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let T=te(w,m);return ee(T?.status)?{block:e,successful:!1,errors:[q(new V(T,T.message))],output:{statusCode:T.status,message:T.message}}:{block:e,successful:!0,output:{data:vn(l?.dataKey?T.data[l?.dataKey]:T.data,l),raw:T,statusCode:T?.status,message:T?.message}}},vn=(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.DOWNLOAD_FILE=`download_file`,e}({});const yn={[$.TYPECAST]:{v1:{fn:ln},v2:{fn:dn,inputSchema:an,outputSchema:on}},[$.MAP_FIELDS]:{v1:{fn:rt},v2:{fn:dt,inputSchema:lt,outputSchema:ut}},[$.REQUEST]:{v1:{fn:Bt,inputSchema:Rt,outputSchema:zt}},[$.GROUP_DATA]:{v1:{fn:nt,inputSchema:et,outputSchema:tt}},[$.PAGINATED_REQUEST]:{v1:{fn:Ot,inputSchema:Et,outputSchema:Dt}},[$.SOAP_REQUEST]:{v1:{fn:Zt,inputSchema:Yt,outputSchema:Xt}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:Wt,inputSchema:Ht,outputSchema:Ut}},[$.STATIC_VALUES]:{v1:{fn:tn,inputSchema:$t,outputSchema:en}},[$.UPLOAD_FILE]:{v1:{fn:_n,inputSchema:hn,outputSchema:gn}},[$.DOWNLOAD_FILE]:{v1:{fn:Ye,inputSchema:qe,outputSchema:Je}}},bn=(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},xn={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=yn}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:bn(i,e)}:i}};export{J as AUTHORIZATION_SCHEMA,le as COMPOSITE_ID_LATEST_VERSION,ue as CoreError,ke as INPUT_ENUM_REGISTRY,Me as ReleaseStages,$ as StepFunctionName,xn as StepFunctionsFactory,yn as StepFunctionsRegistry,ze as areCursorsEqual,ye as decodeCompositeId,ve as encodeCompositeId,Le as expandCursor,ie as getCategoryDetails,Ae as getInputEnumValues,Oe as isCompositeId,He as isCoreError,Be as isCursorEmpty,ae as isValidCategory,je as isValidEnumRef,Fe as minifyCursor,Ve as updateCursor};
1
+ import{decodeFromBase64 as e,encodeToBase64 as t,generateSamlAssertion as n,getContentHash as r,getCountryAlpha2CodeByAlpha2Code as i,getCountryAlpha2CodeByAlpha3Code as a,getCountryAlpha2CodeByCitizenship as o,getCountryAlpha2CodeByCountryCode as s,getCountryAlpha2CodeByCountryName as c,getCountryAlpha3CodeByAlpha2Code as l,getCountryAlpha3CodeByAlpha3Code as u,getCountryAlpha3CodeByCountryCode as d,getCountryAlpha3CodeByCountryName as f,getCountryCodeByAlpha2Code as p,getCountryCodeByAlpha3Code as m,getCountryCodeByCountryCode as h,getCountryCodeByCountryName as g,getCountryNameByAlpha2Code as _,getCountryNameByAlpha3Code as v,getCountryNameByCountryCode as y,getCountryNameByCountryName as b,getCountrySubDivisionCodeBySubDivisionName as x,getCountrySubDivisionNameBySubDivisionCode as S,getCountrySubDivisionsByAlpha2Code as C,getDocumentFileFormatFromExtension as w,isMissing as T,isObject as E,isString as D,notMissing as O,safeParseToBoolean as ee,safeParseToDateTimeString as te,safeParseToNumber as k,safeParseToString as A,z as j,zStrictObject as M}from"@stackone/utils";import{evaluate as N,isValidExpression as P,safeEvaluate as F,safeEvaluateRecord as I}from"@stackone/expressions";import{CUSTOM_ERROR_CONFIG_SCHEMA as L,HttpMethods as R,HttpResponseError as z,QueryArrayFormats as B,RequestClientFactory as V,RequestParameterLocations as H,createAuthorizationHeaders as U,isFailedStatusCode as ne,parseRequestParameters as W,serializeHttpResponseError as G,translateCustomError as re}from"@stackone/transport";import ie from"mime-types";import ae from"form-data";const oe={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`}},se=e=>oe[e.toLowerCase()]??null,ce=e=>!!oe[e.toLowerCase()],le=t(`so1!`),ue=RegExp(`(?<!\\\\):`,`g`),de=RegExp(`(?<!\\\\),`,`g`),fe=1;var pe=class e extends Error{constructor({category:t,name:n,type:r,context:i,message:a}){super(a),this.name=n??`CoreError`,this.type=r,this.category=t,this.context=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.category}-${this.name} [${this.type}]${e}`}},K=class extends pe{constructor(e,t,n){super({category:`CompositeId`,name:t??`BaseCompositeIdError`,type:e,message:n})}},me=class extends K{constructor(e){super(`COMPOSITE_ID_MISSING_HEADER_ERROR`,`CompositeIdMissingHeaderError`,e??`Invalid compositeId, missing header`)}},he=class extends K{constructor(e){super(`COMPOSITE_ID_MISSING_BODY_ERROR`,`CompositeIdMissingBodyError`,e??`Invalid compositeId, missing body`)}},ge=class extends K{constructor(e){super(`COMPOSITE_ID_UNKNOWN_IDENTIFIER_ERROR`,`CompositeIdUnknownIdentifierError`,e??`Invalid compositeId, unknown identifier`)}},_e=class extends K{constructor(e){super(`COMPOSITE_ID_UNSUPPORTED_VERSION_ERROR`,`CompositeIdUnsupportedVersionError`,e??`Invalid compositeId, unsupported version`)}};const ve=e=>!T(e)&&`value`in e&&e.value!==void 0,ye=e=>!T(e)&&`identifiers`in e&&e.identifiers!==void 0,be=(e,t={version:1})=>{if(t.version===1)return Ee(Se(e,t.aliases));throw new _e(`Cannot generate ID, unsupported version number: ${t.version}`)},xe=(e,t={version:1})=>{let n=Te(e,t),r={};return n&&n.split(de).forEach(e=>{let[n,i]=e.split(ue),a=we(n,t.aliases??{});r[a]=ke(i)}),r},Se=(e,t={})=>{if(ve(e))return Ce({identifier:e,compositeIdAliases:t,isSoleIdentifier:!0});if(ye(e))return e.identifiers.map(e=>Ce({identifier:e,compositeIdAliases:t,isSoleIdentifier:!1})).join(`,`);throw new ge},Ce=({identifier:e,compositeIdAliases:t,isSoleIdentifier:n})=>[n?`id`:t[e.key]||e.key,Oe(e.value)].filter(Boolean).join(`:`),we=(e,t)=>Object.keys(t).find(n=>t[n]===e)??e,Te=(e,t)=>{if(t.version===1)return De(e);throw new _e(`Cannot decode ID, unsupported version number: ${t.version}`)},Ee=e=>`${le}${t(e)}`,De=t=>{if(!t.startsWith(le))throw new me(`Trying to decode an ID without the header: ${t}`);let n=t.split(le)[1];if(!n)throw new he(`Trying to decode an ID without a body: ${t}`);return e(n)},Oe=e=>[`,`,`:`].reduce((e,t)=>e.replace(t,`\\`+t),e),ke=e=>[`,`,`:`].reduce((e,t)=>{let n=`\\`+t;return e.replace(RegExp(`\\\\`+n,`g`),t)},e),Ae=e=>T(e)?!1:e.startsWith(le),je={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`]},Me=e=>je[e],Ne=e=>e in je,Pe=[`preview`,`beta`,`ga`,`deprecated`],Fe=M({r:j.record(j.string(),M({n:j.number().optional().nullable(),c:j.string().optional().nullable(),p:j.number().optional().nullable()})),v:j.number(),t:j.number()}),Ie=M({remote:j.record(j.string(),M({pageNumber:j.number().optional(),providerPageCursor:j.string().optional(),position:j.number().optional()})),version:j.number(),timestamp:j.number()}),Le=e=>t(JSON.stringify(Re(e))),Re=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}},ze=t=>{try{if(D(t)){let n=e(t),r=JSON.parse(n);return Be(Fe.parse(r))}else return Ie.parse(t),t}catch{return null}},Be=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}},Ve=(e,t)=>{let n=typeof e==`string`?ze(e):e,i=typeof t==`string`?ze(t):t;if(n===null||i===null)return n===i;let{timestamp:a,...o}=n,{timestamp:s,...c}=i;return r(o)===r(c)},He=({cursor:e,ignoreStepIndex:t})=>T(e)?!0:Object.keys(e?.remote??{}).reduce((n,r)=>{let i=e?.remote?.[r];return(T(t)||r!==t.toString())&&(n=n&&T(i.pageNumber)&&T(i.position)&&T(i.providerPageCursor)),n},!0),Ue=({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=T(n)&&T(r)&&T(i);return T(e)?{remote:o?{}:{[t]:a},version:2,timestamp:Date.now()}:o?(delete e.remote[t],e):{...e,remote:{...e.remote,[t]:a}}},We=e=>e instanceof pe,Ge=M({type:j.literal(`none`)}),Ke=M({type:j.literal(`basic`),username:j.string().optional(),password:j.string().optional(),encoding:j.string().optional()}),qe=M({type:j.literal(`bearer`),token:j.string(),includeBearer:j.boolean().optional().default(!0)}),Je=M({type:j.literal(`oauth2`),authorizationUrl:j.string().optional(),authorizationParams:j.record(j.string(),j.string()).optional(),tokenUrl:j.string().optional(),tokenParams:j.record(j.string(),j.string()).optional(),tokenExpiresIn:j.number().optional(),tokenRefreshExpiresIn:j.number().optional(),token:j.string(),includeBearer:j.boolean().optional().default(!0),scopes:j.string().optional(),scopeDelimiter:j.string().optional(),customHeaders:j.record(j.string(),j.string()).optional(),pkce:j.boolean().optional()}),q=j.discriminatedUnion(`type`,[Ge,Ke,qe,Je]),Ye=j.object({baseUrl:j.string().optional(),url:j.string(),method:j.enum(R).optional().default(`get`),authorization:q.optional(),responseMode:j.enum([`buffer`,`stream`]).optional().default(`buffer`),responseType:j.enum([`arraybuffer`,`blob`,`text`,`json`]).optional().default(`arraybuffer`),encoding:j.enum([`base64`,`utf8`,`binary`,`raw`,`none`]).optional().default(`base64`),response:M({dataKey:j.string().optional(),fileNameKey:j.string().optional(),contentTypeKey:j.string().optional(),contentIsBase64:j.boolean().optional().default(!1),urlKey:j.string().optional(),forwardAuth:j.boolean().optional().default(!1)}).optional(),maxRedirects:j.number().optional().default(5),followRedirects:j.boolean().optional().default(!0),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),spread:j.boolean().optional(),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional()}),Xe=M({data:j.union([j.string(),j.instanceof(Buffer)]).optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional(),headers:j.record(j.string(),j.string()).optional(),contentDisposition:j.string().optional(),fileMetadata:M({contentType:j.string().optional(),contentLength:j.number().optional(),fileName:j.string().optional(),lastModified:j.string().optional(),etag:j.string().optional()}).optional(),finalUrl:j.string().optional()}).optional(),Ze=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||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?I({...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}=Ye.parse(a),_=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,v=u?W(u):{query:{},body:{},headers:{}},y=U(O(l)?l:q.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 Qe({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 $e({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){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},Qe=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=tt(e.headers),i=rt(r);return{block:t,successful:!0,streamOutput:{stream:e.stream,headers:e.headers,contentDisposition:i,fileMetadata:r}}}catch(e){let n=e;return{block:t,successful:!1,errors:[G(e)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}},$e=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 et({httpClient:t,result:g,response:u,encoding:l,maxRedirects:d,requestConfig:f,authHeaders:p});let _=Y(g.data,l),v=tt(g.headers),y=rt(v);return{data:_,raw:g,statusCode:g?.status,message:g?.message,headers:g.headers,contentDisposition:y,fileMetadata:v,finalUrl:g?.requestUrl}},et=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=J(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=Y(n.data,i),u=tt(n.headers);if(r.fileNameKey){let e=J(c,r.fileNameKey);typeof e==`string`&&(u.fileName=e)}if(r.contentTypeKey){let e=J(c,r.contentTypeKey);typeof e==`string`&&(u.contentType=e)}let d=rt(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=J(c,r.dataKey);if(T(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):Y(e,i);else if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=Y(e,i);else throw Error(`Unexpected file content type at path: ${r.dataKey}`);let a={};if(r.fileNameKey){let e=J(c,r.fileNameKey);typeof e==`string`&&(a.fileName=e)}if(r.contentTypeKey){let e=J(c,r.contentTypeKey);typeof e==`string`&&(a.contentType=e)}let o=rt(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`)},J=(e,t)=>{let n=(t.startsWith(`$.`)?t.slice(2):t).split(`.`),r=e;for(let e of n){if(T(r)||typeof r!=`object`)return;r=r[e]}return r},Y=(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)},tt=e=>{let t=e[`content-type`],n=e[`content-length`],r=e[`content-disposition`],i=e[`last-modified`],a=e.etag,o=n?parseInt(n,10):void 0,s=nt(r);return{contentType:t,contentLength:Number.isNaN(o)?void 0:o,fileName:s,lastModified:i,etag:a}},nt=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]},rt=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=it(n);e&&(r=`attachment; filename="download.${e}"`)}return r},it=e=>{let t=e.split(`;`)[0].trim().toLowerCase();return ie.extension(t)||void 0},at=j.object({stepsDataToGroup:j.array(j.string()),isSingleRecord:j.boolean().optional()}),ot=j.object({data:j.unknown()}),st=async({block:e,params:t})=>{let{stepsDataToGroup:n,isSingleRecord:r}=at.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)}}},ct=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=ut(e,t,lt(r,a,i));return n.push(...o.errors||[]),o.record})}else{let a=ut(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}},lt=(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},{}),ut=(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}=dt(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}},dt=(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=N(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}},ft=e=>{switch(e){case`country_alpha2code_by_alpha2code`:return i;case`country_alpha3code_by_alpha3code`:return u;case`country_code_by_country_code`:return h;case`country_name_by_country_name`:return b;case`country_name_by_alpha3code`:return v;case`country_name_by_alpha2code`:return _;case`country_name_by_country_code`:return y;case`country_alpha3code_by_alpha2code`:return l;case`country_alpha3code_by_country_name`:return f;case`country_alpha3code_by_country_code`:return d;case`country_alpha2code_by_alpha3code`:return a;case`country_alpha2code_by_country_name`:return c;case`country_alpha2code_by_country_code`:return s;case`country_code_by_alpha2code`:return p;case`country_code_by_alpha3code`:return m;case`country_code_by_country_name`:return g;case`country_subdivisions_by_alpha2code`:return C;case`country_subdivision_code_by_subdivision_name`:return x;case`country_alpha2code_by_citizenship`:return o;case`country_subdivision_name_by_subdivision_code`:return S;case`document_file_format_from_extension`:return w;default:return}},pt=M({targetFieldKey:j.string(),alias:j.string().optional(),expression:j.string().optional(),values:j.unknown().optional(),type:j.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:j.boolean().default(!1),custom:j.boolean().default(!1),hidden:j.boolean().default(!1),enumMapper:M({matcher:j.string().or(M({matchExpression:j.string(),value:j.string()}).array())}).optional(),properties:j.lazy(()=>pt).array().optional(),requiredScopes:j.string().array().optional()}),mt=j.object({fields:pt.array(),dataSource:j.string(),externalSources:j.record(j.string(),j.string()).optional()}),ht=j.object({data:j.unknown()}),gt=async({block:e,params:t})=>{let n=[],{fields:r,dataSource:i,externalSources:a}=mt.parse(t),o=N(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]=N(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}},_t=(e,t,n)=>{if(Array.isArray(e.values))return e.values.map(r=>{let i=xt(r,t),a=X(e.properties,i);return O(a?.errors)&&n.push(...a.errors),a?.record}).filter(Boolean)},vt=(e,t,n)=>{if(e.expression)try{let r=N(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}},yt=(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},bt=(e,t,n)=>{if(!T(e.properties))return e.array&&Array.isArray(e.values)?_t(e,t,n):e.array&&e.expression?vt(e,t,n):yt(e,t,n)},X=(e,t)=>{if(!t)return;let n={},r=[],i={};for(let a of e){let e;if(a.type===`object`){if(e=bt(a,t,r),e===void 0)continue}else{let{error:n,value:i}=St(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}},xt=(e,t)=>{if(e==null)return e;if(typeof e==`string`){if(P(e))try{return N(e,t)}catch{return e}return e}if(Array.isArray(e))return e.map(e=>xt(e,t));if(typeof e==`object`){let n={...e};for(let[e,r]of Object.entries(n))n[e]=xt(r,t);return n}return e},St=(e,t,n)=>{switch(n.type){case`string`:case`number`:case`boolean`:case`datetime_string`:return Ct(n,t,e);case`enum`:return wt(n,t,e);default:return{error:{message:`Invalid type`,id:t,targetField:n.targetFieldKey}}}},Ct=(e,t,n)=>{if(!e.expression)return{error:{message:`Expression is empty`,id:t,targetField:e.targetFieldKey}};let r;try{r=N(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}},wt=(e,t,n)=>{let r=Ct(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=ft(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(N(t,n)===!0)return{value:{value:r,source_value:i}}}return{value:{value:`unmapped_value`,source_value:i}}},Tt=[`data`,`headers`],Et=M({type:j.literal(`none`)}),Dt=M({type:j.literal(`basic`),username:j.string().optional(),password:j.string().optional(),encoding:j.string().optional()}),Ot=M({type:j.literal(`bearer`),token:j.string(),includeBearer:j.boolean().optional().default(!0)}),kt=M({type:j.literal(`oauth2`),authorizationUrl:j.string().optional(),authorizationParams:j.record(j.string(),j.string()).optional(),tokenUrl:j.string().optional(),tokenParams:j.record(j.string(),j.string()).optional(),tokenExpiresIn:j.number().optional(),tokenRefreshExpiresIn:j.number().optional(),token:j.string(),includeBearer:j.boolean().optional().default(!0),scopes:j.string().optional(),scopeDelimiter:j.string().optional(),customHeaders:j.record(j.string(),j.string()).optional(),pkce:j.boolean().optional()}),At=j.discriminatedUnion(`type`,[Et,Dt,Ot,kt]),jt=j.object({baseUrl:j.string(),url:j.string(),method:j.enum(R),saml:M({objectKey:j.string(),key:j.string(),clientId:j.string(),cert:j.unknown().optional(),issuer:j.string().optional(),lifetime:j.number().optional(),nameId:j.string().optional(),audience:j.string().optional(),nameIdentifierFormat:j.string().optional(),tokenEndpoint:j.string().optional()}).optional(),response:M({indexField:j.string().optional(),dataKey:j.string().optional(),nextKey:j.string().optional(),nextKeyIn:j.enum(Tt).optional()}).optional(),iterator:M({key:j.string(),in:j.enum(H),condition:j.string().optional()}),cursor:M({token:j.string().optional().nullable(),position:j.number().optional().nullable()}).optional(),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),spread:j.boolean().optional(),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional()}),Mt=M({data:j.unknown().optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional(),next:j.string().optional().nullable(),position:j.number().optional()}).optional(),Nt=async({block:e,params:t})=>{let r=V.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||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,c=t?I({...t,args:s},e):{},l={...c,customErrors:t?.customErrors,iterator:{...c?.iterator??{},condition:t?.iterator?.condition}},{baseUrl:u,url:d,method:f,response:p,iterator:m,cursor:h,customErrors:g,args:_,saml:v}=jt.parse(l),y=c?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=At.parse(y),x=_?W(_):{query:{},body:{},headers:{}},S=U(b),C={...x?.headers??{},...S},w=e.connector?.rateLimit,D=e.connector?.concurrency,ee=w!==void 0||D!==void 0?{rateLimit:w,concurrency:D}:void 0,te=O(v)?{[v.objectKey]:await n({key:v.key,clientId:v.clientId,cert:v.cert,issuer:v.issuer,lifetime:v.lifetime,audience:v.audience,nameId:v.nameId,nameIdentifierFormat:v.nameIdentifierFormat,tokenEndpoint:v.tokenEndpoint})}:{},k=h?.token??null,A=null,j=null,M=[],P=[],L=[],R=o,z=h?.position??0,B=!0,H=!0,ne=!0;do{B?B=!1:z=0,k!==null&&(m.in===`query`?E(k)?Object.entries(k).forEach(([e,t])=>{x.query[`${m.key}[${e}]`]=t?.toString()??``}):x.query[m.key]=k.toString():m.in===`body`&&(Array.isArray(x.body)||(x.body[m.key]=k)));let t;try{t=await r.performRequest({httpClient:e.httpClient,url:`${u}${d}`,queryParams:{...x?.query},method:f,headers:{...C},body:Array.isArray(x?.body)?x.body:{...x?.body,...te},customErrorConfigs:g,requestConfig:ee})}catch(t){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}A=k,P=p?.dataKey?t.data[p?.dataKey]:t.data;let n=P?.slice(z,z+R);R-=n.length,z+=n.length,L.push(t),M=M.concat(n),j=t?.status,k=Pt({result:t,response:p}),ne=O(m.condition)?F(m.condition,t.data)===!0:!0,n.length===P.length&&R===0&&(z=0,A=k),H=T(k)&&M.length<o}while(O(k)&&ne&&M.length<o&&P?.length>0);return{block:e,successful:!0,output:{data:Lt(M,p),raw:L,statusCode:j,next:H?void 0:A,position:H?void 0:z}}},Pt=({result:e,response:t})=>{if(T(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Ft(e.headers,r):It(e.data,r)},Ft=(e,t)=>{if(T(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},It=(e,t)=>{if(T(e)||typeof e!=`object`||!e)return null;let n=F(`$.${t}`,e);return T(n)?null:typeof n==`string`||typeof n==`number`||typeof n==`object`?n:null},Lt=(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},Rt=M({type:j.literal(`none`)}),zt=M({type:j.literal(`basic`),username:j.string().optional(),password:j.string().optional(),encoding:j.string().optional()}),Bt=M({type:j.literal(`bearer`),token:j.string(),includeBearer:j.boolean().optional().default(!0)}),Vt=M({type:j.literal(`oauth2`),authorizationUrl:j.string().optional(),authorizationParams:j.record(j.string(),j.string()).optional(),tokenUrl:j.string().optional(),tokenParams:j.record(j.string(),j.string()).optional(),tokenExpiresIn:j.number().optional(),tokenRefreshExpiresIn:j.number().optional(),token:j.string(),includeBearer:j.boolean().optional().default(!0),scopes:j.string().optional(),scopeDelimiter:j.string().optional(),customHeaders:j.record(j.string(),j.string()).optional(),pkce:j.boolean().optional()}),Ht=j.discriminatedUnion(`type`,[Rt,zt,Bt,Vt]),Ut=j.object({baseUrl:j.string().optional(),url:j.string(),method:j.enum(R),authorization:Ht.optional(),saml:M({objectKey:j.string(),key:j.string(),clientId:j.string(),cert:j.unknown().optional(),issuer:j.string().optional(),lifetime:j.number().optional(),nameId:j.string().optional(),audience:j.string().optional(),nameIdentifierFormat:j.string().optional(),tokenEndpoint:j.string().optional()}).optional(),response:M({collection:j.boolean().optional(),indexField:j.string().optional(),dataKey:j.string().optional()}).optional(),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),spread:j.boolean().optional(),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional()}),Wt=M({data:j.unknown().optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional()}).optional(),Gt=async({block:e,params:t})=>{let r=V.build();if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:i}=t,a=i?i.filter(t=>!t.condition||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,o=t?I({...t,args:a},e):{},s={...o,customErrors:t?.customErrors},{baseUrl:c,url:l,method:u,response:d,authorization:f,customErrors:p,args:m,saml:h}=Ut.parse(s),g=o?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,_=m?W(m):{query:{},body:{},headers:{}},v=U(O(f)?f:Ht.parse(g)),y={..._?.headers??{},...v},b=e.connector?.rateLimit,x=e.connector?.concurrency,S=b!==void 0||x!==void 0?{rateLimit:b,concurrency:x}:void 0,C=O(h)?{[h.objectKey]:await n({key:h.key,clientId:h.clientId,cert:h.cert,issuer:h.issuer,lifetime:h.lifetime,audience:h.audience,nameId:h.nameId,nameIdentifierFormat:h.nameIdentifierFormat,tokenEndpoint:h.tokenEndpoint})}:{},w;try{w=await r.performRequest({httpClient:e.httpClient,url:`${c}${l}`,queryParams:_?.query,method:u,headers:y,body:Array.isArray(_?.body)?_?.body:{..._?.body,...C},customErrorConfigs:p,requestConfig:S})}catch(t){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:Kt(d?.dataKey?w.data[d?.dataKey]:w.data,d),raw:w,statusCode:w?.status,message:w?.message}}},Kt=(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},qt=j.object({baseUrl:j.string().optional(),url:j.string(),method:j.enum(R),authorization:j.discriminatedUnion(`type`,[M({type:j.literal(`none`)}),M({type:j.literal(`basic`),username:j.string().optional(),password:j.string().optional(),encoding:j.string().optional()}),M({type:j.literal(`bearer`),token:j.string(),includeBearer:j.boolean().optional().default(!0)}),M({type:j.literal(`oauth2`),token:j.string(),includeBearer:j.boolean().optional().default(!0)})]).optional(),envelope:j.union([j.string(),j.record(j.string(),j.unknown())]).optional(),namespaces:j.strictObject({namespaceIdentifier:j.string(),namespace:j.string()}).array().optional(),soapOperation:j.string().optional(),soapAction:j.string().optional(),useSoapContext:j.boolean().optional().default(!0),response:M({collection:j.boolean().optional(),indexField:j.string().optional(),dataKey:j.string().optional(),nextKey:j.string().optional(),nextKeyIn:j.enum([`data`,`headers`]).optional()}).optional(),iterator:M({key:j.string(),in:j.enum(H)}),cursor:M({token:j.string().optional().nullable(),position:j.number().optional().nullable()}).optional(),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional()}),Jt=M({data:j.unknown().optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional(),next:j.string().optional().nullable(),position:j.number().optional()}).optional(),Yt=async({block:e,params:t})=>{let n=V.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||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,s=t?I({...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}=qt.parse(c),C=s?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,w=_?W(_):{query:{},body:{},headers:{}},E=U(O(h)?h:q.parse(C)),D={...w?.headers??{},...E},ee=e.connector?.rateLimit,te=e.connector?.concurrency,k={...(ee!==void 0||te!==void 0)&&{rateLimit:ee,concurrency:te},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,P=[],F=[],L=[],R=a,z=m?.position??0,B=!0,H;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:D,body:w?.body,customErrorConfigs:g,requestConfig:k})}catch(t){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}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,L.push(t),P=P.concat(r),M=t?.status,A=Xt({result:t,response:f}),r.length===F.length&&R===0&&(z=0,j=A),H=T(A)&&P.length<a}while(O(A)&&P.length<a&&F?.length>0);return{block:e,successful:!0,output:{data:$t(P,f),raw:L,statusCode:M,next:H?void 0:j,position:H?void 0:z}}},Xt=({result:e,response:t})=>{if(T(t?.nextKey))return null;let n=t?.nextKeyIn??`data`,r=t?.nextKey;return n===`headers`?Zt(e.headers,r):Qt(e.data,r)},Zt=(e,t)=>{if(T(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},Qt=(e,t)=>{if(T(e)||typeof e!=`object`||!e)return null;let n=e[t];return T(n)?null:typeof n==`string`||typeof n==`number`?n:null},$t=(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},en=j.object({baseUrl:j.string().optional(),url:j.string(),method:j.enum(R),authorization:q.optional(),envelope:j.union([j.string(),j.record(j.string(),j.unknown())]).optional(),namespaces:j.strictObject({namespaceIdentifier:j.string(),namespace:j.string()}).array().optional(),soapOperation:j.string().optional(),soapAction:j.string().optional(),useSoapContext:j.boolean().optional().default(!0),response:M({collection:j.boolean().optional(),indexField:j.string().optional(),dataKey:j.string().optional()}).optional(),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional()}),tn=M({data:j.unknown().optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional()}).optional(),nn=async({block:e,params:t})=>{let n=V.build(`soap`);if(!e.httpClient)throw Error(`HTTP client is not configured`);let{args:r}=t,i=r?r.filter(t=>!t.condition||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,a=t?I({...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}=en.parse(o),y=a?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,b=p?W(p):{query:{},body:{},headers:{}},x=U(O(d)?d:q.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){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}return{block:e,successful:!0,output:{data:rn(u?.dataKey?E.data[u?.dataKey]:E.data,u),raw:E,statusCode:E?.status,message:E?.message}}},rn=(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},an=j.object({values:j.string().or(j.record(j.string(),j.unknown())).or(j.array(j.unknown()))}),on=j.object({data:j.unknown()}),sn=async({block:e,params:t})=>{let{values:n}=an.parse(t),r=Array.isArray(n)?n.map(t=>cn(t,e)):cn(n,e);return{block:{...e},successful:!0,output:{data:r}}},cn=(e,t)=>D(e)?F(e,t):E(e)?I(e,t):e,ln=j.object({targetFieldKey:j.string(),type:j.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:j.boolean().default(!1),custom:j.boolean().default(!1),hidden:j.boolean().default(!1),properties:j.lazy(()=>ln).array().optional(),requiredScopes:j.string().array().optional()}),un=j.object({fields:ln.array().optional(),dataSource:j.string()}),dn=j.object({data:j.unknown()});let Z=function(e){return e.String=`string`,e.Number=`number`,e.Boolean=`boolean`,e.DateTimeString=`datetime_string`,e}({});const fn=({value:e,type:t,format:n})=>{if(T(e))return null;switch(t){case Z.String:return A({value:e});case Z.Number:return k({value:e});case Z.Boolean:return ee({value:e});case Z.DateTimeString:return te({value:e,format:n});default:return e}},pn=e=>Object.values(Z).includes(e),mn=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=>hn(e,t)):hn(e.result,t),{block:{...e,result:n},successful:!0}},hn=(e,t)=>{let n={...e};return t.forEach(t=>{let{targetFieldKey:r,type:i}=t;pn(i)&&(!t.custom&&O(n[r])?n[r]=fn({value:e[r],type:i}):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=fn({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},gn=async({block:e,params:t})=>{let{fields:n,dataSource:r}=un.parse(t),i=N(r,e);if(!n||e?.debug?.custom_mappings===`disabled`)return{block:e,successful:!0};let a;return a=Array.isArray(i)?i.map(e=>Q(e,n)):Q(i,n),{block:{...e},successful:!0,output:{data:a}}},_n=(e,t)=>!e.properties||!t?t:Array.isArray(t)?t.map(t=>typeof t==`object`&&t?Q(t,e.properties):t):typeof t==`object`&&t?Q(t,e.properties):t,Q=(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]=_n(t,e[r]):n.unified_custom_fields&&O(n.unified_custom_fields?.[r])&&(n.unified_custom_fields[r]=_n(t,e.unified_custom_fields?.[r])):pn(i)&&(!t.custom&&O(n[r])?(!a||!Array.isArray(n[r]))&&(n[r]=fn({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]=fn({value:e.unified_custom_fields?.[r],type:i})))}),{...n}},vn=M({fieldName:j.string().describe(`The form field name for the file`),content:j.string().describe(`The file content as base64 encoded string`),filename:j.string().describe(`The filename to use in the upload`),contentType:j.string().optional().describe(`The MIME type of the file (e.g., "image/png", "application/pdf")`)}),yn=j.object({baseUrl:j.string().optional(),url:j.string(),method:j.enum(R).default(`post`),authorization:q.optional(),file:vn.describe(`The file to upload`),additionalFields:M({name:j.string(),value:j.unknown()}).array().optional().describe(`Additional form fields to include in the multipart request`),response:M({collection:j.boolean().optional(),indexField:j.string().optional(),dataKey:j.string().optional()}).optional(),customErrors:L.array().optional(),args:M({name:j.string(),value:j.unknown(),in:j.enum(H),spread:j.boolean().optional(),condition:j.string().optional(),arrayFormat:j.enum(B).optional()}).array().optional().describe(`Additional request parameters (query params, headers)`)}),bn=M({data:j.unknown().optional(),raw:j.unknown().optional(),statusCode:j.number(),message:j.string().optional()}).optional(),xn=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||N(t.condition,e)===!0).map(e=>({...e,condition:void 0})):void 0,i=t?I({...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}=yn.parse(a),h=i?.authentication?.[e.context.authenticationType]?.[e.context.environment]?.authorization,g=p?W(p):{query:{},body:{},headers:{}},_=U(O(u)?u:q.parse(h)),v=new ae,y=Buffer.from(d.content,`base64`);if(v.append(d.fieldName,y,{filename:d.filename,contentType:d.contentType}),f)for(let e of f){let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value);v.append(e.name,t)}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){let n=t;return{block:e,successful:!1,errors:[G(t)],output:{statusCode:n?.response?.status??500,message:n?.response?.message}}}let T=re(w,m);return ne(T?.status)?{block:e,successful:!1,errors:[G(new z(T,T.message))],output:{statusCode:T.status,message:T.message}}:{block:e,successful:!0,output:{data:Sn(l?.dataKey?T.data[l?.dataKey]:T.data,l),raw:T,statusCode:T?.status,message:T?.message}}},Sn=(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.DOWNLOAD_FILE=`download_file`,e}({});const Cn={[$.TYPECAST]:{v1:{fn:mn},v2:{fn:gn,inputSchema:un,outputSchema:dn}},[$.MAP_FIELDS]:{v1:{fn:ct},v2:{fn:gt,inputSchema:mt,outputSchema:ht}},[$.REQUEST]:{v1:{fn:Gt,inputSchema:Ut,outputSchema:Wt}},[$.GROUP_DATA]:{v1:{fn:st,inputSchema:at,outputSchema:ot}},[$.PAGINATED_REQUEST]:{v1:{fn:Nt,inputSchema:jt,outputSchema:Mt}},[$.SOAP_REQUEST]:{v1:{fn:nn,inputSchema:en,outputSchema:tn}},[$.SOAP_PAGINATED_REQUEST]:{v1:{fn:Yt,inputSchema:qt,outputSchema:Jt}},[$.STATIC_VALUES]:{v1:{fn:sn,inputSchema:an,outputSchema:on}},[$.UPLOAD_FILE]:{v1:{fn:xn,inputSchema:yn,outputSchema:bn}},[$.DOWNLOAD_FILE]:{v1:{fn:Ze,inputSchema:Ye,outputSchema:Xe}}},wn=(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},Tn={build({functionName:e,version:t=`1`,validateSchemas:n=!1,stepFunctionsList:r=Cn}){let i=r?.[e]?.[`v${t}`];if(!i)throw Error(`Unknown step function: ${e} v${t}`);return n?{...i,fn:wn(i,e)}:i}};export{q as AUTHORIZATION_SCHEMA,fe as COMPOSITE_ID_LATEST_VERSION,pe as CoreError,je as INPUT_ENUM_REGISTRY,Pe as ReleaseStages,$ as StepFunctionName,Tn as StepFunctionsFactory,Cn as StepFunctionsRegistry,Ve as areCursorsEqual,xe as decodeCompositeId,be as encodeCompositeId,ze as expandCursor,se as getCategoryDetails,Me as getInputEnumValues,Ae as isCompositeId,We as isCoreError,He as isCursorEmpty,ce as isValidCategory,Ne as isValidEnumRef,Le as minifyCursor,Ue as updateCursor};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/core",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -45,7 +45,8 @@
45
45
  "@stackone/olap": "*",
46
46
  "@stackone/transport": "*",
47
47
  "@stackone/utils": "*",
48
- "form-data": "^4.0.0"
48
+ "form-data": "4.0.5",
49
+ "mime-types": "3.0.2"
49
50
  },
50
51
  "tsdown": {
51
52
  "dts": true,
@@ -53,5 +54,8 @@
53
54
  "esm",
54
55
  "cjs"
55
56
  ]
57
+ },
58
+ "devDependencies": {
59
+ "@types/mime-types": "3.0.1"
56
60
  }
57
- }
61
+ }