{"version":3,"file":"wasm.cjs","sources":["../../../../src/mods/chacha20poly1305/wasm.ts"],"sourcesContent":["import { type ChaCha20Poly1305Wasm } from \"@hazae41/chacha20poly1305.wasm\"\n\nimport { Lengthed } from \"@hazae41/lengthed\"\nimport { Ownable, Owned, Unowned } from \"libs/ownable/index.js\"\nimport { Abstract } from \"./abstract.js\"\nimport { Adapter } from \"./adapter.js\"\n\nexport function fromWasm(Wasm: typeof ChaCha20Poly1305Wasm) {\n\n  class Memory<N extends number = number> extends Abstract.Memory {\n\n    constructor(\n      readonly inner: ChaCha20Poly1305Wasm.Memory\n    ) {\n      super()\n    }\n\n    static fromOrThrow<N extends number = number>(memory: Abstract.Memory<N>): Ownable<Memory<N>> {\n      if (memory instanceof Memory)\n        return new Unowned(memory)\n      if (memory.inner instanceof Wasm.Memory)\n        return new Unowned(new Memory(memory.inner))\n\n      const inner = new Wasm.Memory(memory.bytes)\n\n      return new Owned(new Memory<N>(inner))\n    }\n\n    static importOrThrow<N extends number = number>(bytes: Uint8Array & Lengthed<N>): Memory<N> {\n      return new Memory<N>(new Wasm.Memory(bytes))\n    }\n\n    [Symbol.dispose]() {\n      this.inner[Symbol.dispose]()\n    }\n\n    get bytes() {\n      return this.inner.bytes as Uint8Array & Lengthed<N>\n    }\n\n  }\n\n  class ChaCha20Cipher extends Abstract.ChaCha20Cipher {\n\n    constructor(\n      readonly inner: ChaCha20Poly1305Wasm.ChaCha20Cipher\n    ) {\n      super()\n    }\n\n    [Symbol.dispose]() {\n      this.inner[Symbol.dispose]()\n    }\n\n    static importOrThrow(key: Memory<32>, nonce: Memory<12>) {\n      if (key instanceof Memory === false)\n        throw new Error()\n      if (nonce instanceof Memory === false)\n        throw new Error()\n      return new ChaCha20Cipher(new Wasm.ChaCha20Cipher(key.inner, nonce.inner))\n    }\n\n    applyOrThrow(message: Memory) {\n      if (message instanceof Memory === false)\n        throw new Error()\n      this.inner.apply_keystream(message.inner)\n    }\n\n  }\n\n  class ChaCha20Poly1305Cipher extends Abstract.ChaCha20Poly1305Cipher {\n\n    constructor(\n      readonly inner: ChaCha20Poly1305Wasm.ChaCha20Poly1305Cipher\n    ) {\n      super()\n    }\n\n    [Symbol.dispose]() {\n      this.inner[Symbol.dispose]()\n    }\n\n    static importOrThrow(key: Memory<32>) {\n      if (key instanceof Memory === false)\n        throw new Error()\n      return new ChaCha20Poly1305Cipher(new Wasm.ChaCha20Poly1305Cipher(key.inner))\n    }\n\n    encryptOrThrow(message: Memory, nonce: Memory<12>) {\n      if (message instanceof Memory === false)\n        throw new Error()\n      if (nonce instanceof Memory === false)\n        throw new Error()\n      return new Memory(this.inner.encrypt(message.inner, nonce.inner))\n    }\n\n    decryptOrThrow(message: Memory, nonce: Memory<12>) {\n      if (message instanceof Memory === false)\n        throw new Error()\n      return new Memory(this.inner.decrypt(message.inner, nonce.inner))\n    }\n\n  }\n\n  return { Memory, ChaCha20Cipher, ChaCha20Poly1305Cipher } satisfies Adapter\n}"],"names":["Abstract","Unowned","Owned"],"mappings":"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"}