@cogitator-ai/wasm-tools 0.2.8 → 0.3.1

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.
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Hash WASM Plugin
3
+ *
4
+ * This file is compiled to WASM using the Extism JS PDK.
5
+ * It provides cryptographic hashing functions.
6
+ *
7
+ * Build command:
8
+ * esbuild src/plugins/hash.ts -o dist/temp/hash.js --bundle --format=cjs --target=es2020
9
+ * extism-js dist/temp/hash.js -o dist/wasm/hash.wasm
10
+ */
11
+ function rotateLeft(n, b) {
12
+ return ((n << b) | (n >>> (32 - b))) >>> 0;
13
+ }
14
+ function toHex(arr) {
15
+ return arr.map((b) => b.toString(16).padStart(2, '0')).join('');
16
+ }
17
+ function stringToBytes(str) {
18
+ const bytes = [];
19
+ for (let i = 0; i < str.length; i++) {
20
+ bytes.push(str.charCodeAt(i) & 0xff);
21
+ }
22
+ return bytes;
23
+ }
24
+ function md5(message) {
25
+ const bytes = stringToBytes(message);
26
+ const originalLength = bytes.length;
27
+ const bitLength = originalLength * 8;
28
+ bytes.push(0x80);
29
+ while (bytes.length % 64 !== 56) {
30
+ bytes.push(0);
31
+ }
32
+ for (let i = 0; i < 8; i++) {
33
+ bytes.push((bitLength >>> (i * 8)) & 0xff);
34
+ }
35
+ const s = [
36
+ 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9,
37
+ 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21,
38
+ 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
39
+ ];
40
+ const K = new Array(64);
41
+ for (let i = 0; i < 64; i++) {
42
+ K[i] = Math.floor(Math.abs(Math.sin(i + 1)) * 0x100000000) >>> 0;
43
+ }
44
+ let a0 = 0x67452301;
45
+ let b0 = 0xefcdab89;
46
+ let c0 = 0x98badcfe;
47
+ let d0 = 0x10325476;
48
+ for (let chunkStart = 0; chunkStart < bytes.length; chunkStart += 64) {
49
+ const M = new Array(16);
50
+ for (let j = 0; j < 16; j++) {
51
+ const offset = chunkStart + j * 4;
52
+ M[j] =
53
+ bytes[offset] |
54
+ (bytes[offset + 1] << 8) |
55
+ (bytes[offset + 2] << 16) |
56
+ (bytes[offset + 3] << 24);
57
+ M[j] = M[j] >>> 0;
58
+ }
59
+ let A = a0;
60
+ let B = b0;
61
+ let C = c0;
62
+ let D = d0;
63
+ for (let i = 0; i < 64; i++) {
64
+ let F, g;
65
+ if (i < 16) {
66
+ F = (B & C) | (~B & D);
67
+ g = i;
68
+ }
69
+ else if (i < 32) {
70
+ F = (D & B) | (~D & C);
71
+ g = (5 * i + 1) % 16;
72
+ }
73
+ else if (i < 48) {
74
+ F = B ^ C ^ D;
75
+ g = (3 * i + 5) % 16;
76
+ }
77
+ else {
78
+ F = C ^ (B | ~D);
79
+ g = (7 * i) % 16;
80
+ }
81
+ F = (F + A + K[i] + M[g]) >>> 0;
82
+ A = D;
83
+ D = C;
84
+ C = B;
85
+ B = (B + rotateLeft(F, s[i])) >>> 0;
86
+ }
87
+ a0 = (a0 + A) >>> 0;
88
+ b0 = (b0 + B) >>> 0;
89
+ c0 = (c0 + C) >>> 0;
90
+ d0 = (d0 + D) >>> 0;
91
+ }
92
+ const result = [];
93
+ [a0, b0, c0, d0].forEach((val) => {
94
+ for (let i = 0; i < 4; i++) {
95
+ result.push((val >>> (i * 8)) & 0xff);
96
+ }
97
+ });
98
+ return toHex(result);
99
+ }
100
+ function sha1(message) {
101
+ const bytes = stringToBytes(message);
102
+ const originalLength = bytes.length;
103
+ const bitLength = BigInt(originalLength * 8);
104
+ bytes.push(0x80);
105
+ while (bytes.length % 64 !== 56) {
106
+ bytes.push(0);
107
+ }
108
+ for (let i = 7; i >= 0; i--) {
109
+ bytes.push(Number((bitLength >> BigInt(i * 8)) & BigInt(0xff)));
110
+ }
111
+ let h0 = 0x67452301;
112
+ let h1 = 0xefcdab89;
113
+ let h2 = 0x98badcfe;
114
+ let h3 = 0x10325476;
115
+ let h4 = 0xc3d2e1f0;
116
+ for (let chunkStart = 0; chunkStart < bytes.length; chunkStart += 64) {
117
+ const w = new Array(80);
118
+ for (let i = 0; i < 16; i++) {
119
+ const offset = chunkStart + i * 4;
120
+ w[i] =
121
+ (bytes[offset] << 24) |
122
+ (bytes[offset + 1] << 16) |
123
+ (bytes[offset + 2] << 8) |
124
+ bytes[offset + 3];
125
+ w[i] = w[i] >>> 0;
126
+ }
127
+ for (let i = 16; i < 80; i++) {
128
+ w[i] = rotateLeft(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1);
129
+ }
130
+ let a = h0;
131
+ let b = h1;
132
+ let c = h2;
133
+ let d = h3;
134
+ let e = h4;
135
+ for (let i = 0; i < 80; i++) {
136
+ let f, k;
137
+ if (i < 20) {
138
+ f = (b & c) | (~b & d);
139
+ k = 0x5a827999;
140
+ }
141
+ else if (i < 40) {
142
+ f = b ^ c ^ d;
143
+ k = 0x6ed9eba1;
144
+ }
145
+ else if (i < 60) {
146
+ f = (b & c) | (b & d) | (c & d);
147
+ k = 0x8f1bbcdc;
148
+ }
149
+ else {
150
+ f = b ^ c ^ d;
151
+ k = 0xca62c1d6;
152
+ }
153
+ const temp = (rotateLeft(a, 5) + f + e + k + w[i]) >>> 0;
154
+ e = d;
155
+ d = c;
156
+ c = rotateLeft(b, 30);
157
+ b = a;
158
+ a = temp;
159
+ }
160
+ h0 = (h0 + a) >>> 0;
161
+ h1 = (h1 + b) >>> 0;
162
+ h2 = (h2 + c) >>> 0;
163
+ h3 = (h3 + d) >>> 0;
164
+ h4 = (h4 + e) >>> 0;
165
+ }
166
+ const result = [];
167
+ [h0, h1, h2, h3, h4].forEach((val) => {
168
+ for (let i = 3; i >= 0; i--) {
169
+ result.push((val >>> (i * 8)) & 0xff);
170
+ }
171
+ });
172
+ return toHex(result);
173
+ }
174
+ function sha256(message) {
175
+ const K = [
176
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
177
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
178
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
179
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
180
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
181
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
182
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
183
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
184
+ ];
185
+ const bytes = stringToBytes(message);
186
+ const originalLength = bytes.length;
187
+ const bitLength = BigInt(originalLength * 8);
188
+ bytes.push(0x80);
189
+ while (bytes.length % 64 !== 56) {
190
+ bytes.push(0);
191
+ }
192
+ for (let i = 7; i >= 0; i--) {
193
+ bytes.push(Number((bitLength >> BigInt(i * 8)) & BigInt(0xff)));
194
+ }
195
+ let h0 = 0x6a09e667;
196
+ let h1 = 0xbb67ae85;
197
+ let h2 = 0x3c6ef372;
198
+ let h3 = 0xa54ff53a;
199
+ let h4 = 0x510e527f;
200
+ let h5 = 0x9b05688c;
201
+ let h6 = 0x1f83d9ab;
202
+ let h7 = 0x5be0cd19;
203
+ const rotr = (x, n) => ((x >>> n) | (x << (32 - n))) >>> 0;
204
+ for (let chunkStart = 0; chunkStart < bytes.length; chunkStart += 64) {
205
+ const w = new Array(64);
206
+ for (let i = 0; i < 16; i++) {
207
+ const offset = chunkStart + i * 4;
208
+ w[i] =
209
+ (bytes[offset] << 24) |
210
+ (bytes[offset + 1] << 16) |
211
+ (bytes[offset + 2] << 8) |
212
+ bytes[offset + 3];
213
+ w[i] = w[i] >>> 0;
214
+ }
215
+ for (let i = 16; i < 64; i++) {
216
+ const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);
217
+ const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);
218
+ w[i] = (w[i - 16] + s0 + w[i - 7] + s1) >>> 0;
219
+ }
220
+ let a = h0;
221
+ let b = h1;
222
+ let c = h2;
223
+ let d = h3;
224
+ let e = h4;
225
+ let f = h5;
226
+ let g = h6;
227
+ let h = h7;
228
+ for (let i = 0; i < 64; i++) {
229
+ const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
230
+ const ch = (e & f) ^ (~e & g);
231
+ const temp1 = (h + S1 + ch + K[i] + w[i]) >>> 0;
232
+ const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);
233
+ const maj = (a & b) ^ (a & c) ^ (b & c);
234
+ const temp2 = (S0 + maj) >>> 0;
235
+ h = g;
236
+ g = f;
237
+ f = e;
238
+ e = (d + temp1) >>> 0;
239
+ d = c;
240
+ c = b;
241
+ b = a;
242
+ a = (temp1 + temp2) >>> 0;
243
+ }
244
+ h0 = (h0 + a) >>> 0;
245
+ h1 = (h1 + b) >>> 0;
246
+ h2 = (h2 + c) >>> 0;
247
+ h3 = (h3 + d) >>> 0;
248
+ h4 = (h4 + e) >>> 0;
249
+ h5 = (h5 + f) >>> 0;
250
+ h6 = (h6 + g) >>> 0;
251
+ h7 = (h7 + h) >>> 0;
252
+ }
253
+ const result = [];
254
+ [h0, h1, h2, h3, h4, h5, h6, h7].forEach((val) => {
255
+ for (let i = 3; i >= 0; i--) {
256
+ result.push((val >>> (i * 8)) & 0xff);
257
+ }
258
+ });
259
+ return toHex(result);
260
+ }
261
+ export function hash() {
262
+ try {
263
+ const inputStr = Host.inputString();
264
+ const input = JSON.parse(inputStr);
265
+ let hashResult;
266
+ switch (input.algorithm) {
267
+ case 'md5':
268
+ hashResult = md5(input.text);
269
+ break;
270
+ case 'sha1':
271
+ hashResult = sha1(input.text);
272
+ break;
273
+ case 'sha256':
274
+ default:
275
+ hashResult = sha256(input.text);
276
+ break;
277
+ }
278
+ const output = {
279
+ hash: hashResult,
280
+ algorithm: input.algorithm,
281
+ };
282
+ Host.outputString(JSON.stringify(output));
283
+ return 0;
284
+ }
285
+ catch (error) {
286
+ const output = {
287
+ hash: '',
288
+ algorithm: 'unknown',
289
+ error: error instanceof Error ? error.message : String(error),
290
+ };
291
+ Host.outputString(JSON.stringify(output));
292
+ return 1;
293
+ }
294
+ }
295
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/plugins/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/plugins/base64.ts
21
+ var base64_exports = {};
22
+ __export(base64_exports, {
23
+ base64: () => base64
24
+ });
25
+ module.exports = __toCommonJS(base64_exports);
26
+ var STANDARD_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
27
+ var URL_SAFE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
28
+ function encodeBase64(input, urlSafe) {
29
+ const chars = urlSafe ? URL_SAFE_CHARS : STANDARD_CHARS;
30
+ let result = "";
31
+ let i = 0;
32
+ while (i < input.length) {
33
+ const a = input.charCodeAt(i++);
34
+ const b = i < input.length ? input.charCodeAt(i++) : 0;
35
+ const c = i < input.length ? input.charCodeAt(i++) : 0;
36
+ const bitmap = a << 16 | b << 8 | c;
37
+ result += chars.charAt(bitmap >> 18 & 63) + chars.charAt(bitmap >> 12 & 63) + chars.charAt(bitmap >> 6 & 63) + chars.charAt(bitmap & 63);
38
+ }
39
+ const padding = input.length % 3;
40
+ if (padding === 1) {
41
+ result = result.slice(0, -2) + (urlSafe ? "" : "==");
42
+ } else if (padding === 2) {
43
+ result = result.slice(0, -1) + (urlSafe ? "" : "=");
44
+ }
45
+ return result;
46
+ }
47
+ function decodeBase64(input, urlSafe) {
48
+ let chars = urlSafe ? URL_SAFE_CHARS : STANDARD_CHARS;
49
+ let normalized = input;
50
+ if (!urlSafe && input.includes("-")) {
51
+ chars = URL_SAFE_CHARS;
52
+ normalized = input;
53
+ }
54
+ normalized = normalized.replace(/[=]/g, "");
55
+ const lookup = {};
56
+ for (let i = 0; i < chars.length; i++) {
57
+ lookup[chars[i]] = i;
58
+ }
59
+ let result = "";
60
+ let buffer = 0;
61
+ let bits = 0;
62
+ for (let i = 0; i < normalized.length; i++) {
63
+ const char = normalized[i];
64
+ const value = lookup[char];
65
+ if (value === void 0) {
66
+ continue;
67
+ }
68
+ buffer = buffer << 6 | value;
69
+ bits += 6;
70
+ if (bits >= 8) {
71
+ bits -= 8;
72
+ result += String.fromCharCode(buffer >> bits & 255);
73
+ }
74
+ }
75
+ return result;
76
+ }
77
+ function base64() {
78
+ try {
79
+ const inputStr = Host.inputString();
80
+ const input = JSON.parse(inputStr);
81
+ const urlSafe = input.urlSafe ?? false;
82
+ let result;
83
+ if (input.operation === "encode") {
84
+ result = encodeBase64(input.text, urlSafe);
85
+ } else {
86
+ result = decodeBase64(input.text, urlSafe);
87
+ }
88
+ const output = {
89
+ result,
90
+ operation: input.operation
91
+ };
92
+ Host.outputString(JSON.stringify(output));
93
+ return 0;
94
+ } catch (error) {
95
+ const output = {
96
+ result: "",
97
+ operation: "unknown",
98
+ error: error instanceof Error ? error.message : String(error)
99
+ };
100
+ Host.outputString(JSON.stringify(output));
101
+ return 1;
102
+ }
103
+ }