@wirunrom/hqr-generate 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # hqr-generate
2
+
3
+ Stable black/white QR Code generator returning PNG data URL (Rust + WASM).
4
+
5
+ ## Install
6
+
7
+ npm i hqr-generate
8
+
9
+ ## Usage (React / Next.js)
10
+
11
+ ```ts
12
+ import { qr_png_data_url } from "hqr-generate";
13
+
14
+ const src = await qr_png_data_url("hello", 320, 4, "Q");
15
+ // <img src={src} />
16
+ ```
@@ -0,0 +1,24 @@
1
+ let _initPromise;
2
+ let _modPromise;
3
+
4
+ async function loadWasm() {
5
+ if (!_modPromise) {
6
+ _modPromise = import("./pkg/hqr_generate.js");
7
+ }
8
+ const mod = await _modPromise;
9
+
10
+ const initFn =
11
+ mod.default ?? mod.__wbg_init ?? mod.init ?? mod.__wbindgen_start;
12
+
13
+ if (typeof initFn === "function") {
14
+ if (!_initPromise) _initPromise = initFn();
15
+ await _initPromise;
16
+ }
17
+
18
+ return mod;
19
+ }
20
+
21
+ export async function qr_png_data_url(text, size = 320, margin = 4, ecc = "Q") {
22
+ const mod = await loadWasm();
23
+ return mod.qr_png_data_url(text, size, margin, ecc);
24
+ }
package/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export type QrEcc = "L" | "M" | "Q" | "H";
2
+
3
+ export function qr_png_data_url(
4
+ text: string,
5
+ size?: number,
6
+ margin?: number,
7
+ ecc?: QrEcc
8
+ ): Promise<string>;
package/index.node.js ADDED
@@ -0,0 +1,5 @@
1
+ export async function qr_png_data_url() {
2
+ throw new Error(
3
+ 'hqr-generate is a browser/WASM library. Use it in a Client Component ("use client") only.',
4
+ );
5
+ }
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@wirunrom/hqr-generate",
3
+ "version": "0.1.0",
4
+ "description": "Stable black/white QR code generator (PNG data URL) powered by Rust + WASM",
5
+ "type": "module",
6
+ "files": [
7
+ "pkg/**",
8
+ "index.browser.js",
9
+ "index.node.js",
10
+ "index.d.ts",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "main": "./index.node.js",
15
+ "module": "./index.browser.js",
16
+ "types": "./index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "browser": "./index.browser.js",
21
+ "default": "./index.node.js"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "build": "wasm-pack build --target bundler",
26
+ "clean": "rm -rf pkg",
27
+ "prepack": "npm run clean && npm run build && rm -f pkg/.gitignore",
28
+ "publish:npm": "npm publish --registry=https://registry.npmjs.org --access public",
29
+ "publish:github": "npm publish --registry=https://npm.pkg.github.com --userconfig .npmrc.github --access public"
30
+ },
31
+ "keywords": [
32
+ "qrcode",
33
+ "qr",
34
+ "wasm",
35
+ "rust"
36
+ ],
37
+ "license": "MIT"
38
+ }
package/pkg/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # hqr-generate
2
+
3
+ Stable black/white QR Code generator returning PNG data URL (Rust + WASM).
4
+
5
+ ## Install
6
+
7
+ npm i hqr-generate
8
+
9
+ ## Usage (React / Next.js)
10
+
11
+ ```ts
12
+ import { qr_png_data_url } from "hqr-generate";
13
+
14
+ const src = await qr_png_data_url("hello", 320, 4, "Q");
15
+ // <img src={src} />
16
+ ```
@@ -0,0 +1,4 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ export function qr_png_data_url(text: string, size: number, margin: number, ecc: string): string;
@@ -0,0 +1,9 @@
1
+ /* @ts-self-types="./hqr_generate.d.ts" */
2
+
3
+ import * as wasm from "./hqr_generate_bg.wasm";
4
+ import { __wbg_set_wasm } from "./hqr_generate_bg.js";
5
+ __wbg_set_wasm(wasm);
6
+ wasm.__wbindgen_start();
7
+ export {
8
+ qr_png_data_url
9
+ } from "./hqr_generate_bg.js";
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @param {string} text
3
+ * @param {number} size
4
+ * @param {number} margin
5
+ * @param {string} ecc
6
+ * @returns {string}
7
+ */
8
+ export function qr_png_data_url(text, size, margin, ecc) {
9
+ let deferred4_0;
10
+ let deferred4_1;
11
+ try {
12
+ const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
13
+ const len0 = WASM_VECTOR_LEN;
14
+ const ptr1 = passStringToWasm0(ecc, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
15
+ const len1 = WASM_VECTOR_LEN;
16
+ const ret = wasm.qr_png_data_url(ptr0, len0, size, margin, ptr1, len1);
17
+ var ptr3 = ret[0];
18
+ var len3 = ret[1];
19
+ if (ret[3]) {
20
+ ptr3 = 0; len3 = 0;
21
+ throw takeFromExternrefTable0(ret[2]);
22
+ }
23
+ deferred4_0 = ptr3;
24
+ deferred4_1 = len3;
25
+ return getStringFromWasm0(ptr3, len3);
26
+ } finally {
27
+ wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
28
+ }
29
+ }
30
+ export function __wbindgen_cast_0000000000000001(arg0, arg1) {
31
+ // Cast intrinsic for `Ref(String) -> Externref`.
32
+ const ret = getStringFromWasm0(arg0, arg1);
33
+ return ret;
34
+ }
35
+ export function __wbindgen_init_externref_table() {
36
+ const table = wasm.__wbindgen_externrefs;
37
+ const offset = table.grow(4);
38
+ table.set(0, undefined);
39
+ table.set(offset + 0, undefined);
40
+ table.set(offset + 1, null);
41
+ table.set(offset + 2, true);
42
+ table.set(offset + 3, false);
43
+ }
44
+ function getStringFromWasm0(ptr, len) {
45
+ ptr = ptr >>> 0;
46
+ return decodeText(ptr, len);
47
+ }
48
+
49
+ let cachedUint8ArrayMemory0 = null;
50
+ function getUint8ArrayMemory0() {
51
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
52
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
53
+ }
54
+ return cachedUint8ArrayMemory0;
55
+ }
56
+
57
+ function passStringToWasm0(arg, malloc, realloc) {
58
+ if (realloc === undefined) {
59
+ const buf = cachedTextEncoder.encode(arg);
60
+ const ptr = malloc(buf.length, 1) >>> 0;
61
+ getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
62
+ WASM_VECTOR_LEN = buf.length;
63
+ return ptr;
64
+ }
65
+
66
+ let len = arg.length;
67
+ let ptr = malloc(len, 1) >>> 0;
68
+
69
+ const mem = getUint8ArrayMemory0();
70
+
71
+ let offset = 0;
72
+
73
+ for (; offset < len; offset++) {
74
+ const code = arg.charCodeAt(offset);
75
+ if (code > 0x7F) break;
76
+ mem[ptr + offset] = code;
77
+ }
78
+ if (offset !== len) {
79
+ if (offset !== 0) {
80
+ arg = arg.slice(offset);
81
+ }
82
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
83
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
84
+ const ret = cachedTextEncoder.encodeInto(arg, view);
85
+
86
+ offset += ret.written;
87
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
88
+ }
89
+
90
+ WASM_VECTOR_LEN = offset;
91
+ return ptr;
92
+ }
93
+
94
+ function takeFromExternrefTable0(idx) {
95
+ const value = wasm.__wbindgen_externrefs.get(idx);
96
+ wasm.__externref_table_dealloc(idx);
97
+ return value;
98
+ }
99
+
100
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
101
+ cachedTextDecoder.decode();
102
+ const MAX_SAFARI_DECODE_BYTES = 2146435072;
103
+ let numBytesDecoded = 0;
104
+ function decodeText(ptr, len) {
105
+ numBytesDecoded += len;
106
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
107
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
108
+ cachedTextDecoder.decode();
109
+ numBytesDecoded = len;
110
+ }
111
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
112
+ }
113
+
114
+ const cachedTextEncoder = new TextEncoder();
115
+
116
+ if (!('encodeInto' in cachedTextEncoder)) {
117
+ cachedTextEncoder.encodeInto = function (arg, view) {
118
+ const buf = cachedTextEncoder.encode(arg);
119
+ view.set(buf);
120
+ return {
121
+ read: arg.length,
122
+ written: buf.length
123
+ };
124
+ };
125
+ }
126
+
127
+ let WASM_VECTOR_LEN = 0;
128
+
129
+
130
+ let wasm;
131
+ export function __wbg_set_wasm(val) {
132
+ wasm = val;
133
+ }
Binary file
@@ -0,0 +1,10 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export const memory: WebAssembly.Memory;
4
+ export const qr_png_data_url: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
5
+ export const __wbindgen_externrefs: WebAssembly.Table;
6
+ export const __wbindgen_malloc: (a: number, b: number) => number;
7
+ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
8
+ export const __externref_table_dealloc: (a: number) => void;
9
+ export const __wbindgen_free: (a: number, b: number, c: number) => void;
10
+ export const __wbindgen_start: () => void;
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "hqr-generate",
3
+ "type": "module",
4
+ "description": "Stable black/white QR code generator (PNG data URL) powered by Rust + WASM",
5
+ "version": "0.1.0",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/heart569522/hqr-generate"
10
+ },
11
+ "files": [
12
+ "hqr_generate_bg.wasm",
13
+ "hqr_generate.js",
14
+ "hqr_generate_bg.js",
15
+ "hqr_generate.d.ts"
16
+ ],
17
+ "main": "hqr_generate.js",
18
+ "types": "hqr_generate.d.ts",
19
+ "sideEffects": [
20
+ "./hqr_generate.js",
21
+ "./snippets/*"
22
+ ]
23
+ }