@cogitator-ai/wasm-tools 0.4.2 → 0.5.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.
Files changed (70) hide show
  1. package/README.md +141 -6
  2. package/dist/index.d.ts +227 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +194 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugins/compression.d.ts +2 -0
  7. package/dist/plugins/compression.d.ts.map +1 -0
  8. package/dist/plugins/compression.js +530 -0
  9. package/dist/plugins/compression.js.map +1 -0
  10. package/dist/plugins/csv.d.ts +2 -0
  11. package/dist/plugins/csv.d.ts.map +1 -0
  12. package/dist/plugins/csv.js +138 -0
  13. package/dist/plugins/csv.js.map +1 -0
  14. package/dist/plugins/datetime.d.ts +2 -0
  15. package/dist/plugins/datetime.d.ts.map +1 -0
  16. package/dist/plugins/datetime.js +184 -0
  17. package/dist/plugins/datetime.js.map +1 -0
  18. package/dist/plugins/diff.d.ts +2 -0
  19. package/dist/plugins/diff.d.ts.map +1 -0
  20. package/dist/plugins/diff.js +187 -0
  21. package/dist/plugins/diff.js.map +1 -0
  22. package/dist/plugins/markdown.d.ts +2 -0
  23. package/dist/plugins/markdown.d.ts.map +1 -0
  24. package/dist/plugins/markdown.js +203 -0
  25. package/dist/plugins/markdown.js.map +1 -0
  26. package/dist/plugins/regex.d.ts +2 -0
  27. package/dist/plugins/regex.d.ts.map +1 -0
  28. package/dist/plugins/regex.js +119 -0
  29. package/dist/plugins/regex.js.map +1 -0
  30. package/dist/plugins/signing.d.ts +2 -0
  31. package/dist/plugins/signing.d.ts.map +1 -0
  32. package/dist/plugins/signing.js +565 -0
  33. package/dist/plugins/signing.js.map +1 -0
  34. package/dist/plugins/slug.d.ts +2 -0
  35. package/dist/plugins/slug.d.ts.map +1 -0
  36. package/dist/plugins/slug.js +180 -0
  37. package/dist/plugins/slug.js.map +1 -0
  38. package/dist/plugins/validation.d.ts +2 -0
  39. package/dist/plugins/validation.d.ts.map +1 -0
  40. package/dist/plugins/validation.js +105 -0
  41. package/dist/plugins/validation.js.map +1 -0
  42. package/dist/plugins/xml.d.ts +2 -0
  43. package/dist/plugins/xml.d.ts.map +1 -0
  44. package/dist/plugins/xml.js +293 -0
  45. package/dist/plugins/xml.js.map +1 -0
  46. package/dist/temp/compression.js +614 -0
  47. package/dist/temp/csv.js +154 -0
  48. package/dist/temp/datetime.js +196 -0
  49. package/dist/temp/diff.js +198 -0
  50. package/dist/temp/markdown.js +220 -0
  51. package/dist/temp/regex.js +140 -0
  52. package/dist/temp/signing.js +569 -0
  53. package/dist/temp/slug.js +198 -0
  54. package/dist/temp/validation.js +125 -0
  55. package/dist/temp/xml.js +289 -0
  56. package/dist/wasm/base64.wasm +0 -0
  57. package/dist/wasm/calc.wasm +0 -0
  58. package/dist/wasm/compression.wasm +0 -0
  59. package/dist/wasm/csv.wasm +0 -0
  60. package/dist/wasm/datetime.wasm +0 -0
  61. package/dist/wasm/diff.wasm +0 -0
  62. package/dist/wasm/hash.wasm +0 -0
  63. package/dist/wasm/json.wasm +0 -0
  64. package/dist/wasm/markdown.wasm +0 -0
  65. package/dist/wasm/regex.wasm +0 -0
  66. package/dist/wasm/signing.wasm +0 -0
  67. package/dist/wasm/slug.wasm +0 -0
  68. package/dist/wasm/validation.wasm +0 -0
  69. package/dist/wasm/xml.wasm +0 -0
  70. package/package.json +1 -1
@@ -0,0 +1,203 @@
1
+ function escapeHtml(text) {
2
+ return text
3
+ .replace(/&/g, '&')
4
+ .replace(/</g, '&lt;')
5
+ .replace(/>/g, '&gt;')
6
+ .replace(/"/g, '&quot;')
7
+ .replace(/'/g, '&#39;');
8
+ }
9
+ function parseInline(text, sanitize) {
10
+ let result = sanitize ? escapeHtml(text) : text;
11
+ result = result.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1">');
12
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>');
13
+ result = result.replace(/`([^`]+)`/g, '<code>$1</code>');
14
+ result = result.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
15
+ result = result.replace(/__([^_]+)__/g, '<strong>$1</strong>');
16
+ result = result.replace(/\*([^*]+)\*/g, '<em>$1</em>');
17
+ result = result.replace(/_([^_]+)_/g, '<em>$1</em>');
18
+ result = result.replace(/~~([^~]+)~~/g, '<del>$1</del>');
19
+ return result;
20
+ }
21
+ function parseMarkdown(md, sanitize, gfm) {
22
+ const lines = md.split('\n');
23
+ const html = [];
24
+ let inCodeBlock = false;
25
+ let codeBlockContent = [];
26
+ let codeBlockLang = '';
27
+ let inList = false;
28
+ let listType = 'ul';
29
+ let inBlockquote = false;
30
+ let blockquoteContent = [];
31
+ let inParagraph = false;
32
+ let paragraphContent = [];
33
+ const flushParagraph = () => {
34
+ if (inParagraph && paragraphContent.length > 0) {
35
+ html.push(`<p>${parseInline(paragraphContent.join(' '), sanitize)}</p>`);
36
+ paragraphContent = [];
37
+ inParagraph = false;
38
+ }
39
+ };
40
+ const flushBlockquote = () => {
41
+ if (inBlockquote && blockquoteContent.length > 0) {
42
+ html.push(`<blockquote><p>${parseInline(blockquoteContent.join(' '), sanitize)}</p></blockquote>`);
43
+ blockquoteContent = [];
44
+ inBlockquote = false;
45
+ }
46
+ };
47
+ const flushList = () => {
48
+ if (inList) {
49
+ html.push(listType === 'ul' ? '</ul>' : '</ol>');
50
+ inList = false;
51
+ }
52
+ };
53
+ for (let i = 0; i < lines.length; i++) {
54
+ const line = lines[i];
55
+ if (line.startsWith('```')) {
56
+ if (inCodeBlock) {
57
+ const content = sanitize ? escapeHtml(codeBlockContent.join('\n')) : codeBlockContent.join('\n');
58
+ html.push(`<pre><code${codeBlockLang ? ` class="language-${codeBlockLang}"` : ''}>${content}</code></pre>`);
59
+ codeBlockContent = [];
60
+ codeBlockLang = '';
61
+ inCodeBlock = false;
62
+ }
63
+ else {
64
+ flushParagraph();
65
+ flushBlockquote();
66
+ flushList();
67
+ codeBlockLang = line.slice(3).trim();
68
+ inCodeBlock = true;
69
+ }
70
+ continue;
71
+ }
72
+ if (inCodeBlock) {
73
+ codeBlockContent.push(line);
74
+ continue;
75
+ }
76
+ if (line.trim() === '') {
77
+ flushParagraph();
78
+ flushBlockquote();
79
+ flushList();
80
+ continue;
81
+ }
82
+ const headerMatch = line.match(/^(#{1,6})\s+(.+)$/);
83
+ if (headerMatch) {
84
+ flushParagraph();
85
+ flushBlockquote();
86
+ flushList();
87
+ const level = headerMatch[1].length;
88
+ const content = parseInline(headerMatch[2], sanitize);
89
+ html.push(`<h${level}>${content}</h${level}>`);
90
+ continue;
91
+ }
92
+ if (/^(-{3,}|\*{3,}|_{3,})$/.test(line.trim())) {
93
+ flushParagraph();
94
+ flushBlockquote();
95
+ flushList();
96
+ html.push('<hr>');
97
+ continue;
98
+ }
99
+ const blockquoteMatch = line.match(/^>\s?(.*)$/);
100
+ if (blockquoteMatch) {
101
+ flushParagraph();
102
+ flushList();
103
+ inBlockquote = true;
104
+ blockquoteContent.push(blockquoteMatch[1]);
105
+ continue;
106
+ }
107
+ const ulMatch = line.match(/^[-*+]\s+(.+)$/);
108
+ if (ulMatch) {
109
+ flushParagraph();
110
+ flushBlockquote();
111
+ if (!inList || listType !== 'ul') {
112
+ flushList();
113
+ html.push('<ul>');
114
+ inList = true;
115
+ listType = 'ul';
116
+ }
117
+ html.push(`<li>${parseInline(ulMatch[1], sanitize)}</li>`);
118
+ continue;
119
+ }
120
+ const olMatch = line.match(/^\d+\.\s+(.+)$/);
121
+ if (olMatch) {
122
+ flushParagraph();
123
+ flushBlockquote();
124
+ if (!inList || listType !== 'ol') {
125
+ flushList();
126
+ html.push('<ol>');
127
+ inList = true;
128
+ listType = 'ol';
129
+ }
130
+ html.push(`<li>${parseInline(olMatch[1], sanitize)}</li>`);
131
+ continue;
132
+ }
133
+ if (gfm && line.includes('|')) {
134
+ flushParagraph();
135
+ flushBlockquote();
136
+ flushList();
137
+ const tableLines = [line];
138
+ while (i + 1 < lines.length && lines[i + 1].includes('|')) {
139
+ i++;
140
+ tableLines.push(lines[i]);
141
+ }
142
+ if (tableLines.length >= 2) {
143
+ const headerCells = tableLines[0].split('|').map(c => c.trim()).filter(c => c);
144
+ const rows = tableLines.slice(2);
145
+ html.push('<table>');
146
+ html.push('<thead><tr>');
147
+ for (const cell of headerCells) {
148
+ html.push(`<th>${parseInline(cell, sanitize)}</th>`);
149
+ }
150
+ html.push('</tr></thead>');
151
+ if (rows.length > 0) {
152
+ html.push('<tbody>');
153
+ for (const row of rows) {
154
+ const cells = row.split('|').map(c => c.trim()).filter(c => c);
155
+ html.push('<tr>');
156
+ for (const cell of cells) {
157
+ html.push(`<td>${parseInline(cell, sanitize)}</td>`);
158
+ }
159
+ html.push('</tr>');
160
+ }
161
+ html.push('</tbody>');
162
+ }
163
+ html.push('</table>');
164
+ }
165
+ continue;
166
+ }
167
+ flushBlockquote();
168
+ flushList();
169
+ inParagraph = true;
170
+ paragraphContent.push(line.trim());
171
+ }
172
+ flushParagraph();
173
+ flushBlockquote();
174
+ flushList();
175
+ if (inCodeBlock) {
176
+ const content = sanitize ? escapeHtml(codeBlockContent.join('\n')) : codeBlockContent.join('\n');
177
+ html.push(`<pre><code>${content}</code></pre>`);
178
+ }
179
+ return html.join('\n');
180
+ }
181
+ export function markdown() {
182
+ try {
183
+ const inputStr = Host.inputString();
184
+ const input = JSON.parse(inputStr);
185
+ const sanitize = input.options?.sanitize ?? true;
186
+ const gfm = input.options?.gfm ?? true;
187
+ const htmlResult = parseMarkdown(input.markdown, sanitize, gfm);
188
+ const output = {
189
+ html: htmlResult,
190
+ };
191
+ Host.outputString(JSON.stringify(output));
192
+ return 0;
193
+ }
194
+ catch (error) {
195
+ const output = {
196
+ html: '',
197
+ error: error instanceof Error ? error.message : String(error),
198
+ };
199
+ Host.outputString(JSON.stringify(output));
200
+ return 1;
201
+ }
202
+ }
203
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/plugins/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function regex(): number;
2
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../src/plugins/regex.ts"],"names":[],"mappings":"AAqGA,wBAAgB,KAAK,IAAI,MAAM,CA8D9B"}
@@ -0,0 +1,119 @@
1
+ const MAX_ITERATIONS = 100000;
2
+ const DANGEROUS_PATTERNS = [
3
+ /\(\?[^)]*\)\+\+/,
4
+ /\(\.\*\)\+/,
5
+ /\(\.\+\)\+/,
6
+ /\([^)]+\+\)\+/,
7
+ /\([^)]+\*\)\*/,
8
+ ];
9
+ function isDangerousPattern(pattern) {
10
+ for (const dangerous of DANGEROUS_PATTERNS) {
11
+ if (dangerous.test(pattern)) {
12
+ return true;
13
+ }
14
+ }
15
+ let depth = 0;
16
+ let quantifiers = 0;
17
+ for (const char of pattern) {
18
+ if (char === '(')
19
+ depth++;
20
+ if (char === ')')
21
+ depth--;
22
+ if ((char === '+' || char === '*') && depth > 0)
23
+ quantifiers++;
24
+ }
25
+ return quantifiers > 3;
26
+ }
27
+ function safeMatch(text, regex) {
28
+ const match = text.match(regex);
29
+ if (!match)
30
+ return null;
31
+ return {
32
+ match: match[0],
33
+ index: match.index ?? 0,
34
+ groups: match.groups,
35
+ };
36
+ }
37
+ function safeMatchAll(text, regex, limit) {
38
+ const results = [];
39
+ let iterations = 0;
40
+ const globalRegex = new RegExp(regex.source, regex.flags.includes('g') ? regex.flags : regex.flags + 'g');
41
+ let match;
42
+ while ((match = globalRegex.exec(text)) !== null) {
43
+ results.push({
44
+ match: match[0],
45
+ index: match.index,
46
+ groups: match.groups,
47
+ });
48
+ iterations++;
49
+ if (iterations >= limit || iterations >= MAX_ITERATIONS)
50
+ break;
51
+ if (match[0].length === 0) {
52
+ globalRegex.lastIndex++;
53
+ }
54
+ }
55
+ return results;
56
+ }
57
+ function safeReplace(text, regex, replacement) {
58
+ return text.replace(regex, replacement);
59
+ }
60
+ function safeSplit(text, regex, limit) {
61
+ return text.split(regex, limit);
62
+ }
63
+ function safeTest(text, regex) {
64
+ return regex.test(text);
65
+ }
66
+ export function regex() {
67
+ try {
68
+ const inputStr = Host.inputString();
69
+ const input = JSON.parse(inputStr);
70
+ if (isDangerousPattern(input.pattern)) {
71
+ throw new Error('Pattern may cause ReDoS - nested quantifiers detected');
72
+ }
73
+ const flags = input.flags ?? '';
74
+ const regex = new RegExp(input.pattern, flags);
75
+ const limit = input.limit ?? 1000;
76
+ let result;
77
+ let matchCount;
78
+ switch (input.operation) {
79
+ case 'test':
80
+ result = safeTest(input.text, regex);
81
+ break;
82
+ case 'match':
83
+ result = safeMatch(input.text, regex);
84
+ matchCount = result ? 1 : 0;
85
+ break;
86
+ case 'matchAll':
87
+ const matches = safeMatchAll(input.text, regex, limit);
88
+ result = matches;
89
+ matchCount = matches.length;
90
+ break;
91
+ case 'replace':
92
+ if (input.replacement === undefined) {
93
+ throw new Error('replacement is required for replace operation');
94
+ }
95
+ result = safeReplace(input.text, regex, input.replacement);
96
+ break;
97
+ case 'split':
98
+ result = safeSplit(input.text, regex, input.limit);
99
+ break;
100
+ default:
101
+ throw new Error(`Unknown operation: ${input.operation}`);
102
+ }
103
+ const output = {
104
+ result,
105
+ matchCount,
106
+ };
107
+ Host.outputString(JSON.stringify(output));
108
+ return 0;
109
+ }
110
+ catch (error) {
111
+ const output = {
112
+ result: null,
113
+ error: error instanceof Error ? error.message : String(error),
114
+ };
115
+ Host.outputString(JSON.stringify(output));
116
+ return 1;
117
+ }
118
+ }
119
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../src/plugins/regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function signing(): number;
2
+ //# sourceMappingURL=signing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/plugins/signing.ts"],"names":[],"mappings":"AAyiBA,wBAAgB,OAAO,IAAI,MAAM,CAwEhC"}