From dcd051d119849c7ad0661b6a701bdd8c21075149 Mon Sep 17 00:00:00 2001 From: Andrea Moretti Date: Fri, 16 Apr 2021 14:50:43 +0200 Subject: [PATCH] Fix/icss hashing (#52) * fix: icss hashing * bump version * remove console log * remove other console logs --- .../packages/atoms/all/atom.css.snap | 37 +++++++++++++++++-- .../packages/atoms/all/atom.min.css.snap | 2 +- .../atoms/duplicate-classes-a/.npmignore | 3 ++ .../atoms/duplicate-classes-a/index.css | 15 ++++++++ .../atoms/duplicate-classes-a/index.d.ts.snap | 4 ++ .../duplicate-classes-a/index.esm.js.snap | 3 ++ .../atoms/duplicate-classes-a/index.js.snap | 5 +++ .../duplicate-classes-a/module.css.json.snap | 1 + .../atoms/duplicate-classes-a/module.css.snap | 15 ++++++++ .../atoms/duplicate-classes-a/package.json | 10 +++++ .../atoms/duplicate-classes-a/result.css.snap | 11 ++++++ .../atoms/duplicate-classes-b/.npmignore | 3 ++ .../atoms/duplicate-classes-b/index.css | 15 ++++++++ .../atoms/duplicate-classes-b/index.d.ts.snap | 4 ++ .../duplicate-classes-b/index.esm.js.snap | 3 ++ .../atoms/duplicate-classes-b/index.js.snap | 5 +++ .../duplicate-classes-b/module.css.json.snap | 1 + .../atoms/duplicate-classes-b/module.css.snap | 15 ++++++++ .../atoms/duplicate-classes-b/package.json | 10 +++++ .../atoms/duplicate-classes-b/result.css.snap | 11 ++++++ .../packages/atoms/icss-import/index.css | 4 +- .../atoms/icss-import/index.esm.js.snap | 10 ++--- .../packages/atoms/icss-import/index.js.snap | 10 ++--- .../atoms/icss-import/module.css.json.snap | 2 +- .../atoms/icss-import/module.css.snap | 4 +- .../atoms/icss-import/result.css.snap | 15 ++++++-- package.json | 2 +- .../atomic-css-modules/generateScopedName.ts | 33 +++++------------ templates/package.json.hbs | 2 +- 29 files changed, 205 insertions(+), 50 deletions(-) create mode 100644 integration-test/packages/atoms/duplicate-classes-a/.npmignore create mode 100644 integration-test/packages/atoms/duplicate-classes-a/index.css create mode 100644 integration-test/packages/atoms/duplicate-classes-a/index.d.ts.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-a/index.esm.js.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-a/index.js.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-a/module.css.json.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-a/module.css.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-a/package.json create mode 100644 integration-test/packages/atoms/duplicate-classes-a/result.css.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/.npmignore create mode 100644 integration-test/packages/atoms/duplicate-classes-b/index.css create mode 100644 integration-test/packages/atoms/duplicate-classes-b/index.d.ts.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/index.esm.js.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/index.js.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/module.css.json.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/module.css.snap create mode 100644 integration-test/packages/atoms/duplicate-classes-b/package.json create mode 100644 integration-test/packages/atoms/duplicate-classes-b/result.css.snap diff --git a/integration-test/packages/atoms/all/atom.css.snap b/integration-test/packages/atoms/all/atom.css.snap index 2265b07..51cb097 100644 --- a/integration-test/packages/atoms/all/atom.css.snap +++ b/integration-test/packages/atoms/all/atom.css.snap @@ -22,7 +22,14 @@ display: flex; border: 1px solid red; } -/* custom static css (e.g. normalize) can be added here */._1RrCqF { +._9M8f-j { + color: red; +}.o3-BnE { + color: blue; + width: 100px; + display: flex; + border: 1px solid red; +}/* custom static css (e.g. normalize) can be added here */._1RrCqF { color: #1a1a1a }.pQ96hs:hover { color: #fafafa @@ -30,19 +37,41 @@ font-weight: bold } -.n4oS1I { +.hZEeRw { height: 100%; } -.i6EUck { +.Gpf-P8 { text-decoration: underline; } -._8F86eH { +._3XV0Ef { font-size: 4em; } +._9M8f-j { + color: red; +} + +.sMmOaU { + color: blue +} + +.sMmOaU .R2GDg- { + color: green; + } +._9M8f-j { + color: red; +} + +.sMmOaU { + color: blue +} + +.sMmOaU .R2GDg- { + color: green; + } /* custom static css (e.g. normalize) can be added here */._1RrCqF { color: #1a1a1a }.DJ9tNH:hover { diff --git a/integration-test/packages/atoms/all/atom.min.css.snap b/integration-test/packages/atoms/all/atom.min.css.snap index 18571ba..a398ad5 100644 --- a/integration-test/packages/atoms/all/atom.min.css.snap +++ b/integration-test/packages/atoms/all/atom.min.css.snap @@ -1 +1 @@ -.YzVv9y{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Arial,Helvetica Neue,sans-serif}.V_ma2j,.YfpiAb{font-size:1em}._9M8f-j,.YfpiAb{color:red}.o3-BnE{border:1px solid red;color:#00f;display:flex;width:100px}.dgII7d{font-weight:700}.n4oS1I{height:100%}.i6EUck{text-decoration:underline}._8F86eH{font-size:4em}.l-ITF2{color:green}.l-ITF2:hover{color:red}.x7QluR{color:green}.x7QluR:focus{color:red}.gPy6Qt{background-color:#000}.gPy6Qt:disabled{background-color:grey}html{overflow-x:hidden;overflow-y:auto;overflow:hidden auto}h1,h2,h3,h4,h5,h6{margin-bottom:0;margin-top:0}.ZlgcWo.uvJREe,main.ZlgcWo{background-image:img/background.jpg;background-image:-webkit-image-set(url("img/background.jpg") 1x,url("img/background-2x.jpg") 2x);background-image:image-set("img/background.jpg" 1x,"img/background-2x.jpg" 2x)}a{color:rgba(0,0,255,.9)}a:hover{color:#639}.mHJuMv{color:red}.mHJuMv .B_oqE3,.mHJuMv .qhqOPF{color:#00f}._9q-zqg{color:red}._9q-zqg .qhqOPF{color:#00f}._9q-zqg .qhqOPF .oLzZ_N{color:green}.nHROCZ{font-size:1em}.nHROCZ.YZP-Tu{font-size:2em}.HbTeo6{font-size:1em}.HbTeo6.YZP-Tu{color:red}.HbTeo6{display:flex}.HbTeo6 .qhqOPF{font-size:.5em}.HbTeo6 .qhqOPF._6cCOB0{color:#00f}.HbTeo6 .qhqOPF._6cCOB0 .vruPji{color:green}.XPMGYZ{color:red}.XPMGYZ:hover{color:#00f}.XPMGYZ:hover .QMsI4n{color:green}.XPMGYZ:hover .QMsI4n.fc23Jo{font-size:2em}.XPMGYZ:hover .QMsI4n.fc23Jo:after{content:"after";position:absolute}._1b2v1R,.xXc9fo{font-size:1em}._6gjVlf{font-size:4em}@keyframes _4bsdl{0%,10%{opacity:0}15%{opacity:.4}to{opacity:1}}._4bsdl,.C0hAH1{animation-duration:.25s;animation-name:_4bsdl}.globalClass{width:100%}.globalClass .v5Vpzq{color:red}.globalClass.ado0HJ{color:#00f}.ZlJtcH{color:red}.ZXM7RA{color:#00f}.pUJQIY{color:red}.Z3doKH{color:#00f}.aGea0b{color:red}.t8cRql{color:#00f}.NRaoKv,.oPlD0W{font-size:1em}.oi5tdf,.W1CcjX{line-height:1em}.FCG5GQ,.H9WShg{font-size:2em}._7x3EPh,.WO37ya{line-height:2em}.d8yso7,.uGM3oi{font-size:3em}._3Ft6ps,.NbUW8z{line-height:3em}.Y9lrZy{font-size:10px}.Y9lrZy ._8Urr0R{width:1em}.Y9lrZy.e2agTq{border:1px solid red}.Y9lrZy ._5v4SSH{width:1em}.Y9lrZy.iS88X_{border-top:1px solid #00f}.Y9lrZy .vlAfUd{width:2em}.Y9lrZy.PgUB93{border:2px solid red}.Y9lrZy .KjddK4{width:2em}.Y9lrZy.GZomQK{border-top:2px solid #00f}.Y9lrZy .utNk9X{width:3em}.Y9lrZy.bwOLNP{border:3px solid red}.Y9lrZy ._5UlDUQ{width:3em}.Y9lrZy.vA0LhQ{border-top:3px solid #00f}.gPZ5T-{font-size:20px}.gPZ5T- .SnZr3u{width:1em}.gPZ5T-.tNdUvj{border:1px solid red}.gPZ5T- .RTwpt_{width:1em}.gPZ5T-.aiCnKv{border-top:1px solid #00f}.gPZ5T- .bUAlDZ{width:2em}.gPZ5T-.lpuLLH{border:2px solid red}.gPZ5T- .k5RQse{width:2em}.gPZ5T-.CmX6W8{border-top:2px solid #00f}.gPZ5T- .MdYjYw{width:3em}.gPZ5T-.YK_gQZ{border:3px solid red}.gPZ5T- ._2W8BKO{width:3em}.gPZ5T-.F3eX_U{border-top:3px solid #00f}._75_9PU{font-size:30px}._75_9PU .KCb6ES{width:1em}._75_9PU._2PGpjA{border:1px solid red}._75_9PU .Y66lQo{width:1em}._75_9PU.sHxrAr{border-top:1px solid #00f}._75_9PU ._4_kJbH{width:2em}._75_9PU.eCH6U5{border:2px solid red}._75_9PU .cx5ofG{width:2em}._75_9PU.iAQisI{border-top:2px solid #00f}._75_9PU .LSjKrm{width:3em}._75_9PU.RYF8kF{border:3px solid red}._75_9PU .XKZMXH{width:3em}._75_9PU.Btd_L7{border-top:3px solid #00f}.lQb_Er{color:#ff0}._7XVRfh{color:transparent}._1RrCqF{color:#1a1a1a}.hKG3ag{color:#fafafa}._8o7AdB:hover{color:transparent}.DJ9tNH:hover{color:#1a1a1a}.pQ96hs:hover{color:#fafafa}.QFK-pd{background-color:transparent}.vLhOdO{background-color:#1a1a1a}.BB3914{background-color:#fafafa}.OW2t12:hover{background-color:transparent}.p0K3V_:hover{background-color:#1a1a1a}.u5CoHT:hover{background-color:#fafafa}.XMShGx:active{background-color:transparent}.pYWOaW:active{background-color:#1a1a1a}.YvQoMS:active{background-color:#fafafa}.ccA3wc{border-color:transparent}._9OMGCZ{border-color:#1a1a1a}.Y1sI0i{border-color:#fafafa}.DdLERB:hover{border-color:transparent}.sSTi9U:hover{border-color:#1a1a1a}.SrlG4o:hover{border-color:#fafafa}.WrGzoU:focus{border-color:transparent}.iSk3wh:focus{border-color:#1a1a1a}.DiF_NF:focus{border-color:#fafafa}.inverted ._1RrCqF{color:#fafafa}.inverted .hKG3ag{color:#1a1a1a}.inverted .DJ9tNH:hover{color:#fafafa}.inverted .pQ96hs:hover{color:#1a1a1a}.inverted .vLhOdO{background-color:#fafafa}.inverted .BB3914{background-color:#1a1a1a}.inverted .p0K3V_:hover{background-color:#fafafa}.inverted .u5CoHT:hover{background-color:#1a1a1a}.inverted .pYWOaW:active{background-color:#fafafa}.inverted .YvQoMS:active{background-color:#1a1a1a}.inverted ._9OMGCZ{border-color:#fafafa}.inverted .Y1sI0i{border-color:#1a1a1a}.inverted .sSTi9U:hover{border-color:#fafafa}.inverted .SrlG4o:hover{border-color:#1a1a1a}.inverted .iSk3wh:focus{border-color:#fafafa}.inverted .DiF_NF:focus{border-color:#1a1a1a}@media screen and (min-width:320px){.Rvp04b{color:transparent}.Lp5Coj{color:#1a1a1a}.HCs9Zk{color:#fafafa}.MpFFe4:hover{color:transparent}.sWWlLj:hover{color:#1a1a1a}.o6Le8p:hover{color:#fafafa}.n9uP8O{background-color:transparent}.JGmk2f{background-color:#1a1a1a}.SrYDfc{background-color:#fafafa}._3A_tYX:hover{background-color:transparent}.EWb8dI:hover{background-color:#1a1a1a}.ZNbZad:hover{background-color:#fafafa}._09Y3xY:active{background-color:transparent}._0yvfVT:active{background-color:#1a1a1a}.Nqx5Tu:active{background-color:#fafafa}.Z7zfNt{border-color:transparent}.l7cM29{border-color:#1a1a1a}.W9KYDX{border-color:#fafafa}.itJNZE:hover{border-color:transparent}.frDhwD:hover{border-color:#1a1a1a}._-3tIbX:hover{border-color:#fafafa}.z2U-id:focus{border-color:transparent}._47a4aF:focus{border-color:#1a1a1a}.VDNH3K:focus{border-color:#fafafa}.inverted .Lp5Coj{color:#fafafa}.inverted .HCs9Zk{color:#1a1a1a}.inverted .sWWlLj:hover{color:#fafafa}.inverted .o6Le8p:hover{color:#1a1a1a}.inverted .JGmk2f{background-color:#fafafa}.inverted .SrYDfc{background-color:#1a1a1a}.inverted .EWb8dI:hover{background-color:#fafafa}.inverted .ZNbZad:hover{background-color:#1a1a1a}.inverted ._0yvfVT:active{background-color:#fafafa}.inverted .Nqx5Tu:active{background-color:#1a1a1a}.inverted .l7cM29{border-color:#fafafa}.inverted .W9KYDX{border-color:#1a1a1a}.inverted .frDhwD:hover{border-color:#fafafa}.inverted ._-3tIbX:hover{border-color:#1a1a1a}.inverted ._47a4aF:focus{border-color:#fafafa}.inverted .VDNH3K:focus{border-color:#1a1a1a}}@media screen and (min-width:480px){.ZG5UC9{color:transparent}._G9XCO{color:#1a1a1a}.qP7xSn{color:#fafafa}._17TE5:hover{color:transparent}.f_hjdE:hover{color:#1a1a1a}.egCwcL:hover{color:#fafafa}.cT83fW{background-color:transparent}.cTzk67{background-color:#1a1a1a}.d87drd{background-color:#fafafa}.aR3Ubx:hover{background-color:transparent}.OkiZx1:hover{background-color:#1a1a1a}.KNhFJA:hover{background-color:#fafafa}.b_MwVS:active{background-color:transparent}.PpdrMK:active{background-color:#1a1a1a}.zi47D5:active{background-color:#fafafa}.ZaHZcI{border-color:transparent}.WZPKju{border-color:#1a1a1a}.tFW0c4{border-color:#fafafa}.JS26Ed:hover{border-color:transparent}.vjwfDZ:hover{border-color:#1a1a1a}.PIMcZH:hover{border-color:#fafafa}.Yy_yhi:focus{border-color:transparent}.k2XnVf:focus{border-color:#1a1a1a}._2_NizD:focus{border-color:#fafafa}.inverted ._G9XCO{color:#fafafa}.inverted .qP7xSn{color:#1a1a1a}.inverted .f_hjdE:hover{color:#fafafa}.inverted .egCwcL:hover{color:#1a1a1a}.inverted .cTzk67{background-color:#fafafa}.inverted .d87drd{background-color:#1a1a1a}.inverted .OkiZx1:hover{background-color:#fafafa}.inverted .KNhFJA:hover{background-color:#1a1a1a}.inverted .PpdrMK:active{background-color:#fafafa}.inverted .zi47D5:active{background-color:#1a1a1a}.inverted .WZPKju{border-color:#fafafa}.inverted .tFW0c4{border-color:#1a1a1a}.inverted .vjwfDZ:hover{border-color:#fafafa}.inverted .PIMcZH:hover{border-color:#1a1a1a}.inverted .k2XnVf:focus{border-color:#fafafa}.inverted ._2_NizD:focus{border-color:#1a1a1a}}@media screen and (min-width:768px){._1b2v1R,.xXc9fo{font-size:2em}.Aw2D45{color:transparent}._4b92dm{color:#1a1a1a}.o8qdX5{color:#fafafa}.VmcM14:hover{color:transparent}._4pdGQt:hover{color:#1a1a1a}._8MyiUe:hover{color:#fafafa}._8eHx03{background-color:transparent}.ltaYW3{background-color:#1a1a1a}.BhFfzx{background-color:#fafafa}.rlsckE:hover{background-color:transparent}.VtITcW:hover{background-color:#1a1a1a}.MVQf1m:hover{background-color:#fafafa}.HV1jTO:active{background-color:transparent}.x3vCBC:active{background-color:#1a1a1a}._8D7pd9:active{background-color:#fafafa}.mwSZUD{border-color:transparent}._-9Btvy{border-color:#1a1a1a}.yGe1Ir{border-color:#fafafa}.fXkby9:hover{border-color:transparent}.gnRIud:hover{border-color:#1a1a1a}.fFoYjL:hover{border-color:#fafafa}._9q2qP5:focus{border-color:transparent}._11iKz3:focus{border-color:#1a1a1a}.HIkC1B:focus{border-color:#fafafa}.inverted ._4b92dm{color:#fafafa}.inverted .o8qdX5{color:#1a1a1a}.inverted ._4pdGQt:hover{color:#fafafa}.inverted ._8MyiUe:hover{color:#1a1a1a}.inverted .ltaYW3{background-color:#fafafa}.inverted .BhFfzx{background-color:#1a1a1a}.inverted .VtITcW:hover{background-color:#fafafa}.inverted .MVQf1m:hover{background-color:#1a1a1a}.inverted .x3vCBC:active{background-color:#fafafa}.inverted ._8D7pd9:active{background-color:#1a1a1a}.inverted ._-9Btvy{border-color:#fafafa}.inverted .yGe1Ir{border-color:#1a1a1a}.inverted .gnRIud:hover{border-color:#fafafa}.inverted .fFoYjL:hover{border-color:#1a1a1a}.inverted ._11iKz3:focus{border-color:#fafafa}.inverted .HIkC1B:focus{border-color:#1a1a1a}}@media screen and (min-width:1024px){._1b2v1R,.xXc9fo{font-size:3em}.PBhfKy{color:transparent}.CgYuy9{color:#1a1a1a}.HNuXy3{color:#fafafa}.XhfU7x:hover{color:transparent}.K7oBMw:hover{color:#1a1a1a}.WumQPC:hover{color:#fafafa}.jZWNUM{background-color:transparent}.Ya3qdL{background-color:#1a1a1a}.nnqEoI{background-color:#fafafa}.ZyQBE3:hover{background-color:transparent}._3-idl1:hover{background-color:#1a1a1a}.uUQ62H:hover{background-color:#fafafa}.AoVx-4:active{background-color:transparent}.JFpWQB:active{background-color:#1a1a1a}.eWCHpU:active{background-color:#fafafa}._8z2-Ts{border-color:transparent}.p0zb6v{border-color:#1a1a1a}.CaVPgM{border-color:#fafafa}.wz8Ybj:hover{border-color:transparent}.yFX9Bt:hover{border-color:#1a1a1a}.G_Ks9n:hover{border-color:#fafafa}.MQxQG6:focus{border-color:transparent}.j1NZTt:focus{border-color:#1a1a1a}.qn6vfj:focus{border-color:#fafafa}.inverted .CgYuy9{color:#fafafa}.inverted .HNuXy3{color:#1a1a1a}.inverted .K7oBMw:hover{color:#fafafa}.inverted .WumQPC:hover{color:#1a1a1a}.inverted .Ya3qdL{background-color:#fafafa}.inverted .nnqEoI{background-color:#1a1a1a}.inverted ._3-idl1:hover{background-color:#fafafa}.inverted .uUQ62H:hover{background-color:#1a1a1a}.inverted .JFpWQB:active{background-color:#fafafa}.inverted .eWCHpU:active{background-color:#1a1a1a}.inverted .p0zb6v{border-color:#fafafa}.inverted .CaVPgM{border-color:#1a1a1a}.inverted .yFX9Bt:hover{border-color:#fafafa}.inverted .G_Ks9n:hover{border-color:#1a1a1a}.inverted .j1NZTt:focus{border-color:#fafafa}.inverted .qn6vfj:focus{border-color:#1a1a1a}}@media screen and (min-width:1280px){.Y4hs5_{color:transparent}.BEwYdP{color:#1a1a1a}.oLHsDL{color:#fafafa}.Tv9kwZ:hover{color:transparent}._3Yc9VP:hover{color:#1a1a1a}.QvUeTY:hover{color:#fafafa}.gFn7y6{background-color:transparent}._5_fipl{background-color:#1a1a1a}.VBoBXH{background-color:#fafafa}.B2ZYP6:hover{background-color:transparent}.XSzgJm:hover{background-color:#1a1a1a}.GdsyI9:hover{background-color:#fafafa}.sp6-_K:active{background-color:transparent}.m1dGmX:active{background-color:#1a1a1a}.F8ABi0:active{background-color:#fafafa}.ycqC89{border-color:transparent}.zwPMh8{border-color:#1a1a1a}.nHkSni{border-color:#fafafa}.IJQNcS:hover{border-color:transparent}.vwenav:hover{border-color:#1a1a1a}.EDikIT:hover{border-color:#fafafa}.aqBpwF:focus{border-color:transparent}.u97qUL:focus{border-color:#1a1a1a}.zzHwgX:focus{border-color:#fafafa}.inverted .BEwYdP{color:#fafafa}.inverted .oLHsDL{color:#1a1a1a}.inverted ._3Yc9VP:hover{color:#fafafa}.inverted .QvUeTY:hover{color:#1a1a1a}.inverted ._5_fipl{background-color:#fafafa}.inverted .VBoBXH{background-color:#1a1a1a}.inverted .XSzgJm:hover{background-color:#fafafa}.inverted .GdsyI9:hover{background-color:#1a1a1a}.inverted .m1dGmX:active{background-color:#fafafa}.inverted .F8ABi0:active{background-color:#1a1a1a}.inverted .zwPMh8{border-color:#fafafa}.inverted .nHkSni{border-color:#1a1a1a}.inverted .vwenav:hover{border-color:#fafafa}.inverted .EDikIT:hover{border-color:#1a1a1a}.inverted .u97qUL:focus{border-color:#fafafa}.inverted .zzHwgX:focus{border-color:#1a1a1a}}@media (max-width:50rem){body{word-wrap:break-word;color:rgba(18,52,86,.47059);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;font-size:1rem;line-height:1.5rem;padding-left:calc(.5rem + 1px);padding-right:calc(.5rem + 1px)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.ZlgcWo.uvJREe,main.ZlgcWo{background-image:img/background-2x.jpg}} \ No newline at end of file +.YzVv9y{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Arial,Helvetica Neue,sans-serif}.V_ma2j,.YfpiAb{font-size:1em}.YfpiAb{color:red}.o3-BnE{border:1px solid red;color:#00f;display:flex;width:100px}.dgII7d{font-weight:700}.hZEeRw{height:100%}.Gpf-P8{text-decoration:underline}._3XV0Ef{font-size:4em}._9M8f-j{color:red}.sMmOaU{color:#00f}.l-ITF2,.sMmOaU .R2GDg-{color:green}.l-ITF2:hover{color:red}.x7QluR{color:green}.x7QluR:focus{color:red}.gPy6Qt{background-color:#000}.gPy6Qt:disabled{background-color:grey}html{overflow-x:hidden;overflow-y:auto;overflow:hidden auto}h1,h2,h3,h4,h5,h6{margin-bottom:0;margin-top:0}.ZlgcWo.uvJREe,main.ZlgcWo{background-image:img/background.jpg;background-image:-webkit-image-set(url("img/background.jpg") 1x,url("img/background-2x.jpg") 2x);background-image:image-set("img/background.jpg" 1x,"img/background-2x.jpg" 2x)}a{color:rgba(0,0,255,.9)}a:hover{color:#639}.mHJuMv{color:red}.mHJuMv .B_oqE3,.mHJuMv .qhqOPF{color:#00f}._9q-zqg{color:red}._9q-zqg .qhqOPF{color:#00f}._9q-zqg .qhqOPF .oLzZ_N{color:green}.nHROCZ{font-size:1em}.nHROCZ.YZP-Tu{font-size:2em}.HbTeo6{font-size:1em}.HbTeo6.YZP-Tu{color:red}.HbTeo6{display:flex}.HbTeo6 .qhqOPF{font-size:.5em}.HbTeo6 .qhqOPF._6cCOB0{color:#00f}.HbTeo6 .qhqOPF._6cCOB0 .vruPji{color:green}.XPMGYZ{color:red}.XPMGYZ:hover{color:#00f}.XPMGYZ:hover .QMsI4n{color:green}.XPMGYZ:hover .QMsI4n.fc23Jo{font-size:2em}.XPMGYZ:hover .QMsI4n.fc23Jo:after{content:"after";position:absolute}._1b2v1R,.xXc9fo{font-size:1em}._6gjVlf{font-size:4em}@keyframes _4bsdl{0%,10%{opacity:0}15%{opacity:.4}to{opacity:1}}._4bsdl,.C0hAH1{animation-duration:.25s;animation-name:_4bsdl}.globalClass{width:100%}.globalClass .v5Vpzq{color:red}.globalClass.ado0HJ{color:#00f}.ZlJtcH{color:red}.ZXM7RA{color:#00f}.pUJQIY{color:red}.Z3doKH{color:#00f}.aGea0b{color:red}.t8cRql{color:#00f}.NRaoKv,.oPlD0W{font-size:1em}.oi5tdf,.W1CcjX{line-height:1em}.FCG5GQ,.H9WShg{font-size:2em}._7x3EPh,.WO37ya{line-height:2em}.d8yso7,.uGM3oi{font-size:3em}._3Ft6ps,.NbUW8z{line-height:3em}.Y9lrZy{font-size:10px}.Y9lrZy ._8Urr0R{width:1em}.Y9lrZy.e2agTq{border:1px solid red}.Y9lrZy ._5v4SSH{width:1em}.Y9lrZy.iS88X_{border-top:1px solid #00f}.Y9lrZy .vlAfUd{width:2em}.Y9lrZy.PgUB93{border:2px solid red}.Y9lrZy .KjddK4{width:2em}.Y9lrZy.GZomQK{border-top:2px solid #00f}.Y9lrZy .utNk9X{width:3em}.Y9lrZy.bwOLNP{border:3px solid red}.Y9lrZy ._5UlDUQ{width:3em}.Y9lrZy.vA0LhQ{border-top:3px solid #00f}.gPZ5T-{font-size:20px}.gPZ5T- .SnZr3u{width:1em}.gPZ5T-.tNdUvj{border:1px solid red}.gPZ5T- .RTwpt_{width:1em}.gPZ5T-.aiCnKv{border-top:1px solid #00f}.gPZ5T- .bUAlDZ{width:2em}.gPZ5T-.lpuLLH{border:2px solid red}.gPZ5T- .k5RQse{width:2em}.gPZ5T-.CmX6W8{border-top:2px solid #00f}.gPZ5T- .MdYjYw{width:3em}.gPZ5T-.YK_gQZ{border:3px solid red}.gPZ5T- ._2W8BKO{width:3em}.gPZ5T-.F3eX_U{border-top:3px solid #00f}._75_9PU{font-size:30px}._75_9PU .KCb6ES{width:1em}._75_9PU._2PGpjA{border:1px solid red}._75_9PU .Y66lQo{width:1em}._75_9PU.sHxrAr{border-top:1px solid #00f}._75_9PU ._4_kJbH{width:2em}._75_9PU.eCH6U5{border:2px solid red}._75_9PU .cx5ofG{width:2em}._75_9PU.iAQisI{border-top:2px solid #00f}._75_9PU .LSjKrm{width:3em}._75_9PU.RYF8kF{border:3px solid red}._75_9PU .XKZMXH{width:3em}._75_9PU.Btd_L7{border-top:3px solid #00f}.lQb_Er{color:#ff0}._7XVRfh{color:transparent}._1RrCqF{color:#1a1a1a}.hKG3ag{color:#fafafa}._8o7AdB:hover{color:transparent}.DJ9tNH:hover{color:#1a1a1a}.pQ96hs:hover{color:#fafafa}.QFK-pd{background-color:transparent}.vLhOdO{background-color:#1a1a1a}.BB3914{background-color:#fafafa}.OW2t12:hover{background-color:transparent}.p0K3V_:hover{background-color:#1a1a1a}.u5CoHT:hover{background-color:#fafafa}.XMShGx:active{background-color:transparent}.pYWOaW:active{background-color:#1a1a1a}.YvQoMS:active{background-color:#fafafa}.ccA3wc{border-color:transparent}._9OMGCZ{border-color:#1a1a1a}.Y1sI0i{border-color:#fafafa}.DdLERB:hover{border-color:transparent}.sSTi9U:hover{border-color:#1a1a1a}.SrlG4o:hover{border-color:#fafafa}.WrGzoU:focus{border-color:transparent}.iSk3wh:focus{border-color:#1a1a1a}.DiF_NF:focus{border-color:#fafafa}.inverted ._1RrCqF{color:#fafafa}.inverted .hKG3ag{color:#1a1a1a}.inverted .DJ9tNH:hover{color:#fafafa}.inverted .pQ96hs:hover{color:#1a1a1a}.inverted .vLhOdO{background-color:#fafafa}.inverted .BB3914{background-color:#1a1a1a}.inverted .p0K3V_:hover{background-color:#fafafa}.inverted .u5CoHT:hover{background-color:#1a1a1a}.inverted .pYWOaW:active{background-color:#fafafa}.inverted .YvQoMS:active{background-color:#1a1a1a}.inverted ._9OMGCZ{border-color:#fafafa}.inverted .Y1sI0i{border-color:#1a1a1a}.inverted .sSTi9U:hover{border-color:#fafafa}.inverted .SrlG4o:hover{border-color:#1a1a1a}.inverted .iSk3wh:focus{border-color:#fafafa}.inverted .DiF_NF:focus{border-color:#1a1a1a}@media screen and (min-width:320px){.Rvp04b{color:transparent}.Lp5Coj{color:#1a1a1a}.HCs9Zk{color:#fafafa}.MpFFe4:hover{color:transparent}.sWWlLj:hover{color:#1a1a1a}.o6Le8p:hover{color:#fafafa}.n9uP8O{background-color:transparent}.JGmk2f{background-color:#1a1a1a}.SrYDfc{background-color:#fafafa}._3A_tYX:hover{background-color:transparent}.EWb8dI:hover{background-color:#1a1a1a}.ZNbZad:hover{background-color:#fafafa}._09Y3xY:active{background-color:transparent}._0yvfVT:active{background-color:#1a1a1a}.Nqx5Tu:active{background-color:#fafafa}.Z7zfNt{border-color:transparent}.l7cM29{border-color:#1a1a1a}.W9KYDX{border-color:#fafafa}.itJNZE:hover{border-color:transparent}.frDhwD:hover{border-color:#1a1a1a}._-3tIbX:hover{border-color:#fafafa}.z2U-id:focus{border-color:transparent}._47a4aF:focus{border-color:#1a1a1a}.VDNH3K:focus{border-color:#fafafa}.inverted .Lp5Coj{color:#fafafa}.inverted .HCs9Zk{color:#1a1a1a}.inverted .sWWlLj:hover{color:#fafafa}.inverted .o6Le8p:hover{color:#1a1a1a}.inverted .JGmk2f{background-color:#fafafa}.inverted .SrYDfc{background-color:#1a1a1a}.inverted .EWb8dI:hover{background-color:#fafafa}.inverted .ZNbZad:hover{background-color:#1a1a1a}.inverted ._0yvfVT:active{background-color:#fafafa}.inverted .Nqx5Tu:active{background-color:#1a1a1a}.inverted .l7cM29{border-color:#fafafa}.inverted .W9KYDX{border-color:#1a1a1a}.inverted .frDhwD:hover{border-color:#fafafa}.inverted ._-3tIbX:hover{border-color:#1a1a1a}.inverted ._47a4aF:focus{border-color:#fafafa}.inverted .VDNH3K:focus{border-color:#1a1a1a}}@media screen and (min-width:480px){.ZG5UC9{color:transparent}._G9XCO{color:#1a1a1a}.qP7xSn{color:#fafafa}._17TE5:hover{color:transparent}.f_hjdE:hover{color:#1a1a1a}.egCwcL:hover{color:#fafafa}.cT83fW{background-color:transparent}.cTzk67{background-color:#1a1a1a}.d87drd{background-color:#fafafa}.aR3Ubx:hover{background-color:transparent}.OkiZx1:hover{background-color:#1a1a1a}.KNhFJA:hover{background-color:#fafafa}.b_MwVS:active{background-color:transparent}.PpdrMK:active{background-color:#1a1a1a}.zi47D5:active{background-color:#fafafa}.ZaHZcI{border-color:transparent}.WZPKju{border-color:#1a1a1a}.tFW0c4{border-color:#fafafa}.JS26Ed:hover{border-color:transparent}.vjwfDZ:hover{border-color:#1a1a1a}.PIMcZH:hover{border-color:#fafafa}.Yy_yhi:focus{border-color:transparent}.k2XnVf:focus{border-color:#1a1a1a}._2_NizD:focus{border-color:#fafafa}.inverted ._G9XCO{color:#fafafa}.inverted .qP7xSn{color:#1a1a1a}.inverted .f_hjdE:hover{color:#fafafa}.inverted .egCwcL:hover{color:#1a1a1a}.inverted .cTzk67{background-color:#fafafa}.inverted .d87drd{background-color:#1a1a1a}.inverted .OkiZx1:hover{background-color:#fafafa}.inverted .KNhFJA:hover{background-color:#1a1a1a}.inverted .PpdrMK:active{background-color:#fafafa}.inverted .zi47D5:active{background-color:#1a1a1a}.inverted .WZPKju{border-color:#fafafa}.inverted .tFW0c4{border-color:#1a1a1a}.inverted .vjwfDZ:hover{border-color:#fafafa}.inverted .PIMcZH:hover{border-color:#1a1a1a}.inverted .k2XnVf:focus{border-color:#fafafa}.inverted ._2_NizD:focus{border-color:#1a1a1a}}@media screen and (min-width:768px){._1b2v1R,.xXc9fo{font-size:2em}.Aw2D45{color:transparent}._4b92dm{color:#1a1a1a}.o8qdX5{color:#fafafa}.VmcM14:hover{color:transparent}._4pdGQt:hover{color:#1a1a1a}._8MyiUe:hover{color:#fafafa}._8eHx03{background-color:transparent}.ltaYW3{background-color:#1a1a1a}.BhFfzx{background-color:#fafafa}.rlsckE:hover{background-color:transparent}.VtITcW:hover{background-color:#1a1a1a}.MVQf1m:hover{background-color:#fafafa}.HV1jTO:active{background-color:transparent}.x3vCBC:active{background-color:#1a1a1a}._8D7pd9:active{background-color:#fafafa}.mwSZUD{border-color:transparent}._-9Btvy{border-color:#1a1a1a}.yGe1Ir{border-color:#fafafa}.fXkby9:hover{border-color:transparent}.gnRIud:hover{border-color:#1a1a1a}.fFoYjL:hover{border-color:#fafafa}._9q2qP5:focus{border-color:transparent}._11iKz3:focus{border-color:#1a1a1a}.HIkC1B:focus{border-color:#fafafa}.inverted ._4b92dm{color:#fafafa}.inverted .o8qdX5{color:#1a1a1a}.inverted ._4pdGQt:hover{color:#fafafa}.inverted ._8MyiUe:hover{color:#1a1a1a}.inverted .ltaYW3{background-color:#fafafa}.inverted .BhFfzx{background-color:#1a1a1a}.inverted .VtITcW:hover{background-color:#fafafa}.inverted .MVQf1m:hover{background-color:#1a1a1a}.inverted .x3vCBC:active{background-color:#fafafa}.inverted ._8D7pd9:active{background-color:#1a1a1a}.inverted ._-9Btvy{border-color:#fafafa}.inverted .yGe1Ir{border-color:#1a1a1a}.inverted .gnRIud:hover{border-color:#fafafa}.inverted .fFoYjL:hover{border-color:#1a1a1a}.inverted ._11iKz3:focus{border-color:#fafafa}.inverted .HIkC1B:focus{border-color:#1a1a1a}}@media screen and (min-width:1024px){._1b2v1R,.xXc9fo{font-size:3em}.PBhfKy{color:transparent}.CgYuy9{color:#1a1a1a}.HNuXy3{color:#fafafa}.XhfU7x:hover{color:transparent}.K7oBMw:hover{color:#1a1a1a}.WumQPC:hover{color:#fafafa}.jZWNUM{background-color:transparent}.Ya3qdL{background-color:#1a1a1a}.nnqEoI{background-color:#fafafa}.ZyQBE3:hover{background-color:transparent}._3-idl1:hover{background-color:#1a1a1a}.uUQ62H:hover{background-color:#fafafa}.AoVx-4:active{background-color:transparent}.JFpWQB:active{background-color:#1a1a1a}.eWCHpU:active{background-color:#fafafa}._8z2-Ts{border-color:transparent}.p0zb6v{border-color:#1a1a1a}.CaVPgM{border-color:#fafafa}.wz8Ybj:hover{border-color:transparent}.yFX9Bt:hover{border-color:#1a1a1a}.G_Ks9n:hover{border-color:#fafafa}.MQxQG6:focus{border-color:transparent}.j1NZTt:focus{border-color:#1a1a1a}.qn6vfj:focus{border-color:#fafafa}.inverted .CgYuy9{color:#fafafa}.inverted .HNuXy3{color:#1a1a1a}.inverted .K7oBMw:hover{color:#fafafa}.inverted .WumQPC:hover{color:#1a1a1a}.inverted .Ya3qdL{background-color:#fafafa}.inverted .nnqEoI{background-color:#1a1a1a}.inverted ._3-idl1:hover{background-color:#fafafa}.inverted .uUQ62H:hover{background-color:#1a1a1a}.inverted .JFpWQB:active{background-color:#fafafa}.inverted .eWCHpU:active{background-color:#1a1a1a}.inverted .p0zb6v{border-color:#fafafa}.inverted .CaVPgM{border-color:#1a1a1a}.inverted .yFX9Bt:hover{border-color:#fafafa}.inverted .G_Ks9n:hover{border-color:#1a1a1a}.inverted .j1NZTt:focus{border-color:#fafafa}.inverted .qn6vfj:focus{border-color:#1a1a1a}}@media screen and (min-width:1280px){.Y4hs5_{color:transparent}.BEwYdP{color:#1a1a1a}.oLHsDL{color:#fafafa}.Tv9kwZ:hover{color:transparent}._3Yc9VP:hover{color:#1a1a1a}.QvUeTY:hover{color:#fafafa}.gFn7y6{background-color:transparent}._5_fipl{background-color:#1a1a1a}.VBoBXH{background-color:#fafafa}.B2ZYP6:hover{background-color:transparent}.XSzgJm:hover{background-color:#1a1a1a}.GdsyI9:hover{background-color:#fafafa}.sp6-_K:active{background-color:transparent}.m1dGmX:active{background-color:#1a1a1a}.F8ABi0:active{background-color:#fafafa}.ycqC89{border-color:transparent}.zwPMh8{border-color:#1a1a1a}.nHkSni{border-color:#fafafa}.IJQNcS:hover{border-color:transparent}.vwenav:hover{border-color:#1a1a1a}.EDikIT:hover{border-color:#fafafa}.aqBpwF:focus{border-color:transparent}.u97qUL:focus{border-color:#1a1a1a}.zzHwgX:focus{border-color:#fafafa}.inverted .BEwYdP{color:#fafafa}.inverted .oLHsDL{color:#1a1a1a}.inverted ._3Yc9VP:hover{color:#fafafa}.inverted .QvUeTY:hover{color:#1a1a1a}.inverted ._5_fipl{background-color:#fafafa}.inverted .VBoBXH{background-color:#1a1a1a}.inverted .XSzgJm:hover{background-color:#fafafa}.inverted .GdsyI9:hover{background-color:#1a1a1a}.inverted .m1dGmX:active{background-color:#fafafa}.inverted .F8ABi0:active{background-color:#1a1a1a}.inverted .zwPMh8{border-color:#fafafa}.inverted .nHkSni{border-color:#1a1a1a}.inverted .vwenav:hover{border-color:#fafafa}.inverted .EDikIT:hover{border-color:#1a1a1a}.inverted .u97qUL:focus{border-color:#fafafa}.inverted .zzHwgX:focus{border-color:#1a1a1a}}@media (max-width:50rem){body{word-wrap:break-word;color:rgba(18,52,86,.47059);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;font-size:1rem;line-height:1.5rem;padding-left:calc(.5rem + 1px);padding-right:calc(.5rem + 1px)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.ZlgcWo.uvJREe,main.ZlgcWo{background-image:img/background-2x.jpg}} \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-a/.npmignore b/integration-test/packages/atoms/duplicate-classes-a/.npmignore new file mode 100644 index 0000000..3f77cdc --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/.npmignore @@ -0,0 +1,3 @@ +**/*.tsx +**/*.ts +!**/*.d.ts diff --git a/integration-test/packages/atoms/duplicate-classes-a/index.css b/integration-test/packages/atoms/duplicate-classes-a/index.css new file mode 100644 index 0000000..71ba373 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/index.css @@ -0,0 +1,15 @@ +:import("@my-org/simple-class/module.css") { + single-declaration: singleDeclaration; +} + +.simpleDeclaration { + composes: single-declaration; +} + +.withSharedVar { + color: blue; + + .nested { + color: green; + } +} diff --git a/integration-test/packages/atoms/duplicate-classes-a/index.d.ts.snap b/integration-test/packages/atoms/duplicate-classes-a/index.d.ts.snap new file mode 100644 index 0000000..4c4f5bf --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/index.d.ts.snap @@ -0,0 +1,4 @@ +declare const simpleDeclaration: string; +declare const withSharedVar: string; +declare const nested: string +export { simpleDeclaration, withSharedVar, nested } \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-a/index.esm.js.snap b/integration-test/packages/atoms/duplicate-classes-a/index.esm.js.snap new file mode 100644 index 0000000..b7d7e96 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/index.esm.js.snap @@ -0,0 +1,3 @@ +export var simpleDeclaration = "_9M8f-j"; +export var withSharedVar = "sMmOaU"; +export var nested = "R2GDg-" \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-a/index.js.snap b/integration-test/packages/atoms/duplicate-classes-a/index.js.snap new file mode 100644 index 0000000..97d481a --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/index.js.snap @@ -0,0 +1,5 @@ +module.exports = { + simpleDeclaration: "_9M8f-j", + withSharedVar: "sMmOaU", + nested: "R2GDg-" +}; \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-a/module.css.json.snap b/integration-test/packages/atoms/duplicate-classes-a/module.css.json.snap new file mode 100644 index 0000000..5afb86f --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/module.css.json.snap @@ -0,0 +1 @@ +{"simpleDeclaration":"_9M8f-j","withSharedVar":"sMmOaU","nested":"R2GDg-"} \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-a/module.css.snap b/integration-test/packages/atoms/duplicate-classes-a/module.css.snap new file mode 100644 index 0000000..470f6f7 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/module.css.snap @@ -0,0 +1,15 @@ +:import("@my-org/simple-class/module.css") { + single-declaration: singleDeclaration; +} + +.simpleDeclaration { + composes: single-declaration; +} + +.withSharedVar { + color: blue +} + +.withSharedVar .nested { + color: green; + } diff --git a/integration-test/packages/atoms/duplicate-classes-a/package.json b/integration-test/packages/atoms/duplicate-classes-a/package.json new file mode 100644 index 0000000..32fd488 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/package.json @@ -0,0 +1,10 @@ +{ + "name": "@my-org/duplicate-classes-a", + "version": "0.0.1", + "main": "index.js", + "module": "index.esm.js", + "sideEffects": false, + "dependencies": { + "@my-org/simple-class": "0.0.1" + } +} diff --git a/integration-test/packages/atoms/duplicate-classes-a/result.css.snap b/integration-test/packages/atoms/duplicate-classes-a/result.css.snap new file mode 100644 index 0000000..470042e --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-a/result.css.snap @@ -0,0 +1,11 @@ +._9M8f-j { + color: red; +} + +.sMmOaU { + color: blue +} + +.sMmOaU .R2GDg- { + color: green; + } diff --git a/integration-test/packages/atoms/duplicate-classes-b/.npmignore b/integration-test/packages/atoms/duplicate-classes-b/.npmignore new file mode 100644 index 0000000..3f77cdc --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/.npmignore @@ -0,0 +1,3 @@ +**/*.tsx +**/*.ts +!**/*.d.ts diff --git a/integration-test/packages/atoms/duplicate-classes-b/index.css b/integration-test/packages/atoms/duplicate-classes-b/index.css new file mode 100644 index 0000000..71ba373 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/index.css @@ -0,0 +1,15 @@ +:import("@my-org/simple-class/module.css") { + single-declaration: singleDeclaration; +} + +.simpleDeclaration { + composes: single-declaration; +} + +.withSharedVar { + color: blue; + + .nested { + color: green; + } +} diff --git a/integration-test/packages/atoms/duplicate-classes-b/index.d.ts.snap b/integration-test/packages/atoms/duplicate-classes-b/index.d.ts.snap new file mode 100644 index 0000000..4c4f5bf --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/index.d.ts.snap @@ -0,0 +1,4 @@ +declare const simpleDeclaration: string; +declare const withSharedVar: string; +declare const nested: string +export { simpleDeclaration, withSharedVar, nested } \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-b/index.esm.js.snap b/integration-test/packages/atoms/duplicate-classes-b/index.esm.js.snap new file mode 100644 index 0000000..b7d7e96 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/index.esm.js.snap @@ -0,0 +1,3 @@ +export var simpleDeclaration = "_9M8f-j"; +export var withSharedVar = "sMmOaU"; +export var nested = "R2GDg-" \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-b/index.js.snap b/integration-test/packages/atoms/duplicate-classes-b/index.js.snap new file mode 100644 index 0000000..97d481a --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/index.js.snap @@ -0,0 +1,5 @@ +module.exports = { + simpleDeclaration: "_9M8f-j", + withSharedVar: "sMmOaU", + nested: "R2GDg-" +}; \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-b/module.css.json.snap b/integration-test/packages/atoms/duplicate-classes-b/module.css.json.snap new file mode 100644 index 0000000..5afb86f --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/module.css.json.snap @@ -0,0 +1 @@ +{"simpleDeclaration":"_9M8f-j","withSharedVar":"sMmOaU","nested":"R2GDg-"} \ No newline at end of file diff --git a/integration-test/packages/atoms/duplicate-classes-b/module.css.snap b/integration-test/packages/atoms/duplicate-classes-b/module.css.snap new file mode 100644 index 0000000..470f6f7 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/module.css.snap @@ -0,0 +1,15 @@ +:import("@my-org/simple-class/module.css") { + single-declaration: singleDeclaration; +} + +.simpleDeclaration { + composes: single-declaration; +} + +.withSharedVar { + color: blue +} + +.withSharedVar .nested { + color: green; + } diff --git a/integration-test/packages/atoms/duplicate-classes-b/package.json b/integration-test/packages/atoms/duplicate-classes-b/package.json new file mode 100644 index 0000000..12194b1 --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/package.json @@ -0,0 +1,10 @@ +{ + "name": "@my-org/duplicate-classes-b", + "version": "0.0.1", + "main": "index.js", + "module": "index.esm.js", + "sideEffects": false, + "dependencies": { + "@my-org/simple-class": "0.0.1" + } +} diff --git a/integration-test/packages/atoms/duplicate-classes-b/result.css.snap b/integration-test/packages/atoms/duplicate-classes-b/result.css.snap new file mode 100644 index 0000000..470042e --- /dev/null +++ b/integration-test/packages/atoms/duplicate-classes-b/result.css.snap @@ -0,0 +1,11 @@ +._9M8f-j { + color: red; +} + +.sMmOaU { + color: blue +} + +.sMmOaU .R2GDg- { + color: green; + } diff --git a/integration-test/packages/atoms/icss-import/index.css b/integration-test/packages/atoms/icss-import/index.css index 83a0fe6..cd5c4f5 100644 --- a/integration-test/packages/atoms/icss-import/index.css +++ b/integration-test/packages/atoms/icss-import/index.css @@ -1,6 +1,6 @@ :import("@my-org/simple-class/module.css") { - single: single-declaration; - multiple: multiple-declarations; + single: singleDeclaration; + multiple: multipleDeclarations; } :root { diff --git a/integration-test/packages/atoms/icss-import/index.esm.js.snap b/integration-test/packages/atoms/icss-import/index.esm.js.snap index c654552..a2d1555 100644 --- a/integration-test/packages/atoms/icss-import/index.esm.js.snap +++ b/integration-test/packages/atoms/icss-import/index.esm.js.snap @@ -1,5 +1,5 @@ -export var localClass = "n4oS1I"; -export var localComposes = "i6EUck n4oS1I dgII7d"; -export var simpleComposes = ""; -export var complexComposes = "i6EUck n4oS1I dgII7d _1RrCqF pQ96hs"; -export var extend = "_8F86eH" \ No newline at end of file +export var localClass = "hZEeRw"; +export var localComposes = "Gpf-P8 hZEeRw dgII7d"; +export var simpleComposes = "_9M8f-j"; +export var complexComposes = "_9M8f-j o3-BnE Gpf-P8 hZEeRw dgII7d _1RrCqF pQ96hs"; +export var extend = "_3XV0Ef o3-BnE" \ No newline at end of file diff --git a/integration-test/packages/atoms/icss-import/index.js.snap b/integration-test/packages/atoms/icss-import/index.js.snap index 30dc36c..d7b9dac 100644 --- a/integration-test/packages/atoms/icss-import/index.js.snap +++ b/integration-test/packages/atoms/icss-import/index.js.snap @@ -1,7 +1,7 @@ module.exports = { - localClass: "n4oS1I", - localComposes: "i6EUck n4oS1I dgII7d", - simpleComposes: "", - complexComposes: "i6EUck n4oS1I dgII7d _1RrCqF pQ96hs", - extend: "_8F86eH" + localClass: "hZEeRw", + localComposes: "Gpf-P8 hZEeRw dgII7d", + simpleComposes: "_9M8f-j", + complexComposes: "_9M8f-j o3-BnE Gpf-P8 hZEeRw dgII7d _1RrCqF pQ96hs", + extend: "_3XV0Ef o3-BnE" }; \ No newline at end of file diff --git a/integration-test/packages/atoms/icss-import/module.css.json.snap b/integration-test/packages/atoms/icss-import/module.css.json.snap index e904dbb..f744298 100644 --- a/integration-test/packages/atoms/icss-import/module.css.json.snap +++ b/integration-test/packages/atoms/icss-import/module.css.json.snap @@ -1 +1 @@ -{"localClass":"n4oS1I","localComposes":"i6EUck n4oS1I dgII7d","simpleComposes":"","complexComposes":"i6EUck n4oS1I dgII7d _1RrCqF pQ96hs","extend":"_8F86eH"} \ No newline at end of file +{"localClass":"hZEeRw","localComposes":"Gpf-P8 hZEeRw dgII7d","simpleComposes":"_9M8f-j","complexComposes":"_9M8f-j o3-BnE Gpf-P8 hZEeRw dgII7d _1RrCqF pQ96hs","extend":"_3XV0Ef o3-BnE"} \ No newline at end of file diff --git a/integration-test/packages/atoms/icss-import/module.css.snap b/integration-test/packages/atoms/icss-import/module.css.snap index 8543627..a4a1ce7 100644 --- a/integration-test/packages/atoms/icss-import/module.css.snap +++ b/integration-test/packages/atoms/icss-import/module.css.snap @@ -1,6 +1,6 @@ :import("@my-org/simple-class/module.css") { - single: single-declaration; - multiple: multiple-declarations; + single: singleDeclaration; + multiple: multipleDeclarations; } :root { diff --git a/integration-test/packages/atoms/icss-import/result.css.snap b/integration-test/packages/atoms/icss-import/result.css.snap index afb41a5..83b5f05 100644 --- a/integration-test/packages/atoms/icss-import/result.css.snap +++ b/integration-test/packages/atoms/icss-import/result.css.snap @@ -1,4 +1,11 @@ -/* custom static css (e.g. normalize) can be added here */._1RrCqF { +._9M8f-j { + color: red; +}.o3-BnE { + color: blue; + width: 100px; + display: flex; + border: 1px solid red; +}/* custom static css (e.g. normalize) can be added here */._1RrCqF { color: #1a1a1a }.pQ96hs:hover { color: #fafafa @@ -15,16 +22,16 @@ --large: 4em; } -.n4oS1I { +.hZEeRw { height: 100%; } -.i6EUck { +.Gpf-P8 { text-decoration: underline; } -._8F86eH { +._3XV0Ef { font-size: var(--large); } diff --git a/package.json b/package.json index 8af76ba..75e3158 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@utilitycss/atomic", - "version": "0.16.2", + "version": "0.17.0", "author": "Andrea Moretti (@axyz) ", "description": "Atomic CSS composition for yarn workspaces", "repository": "utilitycss/atomic", diff --git a/src/postcss/atomic-css-modules/generateScopedName.ts b/src/postcss/atomic-css-modules/generateScopedName.ts index 01e8a27..823dd81 100644 --- a/src/postcss/atomic-css-modules/generateScopedName.ts +++ b/src/postcss/atomic-css-modules/generateScopedName.ts @@ -11,7 +11,6 @@ const generateScopedName: generateScopedName = ({ trackClasses, importedElectronRE, importedModuleRE, - ICSSImportRE, root, server, }) => @@ -22,13 +21,14 @@ const generateScopedName: generateScopedName = ({ const definitionsMap = new Map(); const isElectron = importedElectronRE.test(filename); root.walkRules(new RegExp(`(\.${name}|:import)`), (rule): any => { - // ensure that a rule that appear multiple times has the same hash - // e.g. inside media queries or when ICSS imported in a different atom. - // in the context of ICSS import and composes the filename will point - // to the imported module as relative imports are forbidden in atoms - // we can safely check for @scope/something patterns to get the correct - // package name if (isElectron) { + // ensure that a rule that appear multiple times has the same hash + // e.g. inside media queries or when ICSS imported in a different atom. + // in the context of ICSS import and composes the filename will point + // to the imported module as relative imports are forbidden in atoms + // we can safely check for @scope/something patterns to get the correct + // package name + // check for @scope/electrons pattern in the filename pkgName = filename.match(importedElectronRE)[1]; const key = `${pkgName};${name}`; @@ -43,10 +43,9 @@ const generateScopedName: generateScopedName = ({ const key = `${pkg};${name}`; trackClasses.set(key, hash); } - // short circuit: electron definition for a given name is always // highest priority and unique source of truth. - return DEVELOPMENT ? `${name.toUpperCase()}_${hash}` : hash; + return; } else if (importedModuleRE.test(filename)) { // check for @scope/xxx pattern in the filename const importedPackage = filename.match(importedModuleRE)[1]; @@ -58,20 +57,6 @@ const generateScopedName: generateScopedName = ({ } else { pkgName = importedPackage; } - } else if (/:import/.test(rule.selector)) { - // check for @scope/xxx pattern in the ICSS selector - const importedPackage = rule.selector.match(ICSSImportRE)[1]; - const pkg = <{ [key: string]: any }>( - server.readFileSync(`pkg:${importedPackage}`) - ); - if (pkg.proxy) { - // check if it is a proxy atom (passthrough for utility electrons) - // in that case we can use the same hash of the respective electron - // and avoid a duplicate for each defined rule - pkgName = pkg.proxy; - } else { - pkgName = importedPackage; - } } else { // base case: use the package name from package.json const pkg = <{ [key: string]: any }>( @@ -86,8 +71,8 @@ const generateScopedName: generateScopedName = ({ } const key = `${pkgName};${name}`; - // if the hash was generated on a different source file we should use it + // if the hash was generated on a different source file we should use it if (trackClasses.has(key)) { hash = trackClasses.get(key); } else { diff --git a/templates/package.json.hbs b/templates/package.json.hbs index 5fd79d3..81799da 100644 --- a/templates/package.json.hbs +++ b/templates/package.json.hbs @@ -7,7 +7,7 @@ "start": "atomic start" }, "devDependencies": { - "@utilitycss/atomic": "^0.16.0", + "@utilitycss/atomic": "^0.17.0", "lerna": "3.13.3" }, "workspaces": {