diff --git a/CHANGELOG.md b/CHANGELOG.md index db51e27..710154b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Updates `tsconfig.json` to extend from [`@tsconfig/strictest`](https://npmjs.com/package/@tsconfig/strictest), by [@compulim](https://github.com/compulim), in PR [#21](https://github.com/compulim/use-ref-from/pull/21) + - Development dependencies + - [`@types/react@18.2.21`](https://npmjs.com/package/@types/react) + - [`@types/react-dom@18.2.7`](https://npmjs.com/package/@types/react-dom) + - [`esbuild@0.19.2`](https://npmjs.com/package/esbuild) + - [`typescript@5.2.2`](https://npmjs.com/package/typescript) + ### Fixed - Fixes [#19](https://github.com/compulim/use-ref-from/issues/19). Updated `exports` field to workaround [TypeScript resolution bug](https://github.com/microsoft/TypeScript/issues/50762), by [@compulim](https://github.com/compulim), in PR [#20](https://github.com/compulim/use-ref-from/pull/20) diff --git a/packages/pages/.gitignore b/packages/pages/.gitignore index 2cea943..97105ff 100644 --- a/packages/pages/.gitignore +++ b/packages/pages/.gitignore @@ -1,4 +1,3 @@ /node_modules/ /package-lock.json -/public/static/css/main.css -/public/static/js/main.js +/public/static/ diff --git a/packages/pages/package.json b/packages/pages/package.json index 5cb5659..2b26fe8 100644 --- a/packages/pages/package.json +++ b/packages/pages/package.json @@ -3,24 +3,25 @@ "version": "0.0.0-0", "description": "", "scripts": { - "build": "npm run build:typescript && npm run build:esbuild", - "build:esbuild": "esbuild --bundle --entry-names=[dir]/[ext]/main --minify --outdir=./public/static/ ./src/index.tsx", - "build:typescript": "tsc --project ./src/tsconfig.json", + "build": "esbuild --bundle --entry-names=[name]/[ext]/main --minify --outdir=./public/static/ --sourcemap app=./src/app/index.tsx", "bump": "npm run bump:prod && npm run bump:dev && npm run bump:auditfix", "bump:auditfix": "npm audit fix || exit 0", "bump:dev": "if [ `cat package.json | jq -r '(.devDependencies // {}) | length'` -ne 0 ]; then npm install $(cat package.json | jq -r '(.pinDependencies // {}) as $p | ((.devDependencies // {}) | keys) | map(. + \"@\" + ($p[.] // [\"latest\"])[0]) | .[]'); fi", "bump:prod": "if [ `cat package.json | jq -r '(.dependencies // {}) | length'` -ne 0 ]; then npm install --save-exact $(cat package.json | jq -r '(.pinDependencies // {}) as $p | ((.dependencies // {}) | keys) | map(. + \"@\" + ($p[.] // [\"latest\"])[0]) | .[]'); fi", "postbump": "cat package.json | jq '. + (.dependencies = (((.dependencies // {}) + (.localPeerDependencies // {})) | to_entries | sort_by(.key) | from_entries)) | (.devDependencies = (((.devDependencies // {}) + (.localPeerDevDependencies // {})) | to_entries | sort_by(.key) | from_entries))' > package-temp.json && mv package-temp.json package.json", "prebump": "cat package.json | jq '(((.localPeerDependencies // {}) | keys | map([\"dependencies\", .])) + ((.localPeerDevDependencies // {}) | keys | map([\"devDependencies\", .]))) as $localPeerPaths | delpaths($localPeerPaths)' > package-temp.json && mv package-temp.json package.json", - "start": "esbuild --bundle --entry-names=[dir]/[ext]/main --minify --outdir=./public/static/ --servedir=./public ./src/index.tsx" + "precommit": "npm run precommit:typescript", + "precommit:typescript": "tsc --project ./src/tsconfig.json", + "reinstall": "rm -r node_modules package-lock.json && npm install", + "start": "npm run build -- --servedir=./public" }, "author": "William Wong (https://github.com/compulim)", "license": "MIT", "devDependencies": { - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "esbuild": "^0.17.10", - "typescript": "^4.9.5" + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "esbuild": "^0.19.2", + "typescript": "^5.2.2" }, "dependencies": { "react": "18.2.0", diff --git a/packages/pages/public/index.html b/packages/pages/public/index.html index f93580b..e5b59ff 100644 --- a/packages/pages/public/index.html +++ b/packages/pages/public/index.html @@ -2,10 +2,10 @@ use-ref-from demo - +
- + diff --git a/packages/pages/src/App.tsx b/packages/pages/src/app/App.tsx similarity index 100% rename from packages/pages/src/App.tsx rename to packages/pages/src/app/App.tsx diff --git a/packages/pages/src/index.tsx b/packages/pages/src/app/index.tsx similarity index 100% rename from packages/pages/src/index.tsx rename to packages/pages/src/app/index.tsx diff --git a/packages/pages/src/tsconfig.json b/packages/pages/src/tsconfig.json index 04542cf..5b9877f 100644 --- a/packages/pages/src/tsconfig.json +++ b/packages/pages/src/tsconfig.json @@ -2,10 +2,10 @@ "compilerOptions": { "esModuleInterop": true, "jsx": "react", - "moduleResolution": "nodenext", + "lib": ["DOM", "ESNext"], + "moduleResolution": "Bundler", "noEmit": true, "strict": true, "target": "ESNext" - }, - "exclude": ["**/*.spec.*", "**/*.test.*"] + } } diff --git a/packages/use-ref-from/package-lock.json b/packages/use-ref-from/package-lock.json index 74f4892..6f239d4 100644 --- a/packages/use-ref-from/package-lock.json +++ b/packages/use-ref-from/package-lock.json @@ -18,6 +18,8 @@ "@babel/preset-env": "^7.22.9", "@babel/preset-typescript": "^7.22.5", "@testing-library/react-hooks": "^8.0.1", + "@tsconfig/strictest": "^2.0.2", + "@types/jest": "^29.5.4", "@types/react": "^17.0.62", "jest": "^29.6.1", "jest-environment-jsdom": "^29.6.1", @@ -2690,6 +2692,12 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/strictest": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.2.tgz", + "integrity": "sha512-jt4jIsWKvUvuY6adJnQJlb/UR7DdjC8CjHI/OaSQruj2yX9/K6+KOvDt/vD6udqos/FUk5Op66CvYT7TBLYO5Q==", + "dev": true + }, "node_modules/@types/babel__core": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", @@ -2764,6 +2772,16 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/jest": { + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -9325,6 +9343,12 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tsconfig/strictest": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.2.tgz", + "integrity": "sha512-jt4jIsWKvUvuY6adJnQJlb/UR7DdjC8CjHI/OaSQruj2yX9/K6+KOvDt/vD6udqos/FUk5Op66CvYT7TBLYO5Q==", + "dev": true + }, "@types/babel__core": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", @@ -9399,6 +9423,16 @@ "@types/istanbul-lib-report": "*" } }, + "@types/jest": { + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", diff --git a/packages/use-ref-from/package.json b/packages/use-ref-from/package.json index b134c6b..d99f79a 100644 --- a/packages/use-ref-from/package.json +++ b/packages/use-ref-from/package.json @@ -86,6 +86,8 @@ "@babel/preset-env": "^7.22.9", "@babel/preset-typescript": "^7.22.5", "@testing-library/react-hooks": "^8.0.1", + "@tsconfig/strictest": "^2.0.2", + "@types/jest": "^29.5.4", "@types/react": "^17.0.62", "jest": "^29.6.1", "jest-environment-jsdom": "^29.6.1", diff --git a/packages/use-ref-from/src/tsconfig.declaration.json b/packages/use-ref-from/src/tsconfig.declaration.json index 82cbd82..d3b8b53 100644 --- a/packages/use-ref-from/src/tsconfig.declaration.json +++ b/packages/use-ref-from/src/tsconfig.declaration.json @@ -2,7 +2,8 @@ "compilerOptions": { "declaration": true, "emitDeclarationOnly": true, - "moduleResolution": "NodeNext" + "noEmit": false }, + "exclude": ["**/*.spec.*", "**/*.test.*", "__test__/**/*"], "extends": "./tsconfig.json" } diff --git a/packages/use-ref-from/src/tsconfig.json b/packages/use-ref-from/src/tsconfig.json index fb87e90..bd2c170 100644 --- a/packages/use-ref-from/src/tsconfig.json +++ b/packages/use-ref-from/src/tsconfig.json @@ -2,7 +2,10 @@ "compilerOptions": { "esModuleInterop": true, "jsx": "react", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "noEmit": true, "strict": true }, - "exclude": ["**/*.spec.*", "**/*.test.*"] + "extends": "@tsconfig/strictest/tsconfig.json" } diff --git a/packages/use-ref-from/src/useRefFrom.spec.js b/packages/use-ref-from/src/useRefFrom.spec.js index ba70494..0c8c7bd 100644 --- a/packages/use-ref-from/src/useRefFrom.spec.js +++ b/packages/use-ref-from/src/useRefFrom.spec.js @@ -76,8 +76,9 @@ test('should not be settable', () => { // THEN: It should throw a getter-only exception. expect( () => - // Exception thrown when `result.current` getter is called. + // Exception thrown when `result.current` setter is called. renderHook(() => { + // @ts-expect-error Intentionally setting the value to throw exception. useRefFrom(123).current = 234; }).result.current ).toThrow('Cannot set property current of # which has only a getter');