{"_id":"2letterbem","_rev":"4-3615e73af37e9f84ee6d4756a6c3b553","name":"2letterbem","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"2letterbem","version":"1.0.0","description":"Renames css classes to 2 letters to further compress css files.","main":"index.js","scripts":{"test":"jest","start":"node index.js"},"config":{"twoLetterBem":{"cssPath":"./tests/index.css","outputCssPath":"./tests/compiled.css","outputJsonPath":"./tests/twoletter.json","whiteList":[".whitelist"]}},"repository":{"type":"git","url":"git+https://github.com/sidouglas/2letterbem.git"},"author":{"name":"Simon Douglas"},"license":"ISC","bin":{"twoletterbem":"./index.js"},"bugs":{"url":"https://github.com/sidouglas/2letterbem/issues"},"homepage":"https://github.com/sidouglas/2letterbem#readme","dependencies":{"css":"^2.2.4","jest":"^25.4.0","lodash":"^4.17.15","string-extract-class-names":"^5.9.22","string-permutation":"^0.1.0","yargs":"^15.3.1"},"gitHead":"53e3eb8e5c5d2858913daab5f7b77cca1f6f67de","_id":"2letterbem@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5ldced9kzi3H2JLLTrdf5HqGfVvBBZ370hUbZlODDd0V2z/nxptB5ZKehIZF7WXlfYKwcEceFhenrAD9JOgRWQ==","shasum":"22a5ac96b694ee380dd8368dfd12cabfc934370f","tarball":"https://registry.npmjs.org/2letterbem/-/2letterbem-1.0.0.tgz","fileCount":5,"unpackedSize":8610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep3dUCRA9TVsSAnZWagAAezkP/0/5byhr7Qlmwyon9e8J\nSoV8DiWYJzfogGMh6DX2pWtR550/c4CJLbAAdP/NW+xnOrWgWZ641wakEAq0\nT5AaEKcDw4tBnSk1qqZG+DFJ9qNpWXKI/bcx48mziyybJk9eZq35MYb1Fpun\n5viogemqCZuHk76tfZPboLoeZeshFc7M5da+BIyxMeez9eISktQKeej+9sHx\nOImRtai7rxDHGBcg0KTwZWShPhFDccHpKycscD11o6NYx3Gaqor+TX3QkToL\nGLD/Kq+XEna5N2IxoXKwrjbVcEaXbluXZl9Vj/YTRMqIQYsFyWRH8HUSYvmk\ndwv28kdgEN1Ki5mLKPe6B6bJDjWDN+/pVy2P1fHkIEXcSJd3e0Eerk6WZIG0\nytY+WcsDbXXuP9gq46UAI4kYt1ShafiIrmLwjqNxZC1ieinYmjNtMVQA4EUy\nb3S6MIVIAHvvK0GUOFCF1eEJmACWGlXqvDL+Tfmec0t9EGuDWo3rQ7O5ejjB\nyKuI9Le0ftLRTLTG0GQBhI4d60KtDYnGSQHgCkQs6FZQsZrxdtQ+gu5kIMd3\nmbElqp8ydXHpEhiw7IIs5ZqPjEz1rrQkzCeXef5qdTNMFTRlMLtCdOPg3oPX\ntRsOMl7xTG4RHKkx2GdN2bG6MIQWmoNivgXDCk1QQ45hqTN8C+cyg6lJ2lXD\n26yH\r\n=Hb3r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD89ydPhrLX0as3k3CqWe623zmlt5sLTzO8dGZBmu+w+QIgRGoeR6v0AEoWYeqUyCGMPhFoGr9fwo/UntbJBxpAbD0="}]},"maintainers":[{"name":"sidouglas","email":"si@simondouglas.com"}],"_npmUser":{"name":"sidouglas","email":"si@simondouglas.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2letterbem_1.0.0_1588033364483_0.23147606568654777"},"_hasShrinkwrap":false},"1.0.1":{"name":"2letterbem","version":"1.0.1","description":"Renames css classes to 2 letters to further compress css files.","main":"index.js","scripts":{"test":"jest","start":"node index.js"},"repository":{"type":"git","url":"git+https://github.com/sidouglas/2letterbem.git"},"author":{"name":"Simon Douglas"},"license":"ISC","bin":{"twoletterbem":"./index.js"},"bugs":{"url":"https://github.com/sidouglas/2letterbem/issues"},"homepage":"https://github.com/sidouglas/2letterbem#readme","dependencies":{"css":"^2.2.4","jest":"^25.4.0","lodash":"^4.17.15","string-extract-class-names":"^5.9.22","string-permutation":"^0.1.0","yargs":"^15.3.1"},"gitHead":"de1b3062551dc429618be0c7ffc1cf6a5923e8f6","_id":"2letterbem@1.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xdpPhRZGYYUw7geVtHlseWZAkMZqzUiLI2i6s3XKGDENVbCfr1gRZjznxjjHOiluaSKGHRMa8hcGdRcUuozbYA==","shasum":"b794b37196b86e986e2c609eb8aabf234411bec7","tarball":"https://registry.npmjs.org/2letterbem/-/2letterbem-1.0.1.tgz","fileCount":6,"unpackedSize":9610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep4VeCRA9TVsSAnZWagAA84UP/25orQrZoeWQNDlkJA71\nEnDqv63ShxGeYy9d7KCF9XdPlRWRsEdgeDfZhF/6EJcfG2FhD/tnQVKFWk+J\n4li/jKtEx+giymV9SpLBkGL4mQv/q2CIFPoqzljK3RhtREp1y59SeoqajqDq\nQfKBoG3KmP2VYIHbqr1x8cyIZThpzIIj06FjysAPZANdvyNkYTFOSvN75Wy1\nO+CKUc8m3FoSIhHDs5eBjS9CLT4O8VQFTK5BUg49ntHAim69Ne2rgYWXhhov\nIkh0eGWBcxxByK68zfGEzKpTIow1KAo2IdTGhZJ2u7Pi45s37cQ4mM9Wllpq\n/Sz+ZR63NN/igMwT/6ffYjlkqYuYWc0R0BGRUT1JcpPA72SPaThR6TR1KDZz\nxJk8OAuH/MC7ABZGOcp8/kMUpqa8yk0Nr/Hh/ZnLQB9vpvEAuvMTNwAdLAMr\nTYy7mdzY/YLmgYLr/d0aUjiNlIKUn3cLa0JJ2RwtnDjCmawhW13TiaokrGF9\no6neFG3caGsDJfnwr8quG9Y35SpLBxq6PJRbyCJIGNyfpkHUmAGa1/8ZJH4g\nMCKw2++mTIJaZjkMZ9PXx6EPpbbOWPnGgAUiEhwulVuODeXPqWauUVLWvnko\nXdTVpXqGqMQDl1Yp/w8OoWowXrBNq2K2JjBqE4EF8dQHxbrSg+9xU0XAYSX9\n42r5\r\n=eINC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9TikV32DZ2F9nl/V5Ovar3+FU5yz/Bakpn86DN+/K1AiAinOsOBUG0QfsNF37w0df4B/kPTNP32SSB9Cgtl/rZJA=="}]},"maintainers":[{"name":"sidouglas","email":"si@simondouglas.com"}],"_npmUser":{"name":"sidouglas","email":"si@simondouglas.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2letterbem_1.0.1_1588036957592_0.9255757908479789"},"_hasShrinkwrap":false},"1.0.2":{"name":"2letterbem","version":"1.0.2","description":"Renames css classes to 2 letters to further compress css files.","main":"index.js","scripts":{"test":"jest","start":"node 2letterbem.js"},"config":{"twoLetterBem":{"cssPath":"./tests/index.css","outputCssPath":"./tests/compiled.css","outputJsonPath":"./tests/twoletter.json","whiteList":[".is-active",".no-svg",".no-vue",".vue",".wf-inactive",".no-keyboard-focus",".svg"]}},"repository":{"type":"git","url":"git+https://github.com/sidouglas/2letterbem.git"},"author":{"name":"Simon Douglas"},"license":"ISC","bin":{"twoletterbem":"./index.js"},"bugs":{"url":"https://github.com/sidouglas/2letterbem/issues"},"homepage":"https://github.com/sidouglas/2letterbem#readme","dependencies":{"css":"^2.2.4","jest":"^25.4.0","lodash":"^4.17.15","prettier":"^2.0.5","string-extract-class-names":"^5.9.22","string-permutation":"^0.1.0","yargs":"^15.3.1"},"gitHead":"0d73c081f75e21299192bc7680dbb55087882966","_id":"2letterbem@1.0.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Ss9NjzNiHHUBy7f7y4A6YQG62F6G2hYt/w85k/KTErrJMaahO1Eo5tmePeY+wB4q7QfX4R6J3FQHE28ynHf5Tg==","shasum":"6b95453c9e8a36b0c7efc21407fd777c4c923516","tarball":"https://registry.npmjs.org/2letterbem/-/2letterbem-1.0.2.tgz","fileCount":7,"unpackedSize":10674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep6qMCRA9TVsSAnZWagAAP4sP/j8iWG3vro/D92jf7mKa\nDuUA1K4C1IC8eBTqkFAvin/TdiiOvqw6Yc1hdhKdJku9+xm0EWv8NJM1aDZY\nuZHHGmf+yDaSZOg4TeiQ49/inZpDTtQS5oxE+Aib7RbKJJzhghKXJ0ABmDZN\novP4opuIErxeLm5/qzBzALR9zYijNZT18YwTGKclwD6Q03WSHQiMwl4S4G6U\nCk4lsRawZrboeV3zmapm6eRDchDl7n6fC9lu8A4H6XnLYdRynF4vZxswCHUy\nacaMxiE32gdJ5le/mjli2AHZJ2RBuq7VUracd9loAio2MrNgnI9XbTql+EhZ\nkp20+l1lClUgy0rdswQ5cTT2u6XhZ+N31jeFpuk/XfyYmnX5VzsJOW0WFjgw\nEjmAsmOzgBFEG8QGrOPHq5f3TtaRG3UuXjbpLmg6MmTFMrVMbOsx3u24N+Zr\nnwvWjrmxFnwv9Td+HtsAOo4UtaFybas+55l4Syyb0Z6w7WvwxiyaDfSvo4Fd\n49mEkBDH0weK7KGg8asUsYkUUCO0RbMGLEtJ6ExtTRIz1HcoRuRjHXRmpDQ7\nSrzfSZbQYLiuhtwmPN2q+SexklJ4rIA5N51M1/rybd5VAVhjMciTNP9EaDca\nBOkB8m1dLCh5/3eLL2edz8y3J8DbkxkEVvngmTa0K8RGC3oj4zVPUQF1qYk2\nNRus\r\n=GaPQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuc8aqgvUBNeuSbbd7VIlZuvUFNI3hEf7g1yOIaGyPvAIhAP5XBUDisTfACfR40y5uZLoMByzAmjSNh+aKQkvsk0Av"}]},"maintainers":[{"name":"sidouglas","email":"si@simondouglas.com"}],"_npmUser":{"name":"sidouglas","email":"si@simondouglas.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2letterbem_1.0.2_1588046475767_0.07918703887542766"},"_hasShrinkwrap":false},"1.0.3":{"name":"2letterbem","version":"1.0.3","description":"Renames css classes to 2 letters to further compress css files.","main":"index.js","scripts":{"test":"jest","start":"node 2letterbem.js"},"config":{"twoLetterBem":{"cssPath":"./tests/index.css","outputCssPath":"./tests/compiled.css","outputJsonPath":"./tests/twoletter.json","whiteList":[".is-active",".no-svg",".no-vue",".vue",".wf-inactive",".no-keyboard-focus",".svg"]}},"repository":{"type":"git","url":"git+https://github.com/sidouglas/2letterbem.git"},"author":{"name":"Simon Douglas"},"license":"ISC","bin":{"twoletterbem":"./index.js"},"bugs":{"url":"https://github.com/sidouglas/2letterbem/issues"},"homepage":"https://github.com/sidouglas/2letterbem#readme","dependencies":{"css":"^2.2.4","jest":"^25.4.0","lodash":"^4.17.15","prettier":"^2.0.5","string-extract-class-names":"^5.9.22","string-permutation":"^0.1.0","yargs":"^15.3.1"},"gitHead":"cbbe35834cc28f9eb9e9dfe979110d78b3bbb2bc","_id":"2letterbem@1.0.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2cV+nfrawSUsKtZUwEFT3DVfCopx1VNu9zIjJZtDW+k/BeL9qaJnGF29Kc/wrCVgF12lzU3UmsLJOY4u5SbzDw==","shasum":"d4d84ca7164b23bd554612f2a1dedc60653c77aa","tarball":"https://registry.npmjs.org/2letterbem/-/2letterbem-1.0.3.tgz","fileCount":7,"unpackedSize":10824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep69eCRA9TVsSAnZWagAAt6oP/2o8HYa5U9xCJegfnx7z\nES/WEY8APuMmjfzIwz6pwj4MioMyt/02alnHY3NgINItVVrBfmg6s5jDmlsx\n4aviIFSNweoMCsF/BI999Kty6ZXvNlduU0BpwpgRELAJg5Ig3MZWdiubpU/r\nE+Z2ILs4YoGsU6BAjUWutkkPSjjXPXJuOgfQhzOyDGvlQFyG4Fi2whDNO4zH\na4G+cOiaWjmUVSWQ1vUh7ZgFoeHZqw/srJ0MLkUwupSKEpjO9Gi6RYjFQuK2\nhmU8nfghuxeBukeYwrX4oHYznhYJOzW1AVAPBmAyqx7JP9BzaepwfMSkgD5F\nk2NacscjFjB1wxnfJpR0aa+/2/AFzh69hSg4MtLMA9x2Zggx/9WDMK9tEeeX\nmlg1r9lu+Xnug0gn2hROeUfQNIOhkdIxxRfPePhTWkbPr69thR/Pktg5wp3W\nLN5cHji3TGOA2Dq31U2r0oktnImFz92fGtTweUpVgYD5AkB+pVltoMVUMLl+\nuO/6lhpK4iERZ3+Hkhp/1Jmb74thEN7GFXRK6PjIpp+kWNJySGXXdvZrSWeo\nlK1SfxbrwY17es8FOwsJAOQp0dAbITtWZac+BlYqcnMYiEDQfUcY6fQ32h4i\nWPTfvocSk41zHXckEkXnRlMjqq1Q7qhpS7D8l7spKOD3WbS//BCikD+vYn2c\nswUQ\r\n=tXeB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeB1yvsroD/aMszjeGKO70ZNuwU5HWQHwU7Eb9ldZirAIhANmjFg1w07aHFO6ww4AfNwualWiwV3WWjbi4BW2hwmkO"}]},"maintainers":[{"name":"sidouglas","email":"si@simondouglas.com"}],"_npmUser":{"name":"sidouglas","email":"si@simondouglas.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2letterbem_1.0.3_1588047710138_0.4488550362391064"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-28T00:22:44.483Z","1.0.0":"2020-04-28T00:22:44.600Z","modified":"2022-04-04T10:19:23.080Z","1.0.1":"2020-04-28T01:22:37.711Z","1.0.2":"2020-04-28T04:01:15.890Z","1.0.3":"2020-04-28T04:21:50.288Z"},"maintainers":[{"name":"sidouglas","email":"si@simondouglas.com"}],"description":"Renames css classes to 2 letters to further compress css files.","homepage":"https://github.com/sidouglas/2letterbem#readme","repository":{"type":"git","url":"git+https://github.com/sidouglas/2letterbem.git"},"author":{"name":"Simon Douglas"},"bugs":{"url":"https://github.com/sidouglas/2letterbem/issues"},"license":"ISC","readme":"# 2 Letter Bem\n\nCompresses your css classes down to a few characters ( probably 2 ), which you can then use in your html.\nThis is standalone package that is run as a npm script.\n##### Compressing css this way + gzip = *negligible results*\nExample - bootstrap 4.4.1 css minified and gzipped:\n* bootstrap.min.css.gz -> 23.6KB\n* 2 letter bem version -> 22.8KB\n* However, this can be used with html, to shave a kilobyte or two. \nThis could be used to obfuscate your work.\n\ninput css file:\n```\n.something { ... }\n.something__block { ... }\n.something__block:hover .that-thing { ... }\n.js-action-state something__block.active { ... }\n```\noutput - creates 2 files\ncss: \n```\n.a { ... }\n.b { ... }\n.b:hover.c { ... }\n.js-action-state b.d { ... }\n```\njson:\n```\n{\n\"something\": \"a\",\n\"something__block\": \"b\",\n\"that-thing\": \"c\",\n\"active\" \"d\"\n}\n```\nAnything prepended with .js in your css is not compressed.\nYou can specify a `whiteList` of classes that you don't want to be touched. They won't appear in the json file either. You can use the json file as dictionary now for your html. \n\nSimple example in PHP:\n```\nfunction klass($cssName){\n    $output = [];\n    $cssNames = explode(' ', $cssInput);\n    foreach ($cssNames as $cssName) {\n      if (array_key_exists($cssName, $allYourClassNamesReadFromJSON)) {\n        $output[] = $allYourClassNamesReadFromJSON[$cssName];\n      } else {\n        $output[] = $cssName;\n      }\n    }\n    return implode(' ', $output);\n}\n<div class=\"klass('something')\"></div> renders as <div class=\"a\"></div>\n```\n\n### How to use\n\nIn package.json as an example:\n```\n{\n...\n \"config\": {\n    \"2letterbem\": {\n      \"whiteList\": [\n        \".is-active\",\n        \".wf-inactive\",\n      ]\n    }\n  },\n  dependencies: { ... }\n  devDependencies: { ... }\n  scripts: {\n   \"2letterbem\": \"node ./node_modules/2letterbem/2letterbem.js --i ./inputFile.css --o ./outputFile.css --j './jsonMapFile.json\"\n  }\n...\n```\nor everything in package.json config\n```\n{\n  ...\n  \"config\": {\n    \"2letterbem\": {\n      \"cssPath\": \"./inputFile.css\",\n      \"jsonSpace\": 2,\n      \"outputCssPath\": \"./outputFile.css\", \n      \"outputJsonPath\": \"./jsonMapFile.json\",\n      \"permutationArgs\": {\n        \"maxSize\": 2,\n        \"recursive\": true\n      },\n      \"permutationLetters\": \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n      \"whiteList\": [\n        \".is-active\",\n        \".wf-inactive\"\n      ]\n    }\n  },\n  scripts: {\n    \"2letterbem\": \"node ./node_modules/2letterbem/2letterbem.js\"\n  },\n  ...\n}\n```\n\n","readmeFilename":"README.md"}