{"_id":"@codehz/json-expr","_rev":"20-4c9f0ec371bc56da8f8e20d1c9c64e90","name":"@codehz/json-expr","dist-tags":{"latest":"0.6.5"},"versions":{"0.0.0":{"name":"@codehz/json-expr","version":"0.0.0","_id":"@codehz/json-expr@0.0.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"dist":{"shasum":"e12884df12a2d28a1d5ae6353d2baa8ec24d3eb8","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.0.0.tgz","fileCount":6,"integrity":"sha512-oYm/bJLssnnM7qMzbD19dXyAOqZ61zcotZAvDeeimi8zCLyHLYzXoCGzupYOXK5TRlB2vOPDdbCCBi23/mEiHw==","signatures":[{"sig":"MEUCIQDYkUmuju5LkZi7Ur+W/kFysx0ouqaaLUUuZ7D2iamJkAIgE84go+P+imr6TXVxbGMq9d8HDQXJthEDXr8I8jjSkJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120114},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","shasum":"e12884df12a2d28a1d5ae6353d2baa8ec24d3eb8","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"codehz","email":"CodeHz@Outlook.com"},"_integrity":"sha512-oYm/bJLssnnM7qMzbD19dXyAOqZ61zcotZAvDeeimi8zCLyHLYzXoCGzupYOXK5TRlB2vOPDdbCCBi23/mEiHw==","repository":{"url":"https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"10.8.3","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.0.0_1769160657916_0.8238839048685056","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@codehz/json-expr","version":"0.1.0","_id":"@codehz/json-expr@0.1.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"25d3f991959e3126fc8809e6552c40a36ccff039","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.1.0.tgz","fileCount":6,"integrity":"sha512-3dUOy+vIcAMwSCXvxVM1TYv380QYdUL+w62C8weuS0JYf4VVQN+ve1GvYkP2WlTtSSBOSNDW1Qy8wDopuDO96A==","signatures":[{"sig":"MEUCIDqRIC5zHDBou+WjOTUVns1bY98fPFpBNdCutugVxXFCAiEA7O4Vup12pTJ3BhZuizmLIs2lBAYpBLW45RL23NWWtYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120114},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"cd110eaae86ec101c0e95be8ccf19a2bd5f6a967","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.1.0_1769160816158_0.3294894328507736","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@codehz/json-expr","version":"0.1.1","_id":"@codehz/json-expr@0.1.1","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"056794a580aaaff690fc9f4c16fca83e2fe93957","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.1.1.tgz","fileCount":6,"integrity":"sha512-eNnp9JwbHaKIHTjYsz7B/fVJ5GaoLwe20qVwHtUAP7p39iszaWfwr5QtcjmvisjjtY8LKrjxosIn4xuIu5UNAg==","signatures":[{"sig":"MEUCIHQydl/3AIkcQCa8d4UX9v/8J25Vgh4OIVj4/xc0yAZoAiEAn0HIWKVJ3dnL3vJmG+TGbvUxYYVyVVt5SQr++MGxjW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124330},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"faece04c02cc58413b286c8002f30d52769dde51","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.1.1_1769162956521_0.31712457452839304","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codehz/json-expr","version":"0.2.0","_id":"@codehz/json-expr@0.2.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"d515bbcd3c57199f0e80809354d4197f508eb009","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.2.0.tgz","fileCount":6,"integrity":"sha512-SpSh8o9Sj4ejsV1dgfOJJN8JGwD4oXeUYvpgcPwOSgRZcysf2QjKZh+D8nJD/7Q0dDdrZiT/8VX+WCWNARAeRQ==","signatures":[{"sig":"MEYCIQC6Pr3YmpZ7VEYvnu+9YpJlXbJXTUa/Z7cDV2V/tnsovgIhALl3prgUleKOaKwm+GpvHx+9fAMSObvB6wHyzy20Ypkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138689},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"9a07340a8ab2fec937746b841ca3cc7d2636dc81","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.2.0_1769175262545_0.8525390461041809","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@codehz/json-expr","version":"0.2.1","_id":"@codehz/json-expr@0.2.1","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"57d0aa56d4487174556007c8e10d6ed0c96d943e","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.2.1.tgz","fileCount":6,"integrity":"sha512-6iYIGWAnPvOuDjbUbQc5gwALJ6nYH+NqDUri7DK5FQruGcsmuzLYDTpf5hcgtaMBrMYW7qCGUlOoLTWlcZK7/g==","signatures":[{"sig":"MEUCIH4keKsgki69bxFtgE2HnDR9lmax1LftOVUYKALW7mRAAiEA+5Mrhihq/VGmjTA0GhZ0Q7b/LqW407Yy2S9nnKHMf8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138870},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"d615c44ee378ffc39926ac8c21b1f9ba6619b843","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.2.1_1769179913460_0.6901670430959834","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codehz/json-expr","version":"0.3.0","_id":"@codehz/json-expr@0.3.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"2340dc53fa62b38e3059fce27f33de57bc3aec27","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.3.0.tgz","fileCount":6,"integrity":"sha512-Y7EQAz1+3SHcAW1WWbGNGfLQkb16Mgf7Kl+XUnJ/1xpDNXQbuYiqf6DEaz9MLq2/xRPJsj+7MdlZA0nlUluIrQ==","signatures":[{"sig":"MEQCIB9OweOkQvrtsulPiv4b5k6XwuGaRgxQeizOKe4iHAWqAiAxH5r9ehRjESgGcWt6i/tVjgwvwaUMGUKLqfpJOn4Cvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":137990},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"b50580d43a83545f198b6bc7c06d7069402b7b17","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.3.0_1769221373947_0.7490801813578183","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codehz/json-expr","version":"0.4.0","_id":"@codehz/json-expr@0.4.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"e88b7bf782c250d0eee47f336efd26e7adff7c5e","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.4.0.tgz","fileCount":6,"integrity":"sha512-fYY7J7lUyW38b9jR6ns7b013pJEnl7OyEQVi7rXeWlBDrH51umTMtmoX+Hz8trTzZb1Nfh0JuLOL8D68vcz3lQ==","signatures":[{"sig":"MEUCIQCC+2DGnWQzatdIGnWmTZHMEXt+s2JKtnUaI/YmoGLHBQIgNAhXjvFgmC4urc6Z9A4gU6iJJm0IW21oT8in6U2mA1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":146476},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"6c27a416f7e6a3e839d38eec2636bde5f22644ff","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.4.0_1769239569181_0.80133262637454","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@codehz/json-expr","version":"0.5.0","_id":"@codehz/json-expr@0.5.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"3aa17d61291e34d7e3a81c3c1699d38bef031cd4","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.0.tgz","fileCount":6,"integrity":"sha512-5EOfk5G6cjaeK15WtzJfsv+aKFNBYVY2/Fn3oY6VOySSeM/wAKY0xFaP3QgIh12TVEy1YSwJKYPDiwhsc4D8Vg==","signatures":[{"sig":"MEYCIQCcQiyh0UBmv5WPxtucvpriB8dIuvlRxnXxnO265xd0BgIhAN2IMdGD/4Bpo5ScRzm45Raq8BVOLyMiyQYVEPvW0XnP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196222},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"6ff50e1d86d3eb96a9fc5bd8c80911c89678eb8f","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.0_1769249275672_0.1718891591847158","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@codehz/json-expr","version":"0.5.1","_id":"@codehz/json-expr@0.5.1","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"142e13612728164b80ebe70ede1c1624e84ca8a8","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.1.tgz","fileCount":6,"integrity":"sha512-Tm3Gmb+E7QQr5dUlQrRXEl9qgvTfCdOrnUC7lDt674MqQFDAyLqajskFJnEz2U5YLQCMF4FT32IZQ9ovqkt1PQ==","signatures":[{"sig":"MEYCIQDOViTxoCRd5sbiT8oRb6s5+bMmvS+Pu4yS6pqAQ19YBgIhANKMnid/vuU//s0Lyg12E70o5+ub+U1hqUhVn1WDd0Oe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":205675},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"a258f1d762232642e1f1b9faa62b81427465b808","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.1_1769252378765_0.48299280488197094","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@codehz/json-expr","version":"0.5.2","_id":"@codehz/json-expr@0.5.2","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"9639dc1ab93da53037a8caf911641e8d9d2b46c3","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.2.tgz","fileCount":6,"integrity":"sha512-RmdpacdcZ0tyBnlUj1SVH3hvV7K0zrDn350eEI6P/WZimA3vHNASn9qPXrEZFTPd28Zk4QdkBBvsIZOf6iiUpg==","signatures":[{"sig":"MEUCIGg6ZLACKtsGk8K2RG8lgRrQDiW8zYfs3wUHo5AuaWnSAiEA3cZ3mW0eA2Jp+XKBkmoE3PyBmqCoAtxd635Gqda6rxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":199399},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"3928d5236d993b835e098a173f0af9e32a3a3a18","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.2_1769254822173_0.7090878381461252","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@codehz/json-expr","version":"0.5.3","_id":"@codehz/json-expr@0.5.3","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"c984bc296623c4a950d427a01464f6dbdcccdca5","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.3.tgz","fileCount":6,"integrity":"sha512-6Qz9f6ECGq6X46lqo7d5nPehjaPaHzSfTRIHI/lIHLGnkB59rf1P+9NZfHz9Qn8eVdTEIwc+xxPdQGZIaU8mVg==","signatures":[{"sig":"MEYCIQDq3Es4Nj1Tv/vh9LkWqRBKjMcDvBGGS2KOdEN6/edYNwIhAIr2cluHUjYgWvQf9eQdvXk2+xqLf7tveWcf2u+ivFxg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209414},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"249d91a50564213247ff1a322b7498bc3c490c16","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.3_1769317794091_0.3869418194049079","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@codehz/json-expr","version":"0.5.4","_id":"@codehz/json-expr@0.5.4","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"09bf81d34a1b0871a1a775585d4d6eadcafa2f2f","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.4.tgz","fileCount":6,"integrity":"sha512-PhUR2LiOwZg300EQkdeTBDRlgexwxquF+jWCwNeILyWQWt+bJETjrMnPA0tpaCwq0uf5iD9Sc4gxviHyaw3YFQ==","signatures":[{"sig":"MEYCIQDI55JFh4gCpMTu34rsEa5tauuBfxmnUCUjM6ZBXwK7vwIhAP0lSEc3/8aaZepIh8JhvyBIatmAjkO8IivxCT1n0r9C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211186},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"9139cfc2f1f5aebc17842992f18a457eca5d0d2f","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.4_1769318806301_0.4556316232212958","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@codehz/json-expr","version":"0.5.5","_id":"@codehz/json-expr@0.5.5","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"2fef2352339c9a72734c429f340f9bf9a4bc9b59","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.5.tgz","fileCount":6,"integrity":"sha512-Bf8ipIjJ8gpVp8REikZR8rINuvahhB2SuMNUkGsodjgyN6G7RpR8d5fDqXFZezbO7lSA7914ucHtiCak+4IjSw==","signatures":[{"sig":"MEUCIQDIvJcJ49gdvtGv6/Gn0YOYP/bBcK1Rtj1Yk3wfWAUcvQIgFLtHyUxF/y/X5Bu494udb7Gg+b2wAPH6hwlNL7n0wmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221802},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"230c0bc55454ea12f9521593f7e91c1802e1d6df","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.5_1769341596240_0.08515035937331294","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@codehz/json-expr","version":"0.5.6","_id":"@codehz/json-expr@0.5.6","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"2896afa8bd16e9852a721a79a9bb78a8a639cdbd","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.5.6.tgz","fileCount":6,"integrity":"sha512-v7YFD3KDJjeh1hcAJUM2HVmuWvZn4wuTGVb2ubtS5hf6rvCr4w8Ej2pqLdyGWj+MFdGK8k6v1b/zVSNFkOR0yA==","signatures":[{"sig":"MEUCIQDQsqxfoOotekbRKAhAZ66L0chJ0Z4x7bmpocdTivbVxAIgX79je6vpR2E/GrLmvrPQdL+Itp68XRnZAxhmYLM5hSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217582},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"ca0f07c184b8cd04560164edb05acd642270a570","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.5.6_1769345686142_0.8826170074998729","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@codehz/json-expr","version":"0.6.0","_id":"@codehz/json-expr@0.6.0","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"1e3efaddf76c33074cd132430d9d02299e4010ee","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.0.tgz","fileCount":6,"integrity":"sha512-5qC+rvusi8hheyjWpm7gFVw8ZXmRJ9y9EzHN9F1sya2BvZI3Qzclrs1VyFVZ/EX+MrKVgqpkmpoE/w5dtmvphA==","signatures":[{"sig":"MEUCIHkOHwcp0SZCBi+bR23Lpw6XOhnyrbpxIvb7frLgfaZCAiEAlFFDgP9EC6pEr8IjIT2dZAZTkX3zuHYlhnqWC6Tmol4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":234143},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"a6caafaeee23a8c923e01dd66033a43fc57bfcf8","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.6.0_1769419528163_0.6733703947601437","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@codehz/json-expr","version":"0.6.1","_id":"@codehz/json-expr@0.6.1","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"78788aba825101bf11395b4f2fd6d3172d2e172f","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.1.tgz","fileCount":6,"integrity":"sha512-ohW5LRhSBbHSCSQiSbjFWt0/FVwWqOgWTxRb1JlWEnfG2InBF9v8sNeR35YdP4NazcivsWIWOqpjiG+jOWg5WA==","signatures":[{"sig":"MEUCIEf7NE8r2ZHRbj58o1SK0VqNoVuwPTcOXCAhnNzi2RmEAiEAxqzyiorKB16C8OKPvpy7DTPW5ooDcMQ1b2cj2mtYaQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":240802},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"b133537f2a445f72a9b768b4029b772de721baf4","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.6.2","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.2","tsdown":"^0.20.1","prettier":"^3.8.1","@eslint/js":"^9.39.2","@types/bun":"latest","lint-staged":"^16.2.7","typescript-eslint":"^8.53.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.6.1_1769485786395_0.15585243991974385","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@codehz/json-expr","version":"0.6.2","_id":"@codehz/json-expr@0.6.2","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"02fb3a7f322480da984269c2c79710db7c2b92ab","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.2.tgz","fileCount":6,"integrity":"sha512-aNNZotBF++xx/YNL4X3YlBG3Pr4xhJq8OIZm/42OSI5E+ul8hpqKPR55i8tL3KRupi8TdeEWF/KVVF22jm4uXA==","signatures":[{"sig":"MEYCIQDU0IVrTUFng7G5Z/F/jro0JnCwdJa5NHgndIdaR9gcIgIhAO7usDPhTVYeLq4uenE9+/2gNk7qq8ASToyTkPXr0HCG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":253213},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"b912f0bbca2660f00f7358c1f182adc3caab559a","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.11.0","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.4","tsdown":"^0.20.3","prettier":"^3.8.3","@eslint/js":"^9.39.4","@types/bun":"1.3.13","lint-staged":"^16.4.0","typescript-eslint":"^8.59.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.6.2_1778211300922_0.7780842813788447","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@codehz/json-expr","version":"0.6.3","_id":"@codehz/json-expr@0.6.3","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"ad34cf47470d43a3b43c2f7ef8eefb979e70fe11","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.3.tgz","fileCount":6,"integrity":"sha512-lvggYAYBe5dcY8DuKGdE5e5r4yODZDmn+9xrMlJ+1AEMDvoem5hgaR+nfAj0MSEB26mBxoPGPRUOnt6UWexLgQ==","signatures":[{"sig":"MEUCIQCKI+VxfF14JuXnwf40VKYK/a/mZlQGTmECkK9A5dI7hAIgYXFNL+2RO5yzvR4v+809ksFJKTDrIhqN/84ukpqbJOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":273784},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"cbef28e46ac06d1591e4ebae72280ea241785125","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.11.0","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.4","tsdown":"^0.20.3","prettier":"^3.8.3","@eslint/js":"^9.39.4","@types/bun":"1.3.13","lint-staged":"^16.4.0","typescript-eslint":"^8.59.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.6.3_1778223312998_0.9979330517668095","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@codehz/json-expr","version":"0.6.4","_id":"@codehz/json-expr@0.6.4","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"homepage":"https://github.com/codehz/json-expr#readme","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"dist":{"shasum":"256ef048777dad9f06941a42f9061fa68614ad62","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.4.tgz","fileCount":6,"integrity":"sha512-Ds53ZBQitXAGgsnvpFTkcX/JrJMWpMT6qFJu6lpEZGpL2VkHDcRbpvKJdrQ05A3uGgp+YVC6LlPHfOcNaKYgCw==","signatures":[{"sig":"MEQCIAcKnfgCAY7578v7tmPFc09dIrXWyKxgvq/gZZ/rNJ6oAiAM5YPJz3eUwbfKPNy/s2EYW/VlgOVoT87aQhLILpa8UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":282460},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"36ae244969be1069fe6274c52c6a6ac8be4b2d21","scripts":{"lint":"eslint . --ext .ts,.tsx,.js,.jsx","build":"tsdown","format":"prettier --write . --ignore-unknown","prepare":"husky || exit 0","release":"bun run build","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check . --ignore-unknown"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"repository":{"url":"git+https://github.com/codehz/json-expr.git","type":"git"},"_npmVersion":"11.12.1","description":"A JSON expression evaluation library","directories":{},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.39.4","tsdown":"^0.20.3","prettier":"^3.8.3","@eslint/js":"^9.39.4","@types/bun":"1.3.13","lint-staged":"^16.4.0","typescript-eslint":"^8.59.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/json-expr_0.6.4_1779341548200_0.8697515597747894","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@codehz/json-expr","version":"0.6.5","description":"A JSON expression evaluation library","type":"module","main":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"repository":{"type":"git","url":"git+https://github.com/codehz/json-expr.git"},"scripts":{"prepare":"husky || exit 0","build":"tsdown","release":"bun run build","lint":"eslint . --ext .ts,.tsx,.js,.jsx","lint:fix":"eslint . --ext .ts,.tsx,.js,.jsx --fix","format":"prettier --write . --ignore-unknown","format:check":"prettier --check . --ignore-unknown","type-check":"tsc --noEmit"},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":"prettier --write"},"devDependencies":{"@eslint/js":"^9.39.4","@types/bun":"1.3.13","@typescript-eslint/eslint-plugin":"^8.59.2","@typescript-eslint/parser":"^8.59.2","eslint":"^9.39.4","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","husky":"^9.1.7","lint-staged":"^16.4.0","prettier":"^3.8.3","prettier-plugin-organize-imports":"^4.3.0","tsdown":"^0.20.3","typescript-eslint":"^8.59.2"},"peerDependencies":{"typescript":"^6.0.3"},"gitHead":"4b52b97754587349a7def2b54149a9bc6619213c","_id":"@codehz/json-expr@0.6.5","bugs":{"url":"https://github.com/codehz/json-expr/issues"},"homepage":"https://github.com/codehz/json-expr#readme","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-1BCo2gjW70nCEPkYlViOOdV6uu4L7bA5+EDCqFDvbGMncKCqkfr+lsEMDo8Z+a7iY6A2eQERzb0q3crdaSJ2HA==","shasum":"2fd3e82ae2503a031dbb38f9bb982ae91c8d8c0d","tarball":"https://registry.npmjs.org/@codehz/json-expr/-/json-expr-0.6.5.tgz","fileCount":6,"unpackedSize":288241,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codehz%2fjson-expr@0.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQChonX/ODs5XG2/46OHpgno/zH3KwQj2fZKLW56ERPWrgIhAJec04Q9mNh+mE4KQ70B8T2ju0FSR4WJjFLd70NbUbA6"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:99d70ca0-c0e7-48f0-ba29-e13654969bc4"}},"directories":{},"maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-expr_0.6.5_1779346550979_0.31878982129832445"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-23T09:30:57.791Z","modified":"2026-05-21T06:55:51.472Z","0.0.0":"2026-01-23T09:30:58.068Z","0.1.0":"2026-01-23T09:33:36.322Z","0.1.1":"2026-01-23T10:09:16.671Z","0.2.0":"2026-01-23T13:34:22.688Z","0.2.1":"2026-01-23T14:51:53.621Z","0.3.0":"2026-01-24T02:22:54.096Z","0.4.0":"2026-01-24T07:26:09.338Z","0.5.0":"2026-01-24T10:07:55.828Z","0.5.1":"2026-01-24T10:59:38.925Z","0.5.2":"2026-01-24T11:40:22.339Z","0.5.3":"2026-01-25T05:09:54.231Z","0.5.4":"2026-01-25T05:26:46.457Z","0.5.5":"2026-01-25T11:46:36.387Z","0.5.6":"2026-01-25T12:54:46.286Z","0.6.0":"2026-01-26T09:25:28.305Z","0.6.1":"2026-01-27T03:49:46.535Z","0.6.2":"2026-05-08T03:35:01.074Z","0.6.3":"2026-05-08T06:55:13.146Z","0.6.4":"2026-05-21T05:32:28.343Z","0.6.5":"2026-05-21T06:55:51.128Z"},"bugs":{"url":"https://github.com/codehz/json-expr/issues"},"homepage":"https://github.com/codehz/json-expr#readme","repository":{"type":"git","url":"git+https://github.com/codehz/json-expr.git"},"description":"A JSON expression evaluation library","maintainers":[{"name":"codehz","email":"CodeHz@Outlook.com"}],"readme":"# @codehz/json-expr\n\n一个可序列化为 JSON 的表达式 DSL 库，提供类型安全的表达式构建、编译和求值。\n\n[![npm version](https://img.shields.io/npm/v/@codehz/json-expr.svg)](https://www.npmjs.com/package/@codehz/json-expr)\n\n## 特性\n\n- 🎯 **类型安全** - 使用 TypeScript 泛型进行完整的编译时类型推导\n- 📦 **可序列化** - 编译后的表达式为纯 JSON 格式，易于传输和存储\n- 🔧 **灵活的表达式** - 支持任意 JavaScript 表达式，包括函数调用和对象属性访问\n- ⚡ **高性能** - 优化的表达式编译和执行\n- 🧩 **可组合** - 表达式可以相互组合，形成复杂的计算树\n- 🔄 **短路求值** - 支持 `&&`、`||`、`??` 和三元表达式的控制流优化\n- 📝 **内联优化** - 自动内联只被引用一次的子表达式\n- 🔗 **Proxy 变量系统** - 支持链式属性访问和方法调用，如 `config.timeout`、`user.profile.name`\n- 🎛️ **Lambda 表达式** - 类型安全的数组方法支持（map、filter、reduce 等）\n- 🛡️ **错误检测** - 编译时检测未定义变量和类型错误\n\n## 快速开始\n\n### 安装\n\n```bash\nbun install @codehz/json-expr\n```\n\n### 基本用法\n\n```typescript\nimport { variable, expr, compile, evaluate, t, lambda, wrap } from \"@codehz/json-expr\";\n\n// 定义类型化变量（使用 TypeScript 泛型）\nconst x = variable<number>();\nconst y = variable<number>();\n\n// 构建表达式\nconst sum = expr({ x, y })(\"x + y\");\nconst product = expr({ x, y })(\"x * y\");\nconst result = expr({ sum, product })(\"sum + product\");\n\n// 编译表达式（可序列化为 JSON）\nconst compiled = compile(result, { x, y });\n// => [[\"x\", \"y\"], \"$[0]+$[1]\", \"$[0]*$[1]\", \"$[2]+$[3]\"]\n\n// 执行编译后的表达式\nconst value = evaluate(compiled, { x: 2, y: 3 });\n// => 11  (2+3 + 2*3 = 5 + 6 = 11)\n\n// 使用模板字符串\nconst name = variable<string>();\nconst greeting = t`Hello, ${name}!`;\n\n// 使用 lambda 表达式\nconst numbers = variable<number[]>();\nconst doubled = numbers.map(lambda<[number], number>((n) => expr({ n })(\"n * 2\")));\n\n// 使用 wrap 包装静态值\nconst pattern = wrap(/^[a-z]+$/i);\nconst input = variable<string>();\nconst isValid = pattern.test(input);\n```\n\n## 核心概念\n\n### Variable（变量）\n\n变量是表达式中的占位符，使用 TypeScript 泛型定义其类型。\n\n```typescript\nconst age = variable<number>();\nconst name = variable<string>();\nconst config = variable<{\n  debug: boolean;\n  timeout: number;\n}>();\n```\n\n### Expression（表达式）\n\n表达式对变量或其他表达式进行运算，使用字符串形式描述。\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\n\n// 简单表达式\nconst sum = expr({ x, y })(\"x + y\");\n\n// 复杂表达式（可以使用 JS 语言特性）\nconst abs = expr({ x })(\"Math.abs(x)\");\nconst conditional = expr({ x, y })(\"x > y ? x : y\");\nconst array = expr({ x, y })(\"[x, y].filter(v => v > 0)\");\n```\n\n### CompiledData（编译数据）\n\n编译后的表达式为 JSON 数组格式：\n\n```typescript\n// 格式: [variableNames, expression1, expression2, ...]\n// 其中 $N 用于引用之前的变量或表达式\n\nconst compiled = compile(result, { x, y });\n// [[\"x\", \"y\"], \"$[0]+$[1]\", \"$[0]*$[1]\", \"$[2]+$[3]\"]\n```\n\n## API 参考\n\n### `variable<T>(): Variable<T>`\n\n创建一个类型化变量。\n\n**参数：** 无（类型通过泛型参数 `T` 指定）\n\n**返回值：** Variable 对象，支持属性访问和方法调用\n\n**示例：**\n\n```typescript\nconst num = variable<number>();\nconst str = variable<string>();\nconst config = variable<{ timeout: number }>();\n\n// 支持链式属性访问\nconst timeout = config.timeout; // 自动转换为表达式\n```\n\n### `expr<TContext>(context: TContext): (source: string) => Expression<TContext, TResult>`\n\n创建表达式，采用柯里化设计以支持完整的类型推导。\n\n**参数：**\n\n- `context` - 上下文对象，包含变量和/或其他表达式的映射\n\n**返回值：** 函数，接收表达式源码字符串并返回 Expression 对象\n\n**示例：**\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\n\nconst sum = expr({ x, y })(\"x + y\");\nconst result = expr({ sum, x })(\"sum * x\");\n```\n\n### `compile<TResult>(expression: Expression<any, TResult>, variables: Record<string, Variable<any>> | Variable<any>[], options?: CompileOptions): CompiledData`\n\n将表达式树编译为可序列化的 JSON 结构。\n\n**参数：**\n\n- `expression` - 要编译的表达式\n- `variables` - 表达式中使用的所有变量映射或数组\n- `options` - 编译选项（可选）\n  - `inline?: boolean` - 是否启用内联优化，将只被引用一次的子表达式内联到使用位置（默认：true）\n\n**返回值：** CompiledData 数组\n\n**示例：**\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\nconst sum = expr({ x, y })(\"x + y\");\nconst product = expr({ x, y })(\"x * y\");\nconst result = expr({ sum, product })(\"sum + product\");\n\nconst compiled = compile(result, { x, y });\n// [[\"x\", \"y\"], \"$[0]+$[1]\", \"$[0]*$[1]\", \"$[2]+$[3]\"]\n\n// 禁用内联优化\nconst noInline = compile(result, { x, y }, { inline: false });\n// [[\"x\", \"y\"], \"$[0]+$[1]\", \"$[0]*$[1]\", \"$[2]+$[3]\"]\n```\n\n### `evaluate<TResult>(data: CompiledData, values: Record<string, unknown>): TResult`\n\n执行编译后的表达式。\n\n**参数：**\n\n- `data` - 编译后的表达式数据\n- `values` - 变量值映射，对应编译数据中的变量名顺序\n\n**返回值：** 表达式计算结果\n\n**示例：**\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\nconst sum = expr({ x, y })(\"x + y\");\nconst product = expr({ x, y })(\"x * y\");\nconst result = expr({ sum, product })(\"sum + product\");\n\nconst compiled = compile(result, { x, y });\nconst value = evaluate(compiled, { x: 5, y: 3 });\n// => 23  ((5+3) + (5*3) = 8 + 15 = 23)\n```\n\n### `t(strings: TemplateStringsArray, ...values: unknown[]): Proxify<string>`\n\n使用标签模板函数创建包含变量的字符串表达式。\n\n**参数：**\n\n- `strings` - 模板字符串的静态部分\n- `values` - 模板中插值的变量和表达式\n\n**返回值：** 字符串类型的 Proxy Expression\n\n**示例：**\n\n```typescript\nconst name = variable<string>();\nconst count = variable<number>();\n\nconst greeting = t`Hello, ${name}!`;\nconst message = t`You have ${count} items.`;\n\nconst compiled = compile(greeting, { name });\nconst result = evaluate(compiled, { name: \"Alice\" });\n// => \"Hello, Alice!\"\n```\n\n### `lambda<Args, R>(builder: LambdaBuilder<Args, R>): Lambda<Args, R>`\n\n创建类型安全的 lambda 表达式，用于数组方法（map、filter、reduce 等）。\n\n**参数：**\n\n- `builder` - Lambda 构建函数，接收参数代理，返回函数体表达式\n\n**返回值：** Lambda 表达式，可在数组方法中使用\n\n**示例：**\n\n```typescript\nimport { lambda } from \"@codehz/json-expr\";\n\n// 单参数 lambda\nconst numbers = variable<number[]>();\nconst doubled = numbers.map(lambda<[number], number>((n) => expr({ n })(\"n * 2\")));\n\nconst compiled = compile(doubled, { numbers });\nconst result = evaluate(compiled, { numbers: [1, 2, 3] });\n// => [2, 4, 6]\n\n// 多参数 lambda（reduce）\nconst sum = numbers.reduce(\n  lambda<[number, number], number>((acc, val) => expr({ acc, val })(\"acc + val\")),\n  0\n);\n\n// 捕获外部变量\nconst multiplier = variable<number>();\nconst scaled = numbers.map(lambda<[number], number>((n) => expr({ n, multiplier })(\"n * multiplier\")));\n```\n\n### `wrap<T>(value: T): Proxify<T>`\n\n将静态值包装为 Proxy Expression，使其可以像 Variable 一样调用方法和访问属性。\n\n**参数：**\n\n- `value` - 要包装的静态值（支持原始值、对象、数组、Date、RegExp、BigInt、URL、Map、Set、TypedArray 等）\n\n**返回值：** Proxy Expression，可以继续链式调用\n\n**示例：**\n\n```typescript\n// 包装 RegExp\nconst pattern = wrap(/^[a-z]+$/i);\nconst input = variable<string>();\nconst isValid = pattern.test(input);\n\nconst compiled = compile(isValid, { input });\nevaluate(compiled, { input: \"hello\" }); // => true\nevaluate(compiled, { input: \"hello123\" }); // => false\n\n// 包装 Date\nconst now = wrap(new Date(\"2024-01-01\"));\nconst year = now.getFullYear();\n\n// 包装数组\nconst staticNumbers = wrap([1, 2, 3, 4, 5]);\nconst x = variable<number>();\nconst doubled = staticNumbers.map(lambda((n: number) => expr({ n, x })(\"n * x\")));\n\n// 包装对象\nconst config = wrap({ port: 8080, host: \"localhost\" });\nconst port = config.port; // 直接访问属性\n\n// 包装 Map\nconst map = wrap(\n  new Map([\n    [\"a\", 1],\n    [\"b\", 2],\n  ])\n);\nconst key = variable<string>();\nconst value = map.get(key);\n\n// 链式调用\nconst text = wrap(\"  hello world  \");\nconst result = text.trim().toUpperCase().replace(\"HELLO\", \"HI\");\n// => \"HI WORLD\"\n```\n\n## 高级用法\n\n### 包装静态值（wrap）\n\n`wrap()` 函数可以将任意静态值转换为 Proxy Expression，使其可以像 Variable 一样调用方法和访问属性。这在需要对常量值执行操作时非常有用。\n\n**基本用法：**\n\n```typescript\n// 不使用 wrap（传统方式）\ninterface Validator {\n  match(text: string, pattern: RegExp): boolean;\n}\nconst validator = variable<Validator>();\nconst result = validator.match(\"hello\", /^[a-z]+$/i);\n\n// 使用 wrap（推荐方式）\nconst pattern = wrap(/^[a-z]+$/i);\nconst input = variable<string>();\nconst result = pattern.test(input);\n```\n\n**支持的类型：**\n\n```typescript\n// 原始值\nconst num = wrap(42);\nconst str = wrap(\"hello\");\nconst bool = wrap(true);\n\n// Date 和 RegExp\nconst date = wrap(new Date(\"2024-01-01\"));\nconst year = date.getFullYear();\n\nconst regex = wrap(/\\d+/g);\nconst text = variable<string>();\nconst matches = text.match(regex);\n\n// BigInt\nconst bigNum = wrap(123456789n);\nconst x = variable<bigint>();\nconst sum = expr({ bigNum, x })(\"bigNum + x\");\n\n// URL\nconst url = wrap(new URL(\"https://example.com/path\"));\nconst host = url.hostname;\nconst port = url.port;\n\n// Map 和 Set\nconst map = wrap(\n  new Map([\n    [\"key1\", 100],\n    [\"key2\", 200],\n  ])\n);\nconst key = variable<string>();\nconst value = map.get(key);\n\nconst set = wrap(new Set([1, 2, 3]));\nconst num = variable<number>();\nconst has = set.has(num);\n\n// TypedArray\nconst arr = wrap(new Uint8Array([10, 20, 30]));\nconst index = variable<number>();\nconst value = expr({ arr, index })(\"arr[index]\");\n\n// 数组和对象\nconst numbers = wrap([1, 2, 3, 4, 5]);\nconst multiplier = variable<number>();\nconst scaled = numbers.map(lambda((n: number) => expr({ n, multiplier })(\"n * multiplier\")));\n\nconst config = wrap({ port: 8080, host: \"localhost\" });\nconst port = config.port;\n```\n\n**链式调用：**\n\n```typescript\nconst text = wrap(\"  Hello, World!  \");\nconst result = text.trim().toLowerCase().replace(\"world\", \"universe\");\n// => \"hello, universe!\"\n```\n\n**与 variable 结合：**\n\n```typescript\nconst staticData = wrap({ users: [\"alice\", \"bob\", \"charlie\"] });\nconst index = variable<number>();\nconst username = expr({ staticData, index })(\"staticData.users[index]\");\n\nconst compiled = compile(username, { index });\nevaluate(compiled, { index: 1 }); // => \"bob\"\n```\n\n### Proxy 变量系统\n\n`variable()` 创建的变量是 Proxy 对象，支持链式属性访问和方法调用，所有操作都会自动转换为表达式。\n\n**属性访问：**\n\n```typescript\nconst config = variable<{\n  timeout: number;\n  retries: number;\n  database: {\n    host: string;\n    port: number;\n  };\n}>();\n\n// 链式属性访问\nconst timeout = config.timeout; // 自动转换为表达式\nconst dbHost = config.database.host; // 支持嵌套访问\n\nconst compiled = compile(timeout, { config });\nconst result = evaluate(compiled, {\n  config: { timeout: 5000, retries: 3, database: { host: \"localhost\", port: 5432 } },\n});\n// => 5000\n```\n\n**方法调用：**\n\n```typescript\nconst calculator = variable<{\n  add(a: number, b: number): number;\n  multiply(x: number, y: number): number;\n}>();\n\n// 方法调用\nconst sum = calculator.add(1, 2);\nconst product = calculator.multiply(5, 3);\n\n// 链式方法调用\nconst builder = variable<{\n  setName(name: string): typeof builder;\n  build(): { name: string };\n}>();\nconst result = builder.setName(\"test\").build();\n\n// 编译并执行\nconst compiled = compile(sum, { calculator });\nconst value = evaluate(compiled, {\n  calculator: {\n    add: (a, b) => a + b,\n    multiply: (x, y) => x * y,\n  },\n});\n// => 3\n```\n\n**数组方法：**\n\n数组变量支持所有标准数组方法，并自动处理类型推导：\n\n```typescript\nconst numbers = variable<number[]>();\nconst users = variable<{ id: number; name: string }[]>();\n\n// map\nconst doubled = numbers.map((n) => expr({ n })(\"n * 2\"));\n\n// filter\nconst activeUsers = users.filter((u) => expr({ u })(\"u.active\"));\n\n// reduce\nconst sum = numbers.reduce(\n  lambda<[number, number], number>((acc, val) => expr({ acc, val })(\"acc + val\")),\n  0\n);\n\n// find, some, every, sort 等\nconst firstMatch = users.find((u) => expr({ u })(\"u.id === 1\"));\nconst hasAdmins = users.some((u) => expr({ u })(\"u.role === 'admin'\"));\nconst allActive = users.every((u) => expr({ u })(\"u.active\"));\nconst sorted = numbers.toSorted(lambda<[number, number], number>((a, b) => expr({ a, b })(\"a - b\")));\n```\n\n### 内置全局对象\n\n表达式中可以直接使用以下内置对象（无需在上下文中定义）：\n\n- `Math`, `JSON`, `Date`, `RegExp`\n- `Number`, `String`, `Boolean`, `Array`, `Object`\n- `undefined`, `NaN`, `Infinity`\n- `isNaN`, `isFinite`, `parseInt`, `parseFloat`\n\n```typescript\nconst x = variable<number>();\n\nconst sqrtExpr = expr({ x })(\"Math.sqrt(x)\");\nconst compiled = compile(sqrtExpr, { x });\nconst result = evaluate(compiled, { x: 16 });\n// => 4\n```\n\n### 支持的运算符和语法\n\n**算术运算符：**\n\n- `+`, `-`, `*`, `/`, `%`, `**` (幂运算)\n\n**比较运算符：**\n\n- `==`, `===`, `!=`, `!==`, `<`, `>`, `<=`, `>=`\n\n**逻辑运算符：**\n\n- `&&`, `||`, `!`, `??` (空值合并)\n\n**位运算符：**\n\n- `&`, `|`, `^`, `~`, `<<`, `>>`, `>>>`\n\n**其他运算符：**\n\n- `? :` (三元表达式)\n- `in` (属性存在检查)\n- `instanceof` (类型检查)\n- `typeof` (类型检测)\n- `?.` (可选链)\n- `?.()` (可选调用)\n- `?.[]` (可选元素访问)\n\n**语法特性：**\n\n- 对象字面量：`{ key: value, ... }`\n- 数组字面量：`[element1, element2, ...]`\n- 箭头函数：`(param) => expression`\n- 函数调用：`func(arg1, arg2, ...)`\n- 成员访问：`obj.prop`, `obj[\"prop\"]`, `arr[0]`\n- 模板字面量（通过 `t` 标签函数）\n- 分组括号：`(expression)`\n\n### 条件表达式\n\n```typescript\nconst score = variable<number>();\nconst gradeExpr = expr({ score })(\"score >= 90 ? 'A' : score >= 80 ? 'B' : score >= 70 ? 'C' : 'F'\");\n\nconst compiled = compile(gradeExpr, { score });\nconst grade = evaluate(compiled, { score: 85 });\n// => \"B\"\n```\n\n### 数组和对象操作\n\n```typescript\nconst numbers = variable<number[]>();\n\nconst sumExpr = expr({ numbers })(\"numbers.reduce((a, b) => a + b, 0)\");\n\nconst compiled = compile(sumExpr, { numbers });\nconst sum = evaluate(compiled, { numbers: [1, 2, 3, 4, 5] });\n// => 15\n```\n\n### 链式表达式组合\n\n```typescript\nconst a = variable<number>();\nconst b = variable<number>();\n\nconst sum = expr({ a, b })(\"a + b\");\nconst product = expr({ a, b })(\"a * b\");\nconst difference = expr({ a, b })(\"a - b\");\n\nconst complex = expr({ sum, product, difference })(\"sum * product - difference\");\n\nconst compiled = compile(complex, { a, b });\nconst result = evaluate(compiled, { a: 2, b: 3 });\n// => (2+3) * (2*3) - (2-3) = 5 * 6 - (-1) = 30 + 1 = 31\n```\n\n### 短路求值（控制流优化）\n\n编译器支持为 `&&`、`||`、`??` 和三元表达式生成短路求值代码，避免不必要的计算：\n\n```typescript\nconst a = variable<boolean>();\nconst b = variable<boolean>();\n\n// 逻辑或短路\nconst orExpr = expr({ a, b })(\"a || b\");\nconst compiled = compile(orExpr, { a, b });\n\n// 当 a 为 true 时，b 不会被求值\n// 编译数据包含控制流节点：\n// [[\"a\", \"b\"], [\"br\", \"$[0]\", 1], \"$[1]\", [\"phi\"]]\n\n// 空值合并\nconst x = variable<number | null>();\nconst y = variable<number>();\nconst coalesce = expr({ x, y })(\"x ?? y\");\n\n// 三元表达式\nconst condition = variable<boolean>();\nconst result = variable<number>();\nconst alternative = variable<number>();\nconst ternary = expr({ condition, result, alternative })(\"condition ? result : alternative\");\n```\n\n### 自动内联优化\n\n编译器自动将只被引用一次的子表达式内联到使用位置，减少中间计算：\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\n\nconst sum = expr({ x, y })(\"x + y\");\nconst product = expr({ x, y })(\"x * y\");\nconst result = expr({ sum, product })(\"sum + product\");\n\n// 自动内联后，编译结果为：\n// [[\"x\", \"y\"], \"($[0]+$[1])+($[0]*$[1])\"]\n// 而不是 [[\"x\", \"y\"], \"$[0]+$[1]\", \"$[0]*$[1]\", \"$[2]+$[3]\"]\n\nconst compiled = compile(result, { x, y });\nconst value = evaluate(compiled, { x: 2, y: 3 });\n// => 11\n```\n\n### 直接编译对象和数组\n\n`compile` 函数支持直接编译包含 Proxy 的对象和数组：\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\nconst sum = expr({ x, y })(\"x + y\");\n\n// 编译对象\nconst objCompiled = compile({ result: sum, original: { x, y } }, { x, y });\nconst objResult = evaluate(objCompiled, { x: 10, y: 20 });\n// => { result: 30, original: { x: 10, y: 20 } }\n\n// 编译数组\nconst arrCompiled = compile([x, sum, 100], { x, y });\nconst arrResult = evaluate(arrCompiled, { x: 5, y: 3 });\n// => [5, 8, 100]\n```\n\n## 序列化和传输\n\n编译后的数据可以轻松进行 JSON 序列化，适合网络传输或持久化存储：\n\n```typescript\n// 编译表达式\nconst compiled = compile(result, { x, y });\n\n// 序列化\nconst json = JSON.stringify(compiled);\n// \"[[\"x\",\"y\"],\"$[0]+$[1]\",\"$[0]*$[1]\",\"$[2]+$[3]\"]\"\n\n// 存储或传输...\n\n// 反序列化\nconst deserialized = JSON.parse(json);\n\n// 执行\nconst value = evaluate(deserialized, { x: 5, y: 3 });\n```\n\n## 编译数据格式\n\n### V1 格式（基础表达式）\n\n基础格式为 JSON 数组：`[variableNames, ...expressions]`\n\n```typescript\n// 输入\nconst sum = expr({ x, y })(\"x + y\");\nconst compiled = compile(sum, { x, y });\n\n// 输出\n// [[\"x\", \"y\"], \"$[0]+$[1]\"]\n//  $[0] 引用 x，$[1] 引用 y\n```\n\n### V2 格式（控制流节点）\n\n启用短路求值时，生成包含控制流节点的格式：\n\n```typescript\n// 输入\nconst result = expr({ a, b })(\"a || b\");\nconst compiled = compile(result, { a, b });\n\n// 输出\n// [\n//   [\"a\", \"b\"],\n//   [\"br\", \"$[0]\", 1],  // 如果 $[0] 为 truthy，跳过 1 条指令\n//   \"$[1]\",             // 否则求值 $[1]\n//   [\"phi\"]           // 取最近求值结果\n// ]\n```\n\n**控制流节点类型：**\n\n- `[\"br\", condition, offset]` - 条件跳转，条件为真时跳过 offset 条指令\n- `[\"jmp\", offset]` - 无条件跳转，跳过 offset 条指令\n- `[\"phi\"]` - 取最近求值结果（用于合并分支）\n\n## 错误处理\n\n### 编译时错误\n\n编译器会检测并报告以下错误：\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\n\n// 错误：引用未定义的变量\nconst invalid = expr({ x, y })(\"x + y + z\");\ncompile(invalid, { x, y });\n// => Error: Undefined variable(s): z\n\n// 错误：变量名冲突\nconst xy = variable<number>();\nconst conflict = expr({ xy, x })(\"xy + x\");\n// 正确处理：编译器能区分 xy 和 x\nconst compiled = compile(conflict, { xy, x });\n// => [[\"xy\", \"x\"], \"$[0]+$[1]\"]\n```\n\n### 运行时错误\n\n求值器会验证输入并报告运行时错误：\n\n```typescript\nconst x = variable<number>();\nconst y = variable<number>();\n\nconst sum = expr({ x, y })(\"x + y\");\nconst compiled = compile(sum, { x, y });\n\n// 错误：缺少必需变量\nevaluate(compiled, { x: 2 });\n// => Error: Missing required variable: y\n\n// 错误：无效的编译数据\nevaluate([], { x: 1 });\n// => Error: Invalid compiled data: must have at least variable names\n```\n\n## 类型安全\n\n项目充分利用 TypeScript 的类型系统进行编译时检查和类型推导：\n\n```typescript\nconst x = variable<number>();\nconst y = variable<string>();\n\n// 类型错误会在编译时捕获\n// const invalid = expr({ x, y })(\"z + y\"); // Error: 'z' not in context\nconst valid = expr({ x })(\"-x\"); // 编译器推导为 number\n```\n\n## 实际应用示例\n\n### 动态表单验证规则\n\n```typescript\nconst formData = variable<{\n  username: string;\n  password: string;\n  confirmPassword: string;\n  age: number;\n}>();\n\n// 创建验证规则表达式\nconst isUsernameValid = expr({ formData })(\"formData.username.length >= 3 && formData.username.length <= 20\");\n\nconst isPasswordValid = expr({ formData })(\"formData.password.length >= 8 && /[A-Z]/.test(formData.password)\");\n\nconst doPasswordsMatch = expr({ formData })(\"formData.password === formData.confirmPassword\");\n\nconst isAgeValid = expr({ formData })(\"formData.age >= 18 && formData.age <= 120\");\n\nconst isFormValid = expr({\n  isUsernameValid,\n  isPasswordValid,\n  doPasswordsMatch,\n  isAgeValid,\n})(\"isUsernameValid && isPasswordValid && doPasswordsMatch && isAgeValid\");\n\n// 编译一次，多次执行\nconst compiled = compile(isFormValid, { formData });\n\n// 在表单输入时实时验证\nevaluate(compiled, {\n  formData: {\n    username: \"john_doe\",\n    password: \"Secure123\",\n    confirmPassword: \"Secure123\",\n    age: 25,\n  },\n}); // => true\n```\n\n### 数据转换管道\n\n```typescript\nconst rawData = variable<any[]>();\nconst config = variable<{\n  minValue: number;\n  maxValue: number;\n  transform: (x: number) => number;\n}>();\n\n// 构建数据处理管道\nconst filtered = rawData.filter(\n  lambda<[any], boolean>((item) =>\n    expr({ item, config })(\"item.value >= config.minValue && item.value <= config.maxValue\")\n  )\n);\n\nconst transformed = filtered.map(\n  lambda<[any], number>((item) => expr({ item, config })(\"config.transform(item.value)\"))\n);\n\nconst sorted = transformed.toSorted(lambda<[number, number], number>((a, b) => expr({ a, b })(\"a - b\")));\n\nconst pipeline = compile(sorted, { rawData, config });\n\n// 执行数据处理\nconst result = evaluate(pipeline, {\n  rawData: [{ value: 10 }, { value: 5 }, { value: 20 }, { value: 15 }],\n  config: { minValue: 8, maxValue: 18, transform: (x: number) => x * 2 },\n});\n// => [10, 20, 30] (5 被过滤，10*2=20, 15*2=30, 20 被过滤)\n```\n\n### 规则引擎\n\n```typescript\n// 定义规则条件\nconst user = variable<{\n  age: number;\n  role: string;\n  balance: number;\n}>();\n\nconst isEligible = expr({ user })(\n  \"(user.age >= 18 && user.age <= 65) && (user.role === 'premium' || user.balance > 10000)\"\n);\n\nconst discountRate = expr({ user, isEligible })(\"isEligible ? (user.role === 'premium' ? 0.2 : 0.1) : 0\");\n\nconst rule = compile(discountRate, { user });\n\n// 应用规则\nconst discount = evaluate(rule, {\n  user: { age: 30, role: \"premium\", balance: 5000 },\n});\n// => 0.2 (20% 折扣)\n```\n\n## 性能考虑\n\n- **编译时间**：编译过程涉及依赖分析和拓扑排序，通常快速完成\n- **执行时间**：表达式通过 `new Function()` 编译为原生 JavaScript，执行性能接近原生代码\n- **内存占用**：编译数据为纯 JSON，占用空间小，适合在网络上传输\n- **缓存机制**：求值器缓存已编译的函数，重复执行时性能更优\n\n### 最佳实践\n\n1. **编译一次，多次执行**：对于重复使用的表达式，先编译后多次求值\n\n   ```typescript\n   const compiled = compile(expression, variables);\n   // 缓存 compiled，多次调用 evaluate\n   evaluate(compiled, values1);\n   evaluate(compiled, values2);\n   ```\n\n2. **利用短路求值**：短路求值已默认启用，对于条件表达式可以避免不必要的计算\n\n3. **利用自动内联**：编译器会自动内联只引用一次的子表达式，无需手动优化\n\n4. **优先使用 Proxy 链式调用**：对于对象属性访问，使用 `config.timeout` 比 `expr({ config })(\"config.timeout\")` 更简洁且类型更安全\n\n## 项目结构\n\n```\nsrc/\n├── index.ts          # 导出入口\n├── variable.ts       # variable<T>() 函数\n├── expr.ts           # expr() 函数\n├── template.ts       # t() 标签模板函数\n├── lambda.ts         # lambda() 函数（数组方法支持）\n├── compile.ts        # 编译器（内联优化、短路求值）\n├── evaluate.ts       # 运行时求值\n├── parser.ts         # 表达式 AST 解析器\n├── type-parser.ts    # TypeScript 类型级表达式解析\n├── proxy-variable.ts # Proxy 变量实现\n├── proxy-metadata.ts # Proxy 元数据管理\n└── types.ts          # 类型定义（Variable、Expression、Lambda 等）\n```\n\n## 开发\n\n### 安装依赖\n\n```bash\nbun install\n```\n\n### 运行测试\n\n```bash\nbun test\n```\n\n### 代码检查\n\n```bash\nbun run lint\nbun run type-check\n```\n\n### 代码格式化\n\n```bash\nbun run format\n```\n\n## 许可证\n\nMIT\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n","readmeFilename":"README.md"}