From 5515e5fb0f994e0836c5b4c21fce8c125749b7b6 Mon Sep 17 00:00:00 2001 From: Erik Rasmussen Date: Fri, 15 Jun 2018 16:20:55 +0200 Subject: [PATCH] React 15 compatibility --- package-lock.json | 508 +++++++++++++++++++++++++++---------- package.json | 3 - src/Field.js | 13 +- src/FormSpy.js | 11 +- src/FormSpy.test.js | 25 +- src/ReactFinalForm.js | 26 +- src/ReactFinalForm.test.js | 6 +- 7 files changed, 411 insertions(+), 181 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbbe43b1..7a69e358 100644 --- a/package-lock.json +++ b/package-lock.json @@ -145,17 +145,17 @@ "dev": true }, "@types/node": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.1.tgz", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.3.tgz", "integrity": - "sha512-IsX9aDHDzJohkm3VCDB8tkzl5RQ34E/PFA29TQk6uDGb7Oc869ZBtmdKVDBzY3+h9GnXB8ssrRXEPVZrlIOPOw==", + "sha512-/gwCgiI2e9RzzZTKbl+am3vgNqOt7a9fJ/uxv4SqYKxenoEDNVU3KZEadlpusWhQI0A0dOrZ0T68JYKVjzmgdQ==", "dev": true }, "@types/react": { - "version": "16.3.16", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.16.tgz", + "version": "16.3.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.17.tgz", "integrity": - "sha512-fM7YX3Q9a915DXi8T06F8906bWv19sbkVO+k5PUYRIWXU2PINLEHbMMGgySem2phwF6En0+HGI6MOrobp+Ya1g==", + "sha512-f2ZTOSF7l9sRdXSbzLI84Z2wsVnj3qUjfJhtDLSi7lTWFMo1WSou7eQ2vkQga8100zhzzDjSyGbj+Viz7i927g==", "dev": true, "requires": { "csstype": "^2.2.0" @@ -175,10 +175,10 @@ "dev": true }, "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", "integrity": - "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", + "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", "dev": true }, "acorn-globals": { @@ -210,15 +210,13 @@ } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-stable-stringify": "^1.0.1" } }, "ajv-keywords": { @@ -472,10 +470,10 @@ "dev": true }, "assert-plus": { - "version": "1.0.0", + "version": "0.2.0", "resolved": - "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, "assign-symbols": { @@ -538,9 +536,9 @@ "dev": true }, "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, "aws4": { @@ -1808,6 +1806,15 @@ "integrity": "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=", "dev": true }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, "boundary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", @@ -2109,11 +2116,11 @@ } }, "caniuse-lite": { - "version": "1.0.30000849", + "version": "1.0.30000856", "resolved": - "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000849.tgz", + "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz", "integrity": - "sha512-hlkWpyGJTDjjim2m+nvvHiEqt2PZuPdB9yYRbys5P/T179Aq7YgMF6tnM489voTfqMLtJhqmOZNfghxWjjT8jg==", + "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==", "dev": true }, "capture-exit": { @@ -2380,21 +2387,21 @@ } }, "color-convert": { - "version": "1.9.1", + "version": "1.9.2", "resolved": - "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", "integrity": - "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.1" } }, "color-name": { - "version": "1.1.3", + "version": "1.1.1", "resolved": - "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, "combined-stream": { @@ -2423,11 +2430,11 @@ "dev": true }, "compare-versions": { - "version": "3.2.1", + "version": "3.3.0", "resolved": - "https://registry.npmjs.org/compare-versions/-/compare-versions-3.2.1.tgz", + "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz", "integrity": - "sha512-2y2nHcopMG/NAyk6vWXlLs86XeM9sik4jmx1tKIgzMi9/RQ2eo758RGpxQO3ErihHmg0RlQITPqgz73y6s7quA==", + "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==", "dev": true }, "component-emitter": { @@ -2890,6 +2897,15 @@ "which": "^1.2.9" } }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -2937,6 +2953,15 @@ "dev": true, "requires": { "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "data-urls": { @@ -3170,10 +3195,10 @@ "dev": true }, "dlv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.1.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.2.tgz", "integrity": - "sha512-b/kUB0D6RgRGG69h5ExsLnUAwfs5Jndfk1pU2ao7/9mVdsxpUBlkFdTkNJThXw1jrLXpUbIIg+h3um5zXi6sFA==", + "sha512-xxD4VSH67GbRvSGUrckvha94RD7hjgOH7rqGxiytLpkaeMvixOHFZTGFK6EkIm3T761OVHT8ABHmGkq9gXgu6Q==", "dev": true }, "doctoc": { @@ -3376,10 +3401,10 @@ "dev": true }, "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", "integrity": - "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -3453,6 +3478,18 @@ "text-table": "~0.2.0" }, "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": @@ -4094,9 +4131,9 @@ } }, "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "dev": true, "requires": { "core-js": "^1.0.0", @@ -4105,7 +4142,7 @@ "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" + "ua-parser-js": "^0.7.18" }, "dependencies": { "core-js": { @@ -4185,11 +4222,11 @@ } }, "final-form": { - "version": "4.7.3", + "version": "4.8.2", "resolved": - "https://registry.npmjs.org/final-form/-/final-form-4.7.3.tgz", + "https://registry.npmjs.org/final-form/-/final-form-4.8.2.tgz", "integrity": - "sha512-Cw7QeF5fByk0VgiQ6QV7Jz2U/bqynJDRA851nbS5TDfqSs2a87nJyBkko2Ll4Ui3S1ZJ9AJyjme1qvubmphzZA==", + "sha512-8h0RSU2Gv+VF1xOSnyCdjkwiSMw8hUm9Awc25pvZ6YNfxrZXonw/YixmmjDjb55ywsgdNhkvoZfuQhrauosVvg==", "dev": true }, "find-parent-dir": { @@ -4289,13 +4326,13 @@ "dev": true }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.5", "mime-types": "^2.1.12" } }, @@ -4944,6 +4981,15 @@ "dev": true, "requires": { "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "github-build": { @@ -5269,21 +5315,21 @@ } }, "har-schema": { - "version": "2.0.0", + "version": "1.0.5", "resolved": - "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true }, "har-validator": { - "version": "5.0.3", + "version": "4.2.1", "resolved": - "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has": { @@ -5351,6 +5397,24 @@ } } }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, "home-or-tmp": { "version": "2.0.0", "resolved": @@ -5397,13 +5461,13 @@ } }, "http-signature": { - "version": "1.2.0", + "version": "1.1.1", "resolved": - "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "^0.2.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } @@ -7067,6 +7131,119 @@ "whatwg-url": "^6.4.1", "ws": "^4.0.0", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": + "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": + "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": + "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": + "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + } } }, "jsesc": { @@ -7097,6 +7274,16 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": @@ -7117,6 +7304,12 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7127,6 +7320,15 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "jsx-ast-utils": { @@ -7187,11 +7389,11 @@ } }, "lint-staged": { - "version": "7.1.3", + "version": "7.2.0", "resolved": - "https://registry.npmjs.org/lint-staged/-/lint-staged-7.1.3.tgz", + "https://registry.npmjs.org/lint-staged/-/lint-staged-7.2.0.tgz", "integrity": - "sha512-D06sTSzsLP7bSnExH92zM/BK1Bgw4jHNEuhzYWlx7Kmy6b4AoPfK1vjE3n0G4qZwy6PLuqW9wYQ1WIC1fIU9Rg==", + "sha512-jPoIMbmgtWMUrz/l0rhBVa1j6H71zr0rEoxDWBA333PZcaqBvELdg0Sf4tdGHlwrBM0GXaXMVgTRkLTm2vA7Jg==", "dev": true, "requires": { "app-root-path": "^2.0.1", @@ -8190,20 +8392,20 @@ } }, "node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", + "integrity": + "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", "dev": true, "requires": { "fstream": "^1.0.0", "glob": "^7.0.3", "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", "mkdirp": "^0.5.0", "nopt": "2 || 3", "npmlog": "0 || 1 || 2 || 3 || 4", "osenv": "0", - "request": "2", + "request": ">=2.9.0 <2.82.0", "rimraf": "2", "semver": "~5.3.0", "tar": "^2.0.0", @@ -8519,10 +8721,10 @@ "dev": true }, "nwsapi": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.2.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.3.tgz", "integrity": - "sha512-wAvMV1QgoYPvqfcAmX1M86SyZA3SnNT6UNvjqO/pKHjIZzhMpPHjCTOWdOfkmUknjnvjDq09wDiBaHAzXSLiSA==", + "sha512-zFJF9lOpg2+uicP0BQKOAfIOqeTp/p8PC669mewxgRkR1hGjne8BMUHk4wpRS9o5Z0icA5Nv04HmGkW31KfMKw==", "dev": true }, "oauth-sign": { @@ -9046,10 +9248,10 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": - "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -9211,10 +9413,10 @@ } }, "performance-now": { - "version": "2.1.0", + "version": "0.2.0", "resolved": - "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true }, "pify": { @@ -9733,10 +9935,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": - "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true }, "quick-lru": { @@ -9791,10 +9992,10 @@ } }, "react": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.4.0.tgz", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz", "integrity": - "sha512-K0UrkLXSAekf5nJu89obKUM7o2vc6MMN9LYoKnCa+c+8MJRAT120xzPLENcWSRc7GYKIg0LlgJRDorrufdglQQ==", + "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==", "dev": true, "requires": { "fbjs": "^0.8.16", @@ -9804,10 +10005,10 @@ } }, "react-dom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.0.tgz", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz", "integrity": - "sha512-bbLd+HYpBEnYoNyxDe9XpSG2t9wypMohwQPvKw8Hov3nF7SJiJIgK56b46zHpBUpHb06a1iEuw7G3rbrsnNL6w==", + "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==", "dev": true, "requires": { "fbjs": "^0.8.16", @@ -9816,13 +10017,6 @@ "prop-types": "^15.6.0" } }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": - "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": - "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -10095,32 +10289,33 @@ } }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": - "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", "caseless": "~0.12.0", "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "extend": "~3.0.0", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.0.0" } }, "request-promise-core": { @@ -10267,10 +10462,10 @@ } }, "rollup": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.60.0.tgz", + "version": "0.60.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.60.7.tgz", "integrity": - "sha512-uZrBe2uFy9E0FO3fb1T5ZEkUeZrF2rQIGWYmEoJ39NQegaJGQriPgJIGyKW3RkPwEIFH5X0C3HfqAgDdjE4CdQ==", + "sha512-Uj5I1A2PnDgA79P+v1dsNs1IHVydNgeJdKWRfoEJJdNMmyx07TRYqUtPUINaZ/gDusncFy1SZsT3lJnBBI8CGw==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -10594,20 +10789,20 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.49", + "version": "7.0.0-beta.51", "resolved": - "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", - "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.49" + "@babel/highlight": "7.0.0-beta.51" } }, "@babel/highlight": { - "version": "7.0.0-beta.49", + "version": "7.0.0-beta.51", "resolved": - "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", - "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -10687,10 +10882,10 @@ } }, "rxjs": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.0.tgz", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz", "integrity": - "sha512-qBzf5uu6eOKiCZuAE0SgZ0/Qp+l54oeVxFfC2t+mJ2SFI6IB8gmMdJHs5DUMu5kqifqcCtsKS2XHjhZu6RKvAw==", + "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -11025,6 +11220,15 @@ } } }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, "source-map": { "version": "0.5.7", "resolved": @@ -11176,6 +11380,15 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "stack-utils": { @@ -11327,6 +11540,14 @@ "is-regexp": "^1.0.0" } }, + "stringstream": { + "version": "0.0.6", + "resolved": + "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": + "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": @@ -11417,6 +11638,18 @@ "string-width": "^2.1.1" }, "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": @@ -11799,11 +12032,11 @@ "dev": true }, "typescript": { - "version": "2.9.1", + "version": "2.9.2", "resolved": - "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", + "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", "integrity": - "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", "dev": true }, "typescript-eslint-parser": { @@ -12099,6 +12332,15 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "vfile": { @@ -12206,11 +12448,11 @@ "dev": true }, "whatwg-url": { - "version": "6.4.1", + "version": "6.5.0", "resolved": - "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", + "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", "integrity": - "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", diff --git a/package.json b/package.json index 462e7173..2c3902b1 100644 --- a/package.json +++ b/package.json @@ -95,8 +95,5 @@ "collective": { "type": "opencollective", "url": "https://opencollective.com/final-form" - }, - "dependencies": { - "react-lifecycles-compat": "^3.0.4" } } diff --git a/src/Field.js b/src/Field.js index 588d3bb6..8dbff795 100644 --- a/src/Field.js +++ b/src/Field.js @@ -1,6 +1,5 @@ // @flow import * as React from 'react' -import { polyfill } from 'react-lifecycles-compat' import PropTypes from 'prop-types' import { fieldSubscriptionItems } from 'final-form' import diffSubscription from './diffSubscription' @@ -80,12 +79,12 @@ class Field extends React.Component { notify = (state: FieldState) => this.setState({ state }) - UNSAFE_componentWillReceiveProps(nextProps: Props) { - const { name, subscription } = nextProps + componentDidUpdate(prevProps: Props) { + const { name, subscription } = this.props if ( - this.props.name !== name || + prevProps.name !== name || diffSubscription( - this.props.subscription, + prevProps.subscription, subscription, fieldSubscriptionItems ) @@ -93,7 +92,7 @@ class Field extends React.Component { if (this.context.reactFinalForm) { // avoid error, warning will alert developer to their mistake this.unsubscribe() - this.subscribe(nextProps, this.notify) + this.subscribe(this.props, this.notify) } } } @@ -235,6 +234,4 @@ class Field extends React.Component { } } -polyfill(Field) - export default Field diff --git a/src/FormSpy.js b/src/FormSpy.js index f3e333c7..3e330e80 100644 --- a/src/FormSpy.js +++ b/src/FormSpy.js @@ -1,6 +1,5 @@ // @flow import * as React from 'react' -import { polyfill } from 'react-lifecycles-compat' import PropTypes from 'prop-types' import { formSubscriptionItems } from 'final-form' import diffSubscription from './diffSubscription' @@ -68,11 +67,11 @@ class FormSpy extends React.Component { } } - UNSAFE_componentWillReceiveProps(nextProps: Props) { - const { subscription } = nextProps + componentDidUpdate(prevProps: Props) { + const { subscription } = this.props if ( diffSubscription( - this.props.subscription, + prevProps.subscription, subscription, formSubscriptionItems ) @@ -80,7 +79,7 @@ class FormSpy extends React.Component { if (this.context.reactFinalForm) { // avoid error, warning will alert developer to their mistake this.unsubscribe() - this.subscribe(nextProps, this.notify) + this.subscribe(this.props, this.notify) } } } @@ -202,6 +201,4 @@ FormSpy.contextTypes = { reactFinalForm: PropTypes.object } -polyfill(FormSpy) - export default FormSpy diff --git a/src/FormSpy.test.js b/src/FormSpy.test.js index dee4ed34..a6595a16 100644 --- a/src/FormSpy.test.js +++ b/src/FormSpy.test.js @@ -125,18 +125,19 @@ describe('FormSpy', () => { const button = TestUtils.findRenderedDOMComponentWithTag(dom, 'button') TestUtils.Simulate.click(button) - expect(render).toHaveBeenCalledTimes(2) - hasFormApi(render.mock.calls[1][0]) - expect(render.mock.calls[1][0].dirty).toBe(false) - expect(render.mock.calls[1][0].errors).toBeUndefined() - expect(render.mock.calls[1][0].invalid).toBeUndefined() - expect(render.mock.calls[1][0].pristine).toBeUndefined() - expect(render.mock.calls[1][0].submitFailed).toBeUndefined() - expect(render.mock.calls[1][0].submitSucceeded).toBeUndefined() - expect(render.mock.calls[1][0].submitting).toBe(false) - expect(render.mock.calls[1][0].valid).toBeUndefined() - expect(render.mock.calls[1][0].validating).toBeUndefined() - expect(render.mock.calls[1][0].values).toBeUndefined() + // one for new prop, and again after reregistering + expect(render).toHaveBeenCalledTimes(3) + hasFormApi(render.mock.calls[2][0]) + expect(render.mock.calls[2][0].dirty).toBe(false) + expect(render.mock.calls[2][0].errors).toBeUndefined() + expect(render.mock.calls[2][0].invalid).toBeUndefined() + expect(render.mock.calls[2][0].pristine).toBeUndefined() + expect(render.mock.calls[2][0].submitFailed).toBeUndefined() + expect(render.mock.calls[2][0].submitSucceeded).toBeUndefined() + expect(render.mock.calls[2][0].submitting).toBe(false) + expect(render.mock.calls[2][0].valid).toBeUndefined() + expect(render.mock.calls[2][0].validating).toBeUndefined() + expect(render.mock.calls[2][0].values).toBeUndefined() }) it('should hear changes', () => { diff --git a/src/ReactFinalForm.js b/src/ReactFinalForm.js index baf12d47..16c33824 100644 --- a/src/ReactFinalForm.js +++ b/src/ReactFinalForm.js @@ -1,6 +1,5 @@ // @flow import * as React from 'react' -import { polyfill } from 'react-lifecycles-compat' import PropTypes from 'prop-types' import { configOptions, @@ -109,7 +108,7 @@ class ReactFinalForm extends React.Component { return this.form.submit() } - UNSAFE_componentWillMount() { + componentWillMount() { if (this.form) { this.form.pauseValidation() } @@ -124,7 +123,7 @@ class ReactFinalForm extends React.Component { } } - UNSAFE_componentWillUpdate() { + componentWillUpdate() { // istanbul ignore next if (this.form) { this.resumeValidation = !this.form.isValidationPaused() @@ -132,34 +131,31 @@ class ReactFinalForm extends React.Component { } } - componentDidUpdate() { + componentDidUpdate(prevProps: Props) { // istanbul ignore next if (this.form && this.resumeValidation) { this.form.resumeValidation() } - } - - UNSAFE_componentWillReceiveProps(nextProps: Props) { if ( - nextProps.initialValues && - !shallowEqual(this.props.initialValues, nextProps.initialValues) + this.props.initialValues && + !shallowEqual(prevProps.initialValues, this.props.initialValues) ) { - this.form.initialize(nextProps.initialValues) + this.form.initialize(this.props.initialValues) } configOptions.forEach(key => { - if (this.props[key] === nextProps[key]) { + if (prevProps[key] === this.props[key]) { return } - this.form.setConfig(key, nextProps[key]) + this.form.setConfig(key, this.props[key]) }) // istanbul ignore next if (process.env.NODE_ENV !== 'production') { - if (!shallowEqual(this.props.decorators, nextProps.decorators)) { + if (!shallowEqual(prevProps.decorators, this.props.decorators)) { console.error( 'Warning: Form decorators should not change from one render to the next as new values will be ignored' ) } - if (!shallowEqual(this.props.subscription, nextProps.subscription)) { + if (!shallowEqual(prevProps.subscription, this.props.subscription)) { console.error( 'Warning: Form subscription should not change from one render to the next as new values will be ignored' ) @@ -290,6 +286,4 @@ class ReactFinalForm extends React.Component { } } -polyfill(ReactFinalForm) - export default ReactFinalForm diff --git a/src/ReactFinalForm.test.js b/src/ReactFinalForm.test.js index 4bca5442..3c050ed2 100644 --- a/src/ReactFinalForm.test.js +++ b/src/ReactFinalForm.test.js @@ -233,8 +233,10 @@ describe('ReactFinalForm', () => { expect(renderInput).toHaveBeenCalledTimes(1) const init = TestUtils.findRenderedDOMComponentWithTag(dom, 'button') TestUtils.Simulate.click(init) - expect(renderInput).toHaveBeenCalledTimes(2) - expect(renderInput.mock.calls[1][0].input.value).toBe('bar') + + // once to change prop and again after reinitialization + expect(renderInput).toHaveBeenCalledTimes(3) + expect(renderInput.mock.calls[2][0].input.value).toBe('bar') }) it('should respect keepDirtyOnReinitialize prop when initialValues prop changes', () => { const renderInput = jest.fn(({ input }) => )