{"_id":"@anjunar/scalajs-ui-json","_rev":"6-a9c94442a6db9a00022482fd867343dc","name":"@anjunar/scalajs-ui-json","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anjunar/scalajs-ui-json","version":"1.0.0","author":{"name":"Patrick Bittner"},"license":"MIT","_id":"@anjunar/scalajs-ui-json@1.0.0","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"homepage":"https://github.com/anjunar/scalajs-ui#readme","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"d860e34457581e4fcc2c2e8b12e59e39e6b8fe3e","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.0.0.tgz","fileCount":10,"integrity":"sha512-cImvIyt/mmgsA4+sI8A+CsM//EiIxEQDc9zl3kjyYvqyKjklKDwSUIDvs4krg+T8/M1fUnf9z5Xgrhj0ABJcvw==","signatures":[{"sig":"MEYCIQDYDm47vrjvL+EoGujH7ZfJNtqPKc7mVRqZMGJ3hVw7yAIhAJPo33GhFC8AsvJ5U6P2FL8Y87DRFqGdHgDCcsXXO4sx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65706},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a9312d1aa728764c037b016ba66b703e003d6d50","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for UI 3 TypeScript models.","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/scalajs-ui-json_1.0.0_1789143237360_0.24908037434983332","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@anjunar/scalajs-ui-json","version":"1.0.2","author":{"name":"Patrick Bittner"},"license":"MIT","_id":"@anjunar/scalajs-ui-json@1.0.2","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"homepage":"https://github.com/anjunar/scalajs-ui#readme","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"120b2a8f7f1643fac950019f03744fe3a5977443","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.0.2.tgz","fileCount":10,"integrity":"sha512-UA+a9zJQdcCkya3JnsUtoZA+cVqCg7dNlJrNebyfudIYWOOYPNHcFIRDWCrbY1wMGjkFP7Oj6PZLzuK9tFoyIg==","signatures":[{"sig":"MEYCIQDnxIvvpOYPW6KVTHMEFlHmj4xgtHcCtW+YGZFFW5/jVQIhAIPQKmSbc1nOJgVz/VHc0NiqCY5694N5gn83BQfqa5/Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIERBdw/Qm65yL4gcuuuRgvBsf3XQHbMmvvUpp9gfBS/fAiBN1opHriroM0sMQ3whG7jRmslYG4Fnp+URAS9Hrlx4sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65728},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"192dd9f15ce1652b461173756defb0046fbd9ac4","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/scalajs-ui-json_1.0.2_1789506116084_0.23588749797805253","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anjunar/scalajs-ui-json","version":"1.0.3","author":{"name":"Patrick Bittner"},"license":"MIT","_id":"@anjunar/scalajs-ui-json@1.0.3","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"homepage":"https://github.com/anjunar/scalajs-ui#readme","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"72b0e3d4883cd97506f47e95c024b91fed09a504","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.0.3.tgz","fileCount":10,"integrity":"sha512-4WfWCiFl5n0Ctqo3+kNsR5VUV8nMt6wKFcYTyoU4snUgGush1oNlXdbjtWR6UACUkBcLYmQ01+ApDCLWc6N2cw==","signatures":[{"sig":"MEUCIFD3DRRQhvUB07kPeRQqa34eO6V8KwD6fUO9LP+T2dnXAiEAk7ywsPp8XEZof8nknCHKHzBUVSFIiugLtMCvMzG9feY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICyBLdbtwkjGEVHpR1FdwdHFiBpmXpS61X591tJ7Lb5pAiEAoQMzYW7zOupZmpHEW3qAUbWNKIbOUfHayRUxp4fWF9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65728},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"81e89fc0d354046d9c9d548e5e1932d7baba0505","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/scalajs-ui-json_1.0.3_1789552949770_0.2296992499702155","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@anjunar/scalajs-ui-json","version":"1.0.5","author":{"name":"Patrick Bittner"},"license":"MIT","_id":"@anjunar/scalajs-ui-json@1.0.5","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"homepage":"https://github.com/anjunar/scalajs-ui#readme","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"6423fd171b0c1e8b80be40601affbab61333ea40","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.0.5.tgz","fileCount":10,"integrity":"sha512-8H8rRYksGk2WEZBtbP08KuAK61UKYTZXy/iZNM2Gv22pdvMNiw3ld5qcaVR2S9JSi0FH6XKd93hD5E7oIc/AMg==","signatures":[{"sig":"MEUCIQDac8Q2lUJFnhixaq8B95QdFzUlBAyfiYbiF3mThA1YlQIgJP4hNDclKsk1Zv3xpnqYIz3AuvjvwNUmX43UO1ujt/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICQmX0/w2MxAhOJYWyi1wd6kKupBgFc5QvMX1UjugfVeAiBMDYf7/FDTKqrsod1K4WaInB2UaylJBiN2Hks0BOHf3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65774},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"13988ebfcf64a17c3b7777ef28c3e55e6d48ddca","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/scalajs-ui-json_1.0.5_1789736129163_0.8357336446729002","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@anjunar/scalajs-ui-json","version":"1.0.6","author":{"name":"Patrick Bittner"},"license":"MIT","_id":"@anjunar/scalajs-ui-json@1.0.6","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"homepage":"https://github.com/anjunar/scalajs-ui#readme","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"d848ed1b3a8aa4690b08732a4562e3c4226579ea","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.0.6.tgz","fileCount":10,"integrity":"sha512-GXnUf51ABm9C3nLA11nO99AHTPN59pDV+fr6dWNpkaN+wBDmWsB07aUZ3Xkz7hbmRxpnyvDqk1ITA+E8l8OFlQ==","signatures":[{"sig":"MEUCIEWAkFzeCBXn1mYBDKv00YrvRehYHJsGh5Ymn7furj0LAiEAu/cfItY6ln3BwtneZO0MB12gpoJkYFykslw2IqzrHwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFBlVm2May9W3N8WddbnRzLGc/SDJw1MP0OcFvFZgti2AiEAr3sKs2T7XuQROVM6O0c1aB9AOxnpZGGgdxXpLgxxxwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65774},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b5f4e2ac72fff6d18aff21420f18a811c54578e0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/scalajs-ui-json_1.0.6_1789958625657_0.3994159181012793","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"_id":"@anjunar/scalajs-ui-json@1.1.0","bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"dist":{"shasum":"d2e691a1c840be947ec104c0bf2e31743791f001","tarball":"https://registry.npmjs.org/@anjunar/scalajs-ui-json/-/scalajs-ui-json-1.1.0.tgz","fileCount":10,"integrity":"sha512-FqBpXXwqSO/UI1oQGwaF4iCtMC2d7h+aXGwQlu8iBbGEBTbjjgp/k3T+kydinNT507NopFNX74bPQpxpevHqKw==","signatures":[{"sig":"MEUCIBREmZGbJEBG2Bhz5/9otMEnwCi01EwnHrE89aJLGp2TAiEAjoxOUp1XUFXdFlZUQFHPheDxZ4RvZ/1LoIDawJWZmcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGgomEYJkDLCTwj2u9K08m8paBOrtSpVj/amzODoG7hlAiA/wpSF75cbFaGuVu6E8BRv8JERi4AiHYCX3Onkng+rkg=="}],"unpackedSize":65774},"main":"./dist/index.js","name":"@anjunar/scalajs-ui-json","type":"module","types":"./dist/index.d.ts","author":{"name":"Patrick Bittner"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a054cd17cb7cb398f4be3461b25c2a5df009a442","license":"MIT","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run test && npm run test:consumer","prepack":"npm run build","typecheck":"npm run build && tsc -p tsconfig.test.json","test:consumer":"vitest run --config vitest.consumer.config.ts"},"version":"1.1.0","_npmUser":{"name":"anjunar","email":"anjunar@gmx.de"},"homepage":"https://github.com/anjunar/scalajs-ui#readme","repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"_npmVersion":"11.17.0","description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","directories":{},"maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"sideEffects":false,"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^22.0.0","@anjunar/scalajs-ui-core":"*"},"peerDependencies":{"@anjunar/scalajs-ui-core":"^1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scalajs-ui-json_1.1.0_1790707855434_0.3798302569645209"}}},"time":{"created":"2026-09-11T16:13:57.082Z","modified":"2026-09-29T18:50:55.700Z","1.0.0":"2026-09-11T16:13:57.503Z","1.0.2":"2026-09-15T21:01:56.179Z","1.0.3":"2026-09-16T10:02:29.855Z","1.0.5":"2026-09-18T12:55:29.253Z","1.0.6":"2026-09-21T02:43:45.750Z","1.1.0":"2026-09-29T18:50:55.508Z"},"bugs":{"url":"https://github.com/anjunar/scalajs-ui/issues"},"author":{"name":"Patrick Bittner"},"license":"MIT","homepage":"https://github.com/anjunar/scalajs-ui#readme","repository":{"url":"git+https://github.com/anjunar/scalajs-ui.git","type":"git","directory":"npm/scalajs-ui-json"},"description":"Schema driven JSON mapping for Scala JS UI 1.0 TypeScript models.","maintainers":[{"name":"anjunar","email":"anjunar@gmx.de"}],"readme":"# @anjunar/scalajs-ui-json\n\nSchema-driven JSON mapping for TypeScript models used with Scala JS UI 1.0. It is the npm counterpart of `scalajs-ui-json` and keeps mapping explicit at the JavaScript boundary.\n\n## Overview\n\nTypeScript has no Scala reflection or annotations. `JsonSchema` therefore describes factories, fields, nested schemas, maps, arrays, and polymorphic subtypes explicitly. The mapper has no dependency on the Scala bridge; it only understands the `Property` and `ListProperty` shapes from `@anjunar/scalajs-ui-core`.\n\n## Installation\n\n```bash\nnpm install @anjunar/scalajs-ui-json @anjunar/scalajs-ui-core\n```\n\n## Quick start\n\n```ts\nimport { property, type Property } from \"@anjunar/scalajs-ui-core\";\nimport { JsonMapper, jsonField, jsonSchema } from \"@anjunar/scalajs-ui-json\";\n\ntype Account = {\n  id: Property<string>;\n  name: Property<string>;\n};\n\nconst schema = jsonSchema<Account>(\n  () => ({ id: property(\"\"), name: property(\"\") }),\n  { id: jsonField({ id: true }), name: jsonField({ name: \"fullName\" }) },\n);\n\nconst account = schema.factory();\naccount.id.set(\"a-1\");\naccount.name.set(\"Ada\");\nconst json = JsonMapper.serialize(account, schema);\nconst restored = JsonMapper.deserialize(json, schema);\n```\n\n## Decorated classes\n\n```ts\nimport { JsonId, JsonMapper, JsonProperty } from \"@anjunar/scalajs-ui-json\";\n\nclass Profile {\n  @JsonId id = \"\";\n  @JsonProperty(\"displayName\") name = \"\";\n}\n\nconst profile = JsonMapper.deserialize({ id: \"p-1\", displayName: \"Ada\" }, Profile);\nconst json = JsonMapper.serialize(profile);\n```\n\nEnable TypeScript `experimentalDecorators` for decorator syntax. `JsonSchema.abstractType` and `JsonType` provide `@type` discrimination for polymorphic models. `jsonProperty`, `jsonIgnore`, and `jsonId` are functional aliases for the decorators' field metadata.\n\n## Core concepts\n\nUnchanged `Property` values are omitted from dirty payloads; an ID field is retained. Plain fields are always mapped. `jsonField` can specify a nested `schema`, `itemSchema`, `valueSchema`, JSON name, direction flags, and `id`. Use `JsonMapper.deserializeArray` for JSON arrays.\n\n## API overview\n\n- `JsonMapper.serialize`, `deserialize`, `deserializeArray`\n- `JsonSchema`, `jsonSchema`, `jsonField`\n- `JsonProperty`, `JsonIgnore`, `JsonId`, `JsonType`\n- `jsonProperty`, `jsonIgnore`, `jsonId`\n- `JsonValue`, `JsonPrimitive`, `JsonField`\n\n## Related modules\n\n- [`@anjunar/scalajs-ui-core`](../scalajs-ui-core/README.md) supplies reactive property shapes.\n- [`scalajs-ui-json`](../../scalajs-ui-json/README.md) provides the Scala implementation.\n","readmeFilename":"README.md"}