WordPress.org

Make WordPress Core

Ticket #43749: 43749.6.diff

File 43749.6.diff, 10.3 KB (added by desrosj, 8 months ago)
  • Gruntfile.js

     
    66module.exports = function(grunt) {
    77        var path = require('path'),
    88                fs = require( 'fs' ),
     9                rot = require( 'rot' );
     10                esprima = require( 'esprima' );
     11                estraverse = require( 'estraverse' );
     12                escodegen = require( 'escodegen' );
    913                spawn = require( 'child_process' ).spawnSync,
    1014                SOURCE_DIR = 'src/',
    1115                BUILD_DIR = 'build/',
     
    662666                                        '!wp-admin/js/custom-header.js', // Why? We should minify this.
    663667                                        '!wp-admin/js/farbtastic.js',
    664668                                        '!wp-includes/js/swfobject.js',
    665                                         '!wp-includes/js/wp-embed.js' // We have extra options for this, see uglify:embed
     669                                        '!wp-includes/js/wp-embed.js', // We have extra options for this, see uglify:embed
     670
     671                                        // .min files that still need to be minified.
     672                                        'wp-includes/js/zxcvbn.min.js'
    666673                                ]
    667674                        },
    668675                        embed: {
     
    10471054                                ]
    10481055                        }
    10491056                },
     1057                rot13: {
     1058                        zxcvbn: {
     1059                                src: './node_modules/zxcvbn/dist/zxcvbn.js',
     1060                                dest: 'build/wp-includes/js/zxcvbn.min.js'
     1061                        },
     1062                },
    10501063                _watch: {
    10511064                        options: {
    10521065                                interval: 2000
     
    13051318                'clean:js',
    13061319                'webpack:dev',
    13071320                'copy:js',
     1321                'rot13:zxcvbn',
    13081322                'file_append',
    13091323                'uglify:all',
    13101324                'build:tinymce',
     
    13241338                'clean:all',
    13251339                'webpack:dev',
    13261340                'copy:all',
     1341                'rot13:zxcvbn',
    13271342                'file_append',
    13281343                'cssmin:core',
    13291344                'colors',
     
    13731388        // Default task.
    13741389        grunt.registerTask('default', ['build']);
    13751390
     1391        grunt.registerMultiTask('rot13', 'ROT-13 zxcvbn passwords for PG-ness.', function() {
     1392                this.files.forEach(function(f) {
     1393                        // Build AST from source code
     1394                        var code = grunt.file.read(f.src);
     1395                        var ast = esprima.parse(code);
     1396
     1397                        ast = estraverse.replace(ast, {
     1398                                enter: function(node) {
     1399                                        // Filter string
     1400                                        let key_names = [
     1401                                                'passwords',
     1402                                                'english_wikipedia',
     1403                                                'female_names',
     1404                                                'surnames',
     1405                                                'us_tv_and_film',
     1406                                                'male_names'
     1407                                        ];
     1408
     1409                                        if( node.type === 'Property' && key_names.includes( node.key.name ) ) {
     1410                                                // Wrap encrypted string with decrypt function.
     1411                                                var value = {
     1412                                                        type: 'CallExpression',
     1413                                                        callee: {
     1414                                                                type: 'Identifier',
     1415                                                                name: 'rot'
     1416                                                        },
     1417                                                        arguments: [{
     1418                                                                type: 'Literal',
     1419                                                                value: rot(node.value.callee.object.value, 13),
     1420                                                                raw: rot(node.value.callee.object.raw, 13)
     1421                                                        }, {
     1422                                                                type: 'Literal',
     1423                                                                value: 13,
     1424                                                                raw: 13
     1425                                                        }]
     1426                                                };
     1427                                                node.value = value;
     1428                                                return node;
     1429                                        }
     1430                                }
     1431                        });
     1432
     1433                        // ROT-13 decode function
     1434                        var prependCode = 'var lowercase="abcdefghijklmnopqrstuvwxyz",uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ",regexLowercase=/[a-z]/,regexUppercase=/[A-Z]/,rot=function(e,r){if(null==r&&(r=13),r=Number(r),e=String(e),0==r)return e;0>r&&(r+=26);for(var a,c,t,s=e.length,p=-1,n="";++p<s;)a=e.charAt(p),regexLowercase.test(a)?(c=lowercase.indexOf(a),t=(c+r)%26,n+=lowercase.charAt(t)):regexUppercase.test(a)?(c=uppercase.indexOf(a),t=(c+r)%26,n+=uppercase.charAt(t)):n+=a;return n};\n';
     1435
     1436                        // Generate new file from modified AST
     1437                        var modifiedCode = prependCode + escodegen.generate(ast);
     1438                        grunt.file.write(f.dest, modifiedCode);
     1439
     1440                        grunt.log.writeln('File "' + f.dest + '" encrypted.');
     1441                });
     1442        });
     1443
    13761444        /*
    13771445         * Automatically updates the `:dynamic` configurations
    13781446         * so that only the changed files are updated.
  • package-lock.json

     
    23182318                                "is-plain-object": "^2.0.1"
    23192319                        }
    23202320                },
     2321                "deep-is": {
     2322                        "version": "0.1.3",
     2323                        "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
     2324                        "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
     2325                        "dev": true
     2326                },
    23212327                "define-properties": {
    23222328                        "version": "1.1.2",
    23232329                        "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
     
    27912797                        "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
    27922798                        "dev": true
    27932799                },
     2800                "escodegen": {
     2801                        "version": "1.10.0",
     2802                        "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
     2803                        "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
     2804                        "dev": true,
     2805                        "requires": {
     2806                                "esprima": "^3.1.3",
     2807                                "estraverse": "^4.2.0",
     2808                                "esutils": "^2.0.2",
     2809                                "optionator": "^0.8.1",
     2810                                "source-map": "~0.6.1"
     2811                        },
     2812                        "dependencies": {
     2813                                "esprima": {
     2814                                        "version": "3.1.3",
     2815                                        "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
     2816                                        "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
     2817                                        "dev": true
     2818                                },
     2819                                "source-map": {
     2820                                        "version": "0.6.1",
     2821                                        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
     2822                                        "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
     2823                                        "dev": true,
     2824                                        "optional": true
     2825                                }
     2826                        }
     2827                },
    27942828                "escope": {
    27952829                        "version": "3.6.0",
    27962830                        "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
     
    28042838                        }
    28052839                },
    28062840                "esprima": {
    2807                         "version": "1.0.4",
    2808                         "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
    2809                         "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
     2841                        "version": "4.0.0",
     2842                        "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
     2843                        "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
    28102844                        "dev": true
    28112845                },
    28122846                "esrecurse": {
     
    28242858                        "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
    28252859                        "dev": true
    28262860                },
     2861                "esutils": {
     2862                        "version": "2.0.2",
     2863                        "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
     2864                        "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
     2865                        "dev": true
     2866                },
    28272867                "etag": {
    28282868                        "version": "1.8.1",
    28292869                        "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
     
    32373277                        "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
    32383278                        "dev": true
    32393279                },
     3280                "fast-levenshtein": {
     3281                        "version": "2.0.6",
     3282                        "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
     3283                        "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
     3284                        "dev": true
     3285                },
    32403286                "faye-websocket": {
    32413287                        "version": "0.10.0",
    32423288                        "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
     
    50455091                        "dev": true,
    50465092                        "requires": {
    50475093                                "esprima": "~1.0.0"
     5094                        },
     5095                        "dependencies": {
     5096                                "esprima": {
     5097                                        "version": "1.0.4",
     5098                                        "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
     5099                                        "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
     5100                                        "dev": true
     5101                                }
    50485102                        }
    50495103                },
    50505104                "grunt-known-options": {
     
    68156869                                "invert-kv": "^1.0.0"
    68166870                        }
    68176871                },
     6872                "levn": {
     6873                        "version": "0.3.0",
     6874                        "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
     6875                        "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
     6876                        "dev": true,
     6877                        "requires": {
     6878                                "prelude-ls": "~1.1.2",
     6879                                "type-check": "~0.3.2"
     6880                        }
     6881                },
    68186882                "livereload-js": {
    68196883                        "version": "2.3.0",
    68206884                        "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
     
    81708234                        "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==",
    81718235                        "dev": true
    81728236                },
     8237                "optionator": {
     8238                        "version": "0.8.2",
     8239                        "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
     8240                        "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
     8241                        "dev": true,
     8242                        "requires": {
     8243                                "deep-is": "~0.1.3",
     8244                                "fast-levenshtein": "~2.0.4",
     8245                                "levn": "~0.3.0",
     8246                                "prelude-ls": "~1.1.2",
     8247                                "type-check": "~0.3.2",
     8248                                "wordwrap": "~1.0.0"
     8249                        },
     8250                        "dependencies": {
     8251                                "wordwrap": {
     8252                                        "version": "1.0.0",
     8253                                        "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
     8254                                        "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
     8255                                        "dev": true
     8256                                }
     8257                        }
     8258                },
    81738259                "optipng-bin": {
    81748260                        "version": "3.1.4",
    81758261                        "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz",
     
    85838669                        "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
    85848670                        "dev": true
    85858671                },
     8672                "prelude-ls": {
     8673                        "version": "1.1.2",
     8674                        "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
     8675                        "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
     8676                        "dev": true
     8677                },
    85868678                "prepend-http": {
    85878679                        "version": "1.0.4",
    85888680                        "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
     
    91259217                                "inherits": "^2.0.1"
    91269218                        }
    91279219                },
     9220                "rot": {
     9221                        "version": "0.1.0",
     9222                        "resolved": "https://registry.npmjs.org/rot/-/rot-0.1.0.tgz",
     9223                        "integrity": "sha1-rPQEhNIAhC6LxIRDgmFuSGNdSN4=",
     9224                        "dev": true
     9225                },
    91289226                "rtlcss": {
    91299227                        "version": "2.2.1",
    91309228                        "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.2.1.tgz",
     
    1070010798                        "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-11.0.0.tgz",
    1070110799                        "integrity": "sha1-fuxX0Sv9H//o1efwXaC2QipgeQ8="
    1070210800                },
     10801                "type-check": {
     10802                        "version": "0.3.2",
     10803                        "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
     10804                        "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
     10805                        "dev": true,
     10806                        "requires": {
     10807                                "prelude-ls": "~1.1.2"
     10808                        }
     10809                },
    1070310810                "type-is": {
    1070410811                        "version": "1.6.16",
    1070510812                        "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
     
    1183011937                                        "dev": true
    1183111938                                }
    1183211939                        }
     11940                },
     11941                "zxcvbn": {
     11942                        "version": "4.4.2",
     11943                        "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz",
     11944                        "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA="
    1183311945                }
    1183411946        }
    1183511947}
  • package.json

     
    1515        "devDependencies": {
    1616                "autoprefixer": "^6.5.1",
    1717                "check-node-version": "3.2.0",
     18                "escodegen": "1.10.0",
     19                "esprima": "4.0.0",
     20                "estraverse": "4.2.0",
    1821                "grunt": "1.0.2",
    1922                "grunt-banner": "^0.6.0",
    2023                "grunt-contrib-clean": "~1.0.0",
     
    4144                "ink-docstrap": "^1.3.0",
    4245                "jquery-migrate": "1.4.1",
    4346                "matchdep": "~1.0.0",
     47                "rot": "0.1.0",
    4448                "webpack": "^3.6.0",
    4549                "webpack-dev-server": "^2.9.1"
    4650        },
     
    5458                "jquery-ui": "github:jquery/jquery-ui#1.11.4",
    5559                "masonry-layout": "3.3.2",
    5660                "twemoji": "11.0.0",
    57                 "underscore": "1.8.3"
     61                "underscore": "1.8.3",
     62                "zxcvbn": "4.4.2"
    5863        }
    5964}