diff --git a/npm/.npmrc b/npm/.npmrc new file mode 100644 index 0000000..ae64359 --- /dev/null +++ b/npm/.npmrc @@ -0,0 +1 @@ +//registry.npmjs.org/:_authToken=${NPM_TOKEN} diff --git a/npm/QmcLegacy.d.ts b/npm/QmcLegacy.d.ts new file mode 100644 index 0000000..1151625 --- /dev/null +++ b/npm/QmcLegacy.d.ts @@ -0,0 +1,73 @@ +export type WASM_ptr = number; +export type WASM_NUMBER = "i8" | "i16" | "i32" | "i64" | "float" | "double"; + +export declare interface WASMExportedRuntime { + /** + * Emscripten HEAP, use this for raw memory access. + * @type {Uint8Array} + */ + HEAPU8: Uint8Array; + + /** + * Allocate a block of {@link size} bytes of memory in Emscripten HEAP + * @param size Size of the memory block, in bytes. + * @returns {WASM_ptr} Returns a pointer to the beginning of the block. + */ + _malloc(size: number): WASM_ptr; + + /** + * Free an allocated block of memory. + * @param ptr Pointer to a memory block previously allocated with `malloc`. + */ + _free(ptr: WASM_ptr): void; + + /** + * Write an uint8 array to the Emscripten HEAP. + * @param data Data to be written inside the Emscripten HEAP. + * @param bufferPointer Address pointer + */ + writeArrayToMemory(data: Uint8Array, bufferPointer: WASM_ptr): void; +} + +export declare interface QmcCrypto extends WASMExportedRuntime { + /** + * Get error. + */ + getErr(): string; + + /** + * Get song id. + */ + getSongId(): string; + + /** + * Decryption preparations using the end-of-file buffer. + * @param blob WASM ptr points to the beginning of the end-of-file buffer. + * @param blobSize size of {@link blob}. + * @param ext extension of the _original file_. + */ + preDec( + blob: WASM_ptr, + blobSize: number, + ext: string + ): number; + + /** + * Decrypt a block. + * @param blob Pointer to buffer allocated using {@link _malloc}. + * Data can be written here using {@link writeArrayToMemory}. + * @param size Size of the provided buffer. + * @param offset Offset of the buffer from _original file_. + * This parameter is _required_ to derive correct key. + */ + decBlob( + blob: WASM_ptr, + blobSize: number, + offset: number + ): number; +} + +/** + * Factory to initialise QmcCryptoModule. + */ +export default function QmcCryptoModule(): Promise; \ No newline at end of file diff --git a/npm/QmcWasm.d.ts b/npm/QmcWasm.d.ts new file mode 100644 index 0000000..1151625 --- /dev/null +++ b/npm/QmcWasm.d.ts @@ -0,0 +1,73 @@ +export type WASM_ptr = number; +export type WASM_NUMBER = "i8" | "i16" | "i32" | "i64" | "float" | "double"; + +export declare interface WASMExportedRuntime { + /** + * Emscripten HEAP, use this for raw memory access. + * @type {Uint8Array} + */ + HEAPU8: Uint8Array; + + /** + * Allocate a block of {@link size} bytes of memory in Emscripten HEAP + * @param size Size of the memory block, in bytes. + * @returns {WASM_ptr} Returns a pointer to the beginning of the block. + */ + _malloc(size: number): WASM_ptr; + + /** + * Free an allocated block of memory. + * @param ptr Pointer to a memory block previously allocated with `malloc`. + */ + _free(ptr: WASM_ptr): void; + + /** + * Write an uint8 array to the Emscripten HEAP. + * @param data Data to be written inside the Emscripten HEAP. + * @param bufferPointer Address pointer + */ + writeArrayToMemory(data: Uint8Array, bufferPointer: WASM_ptr): void; +} + +export declare interface QmcCrypto extends WASMExportedRuntime { + /** + * Get error. + */ + getErr(): string; + + /** + * Get song id. + */ + getSongId(): string; + + /** + * Decryption preparations using the end-of-file buffer. + * @param blob WASM ptr points to the beginning of the end-of-file buffer. + * @param blobSize size of {@link blob}. + * @param ext extension of the _original file_. + */ + preDec( + blob: WASM_ptr, + blobSize: number, + ext: string + ): number; + + /** + * Decrypt a block. + * @param blob Pointer to buffer allocated using {@link _malloc}. + * Data can be written here using {@link writeArrayToMemory}. + * @param size Size of the provided buffer. + * @param offset Offset of the buffer from _original file_. + * This parameter is _required_ to derive correct key. + */ + decBlob( + blob: WASM_ptr, + blobSize: number, + offset: number + ): number; +} + +/** + * Factory to initialise QmcCryptoModule. + */ +export default function QmcCryptoModule(): Promise; \ No newline at end of file diff --git a/npm/QmcWasmBundle.d.ts b/npm/QmcWasmBundle.d.ts new file mode 100644 index 0000000..1151625 --- /dev/null +++ b/npm/QmcWasmBundle.d.ts @@ -0,0 +1,73 @@ +export type WASM_ptr = number; +export type WASM_NUMBER = "i8" | "i16" | "i32" | "i64" | "float" | "double"; + +export declare interface WASMExportedRuntime { + /** + * Emscripten HEAP, use this for raw memory access. + * @type {Uint8Array} + */ + HEAPU8: Uint8Array; + + /** + * Allocate a block of {@link size} bytes of memory in Emscripten HEAP + * @param size Size of the memory block, in bytes. + * @returns {WASM_ptr} Returns a pointer to the beginning of the block. + */ + _malloc(size: number): WASM_ptr; + + /** + * Free an allocated block of memory. + * @param ptr Pointer to a memory block previously allocated with `malloc`. + */ + _free(ptr: WASM_ptr): void; + + /** + * Write an uint8 array to the Emscripten HEAP. + * @param data Data to be written inside the Emscripten HEAP. + * @param bufferPointer Address pointer + */ + writeArrayToMemory(data: Uint8Array, bufferPointer: WASM_ptr): void; +} + +export declare interface QmcCrypto extends WASMExportedRuntime { + /** + * Get error. + */ + getErr(): string; + + /** + * Get song id. + */ + getSongId(): string; + + /** + * Decryption preparations using the end-of-file buffer. + * @param blob WASM ptr points to the beginning of the end-of-file buffer. + * @param blobSize size of {@link blob}. + * @param ext extension of the _original file_. + */ + preDec( + blob: WASM_ptr, + blobSize: number, + ext: string + ): number; + + /** + * Decrypt a block. + * @param blob Pointer to buffer allocated using {@link _malloc}. + * Data can be written here using {@link writeArrayToMemory}. + * @param size Size of the provided buffer. + * @param offset Offset of the buffer from _original file_. + * This parameter is _required_ to derive correct key. + */ + decBlob( + blob: WASM_ptr, + blobSize: number, + offset: number + ): number; +} + +/** + * Factory to initialise QmcCryptoModule. + */ +export default function QmcCryptoModule(): Promise; \ No newline at end of file diff --git a/npm/package.json b/npm/package.json new file mode 100644 index 0000000..e488c6c --- /dev/null +++ b/npm/package.json @@ -0,0 +1,24 @@ +{ + "name": "@xhacker/qmcwasm", + "version": "1.0.0", + "description": "Wasm for Qmc Encryption & Decryption", + "main": "QmcWasmBundle.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/xhacker-zzz/QmcWasm.git" + }, + "keywords": [ + "unlock-music", + "qmc", + "WASM" + ], + "author": "xhacker-zzz", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/xhacker-zzz/QmcWasm/issues" + }, + "homepage": "https://github.com/xhacker-zzz/QmcWasm#readme" +}