@piiano/forms
Version:
Piiano Forms SDK
2 lines (1 loc) • 2.23 kB
JavaScript
async function x(t,{strategy:n,...e}){switch(n??"tokenize-fields"){case"store-object":return await f(t,e);case"tokenize-object":return await b(t,e);case"tokenize-fields":return await j(t,e);case"encrypt-fields":return await k(t,e);case"encrypt-object":return await w(t,e)}throw new Error(`Unknown strategy "${n}"`)}async function f(t,{client:n,collection:e,tenantId:r,globalVaultIdentifiers:i=!0,reason:a="AppFunctionality",expiration:o}){const{id:c}=await n.objects.addObject({reason:a,collection:e,requestBody:t,xTenantId:r?[r]:void 0,expirationSecs:d(o)});return y(e,"read_object",c,i)}async function b(t,{client:n,collection:e,tenantId:r,globalVaultIdentifiers:i=!0,reason:a="AppFunctionality",storeObject:o=!1,expiration:c}){const[{token_id:u}]=await n.tokens.tokenize({reason:a,collection:e,requestBody:[{object:{fields:t},type:"pci",props:Object.keys(t),store_object:o}],expirationSecs:d(c),xTenantId:r?[r]:void 0});return y(e,"detokenize",u,i)}async function j(t,{client:n,collection:e,tenantId:r,globalVaultIdentifiers:i=!0,reason:a="AppFunctionality",expiration:o}){const c=Object.entries(t),u=await n.tokens.tokenize({reason:a,collection:e,xTenantId:r?[r]:void 0,expirationSecs:d(o),requestBody:c.map(([s,p])=>({object:{fields:{[s]:p}},type:"pci",props:[s]}))});return Object.fromEntries(c.map(([s],p)=>[s,y(e,"detokenize",u[p].token_id,i,s)]))}async function k(t,{client:n,collection:e,tenantId:r,globalVaultIdentifiers:i=!0,reason:a="AppFunctionality",expiration:o}){const c=Object.entries(t),u=await n.crypto.encrypt({reason:a,collection:e,expirationSecs:d(o),requestBody:c.map(([s,p])=>({object:{fields:{_tenant_id:r,[s]:p}},props:[s]}))});return Object.fromEntries(c.map(([s],p)=>[s,y(e,"decrypt_object",u[p].ciphertext,i,s)]))}async function w(t,{client:n,collection:e,tenantId:r,globalVaultIdentifiers:i,reason:a="AppFunctionality",expiration:o}){const[{ciphertext:c}]=await n.crypto.encrypt({reason:a,collection:e,expirationSecs:d(o),requestBody:[{object:{fields:{...t,_tenant_id:r}}}]});return y(e,"decrypt_object",c,i)}function y(t,n,e,r=!0,i){return r?l(t,n,e,i):e}function l(t,n,e,r){return`pvlt:${n}:${t}:${r??""}:${e}:`}function d(t){return t===void 0?void 0:t<0?"":String(t)}export{x as applyStrategy};