@lavamoat/lavadome-react
Advanced tools
Comparing version 0.0.14 to 0.0.15
@@ -1,2 +0,2 @@ | ||
(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{LavaDome:()=>ne,toLavaDomeToken:()=>oe});const o=require("react");var n=e.n(o);const{Object:r,Array:a,Function:s,Math:i,parseInt:l,WeakMap:u,Error:p,JSON:c,crypto:m}=globalThis,{defineProperties:d,assign:f,getOwnPropertyDescriptor:h,entries:v,create:y,hasOwn:g}=r,{from:b}=a,{random:w}=i,{stringify:S}=c,D=m?.randomUUID?.bind(m),O=(e,t,o)=>e&&s.prototype.call.bind(h(e,t)[o]),I=O(globalThis?.Element?.prototype,"attachShadow","value"),M=O(globalThis?.Document?.prototype,"createElement","value"),T=O(globalThis?.Node?.prototype,"appendChild","value"),L=O(globalThis?.Node?.prototype,"textContent","set"),_=O(globalThis?.Element?.prototype,"setAttribute","value"),x=O(globalThis?.String?.prototype,"toUpperCase","value"),k=O(globalThis?.Array?.prototype,"map","value"),E=O(globalThis?.Array?.prototype,"join","value"),N=O(globalThis?.Array?.prototype,"keys","value"),j=O(globalThis?.Array?.prototype,"at","value"),U=O(globalThis?.WeakMap?.prototype,"get","value"),P=O(globalThis?.WeakMap?.prototype,"set","value"),A=O(globalThis?.Number?.prototype,"toFixed","value"),R={isInnerInstance:Symbol("isInnerInstance"),unsafeOpenModeShadow:"unsafeOpenModeShadow"},$=e=>function(t,o,n){const r=e[t];return g(e,t)?typeof r!==o?n:r:n},q="abcdefghijklmnopqrstuvwxyz",z="0123456789",C="!@#$%^&*()?.;:\"'[]{}+=-_/",F={letters:q,digits:z,symbols:C,alphanumeric:q+z,all:q+x(q)+z+C},{letters:W,alphanumeric:G,all:J}=F,Y=(e,t)=>e[l(A(w()*t))];function B(e,t,o=""){return e=E(k(v(e),(([e,t])=>`${e}: ${t} !important`)),"; "),function(){const n=M(document,t());return _(n,"style",e),L(n,o),n}}const H=e=>()=>e(),K=H(B({"-webkit-user-modify":"unset","-webkit-user-select":"none","user-select":"none"},(()=>(7,Y(W,26)+E(k(b(N(a(7))),(()=>Y(G,36))),""))))),Q=H(B({top:"-10px",right:"-10px",position:"fixed","font-size":"1px"},(()=>"span"),J)),V=new u;function X(e,t){t=function(e={}){const{unsafeOpenModeShadow:t,isInnerInstance:o}=R,n=$(f(y(null),e)),r=y(null);return r.isInnerInstance=n(o,"boolean",!1),r.unsafeOpenModeShadow=n(t,"boolean",!1),r}(t),d(this,{text:{value:function(e){if("string"!=typeof e)throw new p(`LavaDomeCore: first argument must be a string, instead got ${S(e)}`);if(void 0===j(b(e),1))return L(o,e);k(b(e),(e=>{const n=M(document,"span");t[R.isInnerInstance]=!0,new X(n,t).text(e),T(o,n)})),T(o,Q())}}});const o=K(),n=function(e,t){const{unsafeOpenModeShadow:o,isInnerInstance:n}=t;let r=U(V,e);if(!r){const t={mode:"closed"};o&&(t.mode="open",n||console.warn("LavaDome:",`Initiated with "${R.unsafeOpenModeShadow}" set to true.`,"This leaves LavaDome fully vulnerable, ONLY USE FOR TESTING!")),r=I(e,t),P(V,e,r)}return r}(e,t);T(n,o)}const{all:Z}=F,ee=y(null),te=y(null),oe=e=>{if("string"!=typeof e)throw new Error(`LavaDomeReact: first argument must be a string, instead got ${S(e)}`);if(!g(te,e)){const t=D?D():(Math.random()+1).toString(36).substring(7);te[e]=t,ee[t]=e}return te[e]},ne=({text:e,unsafeOpenModeShadow:t})=>{const r=e,a=(0,o.useRef)(null);return n().createElement("span",{ref:a,__source:{fileName:"/Users/weizman/Documents/lavamoat/LavaDome/packages/react/src/lavadome.jsx",lineNumber:11,columnNumber:9},__self:void 0},n().createElement(re,{host:a,token:r,unsafeOpenModeShadow:t,__source:{fileName:"/Users/weizman/Documents/lavamoat/LavaDome/packages/react/src/lavadome.jsx",lineNumber:12,columnNumber:13},__self:void 0}))};function re({host:e,token:t,unsafeOpenModeShadow:r}){const a=function(e,t){if(!D){if(!t)throw new Error('LavaDomeReact: this runtime environment does not seem to support some API required for LavaDome to perform safely ("crypto.randomUUID").');console.warn("LavaDomeReact:",'It seems that some API required for LavaDome to perform safely is missing ("crypto.randomUUID").',`Since option "${R.unsafeOpenModeShadow}" is enabled,`,"this should be fine, as testing environments are likely to not have support for such features.","If this isn't a testing environment, there's something wrong with your LavaDome setup - this downgrades security!")}const o=ee[e],n="string"==typeof o&&g(te,o),r="string"==typeof e&&g(ee,e);if(!n||!r)throw new Error("LavaDomeReact: first argument must be a valid LavaDome token (replace \"text={'secret'}\" with \"text={toLavaDomeToken('secret')}\")");return o}(t,r),s=(0,o.useRef)(null);return(0,o.useEffect)((()=>{const t={unsafeOpenModeShadow:r};return s.current=new X(e.current,t),()=>s.current=null}),[]),(0,o.useEffect)((()=>s.current.text(a)),[t]),n().createElement(n().Fragment,null)}var ae=exports;for(var se in t)ae[se]=t[se];t.__esModule&&Object.defineProperty(ae,"__esModule",{value:!0})})(); | ||
(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{LavaDome:()=>se,toLavaDomeToken:()=>re});const o=require("react");var n=e.n(o);const{Object:a,Array:r,Function:s,Math:i,parseInt:l,WeakMap:u,Error:p,JSON:c,crypto:m}=globalThis,{defineProperties:d,assign:f,getOwnPropertyDescriptor:h,entries:v,create:y,hasOwn:g}=a,{from:b}=r,{random:w}=i,{stringify:S}=c,D=m?.randomUUID?.bind(m),O=(e,t,o)=>e&&s.prototype.call.bind(h(e,t)[o]),I=O(globalThis?.Element?.prototype,"attachShadow","value"),M=O(globalThis?.Document?.prototype,"createElement","value"),T=O(globalThis?.Node?.prototype,"appendChild","value"),L=O(globalThis?.Node?.prototype,"textContent","set"),_=O(globalThis?.Element?.prototype,"setAttribute","value"),x=O(globalThis?.String?.prototype,"toUpperCase","value"),k=O(globalThis?.Array?.prototype,"map","value"),E=O(globalThis?.Array?.prototype,"join","value"),N=O(globalThis?.Array?.prototype,"keys","value"),j=O(globalThis?.Array?.prototype,"at","value"),U=O(globalThis?.WeakMap?.prototype,"get","value"),P=O(globalThis?.WeakMap?.prototype,"set","value"),A=O(globalThis?.Number?.prototype,"toFixed","value"),$={isInnerInstance:Symbol("isInnerInstance"),unsafeOpenModeShadow:"unsafeOpenModeShadow"},R=e=>function(t,o,n){const a=e[t];return g(e,t)?typeof a!==o?n:a:n},q="abcdefghijklmnopqrstuvwxyz",z="0123456789",C="!@#$%^&*()?.;:\"'[]{}+=-_/",F={letters:q,digits:z,symbols:C,alphanumeric:q+z,all:q+x(q)+z+C},{letters:W,alphanumeric:G,all:J}=F,Y=(e,t)=>e[l(A(w()*t))];function B(e,t,o=""){return e=E(k(v(e),(([e,t])=>`${e}: ${t} !important`)),"; "),function(){const n=M(document,t());return _(n,"style",e),L(n,o),n}}const H=e=>()=>e(),K=H(B({"-webkit-user-modify":"unset","-webkit-user-select":"none","user-select":"none"},(()=>(7,Y(W,26)+E(k(b(N(r(7))),(()=>Y(G,36))),""))))),Q=H(B({top:"-10px",right:"-10px",position:"fixed","font-size":"1px"},(()=>"span"),J)),V=new u;function X(e,t){t=function(e={}){const{unsafeOpenModeShadow:t,isInnerInstance:o}=$,n=R(f(y(null),e)),a=y(null);return a.isInnerInstance=n(o,"boolean",!1),a.unsafeOpenModeShadow=n(t,"boolean",!1),a}(t),d(this,{text:{value:function(e){if("string"!=typeof e)throw new p(`LavaDomeCore: first argument must be a string, instead got ${S(e)}`);if(void 0===j(b(e),1))return L(o,e);k(b(e),(e=>{const n=M(document,"span");t[$.isInnerInstance]=!0,new X(n,t).text(e),T(o,n)})),T(o,Q())}}});const o=K(),n=function(e,t){const{unsafeOpenModeShadow:o,isInnerInstance:n}=t;let a=U(V,e);if(!a){const t={mode:"closed"};o&&(t.mode="open",n||console.warn("LavaDome:",`Initiated with "${$.unsafeOpenModeShadow}" set to true.`,"This leaves LavaDome fully vulnerable, ONLY USE FOR TESTING!")),a=I(e,t),P(V,e,a)}return a}(e,t);T(n,o)}const{all:Z}=F,ee=y(null),te=y(null),oe=y(null),ne=!!D,ae=()=>ne?D():(Math.random()+1).toString(36).substring(7),re=e=>{if("string"!=typeof e)throw new Error(`LavaDomeReact: first argument must be a string, instead got ${S(e)}`);if(!g(te,e)){const t=ae();te[e]=t,ee[t]=e}return te[e]},se=({text:e,unsafeOpenModeShadow:t})=>{const a=e,r=(0,o.useRef)(null);return n().createElement("span",{ref:r,__source:{fileName:"/Users/weizman/Documents/lavamoat/LavaDome/packages/react/src/lavadome.jsx",lineNumber:11,columnNumber:9},__self:void 0},n().createElement(ie,{host:r,token:a,unsafeOpenModeShadow:t,__source:{fileName:"/Users/weizman/Documents/lavamoat/LavaDome/packages/react/src/lavadome.jsx",lineNumber:12,columnNumber:13},__self:void 0}))};function ie({host:e,token:t,unsafeOpenModeShadow:a}){let r;const s=function(e,t){if(!ne){if(!t)throw new Error('LavaDomeReact: this runtime environment does not seem to support some API required for LavaDome to perform safely ("crypto.randomUUID").');console.warn("LavaDomeReact:",'It seems that some API required for LavaDome to perform safely is missing ("crypto.randomUUID").',`Since option "${$.unsafeOpenModeShadow}" is enabled,`,"this should be fine, as testing environments are likely to not have support for such features.","If this isn't a testing environment, there's something wrong with your LavaDome setup - this downgrades security!")}const o=ee[e],n="string"==typeof o&&g(te,o),a="string"==typeof e&&g(ee,e);if(!n||!a)throw new Error("LavaDomeReact: first argument must be a valid LavaDome token (replace \"text={'secret'}\" with \"text={toLavaDomeToken('secret')}\")");return o}(t,a);(0,o.useEffect)((()=>{const t={unsafeOpenModeShadow:a};return r=new X(e.current,t),()=>r=null}),[]);const i=function(e){return g(oe,e)||(oe[e]=ae()),oe[e]}(t);return(0,o.useEffect)((()=>r.text(s)),[i]),n().createElement(n().Fragment,null)}var le=exports;for(var ue in t)le[ue]=t[ue];t.__esModule&&Object.defineProperty(le,"__esModule",{value:!0})})(); | ||
//# sourceMappingURL=main.js.map |
{ | ||
"name": "@lavamoat/lavadome-react", | ||
"version": "0.0.14", | ||
"version": "0.0.15", | ||
"description": "", | ||
@@ -37,3 +37,3 @@ "license": "MIT", | ||
"dependencies": { | ||
"@lavamoat/lavadome-core": "^0.0.14", | ||
"@lavamoat/lavadome-core": "^0.0.15", | ||
"@lavamoat/preinstall-always-fail": "^2.0.0" | ||
@@ -40,0 +40,0 @@ }, |
import React, { useEffect, useRef } from 'react' | ||
import { LavaDome as LavaDomeCore } from "@lavamoat/lavadome-core" | ||
import { tokenToText } from "./token.mjs"; | ||
import {tokenToDep, tokenToText} from "./token.mjs"; | ||
@@ -21,5 +21,6 @@ export const LavaDome = ({ text, unsafeOpenModeShadow }) => { | ||
function LavaDomeShadow({ host, token, unsafeOpenModeShadow }) { | ||
let lavadome; | ||
// exchange token for sensitive text before check | ||
const text = tokenToText(token, unsafeOpenModeShadow); | ||
const lavadome = useRef(null); | ||
@@ -29,10 +30,13 @@ // generate a lavadome instance reference with a teardown | ||
const opts = { unsafeOpenModeShadow }; | ||
lavadome.current = new LavaDomeCore(host.current, opts); | ||
return () => lavadome.current = null; | ||
lavadome = new LavaDomeCore(host.current, opts); | ||
return () => lavadome = null; | ||
}, []); | ||
// use a unique and useless representation of the token as the useEffect dep | ||
const dep = tokenToDep(token); | ||
// update lavadome secret text (given that the token is updated too) | ||
useEffect(() => lavadome.current.text(text), [token]); | ||
useEffect(() => lavadome.text(text), [dep]); | ||
return <></>; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
17888
110
+ Added@lavamoat/lavadome-core@0.0.15(transitive)
- Removed@lavamoat/lavadome-core@0.0.14(transitive)