From a1cb6de4fc559ad28fc935514a8c2224287984de Mon Sep 17 00:00:00 2001 From: Vu Nam Date: Tue, 13 Aug 2024 10:37:36 +0100 Subject: [PATCH] Add example project --- README.md | 18 ++++- docs/images/example.png | Bin 0 -> 39628 bytes docs/working-with-frame-events.md | 16 ++-- example/assets/ChildFrame.html | 11 ++- example/assets/child.js | 24 ++++-- example/assets/index.html | 11 ++- example/assets/parent.js | 52 ++++++++----- package.json | 4 +- yarn.lock | 120 +++++++++++++++++++++++++++++- 9 files changed, 216 insertions(+), 40 deletions(-) create mode 100644 docs/images/example.png diff --git a/README.md b/README.md index 6411712..ad20d25 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,21 @@ Events are sent two way, parent frame to child frame and child frame to parent f ![Event Flow](./docs/images/event_flow.svg "Event FLow Diagram") Parent document -## Example +## Example Project -In the main document: +An example is included in the project in the `/example` folder. Run the following command to see it in action: + +```bash + yarn start:demo +``` + +Go to `http://localhost:3030` to see the demo app. + +![Example](./docs/images/example.png "Example") + +## Example Code + +In the parent document: ```typescript const state = { @@ -38,7 +50,7 @@ const myAPI = new ParentFrame({ child: document.querySelector("iframe"), methods: { updateCounter: function () { - state.counter = state.counter++; + state.counter++; this.send("counterUpdated", { counter: state.counter, }); diff --git a/docs/images/example.png b/docs/images/example.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed3e95fbc4595289756fc6478c3a0087767fd97 GIT binary patch literal 39628 zcmeFZRahOt)-8%GG`KqicMa~ro#5^o+}$;h0Kwgz;O-VekU+5D7Tn$KHVN7PzW03h ze&L`W1J?aVB#O~JsZKfA=V%k(N@^eMd2+QUYY|E-7;@wR*py1UvHrNH2e z^n=#;GzUZe$!AfObTJrnb1E24VQQ|OP4bBB-})=-O53>qoO+t}h z9BjXXMHCuSm={9Qm05u=)A9U-6r4kyO#We9no9Dj!|qIl==Fy?X4;zbi|WSthvSX= z8=;>|X{}FtcBvz>zs#HkEkr(QBatAYm(3$#w}~v+y`%X}*4@%i6*xhpKglOEz;%M? zKs;oH``i3;itWz}XhuBk{jwm7=1cgSWGz490N3TNyAm*N~N=J)o@X|8q`7( zL`V?fpL+~RWcXg8BNzsUli?JpevS5fs;JoDpuR=0$SAe?25#>Ib58WDK8JM$yQQ05 z=I*9g<@15go8J!Va2C9-i;nQepTMT5rhS;2Z7K?KUV?cbLRoR+L$^U zlDOMg+dA>M^OOF$f(Q8iT+BpD^5+s~D}GW9IYkl?J4aIz4n}51W>Nuo5)u+VM-ww1 zB~kI0>c9~{sfDw%Jr5I;o0}V>8ylmYqd5}`H#avEGb|C7rNlBj@`p>_=&uQvz`9Ce$I=yrY=pfVc873A+ zW~Tq#8>q_nT*{+p>27MRDQam0mfSr|%@6YxB%bEXa@xN+n{C7>3|E~F8Xa2u6 zRh>*7MeJ;VCY=TTXJlR~|M$t4ihNAZJ^wFD{5A8RQozmv@O(`F88ZR+(x56`Ffbu7 zDN$h+ckulTm?rc-tbSzO9m3Cg`H|TW5%3z+w7G#AD429u=Oz9jVcFri5Nh-qnbhHk zs9zywP(WhfJLCCM2}`^lXIVpE;(k!hE~M$$+CFaG9WE};mUPaVjAU}N4WKHLVxWHv?wJ71N8kKR7V8v_Rr0;l{#*B z%N(y3-OQ z7uU`G*(j6)*EPs+pe}N}KxQZclg>LSiAi5z*#Y~*-71p-G@nkhAE|+D zwoR+hG#XXeanMv}Tcb&ft!_g=w}N^cSjL4d9QT2KWohB(sDM!tFU#_`ShSrD?+$(1<}E|?Clg2w_jsA9Y3=^UGY*ZfP0$!kGztuL?4T-XyV~#$pgh-a#>EW*n(lMDjLYEHL?nE-Cz{ z5I?V9&fE1P3qd{5$h^%b2fx_F!yw+7@+XKFr$G!zWY7-%>Xf8fteDgF{WDq6c2Vh% za`0D&tq`j!KF9U&xL@hn%Lmueh6vtI4_Cs5mp^f{qh$-i_yx8~C&97j7085~Mqtjilq+BSTQ?HLbNC zb?oJHQrS}Eh(%(7SJoVK&mOIq?t+K(Fz87KW(7cb7@@Gnev}TZ2@gJJm@|zJCggPm z?M{}g;r27T5CiY*uNd&@2k(_R!p#vFpW~iaOri|<3&_L*)-B!KzUN~S?S$(mS+{WtcYmyUl!WE+yX?5=^dASuAoxd+sBP|Atqj}inf1< zz!U9RyhN~@Zz#WixLVG<+V29U`D~KmXhJO7r5>rB0hCysAiKSIdC&1`FWEPblRoUA zLL*Xf0atWok>sdwa(BI4ezt8$L2nk!H@^4R*}sn$XhXQD>F4^`M)`UvI>ty&1b~N9 zLJu#C^W2G$%_gD$Wu8-Ag$zrD9cz|MyC z@Ih0R`uYMl>*zNp{lxW0fxLtj5+89^F$vHLmz+1cVTdt?Q}XzmTwiT||76e=qA!}n zs4E-e`LRl-koBRc2$l+w!^rVf=7%i5N6kX{ z3|hO6n?mYWF}xAisx_1GvFCf!qj4!2G~S}XlVV(YcptT2?Qf44DP*BgfF6npF+pBx z)G~>e1+dcjj8*+mA5rU5QNuS}5Ze~dQlhn~~ z82;KT`q|kq4<(;c0&|;-@MZ6vMz|&JSc(IvveV}wq=jL5}&89*w!5c6ZX~V&K^V&Zoj$_XV7%bJ!j_5 zlm&_lQ?iB_lv2I}_h&Kb4Mlu?&@~yP9bf;NJhO%oO6)9EOL0(GG2LGI)nOZv-~CC< z>G4M#&2~?h?>=?P+zhGIx5eqY{63m7nQxyrs@c!}S2f@lh`3T!q+ou&Vl=4oD()ZF z5JwX)59a5SY8*GDM=8AY(vYAiRIoKr19XWN?Ur9*(c4Q*C5E6Y@Uc+0Sxyvs7CgxfM2Dc0S)pZbZsWDnb~ z^msMmnS##uXW6JfV*hzj31RbPq{0hUffdr_rw&tM?&>IPA+fMjXzWeMBvSjk4}y-&R1(|?|j0hU}=s;kZE>G5IX8@?R^c*p~4HpWU=9xJOwu*nyQ zs?bH5D&!#TZ=dkDkl?*O`CyVtm21`W*|joYW`1UUjp8LO8VBrPaF3*L7zGwKf%i8+!E=&BCb_z5?O)4N(&V*kBTYbR3B#EwcU~1kp z{>+Tf@ujUVEnXU)uKQ{T#96I&Hc6ND{Z3I%q=^A+3(kQ9f~rw^5m}bJu9OHxB>q{B zwo|-VSafQ#Kc_XtXjMxwlrSf!`P)&^b~M1UKG~b#$O9l^A2eP-ZjwKyXJ&^$uW_ng zXYr0|&;3b-^`2xw8K3z>@2>C%Wbmsc$nTg){_p#Tvl*JH;qMLbtj|$BrSOdgcA)*6Bdjkw{YMZpfje=r6f$$d zd~T@z7yS&Q05FIN^uMeA^3h={DcnjUWdTC$8_@syuZ!~cuEAQnJ0pRA$Ne0{sw$;u zCCQ)BwsIXp{Kyj6eV1m}!ICtBx-&s{u{-rj%5#XJ@q3DSChod^z>lb7k+-(p5n;nB zXbYYBI~59QZQqdjn@y)mRc~QRWt-+YG@+3QEEqG4#czKNkY`ZoC4#J-UB<+)p}3cF zeUfw>rM~at-~Yr+2zKrk`rfs-=)9$GA$+vsu)M@V>KO=JX&fOL0NR3kn?P|jV9vH*KKvZ#inXclrbWPhJOaE zCK3=S@1?-HoJRRMzb<@CK=M`NoxxxEI)|$<$7wyoe8S3LoMus3o-2ndnIzdgO4tfD zbi~~Cw#D@TZ;WOl-CT*U7IZX!nIsnM{=> zVfHSb4;RzDj~t>+ZxE=Sn=&CqQI)dqbjWegGxWv(T&FDdlmt=_2vL^HTrnGPPc)jT zO51KCk$iDjYbNa3An_`Swe2~uKf-$Rw}J3U4Gls}zqNZ&G+2E@HpczXU>NsdOW>Q9 zIWNCj*Kisq(=Jnp(JkCBD6durUgFHSKPcjL45Xl>10P3<%UXH6>%m;$ zvi$L!6cegT@CW<|u#V$Z>Ts769BRerwR&!}&ApR(q`S)lbc913`V-eQP1)alxDOE} zp`DMnGPNM>>(qR=<7oBv`%TD5%sGE^NbRs*OU#iAD&nG@48Rb6*l3kHt2_Pm~1hPLK3gCQYQv{6u^SEOCIl;Bi+M1c;U+OAlf+YmU z`+;Ep-K-5xQR;ZJNAbmHlk@<5G^IyW60nzoV@e^4?zC4T|Gb(F;Cjg$34gGcC+JE8 znzv&_p!nN-Ks=QY#p?}XaEO0ypdE0-|N8*{FAE6Sc0Rj;)PT1Y`|NBLNGIew?~MD# zu@e1rmW9yJ!rx2HR2zrsxGlQG0*)N_LES{Y!`e5cLRs8q0Q%OC+w;w}*)H;=uo#CD za66JKM`oQ|>6A=%et6@%GalnOeK3dDgy^-Qn&=dD*{dXhpkX@O1*jM9!(}Vm~ z00B6~Ds3y^6IqVuf1uaz(BX02r#_f(OnSJx8rmMqGhJwMm`i2$d-SGJEmdivM?+hx z)EC^DZ>+RlY*7W=%)}Vhg%sP_Ryi%CcKJsQUVZpYI+E5*t$op17lTGM1lRrLjo_3x z?#0f8TT`nv8KQqP$r4tyjvN8+jU*kc0^dpSGf;IrsGpVwaO-*`Q%B4*cmW(XVh`ZI zxWek4lI<+~q`?#>JyI(EB}F<|JrD0UcduCBdoGIfX`<`fmOpT;+`S&*R(P42Bq^}L zs%Wl9OAMm|cV8N?`0kH;U)$`C<%QK*&nmedF6=C5H`(XZ+03iKV>5m!BF|R*qTjjH z`~<)a$utg|bpYkd&$M}*<*Sydo$gh3?pEC$wkjCV;IO}se`EDacFU;`Q{BQ83KiI3 zr~&6BG3wROx33@2FSt*=0e}76SuzA3vyL^W?UVO$H%yClu&&R=lqWpY)#gYBUE`u_ zn)lfcPRjQ`9VRl%S)G39aC@IG^T3EHV#{zaObb)3k5KhidTHL)AHM!kmQm1~Xsfpx zHDdMeMTLhjOaRHU2vu}GdLBft*dk(pBmAuFxGn8~g37U7Y&pF<>KtmnTB1|ebxCNu zTJjpt7KW7gtWjg~K{lCLIEsjW*90aj%&zl64RF|Vd$Z{cXu&7&6X?_vBN& zD6!kqA*PLSnF#{W+4?{pCXxoHZQF^sX0v0#a4NfuHs(qkSO}N^8o$@&q=u-KBdacow>j2EUy=?JMc$O4>le1shBs5@lGgOrI6B#weK`?}s0tc+Pmv>aB zKXQo+F4CrXuLiMc=z``1Hg(Q|UzXI^4?-F;Z>yn?nY%T%8=&)8&U7=Da z8nA7bWLhp+PN-K{l7|aVyKj>t!W(7v1a!^emOb@DZ2LATY2^C;5QVeOQB*lcU?r> zj_2XtozA6k9YP&%C_{SQ+LDGndg<*oSEV@!$fCVCGr> zsqlBQXujMcA^?HWI&BV*1$8!uF~h3y2vsSq0tD2rk&nqW;i|*X(nlS46gK^p`mpg&p8`a7@Hbt&|^bP!Dm*h$GOZZWtk2=yosS!*J0nd%6gXdz)vwx9C5TA9feq%do3)x z>OI&qX0ZNBwF4-#+Mf0y<;NUM>w9rCGhb_1|X8RkkLQtTvF^A zgH=z@n*GCI!v4~M$dVub&<{YXC6fNqZ)q=i=4D@qa{*WY#DRZ!_s_(b&mgT&&phpA zukC^Xr-c(BVfo`$08QqT0>>pYd)90(bNhca0)WeLxE=G~*e&S*+ye;U+hLx*uQUlj zx+9(N{cg_x+Zpmip(y`Yd$IHFF%f8FB7#GXUa6HPwC$z#R$yn}Zu%7v@)tot|)mk2IJ{Gt!1$|k^dRG7~t(p$Dny$8A+R_$VDzR zC7$bkuL1SQbDGTJ)f&AFm=HwDTfl&Y24=5cN@Bc$F(uc}s{Zz`fCeZqfj7hYXYv6F zpvLJ1uGK%2|L@#_q(U0P)sleUvkm|ndH~f-CX>XN@bq}q374Z(WgraDjh}RUZ#G`v zG+IuGFZcRfEw2y6iTv(o%hsqia{R$Q?QS;PXtx}5n|!NUp)<=SmkR;Vb~o8AUv!$4 zHiuKl0On9XH{xTmT@W}HLu$t2EsRhg-rlV zI5cn9NqD8UF%TyK?BG;-K~{j94RD6E_#D=-w?PnblHEdgKShu|upEF8$DU{NUhtks z7?MY!l!`%~_^0*tI0e_4?9o!yGD@cQ^Kpk8(>|al0~AR*vBjIL`hQ<5XO!<5QExJ( zq!a0%f#m0RdE!$2QG^-K@qx)sN{@M)MsC9@h-X{{P~ns^iS!OVEZfFiK)9#rjqQSl z@8ga6EC7d{h^Z9e2a}kXfPR}RHcj`HH!hW)*)I

(+BXh{I+M-+OSs!0#0L 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

Child Frame

- + + +

Messages received from parent frame:

+
    + + diff --git a/example/assets/child.js b/example/assets/child.js index 6442853..52e085e 100644 --- a/example/assets/child.js +++ b/example/assets/child.js @@ -1,11 +1,21 @@ -const { ChildFrame } = require("../../build/index"); +const { ChildFrame } = require('../../build/index'); +const addMessage = (text) => { + const messagesBox = document.getElementById('messages'); + const message = document.createElement('li'); + message.append(text); + messagesBox.append(message); +} +const frameEvents = new ChildFrame((data) => { + addMessage('Parent "Ready" event'); -(function() { - const frameEvents = new ChildFrame(); - - document.querySelector("button").addEventListener("click", function () { - frameEvents.run.updateCounter(); + frameEvents.listeners.parentClicked(() => { + addMessage('Parent click event'); }); -})(); \ No newline at end of file + +}); + +document.querySelector('button').addEventListener('click', (data) => { + frameEvents.run.updateCounter(); +}); diff --git a/example/assets/index.html b/example/assets/index.html index 1283aff..0215cf4 100644 --- a/example/assets/index.html +++ b/example/assets/index.html @@ -5,9 +5,16 @@

    Parent Frame

    Counter: 0

    - +
    + +
    - + \ No newline at end of file diff --git a/example/assets/parent.js b/example/assets/parent.js index 3ef01cf..fed137a 100644 --- a/example/assets/parent.js +++ b/example/assets/parent.js @@ -1,31 +1,49 @@ /* eslint-disable */ -const { ParentFrame } = require("../../build/index"); +const testDomain = 'http://localhost:3030' -(function() { +const { ParentFrame } = require('../../build/index'); + +const childFrameNode = document.createElement('iframe'); + +childFrameNode.src = `${testDomain}/ChildFrame.html?_origin=${testDomain}&_placement=TEST` + +childFrameNode.width = 500; +childFrameNode.height = 360; + +childFrameNode.onload = ({ target }) => { const state = { counter: 0, }; - console.log('test') - const element = document.getElementById("childFrame"); - console.log(element) + console.log('test'); - new ParentFrame({ - child: document.getElementById("childFrame"), + const parentFrame = new ParentFrame({ + childFrameNode: target, methods: { - updateCounter: function () { - state.counter = state.counter++; - this.send("counterUpdated", { - counter: state.counter, - }); + updateCounter: () => { + state.counter++; - const counterElement = document.getElementById("counter"); + const counterElement = document.getElementById('counter'); counterElement.innerHTML = state.counter; - console.log('!!!') }, }, - listeners: ["counterUpdated"], - scripts: [], + listeners: ['parentClicked'], + scripts: [` + + `], }); -})(); + + const sendEventButton = document.getElementById('sendParentEvent'); + sendEventButton.onclick = () => { + parentFrame.send('parentClicked'); + } +} + + +document.body.appendChild(childFrameNode); diff --git a/package.json b/package.json index 4ebb2e8..14fb27f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "lint:fix": "eslint src/**/*.ts --fix", "version:patch": "yarn version --patch", "version:minor": "yarn version --minor", - "version:major": "yarn version --major" + "version:major": "yarn version --major", + "start:demo": "yarn build && yarn webpack-dev-server --config ./example/webpack.config.js" }, "lint-staged": { "**/*.ts": [ @@ -59,6 +60,7 @@ "tslib": "^2.6.3", "typescript": "^5.5.3", "webpack": "^5.93.0", + "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.0.4" }, "dependencies": {}, diff --git a/yarn.lock b/yarn.lock index 09d3edd..12b5685 100644 --- a/yarn.lock +++ b/yarn.lock @@ -464,6 +464,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1355,6 +1360,21 @@ "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -1856,6 +1876,15 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1890,7 +1919,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.10, colorette@^2.0.20: +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.20: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -1902,6 +1931,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2287,6 +2321,11 @@ env-paths@^2.2.1: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envinfo@^7.7.3: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + environment@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" @@ -2604,6 +2643,11 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -2685,6 +2729,11 @@ flat-cache@^4.0.0: flatted "^3.2.9" keyv "^4.5.4" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -3098,6 +3147,11 @@ ini@4.1.1: resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -3198,6 +3252,13 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -3237,6 +3298,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" @@ -3784,6 +3850,11 @@ keyv@^4.5.4: dependencies: json-buffer "3.0.1" +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -4527,6 +4598,13 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4750,6 +4828,13 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -5300,6 +5385,25 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + webpack-dev-middleware@^7.1.0: version "7.3.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz#5975ea41271083dc5678886b99d4c058382fb311" @@ -5348,6 +5452,15 @@ webpack-dev-server@^5.0.4: webpack-dev-middleware "^7.1.0" ws "^8.16.0" +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" @@ -5424,6 +5537,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"