@stackone/redaction 1.2.1 → 1.3.1

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.
@@ -0,0 +1 @@
1
+ var e=Object.defineProperty,__name=(t,n)=>e(t,`name`,{value:n,configurable:!0});export{__name as t};
@@ -1,3 +1,5 @@
1
+ import { t as __name } from "./chunk-Cfxk5zVN.mjs";
2
+
1
3
  //#region ../logger/src/types.d.ts
2
4
  interface ILogger {
3
5
  debug({
@@ -1 +1 @@
1
- import{isMissing as e}from"@stackone/utils";const t=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],n=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...t],r=`**redacted**`;let i=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const a=e=>r,o=e=>typeof e==`string`?e.startsWith(r)?e:e.length<=10?r:`${r}${e.slice(-5)}`:r,s=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,c=e=>{let t=e.split(`.`);if(t.length<2)return s(e);let n=s(t.pop()??``);return[...t,n].join(`.`)},l=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+s(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},u=e=>l(e)||c(e),d=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>u(e));return[...e,...n]},f=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},p={[i.FULL]:a,[i.PARTIAL]:o},m=f(t),h=d(n),g=(t,n=i.FULL,r)=>{if(!e(t))try{let e=new URL(t),r=[...e.searchParams].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,m.some(e=>e.toLowerCase()===i)?p[n](r):r),e},new URLSearchParams);return`${e.origin}${e.pathname}${r.toString()?`?`+r:``}${e.hash}`}catch(e){return r?.warning({message:`Invalid URL provided, unable to redact`,context:{value:t,error:e},category:`redactUrl`}),t}},_=(t,n=i.FULL,r)=>{if(!e(t))try{let[e,r]=t.split(`?`);return r?`${e}?${[...new URLSearchParams(r)].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,m.some(e=>e.toLowerCase()===i)?p[n](r):r),e},new URLSearchParams)}`:t}catch(e){return r?.warning({message:`Invalid path provided, unable to redact`,context:{value:t,error:e},category:`redactPath`}),t}},v=(t,n=i.FULL)=>{if(!e(t))return typeof t==`string`?p[n](t):Object.entries(t).reduce((e,[t,r])=>(e[t]=m.some(e=>e.toLowerCase()===t.toLowerCase())?p[n](r):r,e),{})};let y;const b=()=>(e(y)&&(y={[i.FULL]:C({paths:h,serialize:!1,censor:p[i.FULL]}),[i.PARTIAL]:C({paths:h,serialize:!1,censor:p[i.PARTIAL]})}),y),x=e=>e.replace(/\[(\d+)\]/g,`.$1`).split(`.`).filter(Boolean),S=()=>`***`,C=e=>{let t=(e.paths??[]).map(x),n=typeof e.censor==`function`?e.censor:S,r=!!e.serialize,i=e=>{if(typeof e!=`object`||!e)return r?String(e):e;for(let r of t){let t=e;for(let e=0;e<r.length-1&&t&&typeof t==`object`;e++)t=t[r[e]];let i=r[r.length-1];t&&Object.prototype.hasOwnProperty.call(t,i)&&(t[i]=n(t[i]))}return r?JSON.stringify(e):e};return i.restore=()=>{},i},w=e=>{let t=globalThis.structuredClone;return typeof t==`function`?t(e):JSON.parse(JSON.stringify(e))},T=(e,t=i.FULL)=>{if(typeof e!=`object`||!e)return e;let n=w(e);return b()[t](n)},E=!0;export{i as CensorType,E as I_AM_EDGE,v as redactFields,T as redactObject,_ as redactPath,g as redactUrl,w as safeClone};
1
+ import{t as e}from"./chunk-Cfxk5zVN.mjs";import{isMissing as t}from"@stackone/utils";const n=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],r=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...n],i=`**redacted**`;let a=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const censorFn=e=>i,partialCensorFn=e=>typeof e==`string`?e.startsWith(i)?e:e.length<=10?i:`${i}${e.slice(-5)}`:i,capitalizeWord=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,capitalizeLastWordAfterLastDot=e=>{let t=e.split(`.`);if(t.length<2)return capitalizeWord(e);let n=capitalizeWord(t.pop()??``);return[...t,n].join(`.`)},capitalizeWordInsideLastBrackets=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+capitalizeWord(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},capitalizeKey=e=>capitalizeWordInsideLastBrackets(e)||capitalizeLastWordAfterLastDot(e),getPathsToRedact=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>capitalizeKey(e));return[...e,...n]},getKeysToRedact=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},o={[a.FULL]:censorFn,[a.PARTIAL]:partialCensorFn},s=getKeysToRedact(n),c=getPathsToRedact(r),redactUrl=(e,n=a.FULL,r)=>{if(!t(e))try{let t=new URL(e),r=[...t.searchParams].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,s.some(e=>e.toLowerCase()===i)?o[n](r):r),e},new URLSearchParams);return`${t.origin}${t.pathname}${r.toString()?`?`+r:``}${t.hash}`}catch(t){return r?.warning({message:`Invalid URL provided, unable to redact`,context:{value:e,error:t},category:`redactUrl`}),e}},redactPath=(e,n=a.FULL,r)=>{if(!t(e))try{let[t,r]=e.split(`?`);return r?`${t}?${[...new URLSearchParams(r)].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,s.some(e=>e.toLowerCase()===i)?o[n](r):r),e},new URLSearchParams)}`:e}catch(t){return r?.warning({message:`Invalid path provided, unable to redact`,context:{value:e,error:t},category:`redactPath`}),e}},redactFields=(e,n=a.FULL)=>{if(!t(e))return typeof e==`string`?o[n](e):Object.entries(e).reduce((e,[t,r])=>(e[t]=s.some(e=>e.toLowerCase()===t.toLowerCase())?o[n](r):r,e),{})};let l;const getRedactors=()=>(t(l)&&(l={[a.FULL]:edgeRedact({paths:c,serialize:!1,censor:o[a.FULL]}),[a.PARTIAL]:edgeRedact({paths:c,serialize:!1,censor:o[a.PARTIAL]})}),l),split=e=>e.replace(/\[(\d+)\]/g,`.$1`).split(`.`).filter(Boolean),fallbackCensor=()=>`***`,edgeRedact=e=>{let t=(e.paths??[]).map(split),n=typeof e.censor==`function`?e.censor:fallbackCensor,r=!!e.serialize,redact=e=>{if(typeof e!=`object`||!e)return r?String(e):e;for(let r of t){let t=e;for(let e=0;e<r.length-1&&t&&typeof t==`object`;e++)t=t[r[e]];let i=r[r.length-1];t&&Object.prototype.hasOwnProperty.call(t,i)&&(t[i]=n(t[i]))}return r?JSON.stringify(e):e};return redact.restore=()=>{},redact},safeClone=e=>{let t=globalThis.structuredClone;return typeof t==`function`?t(e):JSON.parse(JSON.stringify(e))},redactObject=(e,t=a.FULL)=>{if(typeof e!=`object`||!e)return e;let n=safeClone(e);return getRedactors()[t](n)},u=!0;export{a as CensorType,u as I_AM_EDGE,redactFields,redactObject,redactPath,redactUrl,safeClone};
@@ -0,0 +1 @@
1
+ var e=Object.defineProperty,__name=(t,n)=>e(t,`name`,{value:n,configurable:!0});export{__name as t};
@@ -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(`fast-redact`);l=s(l);const u=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],d=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...u],f=`**redacted**`;let p=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const m=e=>f,h=e=>typeof e==`string`?e.startsWith(f)?e:e.length<=10?f:`${f}${e.slice(-5)}`:f,g=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,_=e=>{let t=e.split(`.`);if(t.length<2)return g(e);let n=g(t.pop()??``);return[...t,n].join(`.`)},v=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+g(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},y=e=>v(e)||_(e),b=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>y(e));return[...e,...n]},x=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},S={[p.FULL]:m,[p.PARTIAL]:h},C=x(u),w=b(d),T=(e,t=p.FULL,n)=>{if(!(0,c.isMissing)(e))try{let n=new URL(e),r=[...n.searchParams].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,C.some(e=>e.toLowerCase()===i)?S[t](r):r),e},new URLSearchParams);return`${n.origin}${n.pathname}${r.toString()?`?`+r:``}${n.hash}`}catch(t){return n?.warning({message:`Invalid URL provided, unable to redact`,context:{value:e,error:t},category:`redactUrl`}),e}},E=(e,t=p.FULL,n)=>{if(!(0,c.isMissing)(e))try{let[n,r]=e.split(`?`);return r?`${n}?${[...new URLSearchParams(r)].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,C.some(e=>e.toLowerCase()===i)?S[t](r):r),e},new URLSearchParams)}`:e}catch(t){return n?.warning({message:`Invalid path provided, unable to redact`,context:{value:e,error:t},category:`redactPath`}),e}},D=(e,t=p.FULL)=>{if(!(0,c.isMissing)(e))return typeof e==`string`?S[t](e):Object.entries(e).reduce((e,[n,r])=>(e[n]=C.some(e=>e.toLowerCase()===n.toLowerCase())?S[t](r):r,e),{})};let O;const k=()=>((0,c.isMissing)(O)&&(O={[p.FULL]:(0,l.default)({paths:w,serialize:!1,censor:S[p.FULL]}),[p.PARTIAL]:(0,l.default)({paths:w,serialize:!1,censor:S[p.PARTIAL]})}),O),A=(e,t=p.FULL)=>(0,c.isMissing)(e)||typeof e!=`object`||!e?e:k()[t]((0,c.deepCopy)(e)),j=!1;exports.CensorType=p,exports.I_AM_EDGE=!1,exports.redactFields=D,exports.redactObject=A,exports.redactPath=E,exports.redactUrl=T;
1
+ var e=Object.create,t=Object.defineProperty,__name=(e,n)=>t(e,`name`,{value:n,configurable:!0}),n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__copyProps=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},__toESM=(n,r,a)=>(a=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let o=require(`@stackone/utils`),s=require(`fast-redact`);s=__toESM(s);const c=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],l=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...c],u=`**redacted**`;let d=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const censorFn=e=>u,partialCensorFn=e=>typeof e==`string`?e.startsWith(u)?e:e.length<=10?u:`${u}${e.slice(-5)}`:u,capitalizeWord=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,capitalizeLastWordAfterLastDot=e=>{let t=e.split(`.`);if(t.length<2)return capitalizeWord(e);let n=capitalizeWord(t.pop()??``);return[...t,n].join(`.`)},capitalizeWordInsideLastBrackets=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+capitalizeWord(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},capitalizeKey=e=>capitalizeWordInsideLastBrackets(e)||capitalizeLastWordAfterLastDot(e),getPathsToRedact=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>capitalizeKey(e));return[...e,...n]},getKeysToRedact=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},f={[d.FULL]:censorFn,[d.PARTIAL]:partialCensorFn},p=getKeysToRedact(c),m=getPathsToRedact(l),redactUrl=(e,t=d.FULL,n)=>{if(!(0,o.isMissing)(e))try{let n=new URL(e),r=[...n.searchParams].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,p.some(e=>e.toLowerCase()===i)?f[t](r):r),e},new URLSearchParams);return`${n.origin}${n.pathname}${r.toString()?`?`+r:``}${n.hash}`}catch(t){return n?.warning({message:`Invalid URL provided, unable to redact`,context:{value:e,error:t},category:`redactUrl`}),e}},redactPath=(e,t=d.FULL,n)=>{if(!(0,o.isMissing)(e))try{let[n,r]=e.split(`?`);return r?`${n}?${[...new URLSearchParams(r)].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,p.some(e=>e.toLowerCase()===i)?f[t](r):r),e},new URLSearchParams)}`:e}catch(t){return n?.warning({message:`Invalid path provided, unable to redact`,context:{value:e,error:t},category:`redactPath`}),e}},redactFields=(e,t=d.FULL)=>{if(!(0,o.isMissing)(e))return typeof e==`string`?f[t](e):Object.entries(e).reduce((e,[n,r])=>(e[n]=p.some(e=>e.toLowerCase()===n.toLowerCase())?f[t](r):r,e),{})};let h;const getRedactors=()=>((0,o.isMissing)(h)&&(h={[d.FULL]:(0,s.default)({paths:m,serialize:!1,censor:f[d.FULL]}),[d.PARTIAL]:(0,s.default)({paths:m,serialize:!1,censor:f[d.PARTIAL]})}),h),redactObject=(e,t=d.FULL)=>(0,o.isMissing)(e)||typeof e!=`object`||!e?e:getRedactors()[t]((0,o.deepCopy)(e)),g=!1;exports.CensorType=d,exports.I_AM_EDGE=!1,exports.redactFields=redactFields,exports.redactObject=redactObject,exports.redactPath=redactPath,exports.redactUrl=redactUrl;
@@ -1,3 +1,4 @@
1
+ //#endregion
1
2
  //#region ../logger/src/types.d.ts
2
3
  interface ILogger {
3
4
  debug({
@@ -1,3 +1,5 @@
1
+ import { t as __name } from "./chunk-Cfxk5zVN.mjs";
2
+
1
3
  //#region ../logger/src/types.d.ts
2
4
  interface ILogger {
3
5
  debug({
@@ -1 +1 @@
1
- import{deepCopy as e,isMissing as t}from"@stackone/utils";import n from"fast-redact";const r=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],i=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...r],a=`**redacted**`;let o=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const s=e=>a,c=e=>typeof e==`string`?e.startsWith(a)?e:e.length<=10?a:`${a}${e.slice(-5)}`:a,l=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,u=e=>{let t=e.split(`.`);if(t.length<2)return l(e);let n=l(t.pop()??``);return[...t,n].join(`.`)},d=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+l(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},f=e=>d(e)||u(e),p=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>f(e));return[...e,...n]},m=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},h={[o.FULL]:s,[o.PARTIAL]:c},g=m(r),_=p(i),v=(e,n=o.FULL,r)=>{if(!t(e))try{let t=new URL(e),r=[...t.searchParams].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,g.some(e=>e.toLowerCase()===i)?h[n](r):r),e},new URLSearchParams);return`${t.origin}${t.pathname}${r.toString()?`?`+r:``}${t.hash}`}catch(t){return r?.warning({message:`Invalid URL provided, unable to redact`,context:{value:e,error:t},category:`redactUrl`}),e}},y=(e,n=o.FULL,r)=>{if(!t(e))try{let[t,r]=e.split(`?`);return r?`${t}?${[...new URLSearchParams(r)].reduce((e,[t,r])=>{let i=t.toLowerCase();return e.set(t,g.some(e=>e.toLowerCase()===i)?h[n](r):r),e},new URLSearchParams)}`:e}catch(t){return r?.warning({message:`Invalid path provided, unable to redact`,context:{value:e,error:t},category:`redactPath`}),e}},b=(e,n=o.FULL)=>{if(!t(e))return typeof e==`string`?h[n](e):Object.entries(e).reduce((e,[t,r])=>(e[t]=g.some(e=>e.toLowerCase()===t.toLowerCase())?h[n](r):r,e),{})};let x;const S=()=>(t(x)&&(x={[o.FULL]:n({paths:_,serialize:!1,censor:h[o.FULL]}),[o.PARTIAL]:n({paths:_,serialize:!1,censor:h[o.PARTIAL]})}),x),C=(n,r=o.FULL)=>t(n)||typeof n!=`object`||!n?n:S()[r](e(n)),w=!1;export{o as CensorType,w as I_AM_EDGE,b as redactFields,C as redactObject,y as redactPath,v as redactUrl};
1
+ import{t as e}from"./chunk-Cfxk5zVN.mjs";import{deepCopy as t,isMissing as n}from"@stackone/utils";import r from"fast-redact";const i=[`client_secret`,`access_token`,`refresh_token`,`api_key`,`password`,`job_board_token`,`private_key`,`certificate`,`service_user_token`,`key_id`,`secret_key`,`provhash`,`admin_key`,`session_key`,`id_token`,`authorization`,`bh_rest_token`,`external_trigger_token`,`tempauth`],a=[`req.headers.authorization`,`req.headers.cookie`,`req.headers.cookies`,`req.headers["set-cookie"]`,`req.headers["set-cookies"]`,`req.headers.httpsAgent.options.cert`,`req.headers.httpsAgent.options.key`,`req.headers["x-stackone-external-trigger-token"]`,`error.config.headers.authorization`,`error.config.data`,`error.config.headers.cookie`,`error.config.headers.cookies`,`error.config.headers["set-cookie"]`,`error.config.headers["set-cookies"]`,`error.config.httpsAgent.options.cert`,`error.config.httpsAgent.options.key`,`err.config.headers.authorization`,`err.config.data`,`err.config.headers.cookie`,`err.config.headers.cookies`,`err.config.headers["set-cookie"]`,`err.config.headers["set-cookies"]`,`err.config.httpsAgent.options.cert`,`err.config.httpsAgent.options.key`,`res.headers.authorization`,`res.headers.cookie`,`res.headers.cookies`,`res.headers["set-cookie"]`,`res.headers["set-cookies"]`,`res.headers.httpsAgent.options.cert`,`res.headers.httpsAgent.options.key`,`context.credentials`,...i],o=`**redacted**`;let s=function(e){return e.FULL=`FULL`,e.PARTIAL=`PARTIAL`,e}({});const censorFn=e=>o,partialCensorFn=e=>typeof e==`string`?e.startsWith(o)?e:e.length<=10?o:`${o}${e.slice(-5)}`:o,capitalizeWord=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,capitalizeLastWordAfterLastDot=e=>{let t=e.split(`.`);if(t.length<2)return capitalizeWord(e);let n=capitalizeWord(t.pop()??``);return[...t,n].join(`.`)},capitalizeWordInsideLastBrackets=e=>{let t=e.lastIndexOf(`[`),n=e.indexOf(`]`,t);if(t===-1||n===-1)return;let r=e.slice(t,n+1).replace(/(["'])([^"']*)(["'])/g,(e,t,n)=>n?t+capitalizeWord(n)+t:t+t);return`${e.slice(0,t)}${r}${e.slice(n+1)}`},capitalizeKey=e=>capitalizeWordInsideLastBrackets(e)||capitalizeLastWordAfterLastDot(e),getPathsToRedact=(e=[],t=!0)=>{if(!t)return[];let n=e.map(e=>capitalizeKey(e));return[...e,...n]},getKeysToRedact=(e=[],t=!0)=>{if(!t)return[];let n=new Set;return e.forEach(e=>{if(n.add(e),e.includes(`_`)){let t=e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase());n.add(t)}else{let t=e.replace(/([A-Z])/g,`_$1`).toLowerCase();n.add(t)}}),Array.from(n)},c={[s.FULL]:censorFn,[s.PARTIAL]:partialCensorFn},l=getKeysToRedact(i),u=getPathsToRedact(a),redactUrl=(e,t=s.FULL,r)=>{if(!n(e))try{let n=new URL(e),r=[...n.searchParams].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,l.some(e=>e.toLowerCase()===i)?c[t](r):r),e},new URLSearchParams);return`${n.origin}${n.pathname}${r.toString()?`?`+r:``}${n.hash}`}catch(t){return r?.warning({message:`Invalid URL provided, unable to redact`,context:{value:e,error:t},category:`redactUrl`}),e}},redactPath=(e,t=s.FULL,r)=>{if(!n(e))try{let[n,r]=e.split(`?`);return r?`${n}?${[...new URLSearchParams(r)].reduce((e,[n,r])=>{let i=n.toLowerCase();return e.set(n,l.some(e=>e.toLowerCase()===i)?c[t](r):r),e},new URLSearchParams)}`:e}catch(t){return r?.warning({message:`Invalid path provided, unable to redact`,context:{value:e,error:t},category:`redactPath`}),e}},redactFields=(e,t=s.FULL)=>{if(!n(e))return typeof e==`string`?c[t](e):Object.entries(e).reduce((e,[n,r])=>(e[n]=l.some(e=>e.toLowerCase()===n.toLowerCase())?c[t](r):r,e),{})};let d;const getRedactors=()=>(n(d)&&(d={[s.FULL]:r({paths:u,serialize:!1,censor:c[s.FULL]}),[s.PARTIAL]:r({paths:u,serialize:!1,censor:c[s.PARTIAL]})}),d),redactObject=(e,r=s.FULL)=>n(e)||typeof e!=`object`||!e?e:getRedactors()[r](t(e)),f=!1;export{s as CensorType,f as I_AM_EDGE,redactFields,redactObject,redactPath,redactUrl};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/redaction",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "",
5
5
  "main": "dist/node/index.cjs",
6
6
  "files": [
@@ -51,6 +51,6 @@
51
51
  "dependencies": {
52
52
  "@stackone/logger": "*",
53
53
  "@stackone/utils": "*",
54
- "fast-redact": "^3.3.0"
54
+ "fast-redact": "3.3.0"
55
55
  }
56
- }
56
+ }