@stackone/core 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.mjs CHANGED
@@ -1 +1 @@
1
- import e from"jsonpath";import{isDate as r,isString as t,isBoolean as s,isNumber as n,isObject as i,isMissing as o,notMissing as u}from"@stackone/utils";import*as a from"date-fns";var l;!function(e){e.MAP="map",e.TYPECAST="typecast",e.MAP_FIELDS="map_fields"}(l||(l={}));const d=async({stepFunctions:e,block:r})=>e.reduce((async(e,r)=>r({block:await e})),Promise.resolve(r)),c=async({block:e})=>{const r=e?.fieldConfigs,t=[];if(!r||"disabled"===e?.debug?.custom_mappings)return e;let s;const n=e.providerData,i=e.context.childResource??e.context.subResource??e.context.resource;if(Array.isArray(e.result))s=e.result.map((e=>{const s=n?.[i]?.items;if(!s)return e;const o=y(e.id,e.remote_id,n),u=f(e,r,o);return t.push(...u.errors||[]),u.record}));else{const i=f(e.result,r,n);s=i.record,t.push(...i.errors||[])}return{...e,result:s,customMappingErrors:Object.keys(t).length>0?t:void 0}},y=(e,r,t)=>t?Object.keys(t).reduce(((s,n)=>{const i=t[n];if(!i.items)return s;const o=i.items.find((t=>t.id===e||t.id===r));return o?{...s,[n]:o}:s}),{}):{},f=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=p(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},p=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return o?{value:o}:{error:{message:"Expression returned no value",id:t,targetField:i}}},m=async({block:e})=>{const r=e?.fieldConfigs,t=[],s=e.steps;if(!r||"disabled"===e?.debug?.custom_mappings||!s)return e;let n;if(Array.isArray(e.result)){const i=e.result.length;n=e.result.map(((e,n)=>{const o=g(s,i,n),u=v(e,r,o);return t.push(...u.errors||[]),u.record}))}else{const i=v(e.result,r,s);n=i.record,t.push(...i.errors||[])}return{...e,result:n,customMappingErrors:Object.keys(t).length>0?t:void 0}},g=(e,r,t)=>Object.entries(e).reduce(((e,[s,n])=>{const i=n.output.data;return Array.isArray(i)&&i.length===r?e[s]={output:{data:i[t]}}:e[s]=n,e}),{}),v=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=b(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},b=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return void 0===o?{error:{message:"Expression returned no value",id:t,targetField:i}}:{value:o}},h="yyyy-MM-dd",M=["yyyy-MM-dd","yyyy/MM/dd","dd/MM/yyyy","dd-MM-yyyy","yyyy-dd-MM","yyyy/dd/MM","MM/dd/yyyy","MM-dd-yyyy"],_=({value:e})=>{const r=a.parseISO(e);if(a.isValid(r))return r;const t=new Date;for(const r of M){const s=a.parse(e,r,t);if(a.isValid(s))return s.setUTCHours(0,0,0,0),s}return null},S=({value:e,format:s=h})=>{const n=(({value:e,format:s=h})=>{if(r(e))return e;if(!t(e))return null;try{const r=a.parse(e,s,new Date);return a.isValid(r)?r:_({value:e})}catch(e){return null}})({value:e,format:s});return n?n.toISOString():null};var A;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(A||(A={}));const F=({value:e,type:u,format:a})=>{if(o(e))return null;switch(u){case A.String:return(({value:e})=>t(e)?e:r(e)?e.toISOString():i(e)?JSON.stringify(e):String(e))({value:e});case A.Number:return(({value:e})=>{if(n(e))return e;if(r(e))return null;const t=Number(e);return isNaN(t)?null:t})({value:e});case A.Boolean:return(({value:e})=>s(e)?e:"false"!==e&&"0"!==e&&0!==e&&Boolean(e))({value:e});case A.DateTimeString:return S({value:e,format:a});default:return e}},E=async({block:e})=>{const r=e?.fieldConfigs;if(!r||"disabled"===e?.debug?.custom_mappings)return e;let t;return t=Array.isArray(e.result)?e.result.map((e=>O(e,r))):O(e.result,r),{...e,result:t}},O=(e,r)=>{const t={...e};return r.forEach((r=>{const{targetFieldKey:s,type:n}=r;(e=>Object.values(A).includes(e))(n)&&(r.isUnified&&u(t[s])?t[s]=F({value:e[s],type:n}):t.unified_custom_fields&&u(t.unified_custom_fields?.[s])&&(t.unified_custom_fields[s]=F({value:e.unified_custom_fields?.[s],type:n})))})),{...t}},k={build({functionName:e}){switch(e){case l.MAP:return c;case l.TYPECAST:return E;case l.MAP_FIELDS:return m;default:throw new Error(`Unknown step function: ${e}`)}}},x=({fieldConfigs:e})=>{const r=[];return e&&r.push(k.build({functionName:l.MAP}),k.build({functionName:l.TYPECAST})),r};export{l as StepFunctionName,k as StepFunctionsFactory,x as getFieldMappingStepFunctions,d as stepsBasicPipeRunner};
1
+ import e from"jsonpath";import{evaluate as r}from"@stackone/expressions";import{isDate as t,isString as s,isBoolean as n,isNumber as i,isObject as o,isMissing as u,notMissing as a}from"@stackone/utils";import*as l from"date-fns";var d;!function(e){e.MAP="map",e.TYPECAST="typecast",e.MAP_FIELDS="map_fields"}(d||(d={}));const c=async({stepFunctions:e,block:r})=>e.reduce((async(e,r)=>r({block:await e})),Promise.resolve(r)),y=async({block:e})=>{const r=e?.fieldConfigs,t=[];if(!r||"disabled"===e?.debug?.custom_mappings)return e;let s;const n=e.providerData,i=e.context.childResource??e.context.subResource??e.context.resource;if(Array.isArray(e.result))s=e.result.map((e=>{const s=n?.[i]?.items;if(!s)return e;const o=f(e.id,e.remote_id,n),u=p(e,r,o);return t.push(...u.errors||[]),u.record}));else{const i=p(e.result,r,n);s=i.record,t.push(...i.errors||[])}return{...e,result:s,customMappingErrors:Object.keys(t).length>0?t:void 0}},f=(e,r,t)=>t?Object.keys(t).reduce(((s,n)=>{const i=t[n];if(!i.items)return s;const o=i.items.find((t=>t.id===e||t.id===r));return o?{...s,[n]:o}:s}),{}):{},p=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=m(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},m=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return o?{value:o}:{error:{message:"Expression returned no value",id:t,targetField:i}}},g=async({block:e})=>{const r=e?.fieldConfigs,t=[],s=e.steps;if(!r||"disabled"===e?.debug?.custom_mappings||!s)return e;let n;if(Array.isArray(e.result)){const i=e.result.length;n=e.result.map(((e,n)=>{const o=v(s,i,n),u=b(e,r,o);return t.push(...u.errors||[]),u.record}))}else{const i=b(e.result,r,s);n=i.record,t.push(...i.errors||[])}return{...e,result:n,customMappingErrors:Object.keys(t).length>0?t:void 0}},v=(e,r,t)=>Object.entries(e).reduce(((e,[s,n])=>{const i=n.output.data;return Array.isArray(i)&&i.length===r?e[s]={output:{data:i[t]}}:e[s]=n,e}),{}),b=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=h(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},h=(t,s,n)=>{const{expression:i,targetFieldKey:o}=n;if(!i)return{error:{message:"Expression is empty",id:s,targetField:o}};try{e.parse(i)}catch(e){const n=r(i,t);return null===n?{error:{message:"Invalid expression",id:s,targetField:o}}:{value:n}}const u=i&&e.query(t,i)[0];return void 0===u?{error:{message:"Expression returned no value",id:s,targetField:o}}:{value:u}},M="yyyy-MM-dd",_=["yyyy-MM-dd","yyyy/MM/dd","dd/MM/yyyy","dd-MM-yyyy","yyyy-dd-MM","yyyy/dd/MM","MM/dd/yyyy","MM-dd-yyyy"],S=({value:e})=>{const r=l.parseISO(e);if(l.isValid(r))return r;const t=new Date;for(const r of _){const s=l.parse(e,r,t);if(l.isValid(s))return s.setUTCHours(0,0,0,0),s}return null},A=({value:e,format:r=M})=>{const n=(({value:e,format:r=M})=>{if(t(e))return e;if(!s(e))return null;try{const t=l.parse(e,r,new Date);return l.isValid(t)?t:S({value:e})}catch(e){return null}})({value:e,format:r});return n?n.toISOString():null};var F;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(F||(F={}));const k=({value:e,type:r,format:a})=>{if(u(e))return null;switch(r){case F.String:return(({value:e})=>s(e)?e:t(e)?e.toISOString():o(e)?JSON.stringify(e):String(e))({value:e});case F.Number:return(({value:e})=>{if(i(e))return e;if(t(e))return null;const r=Number(e);return isNaN(r)?null:r})({value:e});case F.Boolean:return(({value:e})=>n(e)?e:"false"!==e&&"0"!==e&&0!==e&&Boolean(e))({value:e});case F.DateTimeString:return A({value:e,format:a});default:return e}},x=async({block:e})=>{const r=e?.fieldConfigs;if(!r||"disabled"===e?.debug?.custom_mappings)return e;let t;return t=Array.isArray(e.result)?e.result.map((e=>E(e,r))):E(e.result,r),{...e,result:t}},E=(e,r)=>{const t={...e};return r.forEach((r=>{const{targetFieldKey:s,type:n}=r;(e=>Object.values(F).includes(e))(n)&&(r.isUnified&&a(t[s])?t[s]=k({value:e[s],type:n}):t.unified_custom_fields&&a(t.unified_custom_fields?.[s])&&(t.unified_custom_fields[s]=k({value:e.unified_custom_fields?.[s],type:n})))})),{...t}},O={build({functionName:e}){switch(e){case d.MAP:return y;case d.TYPECAST:return x;case d.MAP_FIELDS:return g;default:throw new Error(`Unknown step function: ${e}`)}}},j=({fieldConfigs:e})=>{const r=[];return e&&r.push(O.build({functionName:d.MAP}),O.build({functionName:d.TYPECAST})),r};export{d as StepFunctionName,O as StepFunctionsFactory,j as getFieldMappingStepFunctions,c as stepsBasicPipeRunner};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("jsonpath"),r=require("@stackone/utils");function t(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var s,n=t(require("date-fns"));exports.StepFunctionName=void 0,(s=exports.StepFunctionName||(exports.StepFunctionName={})).MAP="map",s.TYPECAST="typecast",s.MAP_FIELDS="map_fields";const i=async({block:e})=>{const r=e?.fieldConfigs,t=[];if(!r||"disabled"===e?.debug?.custom_mappings)return e;let s;const n=e.providerData,i=e.context.childResource??e.context.subResource??e.context.resource;if(Array.isArray(e.result))s=e.result.map((e=>{const s=n?.[i]?.items;if(!s)return e;const a=o(e.id,e.remote_id,n),c=u(e,r,a);return t.push(...c.errors||[]),c.record}));else{const i=u(e.result,r,n);s=i.record,t.push(...i.errors||[])}return{...e,result:s,customMappingErrors:Object.keys(t).length>0?t:void 0}},o=(e,r,t)=>t?Object.keys(t).reduce(((s,n)=>{const i=t[n];if(!i.items)return s;const o=i.items.find((t=>t.id===e||t.id===r));return o?{...s,[n]:o}:s}),{}):{},u=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=a(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},a=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return o?{value:o}:{error:{message:"Expression returned no value",id:t,targetField:i}}},c=async({block:e})=>{const r=e?.fieldConfigs,t=[],s=e.steps;if(!r||"disabled"===e?.debug?.custom_mappings||!s)return e;let n;if(Array.isArray(e.result)){const i=e.result.length;n=e.result.map(((e,n)=>{const o=l(s,i,n),u=d(e,r,o);return t.push(...u.errors||[]),u.record}))}else{const i=d(e.result,r,s);n=i.record,t.push(...i.errors||[])}return{...e,result:n,customMappingErrors:Object.keys(t).length>0?t:void 0}},l=(e,r,t)=>Object.entries(e).reduce(((e,[s,n])=>{const i=n.output.data;return Array.isArray(i)&&i.length===r?e[s]={output:{data:i[t]}}:e[s]=n,e}),{}),d=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=p(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},p=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return void 0===o?{error:{message:"Expression returned no value",id:t,targetField:i}}:{value:o}},y="yyyy-MM-dd",f=["yyyy-MM-dd","yyyy/MM/dd","dd/MM/yyyy","dd-MM-yyyy","yyyy-dd-MM","yyyy/dd/MM","MM/dd/yyyy","MM-dd-yyyy"],g=({value:e})=>{const r=n.parseISO(e);if(n.isValid(r))return r;const t=new Date;for(const r of f){const s=n.parse(e,r,t);if(n.isValid(s))return s.setUTCHours(0,0,0,0),s}return null},m=({value:e,format:t=y})=>{const s=(({value:e,format:t=y})=>{if(r.isDate(e))return e;if(!r.isString(e))return null;try{const r=n.parse(e,t,new Date);return n.isValid(r)?r:g({value:e})}catch(e){return null}})({value:e,format:t});return s?s.toISOString():null};var v;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(v||(v={}));const b=({value:e,type:t,format:s})=>{if(r.isMissing(e))return null;switch(t){case v.String:return(({value:e})=>r.isString(e)?e:r.isDate(e)?e.toISOString():r.isObject(e)?JSON.stringify(e):String(e))({value:e});case v.Number:return(({value:e})=>{if(r.isNumber(e))return e;if(r.isDate(e))return null;const t=Number(e);return isNaN(t)?null:t})({value:e});case v.Boolean:return(({value:e})=>r.isBoolean(e)?e:"false"!==e&&"0"!==e&&0!==e&&Boolean(e))({value:e});case v.DateTimeString:return m({value:e,format:s});default:return e}},S=async({block:e})=>{const r=e?.fieldConfigs;if(!r||"disabled"===e?.debug?.custom_mappings)return e;let t;return t=Array.isArray(e.result)?e.result.map((e=>M(e,r))):M(e.result,r),{...e,result:t}},M=(e,t)=>{const s={...e};return t.forEach((t=>{const{targetFieldKey:n,type:i}=t;(e=>Object.values(v).includes(e))(i)&&(t.isUnified&&r.notMissing(s[n])?s[n]=b({value:e[n],type:i}):s.unified_custom_fields&&r.notMissing(s.unified_custom_fields?.[n])&&(s.unified_custom_fields[n]=b({value:e.unified_custom_fields?.[n],type:i})))})),{...s}},F={build({functionName:e}){switch(e){case exports.StepFunctionName.MAP:return i;case exports.StepFunctionName.TYPECAST:return S;case exports.StepFunctionName.MAP_FIELDS:return c;default:throw new Error(`Unknown step function: ${e}`)}}};exports.StepFunctionsFactory=F,exports.getFieldMappingStepFunctions=({fieldConfigs:e})=>{const r=[];return e&&r.push(F.build({functionName:exports.StepFunctionName.MAP}),F.build({functionName:exports.StepFunctionName.TYPECAST})),r},exports.stepsBasicPipeRunner=async({stepFunctions:e,block:r})=>e.reduce((async(e,r)=>r({block:await e})),Promise.resolve(r));
1
+ "use strict";var e=require("jsonpath"),r=require("@stackone/expressions"),t=require("@stackone/utils");function s(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n,i=s(require("date-fns"));exports.StepFunctionName=void 0,(n=exports.StepFunctionName||(exports.StepFunctionName={})).MAP="map",n.TYPECAST="typecast",n.MAP_FIELDS="map_fields";const o=async({block:e})=>{const r=e?.fieldConfigs,t=[];if(!r||"disabled"===e?.debug?.custom_mappings)return e;let s;const n=e.providerData,i=e.context.childResource??e.context.subResource??e.context.resource;if(Array.isArray(e.result))s=e.result.map((e=>{const s=n?.[i]?.items;if(!s)return e;const o=u(e.id,e.remote_id,n),c=a(e,r,o);return t.push(...c.errors||[]),c.record}));else{const i=a(e.result,r,n);s=i.record,t.push(...i.errors||[])}return{...e,result:s,customMappingErrors:Object.keys(t).length>0?t:void 0}},u=(e,r,t)=>t?Object.keys(t).reduce(((s,n)=>{const i=t[n];if(!i.items)return s;const o=i.items.find((t=>t.id===e||t.id===r));return o?{...s,[n]:o}:s}),{}):{},a=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=c(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},c=(r,t,s)=>{const{expression:n,targetFieldKey:i}=s;if(!n)return{error:{message:"Expression is empty",id:t,targetField:i}};try{e.parse(n)}catch(e){return{error:{message:"Invalid JSON path expression",id:t,targetField:i}}}const o=n&&e.query(r,n)[0];return o?{value:o}:{error:{message:"Expression returned no value",id:t,targetField:i}}},l=async({block:e})=>{const r=e?.fieldConfigs,t=[],s=e.steps;if(!r||"disabled"===e?.debug?.custom_mappings||!s)return e;let n;if(Array.isArray(e.result)){const i=e.result.length;n=e.result.map(((e,n)=>{const o=d(s,i,n),u=p(e,r,o);return t.push(...u.errors||[]),u.record}))}else{const i=p(e.result,r,s);n=i.record,t.push(...i.errors||[])}return{...e,result:n,customMappingErrors:Object.keys(t).length>0?t:void 0}},d=(e,r,t)=>Object.entries(e).reduce(((e,[s,n])=>{const i=n.output.data;return Array.isArray(i)&&i.length===r?e[s]={output:{data:i[t]}}:e[s]=n,e}),{}),p=(e,r,t)=>{if(!e||!t)return{record:e};const s={unified:{...e},..."object"==typeof t?t:{}},n={},i=[],o={...e};for(const t of r){const{error:r,value:u}=y(s,e.id,t);r?i.push(r):t.isUnified?o[t.targetFieldKey]=u:n[t.targetFieldKey]=u}return{record:{...o,unified_custom_fields:Object.keys(n).length>0?n:void 0},errors:i.length>0?i:void 0}},y=(t,s,n)=>{const{expression:i,targetFieldKey:o}=n;if(!i)return{error:{message:"Expression is empty",id:s,targetField:o}};try{e.parse(i)}catch(e){const n=r.evaluate(i,t);return null===n?{error:{message:"Invalid expression",id:s,targetField:o}}:{value:n}}const u=i&&e.query(t,i)[0];return void 0===u?{error:{message:"Expression returned no value",id:s,targetField:o}}:{value:u}},f="yyyy-MM-dd",g=["yyyy-MM-dd","yyyy/MM/dd","dd/MM/yyyy","dd-MM-yyyy","yyyy-dd-MM","yyyy/dd/MM","MM/dd/yyyy","MM-dd-yyyy"],m=({value:e})=>{const r=i.parseISO(e);if(i.isValid(r))return r;const t=new Date;for(const r of g){const s=i.parse(e,r,t);if(i.isValid(s))return s.setUTCHours(0,0,0,0),s}return null},v=({value:e,format:r=f})=>{const s=(({value:e,format:r=f})=>{if(t.isDate(e))return e;if(!t.isString(e))return null;try{const t=i.parse(e,r,new Date);return i.isValid(t)?t:m({value:e})}catch(e){return null}})({value:e,format:r});return s?s.toISOString():null};var b;!function(e){e.String="string",e.Number="number",e.Boolean="boolean",e.DateTimeString="datetime_string"}(b||(b={}));const M=({value:e,type:r,format:s})=>{if(t.isMissing(e))return null;switch(r){case b.String:return(({value:e})=>t.isString(e)?e:t.isDate(e)?e.toISOString():t.isObject(e)?JSON.stringify(e):String(e))({value:e});case b.Number:return(({value:e})=>{if(t.isNumber(e))return e;if(t.isDate(e))return null;const r=Number(e);return isNaN(r)?null:r})({value:e});case b.Boolean:return(({value:e})=>t.isBoolean(e)?e:"false"!==e&&"0"!==e&&0!==e&&Boolean(e))({value:e});case b.DateTimeString:return v({value:e,format:s});default:return e}},S=async({block:e})=>{const r=e?.fieldConfigs;if(!r||"disabled"===e?.debug?.custom_mappings)return e;let t;return t=Array.isArray(e.result)?e.result.map((e=>F(e,r))):F(e.result,r),{...e,result:t}},F=(e,r)=>{const s={...e};return r.forEach((r=>{const{targetFieldKey:n,type:i}=r;(e=>Object.values(b).includes(e))(i)&&(r.isUnified&&t.notMissing(s[n])?s[n]=M({value:e[n],type:i}):s.unified_custom_fields&&t.notMissing(s.unified_custom_fields?.[n])&&(s.unified_custom_fields[n]=M({value:e.unified_custom_fields?.[n],type:i})))})),{...s}},h={build({functionName:e}){switch(e){case exports.StepFunctionName.MAP:return o;case exports.StepFunctionName.TYPECAST:return S;case exports.StepFunctionName.MAP_FIELDS:return l;default:throw new Error(`Unknown step function: ${e}`)}}};exports.StepFunctionsFactory=h,exports.getFieldMappingStepFunctions=({fieldConfigs:e})=>{const r=[];return e&&r.push(h.build({functionName:exports.StepFunctionName.MAP}),h.build({functionName:exports.StepFunctionName.TYPECAST})),r},exports.stepsBasicPipeRunner=async({stepFunctions:e,block:r})=>e.reduce((async(e,r)=>r({block:await e})),Promise.resolve(r));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/core",
3
- "version": "1.17.0",
3
+ "version": "1.18.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.es.js",
@@ -34,6 +34,7 @@
34
34
  "dependencies": {
35
35
  "@stackone/transport": "*",
36
36
  "@stackone/utils": "*",
37
+ "@stackone/expressions": "*",
37
38
  "date-fns": "^3.4.0",
38
39
  "jsonpath": "^1.1.1"
39
40
  },