From 844116a6d6a23ee55de2b5c423c5ddf855455d4f Mon Sep 17 00:00:00 2001 From: haozi Date: Fri, 15 Mar 2024 08:45:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Can=20save=20false=20valu?= =?UTF-8?q?es=20other=20than=20undefined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/package.json | 2 +- package.json | 6 +- plugins/browser-storage/README.md | 3 +- plugins/browser-storage/src/index.ts | 4 +- plugins/node-fs/README.md | 3 +- plugins/node-fs/src/index.ts | 4 +- pnpm-lock.yaml | 84 +++++++++++++++------------- 7 files changed, 57 insertions(+), 49 deletions(-) diff --git a/demo/package.json b/demo/package.json index b7cd608..1b2a280 100644 --- a/demo/package.json +++ b/demo/package.json @@ -1,7 +1,7 @@ { "private": true, "dependencies": { - "idmp": "1.14.12" + "idmp": "1.15.0" }, "_dependencies": { "idmp": "1.13.0-alpha.5" diff --git a/package.json b/package.json index 1995723..5b535bc 100644 --- a/package.json +++ b/package.json @@ -50,9 +50,9 @@ }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/node": "^20.11.26", - "@types/react": "^18.2.65", - "@types/react-dom": "^18.2.21", + "@types/node": "^20.11.27", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", "@vitejs/plugin-legacy": "^5.3.2", "@vitejs/plugin-react-swc": "^3.6.0", "@vitest/coverage-istanbul": "^1.3.1", diff --git a/plugins/browser-storage/README.md b/plugins/browser-storage/README.md index dd1e6e2..ff909f8 100644 --- a/plugins/browser-storage/README.md +++ b/plugins/browser-storage/README.md @@ -31,4 +31,5 @@ If the data is in the memory, it is read from the memory first. If it is not in ## Notice -Data persistence only supports string type `globalKey` and data structures that can be serialized by `JSON.stringify` +- Data persistence only supports string type `globalKey` and data structures that can be serialized by `JSON.stringify` +- If return value is `undefined` it will not be cached, you must return `null` diff --git a/plugins/browser-storage/src/index.ts b/plugins/browser-storage/src/index.ts index 8ad0aea..cbd1117 100644 --- a/plugins/browser-storage/src/index.ts +++ b/plugins/browser-storage/src/index.ts @@ -74,7 +74,7 @@ const storageIdmpWrap = ( globalKey, async () => { const localData = storage.get(globalKey) - if (localData) { + if (localData !== udf) { if (process.env.NODE_ENV !== 'production') { console.log( `[idmp-plugin browser-storage debug] ${globalKey} from ${storageType}["${getCacheKey(globalKey)}"]`, @@ -84,7 +84,7 @@ const storageIdmpWrap = ( } const memoryData = await promiseFunc() - if (memoryData) { + if (memoryData !== udf) { // console.log('from memoryData')s a storage.set(globalKey, memoryData, finalOptions.maxAge) // no need wait } diff --git a/plugins/node-fs/README.md b/plugins/node-fs/README.md index 290f9b1..b503697 100644 --- a/plugins/node-fs/README.md +++ b/plugins/node-fs/README.md @@ -22,4 +22,5 @@ If the data is in the memory, it is read from the memory first. If it is not in ## Notice -Data persistence only supports string type `globalKey` and data structures that can be serialized by [serialize-javascript](https://www.npmjs.com/package/serialize-javascript) +- Data persistence only supports string type `globalKey` and data structures that can be serialized by [serialize-javascript](https://www.npmjs.com/package/serialize-javascript) +- If return value is `undefined` it will not be cached, you must return `null` diff --git a/plugins/node-fs/src/index.ts b/plugins/node-fs/src/index.ts index 01e3263..7f76845 100644 --- a/plugins/node-fs/src/index.ts +++ b/plugins/node-fs/src/index.ts @@ -59,13 +59,13 @@ const fsIdmpWrap = (_idmp: Idmp) => { globalKey, async () => { const localData = await getData(globalKey) - if (localData) { + if (localData !== udf) { // console.log('from localData') return localData } const memoryData = await promiseFunc() - if (memoryData) { + if (memoryData !== udf) { // console.log('from memoryData')s a setData(globalKey, memoryData, finalOptions.maxAge) // no need wait } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6f4486..c3d1dac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,14 +19,14 @@ importers: specifier: ^11.0.4 version: 11.0.4 '@types/node': - specifier: ^20.11.26 - version: 20.11.26 + specifier: ^20.11.27 + version: 20.11.27 '@types/react': - specifier: ^18.2.65 - version: 18.2.65 + specifier: ^18.2.66 + version: 18.2.66 '@types/react-dom': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@vitejs/plugin-legacy': specifier: ^5.3.2 version: 5.3.2(terser@5.29.1)(vite@5.1.6) @@ -53,27 +53,27 @@ importers: version: 5.4.2 vite: specifier: ^5.1.6 - version: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + version: 5.1.6(@types/node@20.11.27)(terser@5.29.1) vite-node: specifier: ^1.3.1 - version: 1.3.1(@types/node@20.11.26)(terser@5.29.1) + version: 1.3.1(@types/node@20.11.27)(terser@5.29.1) vite-plugin-banner: specifier: ^0.7.1 version: 0.7.1 vite-plugin-dts: specifier: ^3.7.3 - version: 3.7.3(@types/node@20.11.26)(typescript@5.4.2)(vite@5.1.6) + version: 3.7.3(@types/node@20.11.27)(typescript@5.4.2)(vite@5.1.6) vite-plugin-html: specifier: ^3.2.2 version: 3.2.2(vite@5.1.6) vitest: specifier: ^1.3.1 - version: 1.3.1(@types/node@20.11.26)(terser@5.29.1) + version: 1.3.1(@types/node@20.11.27)(terser@5.29.1) demo: dependencies: idmp: - specifier: 1.14.12 + specifier: 1.15.0 version: link:.. plugins/browser-storage: @@ -1547,24 +1547,24 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@microsoft/api-extractor-model@7.28.3(@types/node@20.11.26): + /@microsoft/api-extractor-model@7.28.3(@types/node@20.11.27): resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@20.11.26) + '@rushstack/node-core-library': 3.62.0(@types/node@20.11.27) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.39.0(@types/node@20.11.26): + /@microsoft/api-extractor@7.39.0(@types/node@20.11.27): resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.3(@types/node@20.11.26) + '@microsoft/api-extractor-model': 7.28.3(@types/node@20.11.27) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@20.11.26) + '@rushstack/node-core-library': 3.62.0(@types/node@20.11.27) '@rushstack/rig-package': 0.5.1 '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 @@ -1742,7 +1742,7 @@ packages: dev: true optional: true - /@rushstack/node-core-library@3.62.0(@types/node@20.11.26): + /@rushstack/node-core-library@3.62.0(@types/node@20.11.27): resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} peerDependencies: '@types/node': '*' @@ -1750,7 +1750,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.11.26 + '@types/node': 20.11.27 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -1921,7 +1921,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.11.26 + '@types/node': 20.11.27 dev: true /@types/node@20.11.26: @@ -1930,18 +1930,24 @@ packages: undici-types: 5.26.5 dev: true + /@types/node@20.11.27: + resolution: {integrity: sha512-qyUZfMnCg1KEz57r7pzFtSGt49f6RPkPBis3Vo4PbS7roQEDn22hiHzl/Lo1q4i4hDEgBJmBF/NTNg2XR0HbFg==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} dev: true - /@types/react-dom@18.2.21: - resolution: {integrity: sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==} + /@types/react-dom@18.2.22: + resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: - '@types/react': 18.2.65 + '@types/react': 18.2.66 dev: true - /@types/react@18.2.65: - resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} + /@types/react@18.2.66: + resolution: {integrity: sha512-OYTmMI4UigXeFMF/j4uv0lBBEbongSgptPrHBxqME44h9+yNov+oL6Z3ocJKo0WyXR84sQUNeyIp9MRfckvZpg==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -1972,7 +1978,7 @@ packages: regenerator-runtime: 0.14.1 systemjs: 6.14.3 terser: 5.29.1 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) transitivePeerDependencies: - supports-color dev: true @@ -1983,7 +1989,7 @@ packages: vite: ^4 || ^5 dependencies: '@swc/core': 1.4.6 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -2002,7 +2008,7 @@ packages: magicast: 0.3.3 picocolors: 1.0.0 test-exclude: 6.0.0 - vitest: 1.3.1(@types/node@20.11.26)(terser@5.29.1) + vitest: 1.3.1(@types/node@20.11.27)(terser@5.29.1) transitivePeerDependencies: - supports-color dev: true @@ -3606,7 +3612,7 @@ packages: engines: {node: '>= 0.10'} dev: true - /vite-node@1.3.1(@types/node@20.11.26)(terser@5.29.1): + /vite-node@1.3.1(@types/node@20.11.27)(terser@5.29.1): resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3615,7 +3621,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) transitivePeerDependencies: - '@types/node' - less @@ -3631,7 +3637,7 @@ packages: resolution: {integrity: sha512-Bww2Xd5tOGsZ1yZ9rQiGneryvsL1u86znPrqeQjCsXPsG72pnSdV5lcQA+cy8UNDguMqyTJiCevlNUbLnT85UA==} dev: true - /vite-plugin-dts@3.7.3(@types/node@20.11.26)(typescript@5.4.2)(vite@5.1.6): + /vite-plugin-dts@3.7.3(@types/node@20.11.27)(typescript@5.4.2)(vite@5.1.6): resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3641,13 +3647,13 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.39.0(@types/node@20.11.26) + '@microsoft/api-extractor': 7.39.0(@types/node@20.11.27) '@rollup/pluginutils': 5.1.0 '@vue/language-core': 1.8.27(typescript@5.4.2) debug: 4.3.4 kolorist: 1.8.0 typescript: 5.4.2 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) vue-tsc: 1.8.27(typescript@5.4.2) transitivePeerDependencies: - '@types/node' @@ -3672,10 +3678,10 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) dev: true - /vite@5.1.6(@types/node@20.11.26)(terser@5.29.1): + /vite@5.1.6(@types/node@20.11.27)(terser@5.29.1): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3703,7 +3709,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.26 + '@types/node': 20.11.27 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.13.0 @@ -3712,7 +3718,7 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.3.1(@types/node@20.11.26)(terser@5.29.1): + /vitest@1.3.1(@types/node@20.11.27)(terser@5.29.1): resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3737,7 +3743,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.26 + '@types/node': 20.11.27 '@vitest/expect': 1.3.1 '@vitest/runner': 1.3.1 '@vitest/snapshot': 1.3.1 @@ -3755,8 +3761,8 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.6(@types/node@20.11.26)(terser@5.29.1) - vite-node: 1.3.1(@types/node@20.11.26)(terser@5.29.1) + vite: 5.1.6(@types/node@20.11.27)(terser@5.29.1) + vite-node: 1.3.1(@types/node@20.11.27)(terser@5.29.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less