{"_id":"@ahsankhanamu/json-transformer","_rev":"7-ce8c2229efae8f7fed6d3859fc6522ed","name":"@ahsankhanamu/json-transformer","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@ahsankhanamu/json-transformer","version":"0.1.0","keywords":["json","query","transformation","parser"],"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.0","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"dist":{"shasum":"0b7bb2ef5ab9efaab4b0b54cf574d7e62b14e299","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.0.tgz","fileCount":49,"integrity":"sha512-on3K+Oif0KZzx56EL1iwW/pjbrsrooDktNkbWJzQd3bOtMljZbBRnqwVejKC4mpiKxu/hYTA+uL++VxCY9hhPA==","signatures":[{"sig":"MEUCIDInRMgDaqCM9vUW/j2uQVbdJs3uvi8jwqYqQuKMAIqsAiEAyfnR9/BZ5I0xMA3mhC32T45wgiKuZ2BIHkcqkuLrzb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384754},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c2729e4aaaf4d995d648476e138b56e0e0e32f2f","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"_npmVersion":"11.6.3","description":"JSON Query and Transformation Language","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.0_1769969782250_0.228549375697652","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ahsankhanamu/json-transformer","version":"0.1.1","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.1","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"dist":{"shasum":"add4a86d41d1ed662071e5a521081b8fe028cfee","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.1.tgz","fileCount":50,"integrity":"sha512-UmpND3fnRVMQLyOx7e8meiSMFTJCkdCMcqMRTS3GtAqbFSg7mfFZxPijQMi3lNrkOLOSvehzB4gN0Npbn9vlhg==","signatures":[{"sig":"MEUCIAn5wjQvq9hu4MclCrGLGFoKk4IEHNCy0XTIHc2WSfeYAiEAtnzCawNgjnT3VXvKWeK3pod7JZIexcnYcAhjhUnv+nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389762},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d13e0c00439fe21e13bae8fd8ca8b80b497298d7","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"repository":{"url":"git+https://github.com/ahsankhanamu/json-transformer.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.3","description":"JSON Query and Transformation Language","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.1_1769970281144_0.20886906387868498","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ahsankhanamu/json-transformer","version":"0.1.2","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.2","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"dist":{"shasum":"0d619606cda642ebb51ef56d51bdb6be6e11eda7","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.2.tgz","fileCount":50,"integrity":"sha512-HFtn+eKLU3yurJXd+0DDqRKS4rrKlqheuI3SrA6WQ16nVfe1e7TrSjCFZtPQhINV9PB8wGuyzgll2XW/tgxQBQ==","signatures":[{"sig":"MEUCIQCXk1zFjZBLMul8Xiw5bbQuEo4mTS8WnSnr0XYo7Pj5PAIgQnWboUrl47uZ6OFSXA8iYLeI45fwRJu9pyhFiVtT4Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389361},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0663bcbcecb4e51bffc83849d0e43b9e487f5ecd","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"repository":{"url":"git+https://github.com/ahsankhanamu/json-transformer.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.3","description":"JSON Query and Transformation Language","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.2_1769970882154_0.8917683238304674","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ahsankhanamu/json-transformer","version":"0.1.3","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.3","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"dist":{"shasum":"2a2973a015f273b64f33abeef233c7ad58e3cd13","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.3.tgz","fileCount":58,"integrity":"sha512-5qfCkaKIG8jF2xXhg4iZ694a+d0wbLx2KIS70sOamIx6EXj9Zv4WH6eoEcHyYyVjXMnaXgkOHmQBcVIm3d3JDw==","signatures":[{"sig":"MEUCIEyl6eCQsDIaAkq3jcZXyIimspulayhg8pzgrvFfERDkAiEAshsGahvRBHklqDDvbiiHmu41qtOxUu2S4ZyXO8xJXn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ast":{"types":"./dist/ast.d.ts","import":"./dist/ast.js"},"./lexer":{"types":"./dist/lexer.d.ts","import":"./dist/lexer.js"},"./parser":{"types":"./dist/parser.d.ts","import":"./dist/parser.js"},"./codegen":{"types":"./dist/codegen.d.ts","import":"./dist/codegen.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./registry":{"types":"./dist/registry.d.ts","import":"./dist/registry.js"},"./transformer":{"types":"./dist/transformer.d.ts","import":"./dist/transformer.js"}},"gitHead":"cffe09eb91bd646c3a82821b421179b2171340f5","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"repository":{"url":"git+https://github.com/ahsankhanamu/json-transformer.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"JSON Query and Transformation Language","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.3_1770729961858_0.491586427797986","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ahsankhanamu/json-transformer","version":"0.1.4","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.4","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"dist":{"shasum":"83811b7f06306b75a7edc7bfbb4bfde0a8d6c26a","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.4.tgz","fileCount":58,"integrity":"sha512-5utGxsBGvNwqMmDhKIH6UR+WqBZGpprzONjD37qtEMd96WVInEoL63oMfath4VZNIEaZys/ydAWkZOrfPrduug==","signatures":[{"sig":"MEUCIBWua7A5WM1ob74Eqx/sogeyzNVpiHMELjWaurhfi17TAiEAl7ZWCzaP5dwfPNhHhVSNuSnfO9ZgBH8jUCL/7Ubitkk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430164},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ast":{"types":"./dist/ast.d.ts","import":"./dist/ast.js"},"./lexer":{"types":"./dist/lexer.d.ts","import":"./dist/lexer.js"},"./parser":{"types":"./dist/parser.d.ts","import":"./dist/parser.js"},"./codegen":{"types":"./dist/codegen.d.ts","import":"./dist/codegen.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./registry":{"types":"./dist/registry.d.ts","import":"./dist/registry.js"},"./transformer":{"types":"./dist/transformer.d.ts","import":"./dist/transformer.js"}},"gitHead":"d668fc26389a671d44d6f97a5361af06fe1b6e09","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"repository":{"url":"git+https://github.com/ahsankhanamu/json-transformer.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"JSON Query and Transformation Language","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.4_1770927747915_0.3984312240672232","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ahsankhanamu/json-transformer","version":"0.1.5","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","_id":"@ahsankhanamu/json-transformer@0.1.5","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"dist":{"shasum":"7716bd1df3783b5adb7ab91094bd3ebc4ad1db46","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.5.tgz","fileCount":58,"integrity":"sha512-N/LJofKSzejEr6yNczeVlOqbi4aFmT0aaBz4AxFf8lEJ3W9dFpSy/X4udCr6YWYbEAz4lm8FuBW8uNSduIPBrg==","signatures":[{"sig":"MEUCIQDoaPtloQCTo4c5rUEp77UGdZbz+Cc1Rs6sVtK+dGfwMQIgOiYBoSQDlVMu/Mxfonb+v5QA2J5r9Bq2QYpKkRg6vsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417454},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ast":{"types":"./dist/ast.d.ts","import":"./dist/ast.js"},"./lexer":{"types":"./dist/lexer.d.ts","import":"./dist/lexer.js"},"./parser":{"types":"./dist/parser.d.ts","import":"./dist/parser.js"},"./codegen":{"types":"./dist/codegen.d.ts","import":"./dist/codegen.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./registry":{"types":"./dist/registry.d.ts","import":"./dist/registry.js"},"./transformer":{"types":"./dist/transformer.d.ts","import":"./dist/transformer.js"}},"gitHead":"82e17b3b05d9f94749c624f18121d9556e6eb9fc","scripts":{"dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","build":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"repository":{"url":"git+https://github.com/ahsankhanamu/json-transformer.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"JSON Query and Transformation Language","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/json-transformer_0.1.5_1771273934375_0.021215966189369162","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@ahsankhanamu/json-transformer","version":"0.1.6","description":"JSON Query and Transformation Language","type":"module","main":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./parser":{"types":"./dist/parser.d.ts","import":"./dist/parser.js"},"./codegen":{"types":"./dist/codegen.d.ts","import":"./dist/codegen.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./ast":{"types":"./dist/ast.d.ts","import":"./dist/ast.js"},"./lexer":{"types":"./dist/lexer.d.ts","import":"./dist/lexer.js"},"./registry":{"types":"./dist/registry.d.ts","import":"./dist/registry.js"},"./transformer":{"types":"./dist/transformer.d.ts","import":"./dist/transformer.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","test":"node --experimental-vm-modules ../../node_modules/jest/bin/jest.js","prepublishOnly":"npm run build && npm test"},"keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"author":{"name":"Ahsan Khan"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ahsankhanamu/json-transformer.git","directory":"packages/core"},"homepage":"https://json-transformer-docs.vercel.app","bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.19.33","jest":"^29.7.0","ts-jest":"^29.4.6","typescript":"^5.9.3"},"gitHead":"358c1e4bb452af4b9137f7c6c746af33b5e83262","_id":"@ahsankhanamu/json-transformer@0.1.6","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-aZ764vG5VGrx5nt1MxEsz1VW4l8184BCiC0UmuRlOZpSiReapBjpUZQxIrOgWg/BmixY4yMNSXvW6YUkOu2Tlw==","shasum":"17eb5d244814ec80e840a65f98ed4432c72ca8e5","tarball":"https://registry.npmjs.org/@ahsankhanamu/json-transformer/-/json-transformer-0.1.6.tgz","fileCount":58,"unpackedSize":429997,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHi0jMYBDT1HC4yWvEBX035xcyjZZjVQIMt45KrsnONvAiBoKS9qnXpz3/iWMcHKx99BVqFtLtr1N97GDaWE4QOlIw=="}]},"_npmUser":{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"},"directories":{},"maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-transformer_0.1.6_1771316518954_0.3638167418295615"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-01T18:16:22.115Z","modified":"2026-02-17T08:21:59.224Z","0.1.0":"2026-02-01T18:16:22.400Z","0.1.1":"2026-02-01T18:24:41.294Z","0.1.2":"2026-02-01T18:34:42.303Z","0.1.3":"2026-02-10T13:26:02.045Z","0.1.4":"2026-02-12T20:22:28.087Z","0.1.5":"2026-02-16T20:32:14.549Z","0.1.6":"2026-02-17T08:21:59.097Z"},"bugs":{"url":"https://github.com/ahsankhanamu/json-transformer/issues"},"author":{"name":"Ahsan Khan"},"license":"MIT","homepage":"https://json-transformer-docs.vercel.app","keywords":["json","query","transformation","parser","jq","jsonpath","compile"],"repository":{"type":"git","url":"git+https://github.com/ahsankhanamu/json-transformer.git","directory":"packages/core"},"description":"JSON Query and Transformation Language","maintainers":[{"name":"ahsankhanamu","email":"ahsankhanamu@gmail.com"}],"readme":"# @ahsankhanamu/json-transformer\n\nA lightweight JSON query and transformation language that compiles to JavaScript.\n\n## Installation\n\n```bash\nnpm install @ahsankhanamu/json-transformer\n```\n\n## Tree-Shaking & Subpath Imports\n\nFor smaller bundles, import only what you need:\n\n```javascript\n// Full API (convenient)\nimport { evaluate, compile, toJS } from '@ahsankhanamu/json-transformer';\n\n// Individual modules (tree-shakable)\nimport { parse, Parser } from '@ahsankhanamu/json-transformer/parser';\nimport { generate, NativeCodeGenerator } from '@ahsankhanamu/json-transformer/codegen';\nimport { helpers } from '@ahsankhanamu/json-transformer/runtime';\nimport * as AST from '@ahsankhanamu/json-transformer/ast';\n```\n\n## Quick Examples\n\n```javascript\nimport { evaluate } from '@ahsankhanamu/json-transformer';\n\nconst data = {\n  user: { name: 'John', age: 30 },\n  orders: [\n    { product: 'Widget', price: 25.99 },\n    { product: 'Gadget', price: 49.99 }\n  ]\n};\n\n// Property access\nevaluate('user.name', data);                    // \"John\"\n\n// Array operations\nevaluate('orders[].product', data);             // [\"Widget\", \"Gadget\"]\nevaluate('orders[? .price > 30]', data);        // Filter by price\n\n// Transformations\nevaluate('orders.map(x => x.price * 2)', data); // [51.98, 99.98]\nevaluate('user.name | upper', data);            // \"JOHN\"\n```\n\n## API\n\n```typescript\nimport { compile, evaluate, validate, toJS, parse } from '@ahsankhanamu/json-transformer';\n\n// compile(expr, options?) - Returns reusable function (fastest for repeated use)\nconst fn = compile('user.name | upper');\nfn({ user: { name: 'john' } }); // 'JOHN'\n\n// evaluate(expr, data, options?) - One-shot evaluation with caching\nevaluate('price * qty', { price: 10, qty: 5 }); // 50\n\n// validate(expr) - Check syntax without executing\nvalidate('user.name'); // null (valid)\nvalidate('user.');     // ParseError\n\n// toJS(expr, options?) - Generate JS source code\ntoJS('a + b'); // 'return (input?.a + input?.b);'\n\n// parse(expr) - Get AST for inspection\nparse('a.b'); // { type: 'Program', expression: { type: 'MemberAccess', ... } }\n```\n\n### Options\n\n```typescript\ninterface Options {\n  strict?: boolean;  // Throw errors vs return undefined (default: false)\n  cache?: boolean;   // Cache compiled functions (default: true)\n}\n```\n\n## Syntax\n\n### Property Access\n```javascript\nuser.firstName              // Simple access\nuser.address.city           // Nested access\nuser?.middleName            // Optional chaining\n```\n\n### Array Operations\n```javascript\norders[0]                   // First element\norders[-1]                  // Last element\norders[].product            // Property projection → [\"Widget\", \"Gadget\"]\norders[0:3]                 // Slice\norders[? .price > 20]       // Filter\n```\n\n### Array Methods\n```javascript\norders.map(x => x.price)           // Map\norders.filter(x => x.price > 20)   // Filter\norders.find(x => x.id == 1)        // Find\norders[].sort(.price)              // Sort\norders[].groupBy(.category)        // Group\n```\n\n### Pipe Operations\n```javascript\nname | upper | trim                           // Chain functions\norders.find(x => x.id === 3) | .status        // jq-style property access\n\"hello\" | .toUpperCase()                      // Method calls\nuser | { name: .firstName, city: .address.city }  // Object construction\n```\n\n### Expressions\n```javascript\nprice * quantity + tax              // Arithmetic\nfirstName & \" \" & lastName          // String concatenation\n`Hello ${user.name}!`               // Template literals\nage >= 18 ? \"Adult\" : \"Minor\"       // Ternary\nnickname ?? \"Anonymous\"             // Null coalescing\n```\n\n### Object Construction\n```javascript\n{ name: user.firstName, city: user.address.city }\n{ ...user, fullName: firstName & \" \" & lastName }\n```\n\n### Variable Bindings\n```javascript\nlet total = price * qty;\nlet tax = total * 0.1;\n{ subtotal: total, tax, total: total + tax }\n```\n\n## Built-in Functions\n\n| Category | Functions |\n|----------|-----------|\n| String | `upper`, `lower`, `trim`, `split`, `join`, `replace`, `substring`, `contains`, `capitalize`, `camelCase`, `snakeCase`, `kebabCase` |\n| Math | `round`, `floor`, `ceil`, `abs`, `min`, `max`, `clamp` |\n| Array | `sum`, `avg`, `count`, `first`, `last`, `unique`, `flatten`, `reverse`, `sort`, `groupBy`, `keyBy`, `take`, `drop` |\n| Object | `keys`, `values`, `entries`, `pick`, `omit`, `merge`, `get`, `set` |\n| Type | `type`, `isString`, `isNumber`, `isArray`, `isObject`, `isEmpty` |\n| Conversion | `toString`, `toNumber`, `toJSON`, `fromJSON` |\n\n## Code Generation Modes\n\n**Forgiving Mode** (default) - Returns undefined for missing paths:\n```javascript\ntoJS('user.address.city');\n// → input?.user?.address?.city\n```\n\n**Strict Mode** - Throws descriptive errors:\n```javascript\ntoJS('user.address.city', { strict: true });\n// Throws: \"Property 'city' does not exist at path 'user.address'\"\n```\n\n## Links\n\n- [Documentation](https://json-transformer-docs.vercel.app)\n- [Playground](https://json-transformer-docs.vercel.app/playground)\n- [GitHub](https://github.com/ahsankhanamu/json-transformer)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}