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 #