{"_id":"@alan404/nbt","_rev":"1-e915d3a2fc8e61dc9623dc8ec5fd75a1","name":"@alan404/nbt","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@alan404/nbt","version":"0.0.1","author":{"name":"alan404"},"_id":"@alan404/nbt@0.0.1","maintainers":[{"name":"alan404","email":"gokdenizbektas@gmail.com"}],"homepage":"https://github.com/TheAlan404/nbt-ts#readme","bugs":{"url":"https://github.com/TheAlan404/nbt-ts/issues"},"dist":{"shasum":"2e13e46c9897ae965763e6f7d72f5b1deccd135c","tarball":"https://registry.npmjs.org/@alan404/nbt/-/nbt-0.0.1.tgz","fileCount":25,"integrity":"sha512-DUjQw0vQYgUM4hFOOnyBmAoHggFgdqNnYBYlwoCY7/FS0AwMSuRP6QYSjApgtqOxGq9nPOlf0o7wKFmoGdTTnw==","signatures":[{"sig":"MEQCIHulQ/1moFor4dgsJuMFEFmJp0XzcZSXJsnt6f39RGdpAiAYFv4i4OEFUzTvFfw9Y9PF3EAwEFyV6+0V7W6I5uNiDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52016},"main":"dist/index.js","_from":"file:alan404-nbt-0.0.1.tgz","types":"dist/index.d.ts","scripts":{"build":"tsc"},"_npmUser":{"name":"alan404","email":"gokdenizbektas@gmail.com"},"_resolved":"C:\\Users\\dennis\\AppData\\Local\\Temp\\e49fa225eafd3d1068d248c31b415214\\alan404-nbt-0.0.1.tgz","_integrity":"sha512-DUjQw0vQYgUM4hFOOnyBmAoHggFgdqNnYBYlwoCY7/FS0AwMSuRP6QYSjApgtqOxGq9nPOlf0o7wKFmoGdTTnw==","repository":{"url":"git+https://github.com/TheAlan404/nbt-ts.git","type":"git"},"_npmVersion":"10.7.0","description":"Typescript library for serializing and deserializing NBT formats","directories":{},"_nodeVersion":"18.20.4","dependencies":{"@xobj/buffer":"^1.0.8","@alan404/enum":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.2"},"_npmOperationalInternal":{"tmp":"tmp/nbt_0.0.1_1727593465140_0.8478260689469812","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@alan404/nbt","version":"0.0.2","author":{"name":"alan404"},"repository":{"type":"git","url":"git+https://github.com/TheAlan404/nbt-ts.git"},"description":"Typescript library for serializing and deserializing NBT formats","main":"dist/index.js","types":"dist/index.d.ts","type":"module","devDependencies":{"@types/node":"^22.7.4","typescript":"^5.6.2","vitest":"^2.1.1"},"dependencies":{"@alan404/enum":"^0.2.1","@xobj/buffer":"^1.0.8"},"scripts":{"build":"tsc","test":"vitest"},"_id":"@alan404/nbt@0.0.2","bugs":{"url":"https://github.com/TheAlan404/nbt-ts/issues"},"homepage":"https://github.com/TheAlan404/nbt-ts#readme","_integrity":"sha512-+4lXZyTXeEu8Q2EbiaKn0phcvMYlQQy1aGzI41dfxUu9OD/lbnsG87YXKOCyebISpLbzjtWX7obuzrSpfmkIxQ==","_resolved":"C:\\Users\\dennis\\AppData\\Local\\Temp\\271d1efdcbb289d01cd444a99f769117\\alan404-nbt-0.0.2.tgz","_from":"file:alan404-nbt-0.0.2.tgz","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"integrity":"sha512-+4lXZyTXeEu8Q2EbiaKn0phcvMYlQQy1aGzI41dfxUu9OD/lbnsG87YXKOCyebISpLbzjtWX7obuzrSpfmkIxQ==","shasum":"ed3e79df41a1da936bfcc7ee3f47623e1c625e41","tarball":"https://registry.npmjs.org/@alan404/nbt/-/nbt-0.0.2.tgz","fileCount":29,"unpackedSize":54163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC62yAuh5QZYySeBzTj0GlynkBVYjtx4bf8LispGjkAMAIgfvYIXFXxvL9bERnHgP9hcQwjCaVB+OSgM2QsiWGlsw4="}]},"_npmUser":{"name":"alan404","email":"gokdenizbektas@gmail.com"},"directories":{},"maintainers":[{"name":"alan404","email":"gokdenizbektas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nbt_0.0.2_1727860387841_0.9047693531061074"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-29T07:04:25.057Z","modified":"2024-10-02T09:13:08.205Z","0.0.1":"2024-09-29T07:04:25.327Z","0.0.2":"2024-10-02T09:13:08.021Z"},"bugs":{"url":"https://github.com/TheAlan404/nbt-ts/issues"},"author":{"name":"alan404"},"homepage":"https://github.com/TheAlan404/nbt-ts#readme","repository":{"type":"git","url":"git+https://github.com/TheAlan404/nbt-ts.git"},"description":"Typescript library for serializing and deserializing NBT formats","maintainers":[{"name":"alan404","email":"gokdenizbektas@gmail.com"}],"readme":"# nbt-ts\r\n\r\nNBT serialize and deserialize library for TypeScript\r\n\r\n## Installation\r\n\r\n```\r\nnpm i @alan404/nbt\r\npnpm add @alan404/nbt\r\nyarn add @alan404/nbt\r\n```\r\n\r\n## NBTTag\r\n\r\nNBT tags are represented as [Enum](https://github.com/TheAlan404/enum?tab=readme-ov-file)s - `{ type: string; data: any; }`\r\n\r\n```ts\r\nimport { NBTTag } from \"@alan404/nbt\";\r\n\r\nlet tag = {\r\n    type: \"Compound\",\r\n    data: {\r\n        name: {\r\n            type: \"String\",\r\n            data: \"Sophia\",\r\n        },\r\n        age: {\r\n            type: \"Byte\",\r\n            data: 19,\r\n        },\r\n    },\r\n};\r\n\r\n// Same thing but with enum factory\r\n\r\nlet tag = NBTTag.Compound({\r\n    name: NBTTag.String(\"Sophia\"),\r\n    age: NBTTag.Byte(19),\r\n});\r\n```\r\n\r\n## Manual Serialization / Deserialization\r\n\r\nThis library uses the native javascript [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) API.\r\n\r\n```ts\r\nimport { NBTCompound, serializeNBT, deserializeNBT } from \"@alan404/nbt\";\r\n\r\nlet buffer: ArrayBuffer = serializeNBT(tag);\r\nlet anotherTag: NBTCompound = deserializeNBT(buffer);\r\n```\r\n\r\n## NBTDocument\r\n\r\nThis library also provides some support for serde-like functionality:\r\n\r\n```ts\r\nimport { NBTDocument, Field } from \"@alan404/nbt\";\r\n\r\nclass Person extends NBTDocument {\r\n    @Field(\"String\")\r\n    name: string = \"\";\r\n\r\n    @Field(\"Byte\")\r\n    age: number = 0;\r\n}\r\n\r\n// or Person.deserialize(ArrayBuffer)\r\nlet person = Person.deserializeFromTag(tag);\r\n\r\nlet buf: ArrayBuffer = person.serialize();\r\nlet tag = person.serializeToTag();\r\n```\r\n\r\nSupports more complicated scenarios:\r\n\r\n```ts\r\nimport { NBTRoot, NBTDocument, Field } from \"@alan404/nbt\";\r\n\r\nclass Server extends NBTDocument {\r\n    @Field(\"String\")\r\n    name: string;\r\n\r\n    @Field(\"String\")\r\n    ip: string;\r\n    \r\n    @Field(\"String\")\r\n    icon: boolean;\r\n}\r\n\r\nclass ServersDat extends NBTDocument {\r\n    [NBTRoot] = \"\";\r\n\r\n    @Field(\"List\", [\"Compound\", Server])\r\n    servers: Server[];\r\n}\r\n```\r\n\r\nThe `[NBTRoot]` symbol property allows you to serialize and deserialize **root** NBT tags (nbt format is implicitly inside a NBTCompound), set to `false` to mark as not root (default) or a string to give it a name.\r\n","readmeFilename":"README.md"}